訂閱
糾錯(cuò)
加入自媒體

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

2019-10-29 14:21
來(lái)源: 粵訊

(五)藍(lán)牙連接

輸入命令 :bt_realtek_start 即可啟動(dòng)藍(lán)牙:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

打開(kāi)電腦的藍(lán)牙,可以發(fā)現(xiàn)名為realtek_bt的藍(lán)牙設(shè)備,嘗試進(jìn)行配對(duì):

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

配對(duì)成功后,就可以用藍(lán)牙進(jìn)行音樂(lè)播放等操作了。斷開(kāi)藍(lán)牙連接:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

測(cè)試發(fā)現(xiàn)的問(wèn)題:

1、初次打開(kāi)藍(lán)牙播放音頻時(shí),聲音過(guò)大,調(diào)整聲音后,又發(fā)現(xiàn)最大聲音音量有的小了。

2、雖然本套件藍(lán)牙可以一次性連接多個(gè)藍(lán)牙(我嘗試了連接兩個(gè)藍(lán)牙設(shè)備),但是,兩個(gè)連接成功后,當(dāng)用一個(gè)藍(lán)牙設(shè)備播放音樂(lè),然后停止,再用另一個(gè)藍(lán)牙設(shè)備播放音樂(lè)時(shí),發(fā)現(xiàn)播放失敗,只能用之前的那個(gè)藍(lán)牙設(shè)備播放音樂(lè)。

(六)錄音、播放音頻測(cè)試

查看tmp目錄內(nèi)容:cd tmp

進(jìn)行錄音:arecord -D hw:2,0 -c 8 -r 16000 -f S16_LE /tmp/test.wav

結(jié)束錄音后,查看目錄文件信息:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

使用 aplay 命令就可以播放錄音文件:aplay test.wav

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

錄音效果還是不錯(cuò)的。

(七)語(yǔ)音合成測(cè)試

示例程序會(huì)將文本“456hello你好今天天氣不錯(cuò)”傳送給服務(wù)器,由服務(wù)器生成對(duì)應(yīng)的語(yǔ)音,保存為pcm文件,用戶可以進(jìn)行播放體驗(yàn)。進(jìn)入語(yǔ)音合成示例目錄:cd /oem/BDSpeechSDK/sample/tts

執(zhí)行語(yǔ)音合成操作:LD_LIBRARY_PATH=/oem ./online-test

運(yùn)行結(jié)束后,會(huì)在當(dāng)前目錄下生成一個(gè)xxx.pcm,其中xxx是一個(gè)測(cè)試時(shí)的時(shí)間戳.在終端執(zhí)行如下命令體驗(yàn)語(yǔ)音合成效果:aplay -t raw -c 1 -f S16_LE -r 16000 xxx.pcm

(八)交叉編譯

1、下載SDK

將rk3308板子內(nèi)的oem內(nèi)的BDSpeechSDK目錄復(fù)制到虛擬機(jī)內(nèi)。可以進(jìn)行adb pull /oem/BDSpeechSDK指令download下來(lái),隨后將sdk放到虛擬機(jī)。

我這里就直接將整個(gè)/oem 目錄下載放到了“下載”目錄。

2、交叉工具鏈:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)


rk3308的編譯在標(biāo)準(zhǔn)linux上是編不出來(lái)的。我們這里需要用到交叉編譯工具鏈,這是一個(gè)特殊的編譯器,可以認(rèn)為是在A平臺(tái)編譯出B平臺(tái)才能運(yùn)行的工具包。

我這里將交叉編譯鏈復(fù)制到虛擬機(jī)的桌面上了。

3、按要求構(gòu)建項(xiàng)目工程目錄結(jié)構(gòu)

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

創(chuàng)建如下的目錄結(jié)構(gòu):

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

編寫(xiě)(copy) sample代碼

目錄sample/wakeup/src中的e2e_wp_asr_test.cpp中有相應(yīng)的demo代碼,這里我就直接將wakeup/src中的sample代碼拷貝到這里替換main.cpp

這里先不做任何改動(dòng),就照搬就行。目前的第一目的是盡快正確交叉編譯并成功在板子上跑起來(lái)。

編寫(xiě)(copy) Makefile代碼

makefile可以幫助工程快速連接編譯,它能省掉很多功夫。由于本人不是純正的c++開(kāi)發(fā)工程師,所以這里copy了 sample/wakeup/ 中的Makefile代碼:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

嘗試編譯:

配置完成后,需要在Makefile所在的目錄執(zhí)行:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

上述語(yǔ)句中的 /home/snow/桌面1/rk3308_arm_tool_chain 代表著工具鏈rk3308_arm_tool_chain的根目錄/bin,如果路徑填寫(xiě)錯(cuò)誤,會(huì)出現(xiàn)如下錯(cuò)誤:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

make: arm-rockchip-linux-gnueabihf-g++:命令未找到

