【迭代】繪本生成方案迭代2,解決錄音播放問題

代碼分享】AI輔助編程:動手制作繪本生成器,實現繪本自由
前面分享了生成繪本PDF的方案,只有圖片和文字。所以想加上文字的錄音播放。

經過一番探索,發現要實現這個功能的可行性高的方案是用戶點擊播放,需要跳轉到瀏覽器。如下

方案一:推薦 - 使用 JavaScript 鏈接到外部音頻 (最通用)
這是最常用和兼容性最好的方法。我們可以在 PDF 中創建一個可點擊的文本(比如單詞本身),當用戶點擊時,通過 PDF 內嵌的 JavaScript 來觸發播放一個外部音頻文件。

優點:

兼容性好:大多數 PDF 閱讀器都支持 PDF 內嵌 JavaScript。

文件大小:音頻文件不需要真正嵌入 PDF 內部,可以放在網絡服務器上,減小 PDF 文件大小。

靈活性:音頻文件可以隨時更新,無需重新生成 PDF。

缺點:

需要網絡連接:用戶需要聯網才能播放音頻。

需要外部存儲:你需要一個地方(如你的服務器或一個云存儲服務)來托管這些音頻文件。

方案二:高級 - 嘗試直接嵌入音頻 (更復雜,兼容性可能受限)
這種方案是將音頻文件本身打包到 PDF 內部。ReportLab 可能需要一些底層的 PDF 操作或與第三方庫結合才能實現。

優點:

離線可用:PDF 文件包含所有內容,無需網絡連接即可播放。

缺點:

文件大小:PDF 文件會變得非常大

兼容性差:不是所有 PDF 閱讀器都完全支持 PDF 內嵌音頻的播放。

實現復雜:ReportLab 沒有直接的 API 支持,可能需要直接操作 PDF 對象的低級 API,或者結合 PyPDF2/PyMuPDF 等庫。

為了解決這個音頻問題,選擇了退化到web方案,不再生成PDF,改成在線繪本的形式。
請添加圖片描述
請添加圖片描述
請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89156.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89156.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89156.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++設計模式之創建型模式

1.前言 設計模式一共有23種,主要分為三大類型:創建型,結構型,行為型。本篇文章著重講解的是創建型一些相關的設計模式 2.單例模式 Singleton 模式是設計模式中最為簡單、最為常見、最容易實現,也是最應該熟悉和掌握的…

kubernetes學習筆記(一)

kubernetes學習筆記(一) kubernetes簡介 ? Kubernetes是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程序時,通常要部署該應用的多個實例以便對應用請求進行負載均衡。 ? 在Kubernetes…

Eureka實戰

1.創建父工程SpringCloudTestSpringCloudTest為父工程,用于引入通用依賴,如spring-boot-starter-web、lombok,這樣子工程就可以直接繼承,無需重復引入。在dependencyManagement標簽中引入和springboot版本對應的springcloud&#…

如何把鏡頭對焦在超焦距上

