AI · AI 音訊
AI 語音轉文字是怎麼運作的?
簡答
語音轉文字(自動語音辨識,ASR)會先把聲音變成頻譜圖,也就是顯示各頻率隨時間強弱的圖像。神經網路讀取這張圖,逐個 token 寫出最可能的文字。Whisper 等模型從數十萬小時的轉錄音訊中學習,所以能處理多種語言和雜訊,但仍可能聽錯人名,或在靜音時憑空編出文字。
開啟語音轉文字四步驟從聲波到文字
Whisper 這類現代辨識器,每次處理檔案都遵循相同的流程:
- 重新取樣。音訊會轉成單聲道、每秒 16,000 個取樣點。這對語音已經足夠,因為語音的大部分資訊都在 8 kHz 以下。
- 產生頻譜圖。訊號被切成短而重疊的視窗(Whisper 使用 25 毫秒的視窗,每 10 毫秒移動一次),每個視窗變成梅爾(Mel)刻度上的 80 個數字,這種刻度依人類聽覺的方式來分配頻率。結果就是一張圖:一軸是時間,另一軸是音高頻帶。
- 編碼。Transformer 編碼器讀取頻譜圖,建立對說話內容的表示,包括哪些聲音是語音、哪些是雜訊。
- 解碼。Transformer 解碼器逐個 token 寫出逐字稿,每次根據音訊與目前已寫出的文字,挑選最可能的下一個 token。特殊 token 會告訴它語言、任務(轉錄或翻譯成英文),以及該在哪裡放時間戳記。
Whisper 以 30 秒為單位的視窗處理音訊。一小時的檔案會被當成一連串滑動的視窗,預測出的時間戳記則告訴程式下一個視窗要從哪裡開始。時間戳記以 20 毫秒為單位預測,所以 Whisper 產生的字幕時間很不錯,但不是精確到影格。
模型如何學習:大規模弱監督
較早的系統由各自獨立的部分組合而成:處理聲音的聲學模型、發音詞典,以及處理詞序的語言模型。每個部分都需要每種語言中仔細標註的資料。
Whisper 走了不同的路線。作者從網路上蒐集了 68 萬小時的音訊及其對應的逐字稿。其中約 11.7 萬小時涵蓋英語以外的 96 種語言,另有 12.5 萬小時是非英語語音搭配英文文字,讓模型學會翻譯。這些標籤並不完美(這就是弱監督中「弱」的部分),但龐大的規模讓模型對口音、背景噪音和錄音品質都很穩健,而不需要針對每個測試集微調。
同樣的道理也解釋了它的弱點。在這批資料中語料較少的語言,辨識準確度較低;而且模型學到了網路字幕的習慣,例如加上影片結尾常出現的片語。
衡量準確度:詞錯誤率
ASR 的準確度以詞錯誤率(WER)表示:替換、刪除和插入的字詞數,除以正確逐字稿的字詞數。數值越低越好,如果模型插入大量文字,也可能超過 100%。
Reference: the meeting moved to three thirty on friday (8 words)
Model: the meeting moved to tree thirty friday
Substitutions: three -> tree 1
Deletions: on 1
Insertions: 0
WER = (1 + 1 + 0) / 8 = 25%比較之前,研究人員會先把兩段文字正規化:轉成小寫、移除標點、展開縮寫,並統一數字的寫法。少了這一步,「3:30」和「three thirty」即使都對,也會被算成錯誤。廠商提到某個 WER 時,要問清楚是在什麼音訊上量測的;清晰的朗讀語音和嘈雜的電話通話,結果可能差上好幾倍。
中文、日文和泰文不以空格分隔詞語,所以改用字元錯誤率(CER)。
語音辨識器的類型
| 類型 | 運作方式 | 優點 | 缺點 |
|---|---|---|---|
| 編碼器—解碼器(Whisper 類型) | 讀取一段音訊,再由解碼器寫出文字 | 準確度高、有標點、支援多語言與翻譯 | 以區塊處理,即時字幕會有延遲;可能產生幻覺 |
| CTC 與 transducer 模型 | 為每個短音訊影格預測標籤,再合併 | 延遲低,適合即時字幕,很少憑空編造文字 | 標點與大小寫需要額外處理 |
| 平台語音服務 | 瀏覽器或手機把音訊傳到廠商的服務,或在裝置上執行模型 | 無須設定;Web Speech API 把它開放給網頁使用 | 行為因瀏覽器和裝置而異;可能需要網路 |
Web Speech API 的 SpeechRecognition 介面讓網頁可以向平台請求麥克風的即時辨識。預設會使用瀏覽器或作業系統提供的服務;有些瀏覽器也能在裝置上執行。自己執行 Whisper 的網頁,例如 cv.cm 的語音轉文字工具,會在瀏覽器中執行 Whisper 並匯出 TXT、SRT 或 VTT,不依賴那個服務,但需要先下載一次模型。
語音轉文字哪裡會出錯
- 人名、品牌和專業術語。解碼器偏好常見字詞,所以罕見的姓氏會變成常見的姓氏。請手動更正,或者如果工具支援,提供一小段寫有正確拼法的提示。
- 在靜音或音樂中產生幻覺。Whisper 論文指出,長篇轉錄可能陷入重複循環、漏掉一段的開頭或結尾幾個字,或產生與音訊無關的文字。靜音的片頭、掌聲和背景音樂是常見的觸發原因。
- 口音與語碼轉換。同一句話混用兩種語言的說話者,或訓練資料很少的濃重地方口音,會提高錯誤率。
- 多人同時說話。大多數辨識器只寫出一條文字流,不會標示是誰說的。說話者標註(diarization)是另一個獨立的步驟。
- 繁體與簡體中文。模型對普通話可能輸出任一種字體;如果需要統一,請事後轉換逐字稿。
- 偵測到錯誤的語言。自動偵測是看音訊的開頭。如果前幾秒是音樂或另一種語言,請手動選擇語言。
製作乾淨字幕的實用流程
- 從手邊最好的音訊開始。使用原始檔案,不要用喇叭播放後再錄一次。如果可以,降低語音底下的音樂。
- 剪掉開頭長時間的靜音和音樂,它們會導致語言偵測錯誤和憑空出現的句子。
- 知道語言的話,手動設定語言。
- 最終字幕選較大的模型,快速筆記則選較小的。較大的模型比較慢,但在人名和口音上錯誤較少。
- 匯出 SRT 或 VTT,然後一邊看影片一邊把整個檔案讀一遍。修正人名、數字和任何重複的句子。
- 拆開過長的字幕。易讀的字幕大約兩行,並且至少在畫面上停留一秒。
兩種常見的字幕格式,差別只在小細節:
SRT:
1
00:00:01,000 --> 00:00:04,000
Welcome to the lesson.
VTT:
WEBVTT
00:00:01.000 --> 00:00:04.000
Welcome to the lesson.SRT 為每段字幕編號,毫秒前使用逗號。WebVTT 是 W3C 的格式,用於 HTML 的 video 元素,以 WEBVTT 標頭開頭,並使用句點。
隱私與同意
會議、通話和訪談的錄音含有個人資料,而且在許多國家,錄下他人的聲音需要對方同意。使用雲端轉錄服務之前,請確認音訊儲存在哪裡,以及是否會被用來訓練模型。在應用程式或瀏覽器中於本機執行模型,音訊就會留在你的裝置上,這通常是滿足隱私要求最簡單的方式。
常見問題
AI 轉錄的準確度如何?
在使用人數多的語言中,只有單人且清晰的音訊,現代模型每一百個字只會出現少量錯誤。有雜訊、多人同時說話、濃重口音、小語種和專業詞彙時,準確度會下降,所以人名和數字一定要校對。
為什麼 Whisper 會寫出根本沒說過的字?
它是以音訊為條件的文字生成器。在靜音、音樂或雜訊中,它可能接著寫出一般而言很可能出現的文字,例如重複的句子,或網路影片結尾常見的片語。剪掉靜音並設定語言可以減少這種情況。
語音轉文字能辨別是誰在說話嗎?
它本身做不到。辨別說話者稱為 diarization,通常是另一個模型,把各段標為說話者 1、說話者 2 等等,之後還需要人工把標籤對應到真實姓名。
SRT 和 VTT 有什麼差別?
兩者都是帶有起訖時間的純文字字幕檔。SRT 在時間戳記中使用逗號,並為每段字幕編號。VTT 以 WEBVTT 開頭、使用句點,是瀏覽器原生支援、用於 HTML 影片的格式。
可以離線轉錄音訊嗎?
可以。Whisper 這類開放模型可以在電腦或現代瀏覽器中執行,不必把音訊傳到伺服器。第一次執行時會下載模型,之後轉錄就不用上傳你的檔案。