您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!
語音識別是特別酷的功能,ISD9160的核心賣點就是這個語音識別,使用了Cybron VR 算法。
很好奇這顆10塊錢以內(nèi)的IC是如何實現(xiàn)人家百來塊錢的方案。且聽如下分析。
本文作者twowinter,轉(zhuǎn)載請注明:http://blog.csdn.net/iotisan/
語音識別例程中做了21條語音識別模型,只要識別到對應的語音,就從串口輸出對應模型的命令ID。
具體21條命令如下:
全開模式 0 顯示為1
外出模式 1 顯示為2
房間開啟 2 。。。
房間關閉 3
單燈變色 4
多燈變色 5
全部變色 6
打開開關 7
關閉開關 8
打開插座 9
關閉插座 10
我要開燈 11
我要關燈 12
打開空調(diào) 13
關閉空調(diào) 14
溫度升高 15
溫度降低 16
打開電視 17
關閉電視 18
更換頻道 19
降低音量 20
增加音量 21
代碼主循環(huán)的邏輯特別清晰,我把主干抽出來,方便大家理解。
int32_t DoVR_sep() { Wave_StartRecord(); CSpotter_Reset(hCSpotter); while (1) { nNumSample = Wave_GetSample(&lpsSample); if (CSpotter_AddSample(hCSpotter, lpsSample, nNumSample) == CSPOTTER_SUCCESS){ nID = CSpotter_GetResult(hCSpotter); DrvUART_Write(UART_PORT0,&nID,1); //confid 20150603 } Wave_UnlockSample(&lpsSample); } }
Wave_StartRecord開始錄音,Wave_GetSample取出音頻數(shù)據(jù)。
CSpotter_AddSample進行語音識別,CSpotter_GetResult識別出語音命令ID,最后DrvUART_Write吐出ID。
原定計劃是修改自定義語音命令,但是發(fā)現(xiàn)這塊資料很少。對于如何實現(xiàn)語音識別的Cybron VR算法,這塊是封裝成庫,具體是“CSpotterSDK16k24d.lib”。這部分底層核心不開放,是可以理解。但是在具體應用時,使用什么工具來產(chǎn)生具體的聲音模型,卻一直沒能找到對應工具。
可以看到ISD9160是可以實現(xiàn)本地一些預置的語音命令,基本上可以比的上一些幾十塊錢的模塊。但是如何實現(xiàn)自定義的語音命令,還需要繼續(xù)研究。