可以進(jìn)入rk3308_arm_tool_chain 目錄 ,使用pwd命令獲取rk3308_arm_tool_chain 的路徑:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

使用正確的路徑,重新編譯:

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

百度大腦遠(yuǎn)場(chǎng)語(yǔ)音開(kāi)發(fā)套件評(píng)測(cè)—快速上手,超贊語(yǔ)音交互體驗(yàn)

如果出現(xiàn)上述錯(cuò)誤,說(shuō)明缺少alsa的so庫(kù),我們可以從oem目錄中pull一個(gè)文件下來(lái)。他在/oem目錄下,名為libbd_alsa_audio_client.so。將它復(fù)制到BDSpeechSDK/lib下,這個(gè)目錄專(zhuān)門(mén)放外部依賴(lài)的庫(kù)文件,這個(gè)也放這里吧。

然后再次嘗試編譯,沒(méi)有任何錯(cuò)誤提示了,編譯通過(guò)。

編譯成功,發(fā)現(xiàn)工程目錄下多了一個(gè)main文件,這就是我們編譯好的可執(zhí)行程序了。

將main可執(zhí)行程序復(fù)制到/tmp目錄(tmp目錄在斷電后會(huì)清空)下:adb push ./main /tmp

運(yùn)行程序:

LD_LIBRARY_PATH=/oem:/oem/BDSpeechSDK/lib:/oem/BDSpeechSDK/extern/lib ./main

出現(xiàn)錯(cuò)誤:

error:5, domain:38, desc:Wakeup: dat file invalid., sn:

這里意思是沒(méi)成功載入dat文件。我們看一下代碼。在wakeup_config函數(shù)中,可以看到它配置dat文件的路徑,是../../resources/asr_resource/esis_resource.pkg只要把這個(gè)層級(jí)改成絕對(duì)路徑,或者把路徑改短 ./esis_resource.pkg,并把pkg文件拷貝過(guò)來(lái)即可。

然后重新編譯,adb push到tmp下,還是這個(gè)錯(cuò)誤,那是因?yàn)殡m然改了文件路徑,但是我們還沒(méi)有把 esis_resource.pkg 也push到tmp文件夾里,進(jìn)入 /home/snow/下載/oem/BDSpeechSDK/resources/asr_resource 文件夾,執(zhí)行 adb push ./esis_resource.pkg /tmp

再次執(zhí)行,出現(xiàn)錯(cuò)誤:error:-1, domain:10, desc:alsa_audio_client_open failed, sn: ,

因?yàn)槲覀兊膍ain也依賴(lài)于alsa的服務(wù),所以需要開(kāi)啟alsa服務(wù)

或者可以將上述語(yǔ)句寫(xiě)入 /oem/Rklunch.sh 文件,這個(gè)文件是rk3308板子開(kāi)機(jī)后會(huì)跑的一個(gè)執(zhí)行文件,我們可以把所有需要在開(kāi)機(jī)時(shí)啟動(dòng)的東西,都寫(xiě)在這個(gè)文件里,這樣板子下次就會(huì)幫我們自動(dòng)啟動(dòng)alsa了。

執(zhí)行成功后,再次運(yùn)行main程序:

cd /tmpLD_LIBRARY_PATH=/oem:/oem/BDSpeechSDK/lib:/oem/BDSpeechSDK/extern/lib ./main

執(zhí)行成功。

(九)交叉編譯-語(yǔ)音合成

按照上面的方法,我們可以編譯一下語(yǔ)音合成示例(可以把合成的文字改為自己喜歡的,我這里就改成了“Hello World,今天時(shí)七夕情人節(jié),中國(guó)的傳統(tǒng)節(jié)日!”,有條件的,可以嘗試輸入文本,再合成語(yǔ)音)。

編譯程序:

上述警告可以忽略。把編譯完成的可執(zhí)行文件下載到開(kāi)發(fā)板并運(yùn)行:

出現(xiàn)錯(cuò)誤,仔細(xì)查看源代碼,發(fā)現(xiàn)main 函數(shù)中需要引用配置文件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目錄多了一個(gè)6832.pcm文件,運(yùn)行命令 aplay -t raw -c 1 -f S16_LE -r 16000 6832.pcm,執(zhí)行后,就能播放女生版的語(yǔ)音內(nèi)容了。

聲明: 本文系OFweek根據(jù)授權(quán)轉(zhuǎn)載自其它媒體或授權(quán)刊載,目的在于信息傳遞,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),如有新聞稿件和圖片作品的內(nèi)容、版權(quán)以及其它問(wèn)題的,請(qǐng)聯(lián)系我們。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

    掃碼關(guān)注公眾號(hào)
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯(cuò)
    x
    *文字標(biāo)題:
    *糾錯(cuò)內(nèi)容:
    聯(lián)系郵箱:
    *驗(yàn) 證 碼:

    粵公網(wǎng)安備 44030502002758號(hào)