這是使用Next.js的自動語音識別(ASR)系統OpenAi Whisper的示例WebApp實現。
它會自動記錄音頻數據並將音頻數據上傳到服務器進行轉錄/翻譯,然後將結果發送回前端。也可以播放錄製的音頻以驗證輸出。
更新:如果您想使用啟用實驗功能(AppDir)使用
Next 13,請改用Openai-Whisper-api。只需設置旗幟以使用Whisper Python模塊而不是耳語API即可。
使用OpenAI語音到文本API,請檢查Openai-Whisper-api
如果您正在使用Whisper尋找語音聊天應用程序,請檢查Openai-whisper-Talk。
對於Nuxt.js版本,請檢查OpenAi-Chatterbox。
有人說, Whisper本身並非旨在支持實時流式傳輸任務本身,但這並不意味著我們不能嘗試,徒勞,大聲笑。
因此,這個項目是我嘗試使用OpenAI Whisper進行幾乎實時的Transcriber Web應用程序。其功效取決於服務器可以轉錄/翻譯音頻的速度。
我使用了Next.js因此我不必單獨的後端和前端應用程序。
至於後端,我用exec執行shell命令調用Whisper 。我尚未找到將其import node.js模塊的方法。所有帶有import的示例似乎都在使用python服務器。
import { exec } from 'child_process'
exec ( `whisper './ ${ filename } ' --model tiny --language Japanese --task translate` , ( err , stdout , stderr ) => {
if ( err ) {
console . log ( err )
} else {
console . log ( stdout )
console . log ( stderr )
}
} )請注意,我只是使用tiny模型執行超快速的轉錄任務。這就是我的全部系統可以處理的,否則它將靜止不動。

我從上一個版本更改了應用程序的行為。在此之前,該應用程序將在默認情況下不斷記錄音頻數據,以默認情況下5s。目前,它只有在可以檢測聲音的情況下才開始錄製。
有一個閾值設置可以消除背景噪聲從觸發音頻捕獲中。默認情況下,它設置為-45dB (0db是最大的聲音)。如果要將其Settings為較低或更高,則根據需要將可變的minDecibels調整為較低或更高。
在正常的人類對話中,據說我們傾向於平均每次句子之間大約2秒鐘。請記住,如果未檢測到聲音超過2秒鐘,則記錄將停止,並且音頻數據將被發送到後端進行轉錄。您可以通過編輯maxPause的值來更改此操作,默認設置為2500ms 。

由於顯示了時間段,因此可以播放上傳的音頻並遵循文本輸出。
至於代碼本身,我使用了class component (我知道,我知道...),因為我在開發時很難使用掛鉤訪問state variables 。

除了minDecibels和maxPause外,您還可以從Settings對話框”中更改幾個language , model和task等Whisper選項。請檢查Whisper的GitHub存儲庫以獲取有關選項的說明。
仍然有很多事情要做,所以這個項目仍在進行中...
首先,您需要安裝Whisper及其Python依賴性
$ pip install git+https://github.com/openai/whisper.git您還需要在系統上安裝ffmpeg
# macos
$ brew install ffmpeg
# windows using chocolatey
$ choco install ffmpeg
# windows using scoop
$ scoop install ffmpeg到這個時候,您可以使用命令行測試Whisper
$ whisper myaudiofile.ogg --language Japanese --task translate如果成功,您可以繼續安裝此應用程序。
克隆存儲庫並安裝依賴項
$ git clone https://github.com/supershaneski/openai-whisper.git myproject
$ cd myproject
$ npm install
$ npm run dev打開瀏覽器http://localhost:3006/以加載應用程序頁面。
您可能需要使用https協議運行此應用。如果您想使用單獨的設備進行音頻捕獲並將計算機用作服務器,則需要這。
為了這樣做,請準備正確的certificate和key文件,然後在根目錄處編輯server.js 。
然後運行
$ node server.js現在,將瀏覽器打開到https://localhost:3006/以加載頁面。