百度大腦遠場語音開發(fā)套件評測—快速上手,超贊語音交互體驗
(五)藍牙連接
輸入命令 :bt_realtek_start 即可啟動藍牙:
打開電腦的藍牙,可以發(fā)現名為realtek_bt的藍牙設備,嘗試進行配對:
配對成功后,就可以用藍牙進行音樂播放等操作了。斷開藍牙連接:
測試發(fā)現的問題:
1、初次打開藍牙播放音頻時,聲音過大,調整聲音后,又發(fā)現最大聲音音量有的小了。
2、雖然本套件藍牙可以一次性連接多個藍牙(我嘗試了連接兩個藍牙設備),但是,兩個連接成功后,當用一個藍牙設備播放音樂,然后停止,再用另一個藍牙設備播放音樂時,發(fā)現播放失敗,只能用之前的那個藍牙設備播放音樂。
(六)錄音、播放音頻測試
查看tmp目錄內容:cd tmp
進行錄音:arecord -D hw:2,0 -c 8 -r 16000 -f S16_LE /tmp/test.wav
結束錄音后,查看目錄文件信息:
使用 aplay 命令就可以播放錄音文件:aplay test.wav
錄音效果還是不錯的。
(七)語音合成測試
示例程序會將文本“456hello你好今天天氣不錯”傳送給服務器,由服務器生成對應的語音,保存為pcm文件,用戶可以進行播放體驗。進入語音合成示例目錄:cd /oem/BDSpeechSDK/sample/tts
執(zhí)行語音合成操作:LD_LIBRARY_PATH=/oem ./online-test
運行結束后,會在當前目錄下生成一個xxx.pcm,其中xxx是一個測試時的時間戳.在終端執(zhí)行如下命令體驗語音合成效果:aplay -t raw -c 1 -f S16_LE -r 16000 xxx.pcm
(八)交叉編譯
1、下載SDK
將rk3308板子內的oem內的BDSpeechSDK目錄復制到虛擬機內?梢赃M行adb pull /oem/BDSpeechSDK指令download下來,隨后將sdk放到虛擬機。
我這里就直接將整個/oem 目錄下載放到了“下載”目錄。
2、交叉工具鏈:
rk3308的編譯在標準linux上是編不出來的。我們這里需要用到交叉編譯工具鏈,這是一個特殊的編譯器,可以認為是在A平臺編譯出B平臺才能運行的工具包。
我這里將交叉編譯鏈復制到虛擬機的桌面上了。
3、按要求構建項目工程目錄結構
創(chuàng)建如下的目錄結構:
編寫(copy) sample代碼
目錄sample/wakeup/src中的e2e_wp_asr_test.cpp中有相應的demo代碼,這里我就直接將wakeup/src中的sample代碼拷貝到這里替換main.cpp
這里先不做任何改動,就照搬就行。目前的第一目的是盡快正確交叉編譯并成功在板子上跑起來。
編寫(copy) Makefile代碼
makefile可以幫助工程快速連接編譯,它能省掉很多功夫。由于本人不是純正的c++開發(fā)工程師,所以這里copy了 sample/wakeup/ 中的Makefile代碼:
嘗試編譯:
配置完成后,需要在Makefile所在的目錄執(zhí)行:
上述語句中的 /home/snow/桌面1/rk3308_arm_tool_chain 代表著工具鏈rk3308_arm_tool_chain的根目錄/bin,如果路徑填寫錯誤,會出現如下錯誤:
make: arm-rockchip-linux-gnueabihf-g++:命令未找到
可以進入rk3308_arm_tool_chain 目錄 ,使用pwd命令獲取rk3308_arm_tool_chain 的路徑:
使用正確的路徑,重新編譯:
如果出現上述錯誤,說明缺少alsa的so庫,我們可以從oem目錄中pull一個文件下來。他在/oem目錄下,名為libbd_alsa_audio_client.so。將它復制到BDSpeechSDK/lib下,這個目錄專門放外部依賴的庫文件,這個也放這里吧。
然后再次嘗試編譯,沒有任何錯誤提示了,編譯通過。
編譯成功,發(fā)現工程目錄下多了一個main文件,這就是我們編譯好的可執(zhí)行程序了。
將main可執(zhí)行程序復制到/tmp目錄(tmp目錄在斷電后會清空)下:adb push ./main /tmp
運行程序:
LD_LIBRARY_PATH=/oem:/oem/BDSpeechSDK/lib:/oem/BDSpeechSDK/extern/lib ./main
出現錯誤:
error:5, domain:38, desc:Wakeup: dat file invalid., sn:
這里意思是沒成功載入dat文件。我們看一下代碼。在wakeup_config函數中,可以看到它配置dat文件的路徑,是../../resources/asr_resource/esis_resource.pkg只要把這個層級改成絕對路徑,或者把路徑改短 ./esis_resource.pkg,并把pkg文件拷貝過來即可。
然后重新編譯,adb push到tmp下,還是這個錯誤,那是因為雖然改了文件路徑,但是我們還沒有把 esis_resource.pkg 也push到tmp文件夾里,進入 /home/snow/下載/oem/BDSpeechSDK/resources/asr_resource 文件夾,執(zhí)行 adb push ./esis_resource.pkg /tmp
再次執(zhí)行,出現錯誤:error:-1, domain:10, desc:alsa_audio_client_open failed, sn: ,
因為我們的main也依賴于alsa的服務,所以需要開啟alsa服務
或者可以將上述語句寫入 /oem/Rklunch.sh 文件,這個文件是rk3308板子開機后會跑的一個執(zhí)行文件,我們可以把所有需要在開機時啟動的東西,都寫在這個文件里,這樣板子下次就會幫我們自動啟動alsa了。
執(zhí)行成功后,再次運行main程序:
cd /tmpLD_LIBRARY_PATH=/oem:/oem/BDSpeechSDK/lib:/oem/BDSpeechSDK/extern/lib ./main
執(zhí)行成功。
(九)交叉編譯-語音合成
按照上面的方法,我們可以編譯一下語音合成示例(可以把合成的文字改為自己喜歡的,我這里就改成了“Hello World,今天時七夕情人節(jié),中國的傳統(tǒng)節(jié)日!”,有條件的,可以嘗試輸入文本,再合成語音)。
編譯程序:
上述警告可以忽略。把編譯完成的可執(zhí)行文件下載到開發(fā)板并運行:
出現錯誤,仔細查看源代碼,發(fā)現main 函數中需要引用配置文件speech_sdk_log.conf,但路徑為 ../../resources/speech_sdk_log.conf
并將speech_sdk_log.conf文件push到/tmp路徑下
重新執(zhí)行:
LD_LIBRARY_PATH=/oem:/oem/BDSpeechSDK/lib:/oem/BDSpeechSDK/extern/lib ./main
執(zhí)行成功,可以看到/tmp目錄多了一個6832.pcm文件,運行命令 aplay -t raw -c 1 -f S16_LE -r 16000 6832.pcm,執(zhí)行后,就能播放女生版的語音內容了。
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
-
即日-10.29立即報名>> 2024德州儀器嵌入式技術創(chuàng)新發(fā)展研討會
-
10月31日立即下載>> 【限時免費下載】TE暖通空調系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報名>>> 【在線會議】多物理場仿真助跑新能源汽車
-
11月14日立即報名>> 2024工程師系列—工業(yè)電子技術在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯網產業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
推薦專題
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結構工程師 廣東省/深圳市