影片轉逐字稿,之前玩過 Azure Speech-To-Text,這回試試 OpenAI Whisper

註:若你只想要魚,對撈魚或釣魚沒興趣,可考慮用現成工具 Whisper Desktop,能直接將 MP3 或麥克風輸入轉成文字稿。

OpenAI Whisper 有五種模型大小,大模型精準度較高,但耗用資源多,處理速度慢。除了最大模型之外,另外有英語專用模型,提供更好的識別率。

Whisper 支援多種語言,68 萬小時的訓練資料中,有 11.7 萬小時包含 96 種各國語言 參考來源,想當然爾英文的識別精準度最佳,中文的錯誤率(Word Error Rate, WER)約 14.7%。

以下是我實測在 Windows 安裝及執行 Whisper 的記錄:

  1. 安裝 Python choco install -y python
  2. 安裝 PyTorch
    官網選擇作業系統、語言平台、CUDA/CPU 決定安裝指令

    pip3 install torch torchvision torchaudio
  3. 安裝 Whisper
    pip install -U openai-whisper
  4. 安裝影音轉檔工具 ffmpeg
    choco install -y ffmpeg
    轉檔小筆記
    # M4A 轉 MP3 
    ffmpeg -i input.m4a output.mp3 # 124K
    # https://superuser.com/a/704535/264724
    ffmpeg -i input.m4a -c:v copy -c:a libmp3lame -q:a 4 output.mp3
    # MP4 擷取 MP3 https://superuser.com/a/332348/264724
    ffmpeg -i video.mp4 -b:a 192K -vn music.mp3
    
  5. 轉檔
    whisper talk.mp3 --language Chinese --model medium

我先實測了電腦語音旁白,準確度精準到嚇人,錯字極少(專有名詞如態疊加、波包、波粒二象性理解錯無可厚非),以及偶爾出現漏抓,例如一句話的後半段不見。

我也試了真人口語,準確度依然是出奇的好!

有趣的是,Whisper 目前的中文語言選項只有 Chinese (或縮寫 zh) 無法再細分,Whisper 會自己決定翻成繁體還是簡體,像是量子力學影片被轉成繁體中文、李永樂老師的影片則被判斷轉成簡體。在網路上找到 Workaround - 加上 --initial_prompt="..." 進行提示(在進行這段語音前的前言,不知道輸入什麼的話,就放第一句文字的繁體或簡體字串),其使用繁體或簡體可決定整篇翻譯使用語系:

之前玩 AI 都是用線上服務,在自己的硬體上跑,對於 「AI 需要大量算力」這事兒有了全新體會。用 CPU 轉檔效能比我預期的慢很多,在 32 核 CPU 主機上跑(無獨立顯卡/GPU/CUDA,純靠 CPU),用 Medium 模型轉換一分鐘語音需要花五分鐘,三十分鐘要花兩個多小時,粗估大約一分鐘不到一百個中文字。

找到網路上有個 13 分鐘音檔 Medium 模型評測,RTX 3050 為每分鐘 1328 個字(WPM),RTX 3060 1594 WPM、RTX 4090 3131 WPM,速度相差十倍以上。

過去老覺得自己不玩遊戲,買工作機完全不需考慮獨立顯卡,多花錢又浪費電。但 AI 時代一切改觀了,工作研究也需要高檔顯卡才能盡興,哈!


Comments

# by Bilibala

我使用現的Mac Whisper ,直接解讀廣東話,無需任何提示。

# by heiwing

whisper desktop 如果有時候如果video 有一段長時間沒說話, 字幕就會不斷重復同一句, 我轉用whisper-ctranslate2 , 包含Voice Activity Detection技術就沒有這問題

# by 布丁

有趣誒,我也來試試

# by Test

有推薦其它應用嗎? AI coding assistant , train yolo ,算圖Stable Diffusion.

# by Jeffrey

to Test, 若常寫程式,大推 Github Copilot,用過就回不去了 https://blog.darkthread.net/blog/github-copilot-demo/ https://blog.darkthread.net/blog/cef-parsing-ft-github-copilot/

# by han

請問一下,我看了 github 的描述 """This project is a Windows port of the whisper.cpp implementation. Which in turn is a C++ port of OpenAI's Whisper automatic speech recognition (ASR) model.""" 所以我可以理解為,他是為了在 windows 上方便運行而進行的改寫? 換句話說,上面所提到的另外兩個 repository 要在 windows 上運行很麻煩?

# by Jeffrey

to han, 我沒使用 Whisper Desktop,而是用 OpenAI 原始專案,運行方式如文章所示,安裝 Python/PyTorch/ffmpeg/openai-whisper 就能執行了。

# by Mr.Cc

好奇的是 m4a 直接給 Whisper Desktop 似乎也能吃? 不知道先轉為 mp3 是否能加快或增加辨識度?!

# by Jeffrey

to Mr.Cc,用 MP3 格式純粹因為老人對聲音檔格式的認知還停在 MP3 (笑),沒特殊用意。剛才查了一下,M4A 被設計用以取代 MP3,效率更好,且現代軟體或裝置應該都支援了,我未來會改成以 M4A 優先。

# by Jackson2764

這個在linux 下能跑嗎? 想租台 GPU VPS 虛擬主機幾個小時,來處理會議逐字稿 QQ

# by Jeffrey

to Jackson2764,參考文章第三張圖,可選擇 OS 跟用 CUDA/GPU 或 CPU 決定安裝版本

# by Rob

Whisper跑起來了,但怎麼輸出成文字檔?

# by Jeffrey

to Rob, 等它跑完會產生多個格式不同的檔案(包含附時間點的字幕檔)

# by MARSLIAO

請問輸出時 如何控制指令參數 不要有逗點 或是強制斷行, 例如 "這是測試強制斷行 , 可否強制斷行" 上述希望能輸出 兩段行 00:00:01 -->00:00:05 -->這是測試強制斷行 00:00:06 -->00:00:08 -->可否強制斷行

# by Ellery

看很多YouTuber能很快上字幕也是用這Whisper產生字幕檔?

# by 缠中参禅

如果能墙,用Google Colaboratory ,3.5小时的音频40分钟左右,性能是3090显卡的60%。

# by wan

關於YouTuber的字幕檔 都可以根據影音一鍵生成 剪輯人員不一定需要會寫程式

# by eric

請問轉繁體中文發現有錯字大家是如何校正

Post a comment