# Whisper: Robust Speech Recognition via Large-Scale Weak Supervision [paper link](https://arxiv.org/abs/2212.04356) [code](https://github.com/openai/whisper) # Intro - 由OpenAI於2022年12月開源的多語語音辨識模型,從 [Open ASR leaderboard](https://huggingface.co/spaces/hf-audio/open_asr_leaderboard)來看,由於其支援高達50種以上的語言,在除了英文以及一些歐洲語言以外的領域中,whisper即使放到2025年仍是能力最強的模型,可見資料匱乏以及單獨只使用語音資料來訓練很沒效率這兩件事情對於ASR領域的發展受限有多大 - 實驗出ASR模型在訓練到680,000個小時的多語言、多任務語音資料之後就會湧現出Zero-shot的能力 - 有許多衍生的開源應用,如[faster-whisper-GUI](https://github.com/CheshireCC/faster-whisper-GUI)、[Whisper Desktop](https://github.com/Const-me/Whisper)、[Mac Whisper](https://goodsnooze.gumroad.com/l/macwhisper)等等,使其成為現今最廣為使用的ASR應用 模型版本 ![螢幕擷取畫面 2025-05-16 143026](https://hackmd.io/_uploads/BJxojLVble.png) - large版本比較 - large-v2相較於large多訓練了2.5個epoch並添加regularization - large-v3 將mel channel從80提升到128以及加入廣東話的token (普遍認為這個模型有嚴重幻覺,在沒有聲音的時候會產生逐字稿) - large-v3-turbo 是將 large-v3 的decoder層從32剪枝成4層的版本 (精度有掉,但速度提升8倍) # Training Whisper Model ## Data - 資料來源主要來自網路,在680,000個小時的資料中,其中有438,000的英文資料(佔65%)117,000小時的96種不同語言的演講(佔17%)、125,000小時的從任何語言翻譯到英文的資料(佔18%) - 雖然資料來自網路,但他們沒有像其他人一樣對資料做標準化,而是要求模型直接轉譯出raw text,他們認為多樣化的資料可以讓模型擁有更強的穩健性(robustness),但還是有一些基本的filter - 建立heuristics方法過濾掉其他ASR模型產生的資料,像是當transcripts全都是大/小寫或是沒有標點符號的時候就不像是人類會寫出的東西 - 使用[VoxLingua107](https://arxiv.org/abs/2011.12998)中的Youtube語言辨識資料來建立音訊語言分類器,以確保資料中的音訊跟逐字稿是同一語言,除非逐字稿是英文,否則只要不符合就會直接被刪掉,如果逐字稿是英文的話就會被加入到將任何語言轉為英文的speech translation的訓練資料中 - 使用transcripts來偵測出跟評估資料集重疊的資料並刪除 - 在初次訓練(after training an initial model)之後他們會把error rate特別高的資料全部都刪掉,以此來辨別出低品質的資料 - 將所有音訊都切成30秒的切片,並將no-speech的資料包含在當中 ## Model - 架構是一個Encoder-Decoder Transformer - 先用80 channel+25毫秒的window+10毫秒stride的log-mel做音訊特徵擷取,把輸出scale到-1~1之間,接入2個Conv1D+GELU再做Sinusoidal PE進入模型,然後透過Cross attention傳給Decoder,同時將多任務學習的token加入Learned PE也傳入Decoder ![螢幕擷取畫面 2025-05-16 140402](https://hackmd.io/_uploads/HykDH8N-xx.png) 模型架構參數 ![螢幕擷取畫面 2025-05-16 150258](https://hackmd.io/_uploads/HJ8VXPEWll.png) 超參數設定 ![螢幕擷取畫面 2025-05-16 151953](https://hackmd.io/_uploads/rJTQDDN-xx.png) ## Multitasking - Whisper模型可以藉由他們所設計的multitasking token直接同時做轉譯、翻譯、語音活性檢測(VAD)、語音對齊以及語言辨識 ![螢幕擷取畫面 2025-05-16 145631](https://hackmd.io/_uploads/ByX2bDEWxe.png) - 橘色的是SOT=startoftranscript, EN=endoftranscript 以及任務token,綠色的是時間戳標記,藍色的是text token - Multitasking Token 組成: - 語言標記: 表示音訊語言 - 任務標記: 轉譯 <|transcribe|> 或翻譯 <|translate|> - 是否不存在時間戳標記: <|notimestamps|>,若沒有這個標記,則decoder會預測相對的時間戳並量化成20毫米的間隔 - 語言活動標記: <|nospeech|> 預測是否有語音活動 - 起始和結束標記: <|startoftranscript|> 和 <|endoftranscript|>,只要是在起始標記之前的都屬於上下文,loss只對這兩個標記之間所產生出的文字做計算 # Result ## Zero-shot - 在 zero-shot 的情況下得到 human-level 的錯誤率 ![螢幕擷取畫面 2025-05-16 150347](https://hackmd.io/_uploads/ryEDmDNWeg.png) ## Robustness - 除了LibriSpeech以外,在所有資料上都擁有最好的表現 ![螢幕擷取畫面 2025-05-16 150527](https://hackmd.io/_uploads/B1GQBPNZlg.png) ## Training data vs WER in multilingual - ZH(Chinese)、Hebrew(HE)、Telugu(TE), KO(Korean) 是表現特別差的 outlier,他們認為是因為缺少Linguistic distance上的轉移,BPE Tokenizer表現很差所導致 ![螢幕擷取畫面 2025-05-16 151914](https://hackmd.io/_uploads/rklWwP4-ll.png) ## Multilingual speech recognition - 落後大多模型,因此建議使用whisper時需指定語言 ![螢幕擷取畫面 2025-05-16 150652](https://hackmd.io/_uploads/S1emVwEWxl.png) ## Speech Translation - 只落後於 Maestro 一些 ![螢幕擷取畫面 2025-05-16 150943](https://hackmd.io/_uploads/H1zTEwEZgl.png) ## Improves with the dataset size increasing 資料越大,能力越大 ![螢幕擷取畫面 2025-05-16 151325](https://hackmd.io/_uploads/ByvoHDE-ge.png) # 缺點 - 幻覺問題,尤其在large-v3有嚴重幻覺 -> [WhisperX](https://arxiv.org/abs/2303.00747) - 轉錄格式不穩,會缺少標點符號 -> 調整 Prompt - 速度慢,無法平行運作 -> [Distil-Whisper](https://arxiv.org/abs/2311.00430) - token-level timestamp 不夠準,因為模型是sequential的只要前面出錯後面就會一起錯 -> [WhisperX](https://arxiv.org/abs/2303.00747) 只採用 # Reference - https://pub.towardsai.net/whisper-variants-comparison-what-are-their-features-and-how-to-implement-them-c3eb07b6eb95 - https://medium.com/axinc-ai/whisper-speech-recognition-model-capable-of-recognizing-99-languages-5b5cf0197c16 - https://en.wikipedia.org/wiki/Whisper_(speech_recognition_system) - https://zhuanlan.zhihu.com/p/692375653 - https://zhuanlan.zhihu.com/p/680412927 - https://zhuanlan.zhihu.com/p/657356289