簡介
新一代 Kaldi
部署框架 sherpa-onnx 支援的程式語言 API
大家庭中, 最近增加了一個新成員: JavaScript。
為了方便大家檢視,我們把目前所有支援的程式語言彙總成如下一張圖。
注: 這個家庭還在不斷的擴充,總有一款適合你!
後續我們會增加Dart
、Rust
、WebAssembly
等支援。
如果你想貢獻其他的語言,歡迎參與。
增加了對 JavaScript
的支援,意味著我們可以在 JavaScript
中使用 sherpa-onnx
提供的各種功能,比如
- 語音識別 (支援流式和非流式)
- 支援 Zipformer
- 支援 Paraformer
- 支援 Whisper
- 語音合成
- 支援 VITS
- VAD
- 支援 Silero VAD
下圖總結了所有的功能。
本文介紹如何在 JavaScript
中使用這些功能。
注:我們目前支援的是NodeJS
。 還不支援在瀏覽器中執行sherpa-onnx
。 請關注後續我們對WebAssembly
的支援。
安裝
我們已經把 sherpa-onnx
封裝成 npm
包。如下圖所示:
你只需要下面一條語句,就可以安裝 sherpa-onnx
:
npm install sherpa-onnx
本文使用 naudiodon2 讀取麥克風。為了完成本文的測試, 你需要額外安裝如下依賴:
npm install naudiodon2
下面的影片記錄了完整的安裝過程:
注: 請使用 node v13.14.0 版本進行測試。
當下面這個issue
解決後,你可以使用新版本的 node. node-ffi-napi/node-ffi-napi#97
(請看 https://mp.weixin.qq.com/s/aBENCGdnS7wBEKnbipcVjA)
使用
安裝完 sherpa-onnx
後,我們就可以開始使用它啦!
下面我們介紹如何使用 sherpa-onnx
的 JavaScript
API
進行
- 語音端點檢測 (
VAD
) - 語音識別
- 語音合成
本文用到的所有示例程式碼,都可以從下面的連結中找到。
https://github.com/k2-fsa/sherpa-onnx/tree/master/nodejs-examples
本文的所有演示,都在 nodejs-examples
目錄進行。
語音端點檢測 (VAD)
本例子演示如何使用 Silero VAD
在 JavaScript
中進行語音端點檢測。
我們使用如下檔案進行測試:
https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/test-vad-microphone.js
測試命令如下:
cd nodejs-examples
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
node ./test-vad-microphone.js
演示影片如下。
語音合成 (TTS)
我們使用下述檔案進行測試
https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/test-offline-tts-zh.js
為了給大家演示語音合成的 JavaScript API 有多麼簡單,我們把所有的程式碼截圖如下:
測試命令為:
cd nodejs-examples
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-zh-aishell3.tar.bz2
tar xvf vits-zh-aishell3.tar.bz2
node ./test-offline-tts-zh.js
演示影片如下:
語音識別
我們給大家展示兩個例子:
- 流式
VAD
+ 非流式Whisper
英文語音識別 - 流式
Zipformer
中英文語音識別
更多的例子,請參考下面的文件
https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/README.md
流式 VAD
+ 非流式 Whisper
英文語音識別
我們使用 Whisper
tiny.en
這個模型進行測試。測試檔案為
https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/test-vad-microphone-offline-whisper.js
測試命令為:
cd nodejs-examples
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-whisper-tiny.en.tar.bz2
tar xvf sherpa-onnx-whisper-tiny.en.tar.bz2
node ./test-vad-microphone-offline-whisper.js
演示影片如下:
流式 Zipformer
中英文語音識別
我們使用一箇中英文的流式 Zipformer
模型進行測試。
測試檔案為
https://github.com/k2-fsa/sherpa-onnx/blob/master/nodejs-examples/test-online-transducer-microphone.js
測試命令為:
cd nodejs-examples
wget -q https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
tar xvf sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
node ./test-online-transducer-microphone.js
演示影片如下:
總結
本文向大家介紹瞭如何使用 sherpa-onnx
的 JavaScript
API
進行語音識別、語音合成和語音端點檢測 (VAD
)。所有的計算 都在本地進行,不需要訪問網路。
如果你對新一代 Kaldi
感興趣或者有任何的問題,請透過下面的二維碼聯絡我們。