AI Engineer Europe 2026 · 演講 · 2026-06-05 · 25 分
不只轉錄,讓語音 AI 聽懂對話
Beyond Transcription: Building Voice AI That Understands Conversations · Hervé Bredin,pyannoteAI
pyannote 作者談說話者分離:誰在何時、怎麼說,為什麼比逐字稿更能讓下游理解對話,以及它和語音轉文字對齊時為何常出錯。
概要
- 「誰說了什麼」常和內容一樣重要Hervé 舉影片自動配音、會議記錄、跨集追蹤 podcast 來賓為例,說明少了說話者資訊,這些應用都做不起來。
- 時間點與說話方式也是資訊打斷、簡短的附和、停頓、笑、咳嗽、重音,都會改變一段話的意思,Hervé 認為語音 AI 應該把這些細節交給下游的 LLM。
- 說話者分離至今沒解決事先不知道有幾個人、系統只輸出「說話者一、二、三」而不是名字、還有重疊說話與極短發言,讓問題很難。Hervé 提到最好的系統在餐廳多人聊天的場景仍有 41% 的 diarization error rate。
- 轉錄模型多半只看過單人語音Hervé 展示 NVIDIA Parakeet 在排行榜上是 11.4% 字錯率,在 AMI 的桌面麥克風錄音上他們量到 26%。
- 難點在對齊轉錄和分離的時間戳不一致,重疊說話也轉不好,所以把兩邊結果合起來並不像看起來那麼簡單。現場用 Python notebook 示範他們的 STT orchestration 如何處理。
原話
▶ 03:11“there are many cases where knowing who said what is as important as what was said actually”
很多情況下,知道誰說了什麼和說了什麼一樣重要
▶ 09:41“this is the kind of small speech turn that you don't want to miss because sometimes they actually convey the most important information of the conversation”
這種很短的發言不能漏掉,因為有時它們傳達的正是對話裡最重要的資訊
▶ 11:41“even though the community has been working on this topic for a long time now, it's still not solved”
雖然社群已經做了很久,這個問題仍然沒有解決
▶ 17:12“most speech-to-text models are actually trained on single-speaker data”
多數語音轉文字模型其實是用單人資料訓練的
▶ 24:26“it's supposed to work with any STT, even fine-tune ones that you might have internally”
它設計成可以搭配任何語音轉文字模型,連你們內部微調過的也行
延伸
- Hervé 說 pyannote 的 GitHub star 在 Whisper 開源後明顯轉折,現在快要一萬顆。
- 重音的例子是「the dog ate the cake」:孩子把重音放在不同的字上,意思就不一樣,所以這類細節也該交給下游。
- 轉錄在多人錄音上出錯,Hervé 另外列了遠距麥克風、換人、搶話、打斷,以及一句話中途換語言。
章節
點時碼直接跳到原片的那一段。
- 自我介紹與 pyannoteHervé 兩年前才離開學術界創業,自己做的開源工具 pyannote 在 Whisper 開源後被拿來補上說話者標籤。
- 從轉錄到說話者標註語音轉文字只回答「說了什麼」,沒有名字的逐字稿很難讀;下一步是替每個字標上說話者。
- 為什麼要知道誰說的影片配音要把聲音配給正確的人,會議記錄要分派待辦,podcast 還可以追蹤同一位來賓跨集出現。
- 加上「什麼時候」沒有精確時間就看不出誰打斷誰、誰在附和,也看不出停頓。
- 加上「怎麼說」與「對誰說」笑、咳嗽、重音、說話對象和環境音,都能補充語境給下游工具。
- Hugging Face 下載榜Hervé 篩出有 audio 標籤的模型、照下載數排序,下載最多的七個模型裡,前三個和說話者身分、分離有關,其餘是語音轉文字。
- 說話者分離怎麼做先偵測有沒有人在說話,再切成發言片段、找換人的點與打斷、附和等短發言,最後替每段指派說話者。
- 為什麼這題很難不知道有幾個人、輸出的標籤可以互換、還要處理重疊與極短發言,所以社群做了很久仍未解決。
- Demo 一:評估分離結果在 notebook 裡用兩位女士的電話錄音,比對人工標註,拆出混淆、誤報、漏報三種錯誤並算 DER,開源模型約 5%,雲端 API 的模型約 3%。
- 現在的水準表現隨場景差很多,餐廳裡多人又有背景噪音時,最好的系統仍有 41% 的錯誤率。
- 為什麼對齊不容易多數語音轉文字模型只用單人資料訓練;Parakeet 在排行榜 11.4%,在 AMI 桌面麥克風上是 26%,差在排行榜用的是頭戴麥克風。
- Demo 二:逐字與說話者合併Parakeet 的逐字結果每個字都有時間戳,但落在兩段發言之間的字,不知道該歸給誰。
- STT orchestration同時呼叫分離模型和 Parakeet,由他們的雲端 API 處理合併;重疊的那一小段也能把兩人的字交錯排對。
- 結尾與教學資源示範用的 notebook 放在 GitHub 教學庫,內容涵蓋開源的分離工具、評估工具、視覺化元件與付費模型的 SDK。
- 問答聽眾問怎麼解決對齊,Hervé 說細節不公開,但有一部分已放進開源模型;另一個回答說明這套做法不綁特定的轉錄模型。
名詞
- pyannote
- Hervé 做的開源說話者分離工具,因為 Whisper 開源後缺少說話者標籤而廣受使用,現在的公司也用這個名字
- speaker diarization
- 回答「誰在什麼時候說話」,輸出的是說話者一、二、三這類標籤,不是真實姓名
- speaker-attributed transcription
- 在逐字稿上替每個字標上說話者,回答「誰說了什麼」
- DER
- diarization error rate,把混淆、誤報、漏報加起來,除以總說話時間
- Whisper
- OpenAI 開源的語音轉文字模型,免費而且品質好,但不提供說話者標籤
- Parakeet
- NVIDIA 的語音轉文字模型,示範裡用來產生帶時間戳的逐字結果
- AMI
- 四到五人開會的資料集,同時有頭戴麥克風與桌面中央麥克風的錄音
- community-1
- pyannote 的開源模型,示範裡在自己的 Mac 上執行
- Precision-2
- 示範裡透過雲端 API 呼叫的付費分離模型,表現比 community-1 好
- STT orchestration
- pyannoteAI 把分離模型與任意語音轉文字模型串起來並處理對齊的服務
- exclusive diarization
- community-1 內建的做法:遇到重疊說話時,挑出較可能被轉錄的那位,讓對齊容易一點