要把鏡頭對焦在超焦距上,可以按照以下步驟操作:1. 計算超焦距 首先需要知道你的鏡頭參數和相機參數: 焦距 f(如 24mm、35mm)光圈 N(如 f/8、f/11)容許彌散圓直徑 c(與傳感器尺寸有關…

idea docker插件連接docker失敗

報錯org.apache.hc.client5.http.HttpHostConnectException:Connect to http://localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:o:0:0:0:1] failed:Connection refused:getsockopt解決方法:

【后端】.NET Core API框架搭建(6) --配置使用MongoDB

目錄 1.添加包 2. 連接配置 2.1.鏈接字符串 2.2.連接類 3.倉儲配置 3.1.倉儲實現 3.2.倉儲接口 4.獲取配置和注冊 4.1.添加配置獲取方法 4.2.注冊 5.常規使用案例 5.1實體 5.2.實現 5.3.接口 5.4.控制器 NET Core 應用程序中使用 MongoDB 有許多好處,尤其是在…

Spring AI快速入門

文章目錄1 介紹1_大模型對比2_開發框架對比2 快速入門1_引入依賴2 配置模型3 配置客戶端4 測試3 會話日志1_Advisor2 添加日志Advisor4 會話記憶1_定義會話存儲方式2 配置會話記憶Advisor5 會話歷史1_管理會話歷史2 保存會話id3 查詢會話歷史6 后續1 介紹 SpringAI整合了全球&…

Windows下編譯pthreads

本文記錄在Windows下編譯pthreads的流程。 零、環境 操作系統Windows 11VS Code1.92.1Git2.34.1MSYS2msys2-x86_64-20240507Visual StudioVisual Studio Community 2022CMake3.22.1 一、編譯安裝 1.1 下載 git clone https://git.code.sf.net/p/pthreads4w/code 1.2 構建…

WP Force SSL Pro – HTTPS SSL Redirect Boost Your Website‘s Trust in Minutes!

In the vast digital landscape where security and user trust are paramount, ensuring your WordPress site uses HTTPS is not just a recommendation—it’s a necessity. That’s where WP Force SSL Pro – HTTPS SSL Redirect steps in as your silent guardian, makin…

jvm--java代碼對照字節碼圖解

java代碼:無靜態方法;(對應字節碼沒有方法) 任何一個類,至少有一個構造器,默認是無參構造java代碼包含:靜態方法java代碼包含:靜態方法、顯示構造方法public class ClassInitTest {p…

動態規劃題解_打家劫舍【LeetCode】

198. 打家劫舍 你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。 給定一個代表每個…

電腦安裝 Win10 提示無法在當前分區上安裝Windows的解決辦法

原因: win10系統均添加快速啟動功能,預裝的win10電腦默認都是UEFI引導和GPT硬盤,傳統的引導方式為Legacy引導和MBR硬盤,UEFI必須跟GPT對應,同理Legacy必須跟MBR對應。如果BIOS開啟UEFI,而硬盤分區表格式為M…

大端序與小端序

理解大端序(Big-Endian)和小端序(Little-Endian)的關鍵在于數據在內存中存儲時字節的排列順序,特別是在存儲多字節數據類型(如整數、浮點數)時。以下是清晰易懂的解釋:核心概念 假設…

PyTorch筆記5----------Autograd、nn庫

1.Autograd grad和grad_fn grad:該tensor的梯度值,每次在計算backward時都需要將前一時刻的梯度歸零,否則梯度值會一直累加grad_fn:葉子結點通常為None,只有結果節點的grad_fn才有效,用于只是梯度函數時哪…

Perl 格式化輸出

Perl 格式化輸出 引言 Perl 是一種通用、解釋型、動態編程語言,廣泛應用于文本處理、系統管理、網絡編程等領域。在Perl編程中,格式化輸出是一種常見的需求,它可以幫助開發者更好地展示和打印信息。本文將詳細講解Perl中格式化輸出的方法&…

Python爬蟲實戰:研究markdown2庫相關技術

一、引言 1.1 研究背景與意義 在當今信息爆炸的時代,互聯網上的信息量呈指數級增長。如何高效地獲取和整理這些信息成為了一個重要的研究課題。網絡爬蟲作為一種自動獲取網頁內容的技術,能夠按照一定的規則,自動地抓取萬維網信息,為信息的收集提供了有力手段。 Markdown …

【Linux】基本指令詳解(二) 輸入\輸出重定向、一切皆文件、認識管道、man、cp、mv、echo、cat

文章目錄一、man指令二、輸入/輸出重定向(echo、一切皆文件)三、cp指令四、mv指令五、cat指令六、more/less指令七、head/tail指令八、管道初見一、man指令 Linux的指令有很多參數,我們不可能全記住,可以通過查看聯機手冊獲取幫助。 man 指令…

MVC HTML 幫助器

MVC HTML 幫助器 引言 MVC(模型-視圖-控制器)是一種流行的軟件架構模式,它將應用程序的邏輯分解為三個主要組件:模型(Model)、視圖(View)和控制器(Controller&#xff09…

linux下手工安裝ollama0.9.6

1、去下載ollama的linux版的壓縮包: 地址:https://github.com/ollama/ollama/releases2、上傳到linux中。3、解壓: tar zxvf ollama-linux-amd64-0.9.6.tgz -C /usr/local/4、如果僅僅是要手工執行,已經可以了: ollama…

kotlin布局交互

將 wrapContentSize() 方法鏈接到 Modifier 對象,然后傳遞 Alignment.Center 作為實參以將組件居中。Alignment.Center 會指定組件同時在水平和垂直方向上居中。 DiceWithButtonAndImage(modifier Modifier.fillMaxSize().wrapContentSize(Alignment.Center) )創建…