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