2023年11月19日

AI幫你聽聲辨字

視障者都曉得利用 OCR 光學字元辨識的功能可以將圖像裡的文字轉換為可供電腦編輯的文字,如此便能夠以 NVDA 讀出原本無法閱讀內含文字資訊的圖片/照片或圖片型式的 PDF 檔案,同樣的道理能不能將內含說話聲音的影片或聲音檔案也經過辨識轉換為文字呢?
你憗該會認為將影片或聲音檔案播放出來聽聽看不就知道在說什麼了,話雖如此,但收音效果的差異不見得都適合直接聽聲音的內容,例如說話者的聲音有時近有時遠、說話的聲音聽來小聲、充滿週遭環境雜音的聲音都令人聽了不是很舒服,說話者南腔北調的口音、咬字不夠清楚讓人聽得吃力,有些人說話聲音低沉或尖細也會影響聽覺感受。
有時候以合成語音朗讀影音的逐字稿會比直接聽取原始的聲音內容更合乎需求,有混濁感的聲音或背景雜音都會大大影響我們的專注力並造成聽覺疲勞,削弱了我們理解思考的能力,轉錄為文字以乾淨穩定的合成語音朗讀,可讓我們的大腦全速運轉而不需分心對抗干擾。
聲音轉文字後再轉語音輸出,看似多此一舉,但文字的運用彈性大,可以轉為語音輸出、轉為點字摸讀、或以視覺方式觀看、對視障與聽障者都有幫助,另外說話者所說的內容並沒辦法做更進一步的處理,像是整理編輯或搜尋說話的內容,因此將聲音識別轉換為文字仍有需要。

以往要將聲音辨識轉換為文字技術上有相當的難度,如今得利於 AI 技術的發展,辨識說話者的內容並轉為文字已非夢事,知名的 ChatGPT 聊天機器人開發商開源提供了自動語音辨識模型「Whisper」,可用來辨識多國語言的語音,此 AI 技術的辨識能力十分優秀,因此相關憗用陸續出現。
在此介紹一個以 Whisper 進行語音轉錄文字的開源應用程式,利用自己電腦上的 GPU 顯示晶片來進行需要大量運算的轉錄作業,由於 AI 技術龐大的運算需求要靠強大的平行處理及浮點運算能力支持,而 GPU 的特性使這方面的性能表現遠超過 CPU,使用 NVIDIA 及 AMD 的 GPU 作為顯示晶片的電腦能有效率的執行轉錄作業。

程式名稱:
WhisperDesktop

相關連結:
  • WhisperDesktop 專案
    https://github.com/Const-me/Whisper/
  • WhisperDesktop 發行版本資訊與程式下載
    https://github.com/Const-me/Whisper/releases
  • GGML 二進位格式 Whisper 模型下載
    https://huggingface.co/ggerganov/whisper.cpp/tree/main

