今天我們要來看的是linux離線語音識別的安裝和運行,在開始說之前,我想問一下,很多人都玩過小游戲吧,我之前的一個朋友自己做了一個貪吃蛇小游戲,然后給他加上了語音識別系統,更加增添了游戲的趣味,對于語音識別系統可以說是還是很簡單的,今天我們就先看看如何進行linux離線語音識別的安裝和運行,我親自給你們示范一下。
我們首先可以在訊飛上下載sdk,下載完之后,要解析文件,你要分清里面的都是什么意思,文件解析玩,會有4個頭文件:msp_errors.h msp_types.h qisr.h qtts.h,msp_errors.h msp_types.h為通用數據結構的頭文件,qisr.h是語音識別用的頭文件,qtts.h是語音合成用的頭文件。這些你是必須要了解的,不然怎么開始接下來的步驟。
在你下載的sdk里面是有步驟的,但是也是要注意一些問題的,步驟如下:
1.doc目錄下存放開發文檔等;
2.lib目錄下存放SDK需要調用的動態庫以及需要引用的頭文件。
3.example目錄下存放提供的示例demo,每個例子下都有Makefile文件,在當前目錄make即可;
4.bin目錄下存放符合標準的語音文件樣例、配置文件和資源文件等,make之后的example可執行程序也會拷貝至此,請在此目錄下運行,否則會運行失敗;
5.prj目錄下提供make腳本,可以快速編譯例子。
但是在這個過程中我遇到了一些問題就是報錯了,這是為什么呢,他提示是說找不到 lasound,去看它的makefile文件,其中需要這個庫,所以在這里需要注意一點,你如果重新編譯下面這個庫進去,他還是會報錯,并且警告,這就說明創建可能是不完整的,那么解決方法就是把之前創建的“asrdemo.o”刪除,再繼續編譯,就可以成功了。
然后在bin下生成了"asrdemo"可執行文件,在bin目錄下運行(./asrdemo)
這樣就運行成功了,但是你會發現會有一堆代碼,那你就要做如下步驟了
1.先要調用QISRInit()函數,參數是自己的appid,每個SDK都是注冊才能下載的,所以是唯一的,用來區分用戶的,不同級別的用戶每天可以使用SDK的次數有限制,畢竟人用的多了語音識別的性能肯定會下降;
2.之后就是把GrammarID,輸入輸出的參數param和調用狀態返回值ret作為參數傳入QISRSessionBegin()函數中進行初始化,返回值是sessionID,這個是后面所有函數的主要參數之一;
3.打開自己的音頻文件,調用QISRAudioWrite()函數寫入,可以分段也可以一次,第一個參數是sessionID,上面初始化函數返回的值,第二個參數是音頻數據頭指針,第三個參數是音頻文件大小,第四個參數是音頻發送的狀態,表示發送完了沒有,剩下兩個是服務器端檢測語音狀態和識別狀態的返回值;
4.調用QISRGetResult()函數獲取識別的結果,第一個參數還是sessionID,第二個參數是輸出識別的狀態,第三個參數是與服務器交互的間隔時間,官方建議5000,我取為0,第四個參數是調用狀態返回值ret,最后這個函數的返回值就是上面結果的json數據了
你在進行錄音的時候,要使用“ffmpeg”錄音,他是比較簡單的,而且還能滿足要求。這樣你的linux離線語音識別系統就安裝運行好了,就是這么的簡單,但是也有一些里面需要注意的東西,就像剛才碰到的那些情況一樣,如果再安裝運行時還有其他錯誤,可以咨詢哦。