## 使用whisper.cpp進行語音辨識 ### 前言 本篇為「Homemade version of “AI in a Box”」專案的系列文章,關於該專案的整體描述請參閱這篇[內容](https://hackmd.io/@ai-in-a-box/rJtjUU3Sp)。 接著實作「AI in a Box」中的自動語音辨識(ASR)部分。在這邊使用[whisper.cpp](https://github.com/ggerganov/whisper.cpp)專案以及其附帶之[已轉換的Whisper模型](https://huggingface.co/ggerganov/whisper.cpp/tree/main)。因此無需進行模型轉換程序,只要將whisper.cpp程序建置起來即可進行相關應用。 ### 準備工作 就如專案整體描述文章中所說明的會使用whisper.cpp專案,所以從GitHub下載[whisper.cpp](https://github.com/ggerganov/whisper.cpp/archive/refs/heads/master.zip)程式碼檔案並解壓縮。 接著參照「[以原生方式建置llama.cpp for Windows](https://hackmd.io/@ai-in-a-box/r1C5UleUp)」,將CMake與Visual Studio Community安裝起來。 由於whisper.cpp實際使用需要使用到對外介面(麥克風),因此需先建置[SDL2](https://github.com/libsdl-org/SDL/tree/SDL2);詳細請參考GitHub上的這篇[討論](https://github.com/ggerganov/whisper.cpp/issues/792),SDL2的預先編譯的版本可由[此處](https://mega.nz/file/GNtBxCLK#9zLSpr4sKtRLL1LC12Tgtwl2tTIZlvmeDrXC5lZi8TA)下載。 最後下載所需的模型。開啟「Windows PowerShell」,然後切換至whisper.cpp目錄之下一層models子目錄;執行download-ggml-model.cmd批次腳本以取得模型,用以下命令下載多國語言Base模型: PS \> `download-ggml-model.cmd base` ### 建置whisper.cpp 開啟「x64 Native Tools Command Prompt for VS 2022」,並用以下命令切換至whisper.cpp目錄: \> `cd whisper.cpp` 然後用以下命令進行專案建置: \> `mkdir build` \> `cd build` \> `cmake .. -DWHISPER_SDL2=1 -DSDL2_DIR=C:\Projects\SDL2 -DCMAKE_PREFIX_PATH=C:\Projects\SDL2\cmake` \> `cmake --build . --config Release` ### 執行自動語音辨識程序 執行以下命令: \> `chcp 65001` \> `.\bin\Release\stream.exe -m ..\models\ggml-base.bin -l zh -t 2` 然後對著麥克風說話,在whisper.cpp識別後將會聲音轉換成文字;執行結果如下所示:  ### 結語 whisper.cpp的程序看起來可以執行中文語音辨識,但有點吃CPU資源(我已經用了Base模型,規模已經相對較小)。想當然爾英文的識別精準度最佳,中文的錯誤率(Word Error Rate, WER)約 14.7%;且中文還有同音異字的問題,以上面的執行案例來看「基隆」有時候就會被識別為「雞籠」。 接著會嘗試使用[OpenVINO](https://github.com/ggerganov/whisper.cpp/blob/master/README.md#openvino-support)來改善執行效率。最後則會將llama.cpp與whisper.cpp兩個專案之程序進行整合,以達成用語音方式還與AI對話的目標。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.