安裝與執行:
首先到 WhisperDesktop 程式下載頁面找到 WhisperDesktop.zip 連結 Enter 下載,此程式不需安裝,只要將壓縮檔解開放在自行建立的資料夾中即可。
接著到 Whisper 模型下載頁面,有多種 Whisper 模型的 bin 檔案可選擇,檔案名稱上的 small、medium、large 等字眼表示模型的大小,越大的模型檔案雖然辨識率越好,但辨識所花的時間會越久,建議選擇多國語言的 ggml-medium.bin 檔案以取得辨識率與效率的平衡,下載的 bin 檔案可放在 WhisperDesktop 程式所在的資料夾中方便使用。

  1. 到 WhisperDesktop 資料夾執行 WhisperDesktop.exe。
  2. 若尚未載入要使用的 Whisper 模型檔案則會出現 [Load Whisper Model] 對話方塊,之前還沒下載 Whisper 模型檔案也可在此按 Tab 到 [Hugging Face] 連結 Enter 開啟 Whisper 模型頁面下載所需的 bin 檔案,若已下載 bin 檔案則按 Tab 到 [Model Path] 欄位,因沒選擇檔案故未顯示任何內容,再按一次 Tab 到代表「瀏覽」之意的三個點點點符號按鈕 Enter,選擇已下載的 ggml-medium.bin 檔案。
  3. 按 Tab 到 [Model Implementation] 下拉式方塊,確認選取的是 [GPU],然後按 [OK] 按鈕。
  4. 接下來是 [Transcribe Audio File] 對話方塊,按 Tab 到 [Language] 下拉式方塊選擇要轉錄的來源檔案語言,由於程式不具有自働偵測語言的功能,需自行判斷要轉錄文字的影片或聲音檔案中說話者使用的語言,例如說中文的話就選「Chinese」。
  5. 按 Tab 到 [Translate] 核取方塊選擇是否要翻譯,這裡的翻譯只會將轉錄的文字翻譯為英文。
  6. 按 Tab 到 [Transcribe File] 欄位為要轉錄的檔案,再按一次 Tab 到三個點點點按鈕 Enter 選擇影片或聲音檔案。
  7. 按 Tab 到 [Output Format] 下拉式方塊選擇轉錄文字輸出格式。
    • Text file:一般文字檔
    • Text with timestamps:有時間戳記的文字檔
    • SubRip subtitles:SRT 字幕檔
    • WebVTT subtitles:VTT 字幕檔
  8. 按 Tab 到 [Place that file to the input folder] 核取方塊,若勾選會將輸出檔案放在與要轉錄的影片或聲音檔案相同的資料夾中。
  9. 上述選項若沒勾選則按 Tab 兩次到三個點點點按鈕 Enter 選擇輸出檔案要儲存的位置並輸入檔名,然後按 [儲存] 按鈕。
  10. 按 Tab 到 [Transcribe] 按鈕 Enter 開始轉錄作業,轉錄過程中 NVDA 會提示進度,也可使用 NVDA 物件導覽方式取得進度百分比,若轉錄的檔案較長的話不需等待完成,轉錄作業主要是靠 GPU,CPU 的負擔並不重,因此仍可切換到其他程式繼續上網或文書工作不會有操作卡頓問題。
  11. 完成後出現 [Transcribe Completed] 對話方塊,提供轉錄檔案的時間長度、處理轉錄所花的時間及相對速度的資訊供參考,按 [確定] 按鈕結束。

一般來說轉錄的處理時間不超過影片或聲音檔案本身的長度,GPU 效能越高轉錄時間就越短,單純轉錄會比轉錄並翻譯為英文所花的時間短。
若電腦使用非 NVIDIA 或 AMD 的顯示晶片將使得處理時間數倍於影片或聲音檔案的長度,這類電腦建議下載 ggml-small.bin 使處理時間不致於拉的太長,雖然語音辨識率會差一些,不過依轉錄文字的使用目的而定未必要花很多時間修改。
另外要注意轉錄作業進行時 GPU 的使用率高讓溫度也大幅上升,請確保電腦處於良好的散熱環境。

要轉錄的影片或聲音檔案若為英文語言,還可以另外下載使用針對英文的 Whisper 模型 ggml-medium.en.bin 以獲得更佳的轉錄品質,此時需要變更載入的 Whisper 模型。

  1. 在 [Transcribe Audio File] 對話方塊按 Tab 到 [Back] 按鈕 Enter 回到 [Load Whisper Model] 對話方塊。
  2. 找到 [Model Path] 欄位後再按一次 Tab 到三個點點點按鈕 Enter 選擇要載入英文或多國語言的 Whisper 模型 bin 檔案,然後按 [OK] 按鈕。

Whisper 對於中文為主但夾雜英文時英文的部分辨識效果仍然很不錯,不過當說話者有兩人以上時因沒標註不同說話者的關係會有不知誰在說的情況。
轉錄出來的文字以中文來說,除了可能加上去的英文逗點之外沒有標點符號,若有需要則自行修改或補上標點符號,
整體而言文字正確性及語句分行正確性都相當不錯,可讀性高,如需校正也縮短了校正所花的時間,並且是在自己的電腦上執行,當轉錄的影片或聲音檔案是非公開或具有機敏性的內容也可確保隱私與安全。