WhisperX:文字/語音 識別轉換

754 詞

Imgur
因為平日除了工作打打遊戲以外,還需要剪影片,我相信有相關經驗的人都知道,剪影片不是最難的,最難的再逐字稿,這既枯燥又乏味的東西,真的可以搞死人。

很久之前就有使用過whisper,剛好發現有新的WhisperX可以使用,所以就順手寫一下,當作MEMO保存其實是之前沒寫忘記怎麼用了(〃∀〃)

WhisperX: Automatic Speech Recognition with Word-level Timestamps (Diarization)

WhisperX 提供高速的自動語音識別,並提供詞級時間戳和講話者分離功能。
(高速指使用 large-v2 模型時可達到 whisper 的 70 倍速)

1
2
GitHub: m-bain/whisperX
https://github.com/m-bain/whisperX
  • 使用 whisper large-v2 進行批次推論,實現 70 倍速的轉錄速度
  • 以 faster-whisper 做後端,對於 large-v2 使用 beam_size=5 只需要 8GB 以下的 GPU 顯存
  • 使用 wav2vec2 對齊技術達到單詞級別的時間戳
  • 利用 pyannote-audio 中的語者分離功能實現多人語音辨識(包含語者 ID 標籤)
  • VAD 預處理,減少幻聽問題並提升批次處理效率而不影響字錯率

它會把語音分割成好幾個小段落再送去Whisper處理,再將時間軸對齊到單字的層級上。另外它底下是使用 faster-whisper 模型,號稱能在同樣的辨識率下達到 4 倍快速。

實測是真的很快🚀

上方數據是 large-v2,不過它有支援新的 large-v3

安裝方式也十分簡單,就操照 GitHub 文件安裝就可以啦~

1
2
3
4
conda create --name whisperx python=3.10
conda activate whisperx
conda install pytorch==2.0.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia
pip install git+https://github.com/m-bain/whisperx.git --upgrade

模型列表

WhisperX 背後是使用 fast-whisper 做轉錄,請在 Hugging Face上查看模型清單

使用

印出所有的參數和說明,也可以在 GitHub 上查看

1
whisperx -h

基本的使用方式是直接在程式後帶入音檔檔名

1
whisperx audio.mp3

其它語言需要帶入參數指令語言。
除了英語以外的其它語言,模型建議要使用到 large 成果才比較能看

1
whisperx --model large-v3 --language zh audio_zh.mp3

轉錄中文和日文時一定要加上參數 –chunk_size,5~10 都不錯,如果斷句很怪的話在此範圍調調看。

1
whisperx --chunk_size 6 audio.mp3

如果你想要在 CPU 上執行它,請加上 –device cpu –compute_type int8

1
whisperx --device cpu --compute_type int8 audio.mp3

–output_format 可指定輸出格式,可選格式有 “all”, “srt”, “vtt”, “txt”, “tsv”, “json”, “aud”

1
whisperx --output_format srt audio.mp3

此外如果覺得使用指令難度太高,或者沒有需要到這麼高要求,只是想要簡單的使用
Whisper也有出了一個GUI介面,操作簡單拉拉選選就可以做完啦了

點擊此處下載

不得不說,有這個語音轉字幕真的省下很多麻煩,雖然產出後還是要做一下Review,但可以省下很多逐字稿的時間還是很棒的。