逐字稿文字預覽
大家好,今天我們給大家講解這個Voice Agent的一個總體架構啊,以及它的這個完整流程。 我們首先了解一下什麼是Voice Agent。 你看這個Voice,Voice就是語音的意思,就是語音智能體。 也就是說不僅有語音,還有智能體。 那最簡單的比如說你用豆包的語音功能,或者用LGBT的語音功能,你跟它對話。 那這個就是最基本的一個語音智能體。 它裡面有哪些關鍵技術呢? 有WebRTC,有STT,有TTS,有LLM,這幾個關鍵的技術。 這幾個名詞呢,希望大家都去查一下。 那首先,WebRTC解決什麼? WebRTC解決就是說,音視頻的問題。 你比如說你的聲音怎麼採集的,你聲音怎麼播放的,聲音怎麼傳輸的,這個是由WebRTC來解決的。 那麼STT是什麼? STT就是 語音轉文字。 也就是說 你語音採集了以後,需要把它轉成文字,這個文字再交給大語音模型。 也就是LM 決定說什麼? 也就是說,LM是把文字拿到以後,它會加工,會思考,會返回。 返回完以後, 這不有文字了嗎? 文字在 第一個,它首先會發到 這個端上,也就是比如,一般我們叫前端,比如網頁裡面,或者手機裡面。 然後不經意發,有可能要播語音,這個播語音就要把這個文字再轉成語音,這個過程叫TTS。 所以說,這裡面有幾個關鍵概念,叫Web RC STD TTS LM 對吧 好,我們來看一下它總體架構 首先是 前端,前端呢,它有一個 比如說可能是瀏覽器 有可能是App 甚至是一個硬件啊,對吧 好,那麼麥克風採集 那音頻 同時音頻可能會播放,然後屏幕上可能有文字 大家用這個 用豆包的時候,你在跟它對話的時候,它不經常有這個 會有文字顯示嗎? 另外一個它會播放語音 那麼音頻會上行 到後端 後端呢 它這裡面呢,它會比如說,它一般是Web RC 處理啊,處理完 以後呢,它會 把這個聲音提取出來 然後把這個聲音呢,丟給 STT STT呢 呃 有幾種,一種是你本地的這種服務,對吧 你可能從歐拉馬來接入 第二種呢,有可能比如說你是阿里的 對吧 也有可能是騰訊的 也有可能是火山引擎的 也可能是MiniMax 是吧 STT,MiniMax 目前 不一定有 然後你可能Deepgram 有可能是ElevenLab 這裡面就有中英文 這裡面我們主要以中英文給大家解釋就行了 那麼由它轉動文字又返回給 那麼由它轉動文字又返回給這個後端,後端這塊它又會調這個LLM,也就是調的大語言模型 這裡面選擇就多了,你比如說你可以用Deepseek 可以用這個 MiniMax,可以用這個Kimi 可以用這個OpenAI,對吧 你可以用 這個很多很多模型啊,都可以用 那 丟給大元模型,大元模型會 對你的話進行加工 加工完以後 他比如說你今天問了一個 舉個例子,什麼是人工智能對吧 他會肯定回答 一堆這個內容嘛,然後 他返回完 返回他以後,然後後端呢 又 緊接著 調這個TTS模型,這個TTS模型也有 比如火山引擎呢,阿里騰訊呢 對吧,Deepgram,ElevenLav,他都會把 文字再轉成語音 轉成語音呢,他會有一個 實時的流,這個實時流呢,再通過WebRTC技術再傳給前端 前端把聲音播放出來 同時文字部分呢,他也會到前端 那這時候呢 這時候呢 就完成了整個的 完成了整個的這個 voice agent的一個流程 那麼為什麼我們又稱為agent呢 就是 不僅是voice,為什麼agent呢 原因就是因為這裡面有R,就是大語言模型的介入 它是一個智能的 所以說我們就要 voice agent 你既然是agent,那麼 他可能也可以做RE,也就是檢索增加生成 比如說 我經常問的問題 那麼我們可以把這個問題 問的問題以及回答的過程把它傳到相量信息庫裡面 那你問題問多了以後,那麼以後他在 你再問他問題的,他就更懂你了,對吧 更懂你了,知道你以前問過,他會知道怎麼再去回答你 這個就是 接入這個大語言模型的好處 這個你還在這部分進行加強 就這部分加強 好 那下面這邊有解釋 好,我們看到總體的架構,我們再看一下這個 還有完整流程,那這個裡面當然就更詳細了 比如說瀏覽器這邊設計到麥克風採集 對吧 重採樣 分幷 這個技術名稱我們不需要長那麼細 暫時 然後二進制上行 對吧 然後 這邊還會分發 那麼這邊有VAD檢測,這個VAD是幹什麼 你跟這個 AI 對話的時候你不經常可能會 打斷他嗎? 比如說 他正在回答你某一個 某一段話的時候你突然間打斷他了 那如果是有打斷的話 對吧 有打斷的話 那麼 這時候會丟給LM 對吧 會切這個句子 然後又貼貼的再返回 對吧 如果不打斷的話 不打的話他就 他就整個就是 朝下去走 這個意思 整個朝下去走 直接從這 TTS 這走 然後就返回 再返回到前端 然後進行播放 播放這個聲音 中間發生的過程就是 STT code端 你要走 STT的服務 對吧 你比如說 阿里的呀 Deepgram呀 之類的 那麼 這個如果是LLM的話 你可能接入OpenAI 也可能接入Deepseek 有可能接入Milimax Kimi 都可以 好 那麼 那麼TTS這塊 通過SSE的流 來進行播放 那麼SSE什麼呢 這個是AI裡面的一個技術 就是一個流式的 返回的 一個 處理技術 就是文字的一個流式 同時還有音頻的 最後到 網頁這段它有音頻的一個流式 所以這個是更詳細的一個完整流程 這裡面涉及到好些技術 好技術 大家這些技術 我們會一步步拆解 給大家講的 那麼 我們對於一個 總體的架構以及完整流程 有所了解以後 你才能搞懂 我們後續要給大家講的 比如說 從Web端到Server端的整個的一個 Voice Agent的一個整個流程 那麼我們這個例子 寫的不是很大 但是通過這個例子 你 能對Voice Agent有一個 完整的流程的一個理解 並且 它是正式辦理能跑起來的一個項目 我們首先是把理論先搞清楚 這裡面 我們可以看到 這裡面我們涉及的各種服務 比如 STT IM 這些 大家都可以去採用不同的 Provider 有著供應商的服務 不一定說是非要某一間的 對吧 ! 比如說如果說我們英文的我建議大家用Deepgram Eleven Lab 如果說是中文的建議大家用 阿里的、騰訊的、火山引擎的,像這些 包括MiniMax,像這些 這樣的話是比較好的 因為 肯定是 各自的模型 它對中英文支持的出來的效果是不一樣的 當然同時它還支持方言的 比如說粵語 對吧 等等 像這些方言的四川話 普通話 像方言普通話都支持的 所以說這個 你要不同的去 另外還有一個 VAD打斷 VED打斷的 不同的 比如STT 就是 它叫 實際上叫 ASR技術 不同的 廠商提供出來的 質量也是不一樣的 這個都去接 然後我們這裡面當然就接了 有阿里的 有Deepgram 這些 已經有兩個比較好用的給大家接進來了 告訴大家怎麼去接的 好 那麼關於它的這個總體的架構儀完整流程的我們就先講到這裡謝謝大家觀看
本次執行流程與問題處理
下達指令
預期流程
- 自動字幕優先,Whisper 作為備援
- 來源選擇與品質檢查
- 文字校正與句子單元
- 筆記與發布
- 公開網頁發布
1. 下載與語音辨識
工具:videonote-transcribe-url(主辨識管線:下載、Whisper 辨識與選稿)
處理:下載音訊、以 Whisper 辨識並選出最佳逐字稿
產出:yt_dlp_meta.json(影片元資料)、audio_16k_mono.wav(16kHz 單聲道音訊)、transcript.whisper.json(Whisper 辨識結果)、transcript.json(正式逐字稿)、transcript_selection_report.json(來源選擇報告)
耗時:28.1 秒
關係:依序執行
結果:完成
2. 全文快速校讀
工具:videonote_rapid_transcript_review.py
處理:先速讀完整逐字稿,再修正高可信突兀詞句並列出待確認項目
產出:rapid_transcript_review_report.json(產出檔案)
耗時:37.9 秒
關係:依序執行
結果:完成
3. 建立句子單元
工具:videonote-build-sentence-units
處理:將逐字稿切成帶時間軸的句子單元
產出:sentence_units.json(句子單元)
耗時:1.0 秒
關係:依序執行
結果:完成
4. 句子密度平衡
工具:videonote_balance_sentence_units.py
處理:平衡句子長度與密度
產出:sentence_units.json(句子單元)
耗時:1.0 秒
關係:依序執行
結果:完成
5. 時間軸稽核
工具:videonote_timeline_audit.py
處理:檢查時間軸與音訊對齊
產出:timeline_audit_report.json(時間軸稽核)
耗時:0.0 秒
關係:依序執行
結果:完成
6. 品質檢查
工具:videonote_controlled_quality.py(檢查時間軸與品質)
處理:檢查語言、時間軸與可讀性品質
產出:controlled_quality_report.json(品質報告)、language_sanity_report.json(語言檢查)
耗時:0.1 秒
關係:依序執行
結果:完成
7. 播放時間軸回填
工具:videonote_rebase_display_timeline.py
處理:將網頁播放時間軸回填為校正字幕時間
產出:display_timeline_rebase_report.json(時間軸回填報告)
耗時:0.1 秒
關係:依序執行
結果:完成
8. 逐字稿交叉檢查
工具:videonote_cross_check_transcript.py
處理:交叉檢查逐字稿與來源字幕
產出:transcript_crosscheck_report.json(交叉檢查)
耗時:0.1 秒
關係:依序執行
結果:完成
9. 來源句整理
工具:videonote_prepare_source_entries.py
處理:整理來源句子供時間軸與頁面使用
產出:sentence_units.json(句子單元)
耗時:0.2 秒
關係:依序執行
結果:完成
10. 生成筆記摘要
工具:videonote-generate-note(生成筆記摘要)
處理:生成筆記摘要與重點
產出:note.md(筆記 Markdown)、note.html(筆記 HTML)
耗時:79.5 秒
關係:依序執行
結果:完成
11. 建立筆記頁面
工具:videonote-render-html(產生筆記 HTML)
處理:產生可閱讀的筆記 HTML 頁面
產出:note.html(筆記 HTML)
耗時:0.6 秒
關係:依序執行
結果:完成
12. 發布公開頁面
工具:videonote-publish(發布公開頁面)
處理:發布到公開網站與每日列表
產出:公開筆記網址、result.json(管線結果)
耗時:0.7 秒
關係:依序執行
結果:完成
手動來源字幕
- 尚未產生
自動來源字幕
Whisper 字幕
Qwen 字幕
- 尚未產生
Parakeet 字幕
- 尚未產生
MOSS 字幕
- 尚未產生
聲學時間證據(PyAnnote / WhisperX)
- 尚未產生
校正前後逐字稿
目前待解決問題與初步改善方向
- ⚠️ 全文快速校讀:已套用暫定修正,請確認
segment=2 已先套用暫定修正:那最簡單的比如說你用豆包的書,或者用LGBT的書,你跟它對話。那這個就是最基本的一個語音智能體。 → 那最簡單的比如說你用豆包的語音功能,或者用LGBT的語音功能,你跟它對話。那這個就是最基本的一個語音智能體。;segment=3 已先套用暫定修正:它裡面有哪些關鍵技術呢?有Web RC,有STD,有TTS,有IIM,這幾個關鍵的技術。這幾個名詞呢,希望大家都去查一下。 → 它裡面有哪些關鍵技術呢?有WebRTC,有STT,有TTS,有LLM,這幾個關鍵的技術。這幾個名詞呢,希望大家都去查一下。;segment=4 已先套用暫定修正:那首先,Web RC解決什麼?Web RC解決就是說,音視頻的問題。你比如說你的聲音怎麼採集的,你聲音怎麼播放的,聲音怎麼傳輸的,這個是由Web RC來解決的。 → 那首先,WebRTC解決什麼?WebRTC解決就是說,音視頻的問題。你比如說你的聲音怎麼採集的,你聲音怎麼播放的,聲音怎麼傳輸的,這個是由WebRTC來解決的。;segment=5 已先套用暫定修正:那麼STD是什麼?STD就是 → 那麼STT是什麼?STT就是;segment=121 待確認:「分針」在音頻處理流程中語意不通,可能是「分幷」(分幷幷?)或「分片」(chunking)或「編碼」(encoding)的誤聽。需確認技術細節。;暫定:分幷;segment=47 待確認:「歐拉馬」指代不明,可能是特定音譯、口誤或極小眾服務。;暫定:你可能從歐拉馬來接入
- 逐字稿可先使用,但有待校正清單
segment=8 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=9 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=13 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=14 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=15 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=16 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=18 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=21 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=23 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=24 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=25 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=87 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語
- Qwen3-ASR 未完成,需確認 qwen_asr_lab 環境與音訊後重試精進模式。