pocketSphinx Android 离线语音识别
前幾天有個朋友找到我說是否有非第三方(訊飛、百度)的語音識別方案,之前對這塊的了解是語音識別基本都是調用這種第三方的方案。聽完之后,谷歌發下有兩種方案。
調用Android本地
具體就是使用原生的SpeechRecognizer來調用,但是這種目前的國內環境是需要修改的,但是不能保證修改后各個機型是否能夠使用,按照這種方法,試了在小米手機上,基本是無法識別的,具體可以看下這篇文章的介紹:
https://juejin.cn/post/6844903861405089799
使用開源的pocketSphinx方案
在github上發現pocketSphinx可以滿足目前的要求,開源地址 : https://github.com/cmusphinx/pocketsphinx
由于是在android 設備上運行的,所以可以直接使用Android開源方案:
https://github.com/cmusphinx/pocketsphinx-android
按照這個教程添加依賴庫
dependencies {implementation 'edu.cmu.pocketsphinx.android:pocketsphinx-android:5prealpha@aar' }dependencies {compile (name:'pocketsphinx-android-debug', ext:'aar') }repositories {flatDir {dirs 'libs'} }或者也可以參考github上給出的 Android demo
https://github.com/cmusphinx/pocketsphinx-android-demo
由于是使用離線的方案,所以需要我們先訓練好字典的模型,生成需要的語音模型,訪問這個網址 http://www.speech.cs.cmu.edu/tools/lmtool-new.html點擊選擇文件,選擇剛才編寫的命令集文件 command.txt,然后點擊COMPILE KNOWLEDGE BASE按鈕就可以生成語言模型,如圖:
這里生成了好幾個文件,我們可以把整個 .tgz 文件下載下來解壓縮,其中得到的 .lm 文件就是我們需要的語言模型。
語言模型在這一步已經完成了,接下來需要添加字典模型,在這個網址下載我們需要的模型:https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/
解壓后,里面有一個.dic文件,然后參考這個 .dic 文件的格式,在上一步獲取到的 .lm 語言模型文件中還有一個 .dic 文件,補充完整這個 .dic 文件的發音,如圖所示:
字典模型就這樣完成了,接下來添加 聲學模型
同樣是在資源網盤的 Mandarin 文件夾下,下載 .tar.bz2 的壓縮文件解壓后,得到如下聲學模型文件:
按照一般的流程,到這里,再根據文檔,就可以完成了,但是在開發的過程中 發現按照以上方法,運行都是報錯的。
目前官網的字典模型是
該版本是比較新的,另外訓練好的語音模型,在官網的demo版本中沒有看到是在那個地方加載,基于這兩個疑問,試了很多次,發現都不知道怎么解決,后面看到一個 pocketSphinx 舊的版本的使用方法,https://blog.csdn.net/Crystal_xing/article/details/84957466
按照這個教程和對應的開源代碼:
發現里面有使用到 .lm 文件的訓練好的模型,然后根據上面提到的,訓練了對應的關鍵字語音模型,發現還是無法識別,最后通過反復對比,發現是使用的字典模型版本不一致導致的。
于是使用了 PocketSphinx 0.7 https://sourceforge.net/projects/cmusphinx/files/pocketsphinx/0.7/ 版本的字典模型,解壓后在pocketsphinx-0.7\model\lm\zh_CN/mandarin_notone.dic 去找實際的拼音,然后運行發現能夠正常的識別出來,完美解決了。
總結
以上是生活随笔為你收集整理的pocketSphinx Android 离线语音识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Wap网页制作
- 下一篇: android sina oauth2.