百度大腦遠場語音開發套件評測—快速上手,超讚語音交互體驗

近年來,人工智能話題愈來愈熱,受到了更多人的關注。百度從2010年開始人工智能技術開發,到如今已有8年多的時間,目前百度AI技術專利在中國甚至世界上都是名列前茅。html

我大概在18年底開始接觸到百度AI社區,經過使用文字識別、圖像識別等百度AI技術,逐步感覺到了AI技術的強大,同時也感受到了百度AI技術的進步:AI技術領域範圍愈來愈普遍,識別速度愈來愈快,識別準確度愈來愈高。此次,有幸收到百度遠場語音開發套件的測評邀請,做爲一個非測試專業人員,這裏我就本身的百度遠場語音開發套件使用過程及在使用過程當中遇到的問題和你們分享一下,若有錯誤,請多多指教。linux

1、開箱android

整個包裝很簡潔,就是一個白色的長方形盒子,正上方印着「百度大腦」標識。c++

打開盒子後,首先映入眼球的是一份「百度語音遠場開發套件說明書」,裏面介紹了硬件購成、開發資料等信息。算法

拿出說明書,看到的是一個長方形的盒子,裏面放着電源適配器、USB線。shell

拿出盒子後,便看到了百度遠場語音開發板主體了,被白色泡沫保護的很好。數據庫

接下來,一塊兒具體看看遠場開發板的一些細節:ubuntu

最後,看看百度遠場語音開發套件全家福:服務器

百度大腦遠場語音開發套件,基於 RK3308 開發平臺打造,提供的麥克風選型適用於智能音箱、智能 家電、車載設備場景,整個開發套件包含麥克風陣列板、開發板、喇叭以及符合聲學要求的腔體, 支持聲源定位、噪聲消除等信號處理算法,5 米內有效拾音,支持遠場喚醒、遠場識別、語音合成能 力,使語音開發評估更簡便、更高效。網絡

RK3308 開發平臺,採用 64 位 4 核 ARMCortex-A35 處理器 RK3308 系列,整合了高性能 CODEC(8 通 道 ADC + 2 通道 DAC),直接支持最大 8 通道數字 MIC 陣列+回採,實現高精度聲音採集及分析,是 一款集多種功能爲一體針對音頻類應用的 AI+IoT 開發平臺。 豐富的操做系統/服務支持,助力方便快速進行 AIOT 開發和產品應用。

關於百度遠場語音開發套件的更多介紹,能夠參考這個連接:https://aim.baidu.com/product/b226a947-4660-4e27-83b4-877bf63b8627

 2、開發測試 

本次測試環境爲Ubuntu 16.04 64ibt 虛擬機,開發平臺是RK3308。

登錄開發板後,能夠進入/oem 目錄,裏面有開發相關說明以及一些測試示例。

(一)鏈接設備

一、安置在 adb 環境:sudo apt install adb

snow@snow-machine:~$ sudo apt install adb
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關係樹       
正在讀取狀態信息... 完成       
下列軟件包是自動安裝的而且如今不須要了:
  snapd-login-service xdg-desktop-portal xdg-desktop-portal-gtk
使用'sudo apt autoremove'來卸載它(它們)。
將會同時安裝下列軟件:
  android-libadb android-libbase android-libcutils android-liblog
下列【新】軟件包將被安裝:
  adb android-libadb android-libbase android-libcutils android-liblog
升級了 0 個軟件包,新安裝了 5 個軟件包,要卸載 0 個軟件包,有 6 個軟件包未被升級。
須要下載 141 kB 的歸檔。
解壓縮後會消耗 428 kB 的額外空間。
您但願繼續執行嗎? [Y/n] y
獲取:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 android-liblog amd64 1:6.0.1+r16-3 [16.6 kB]
獲取:2 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 android-libbase amd64 1:6.0.1+r16-3 [9,014 B]
獲取:3 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 android-libcutils amd64 1:6.0.1+r16-3 [18.7 kB]
獲取:4 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 android-libadb amd64 1:6.0.1+r16-3 [53.2 kB]
獲取:5 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 adb amd64 1:6.0.1+r16-3 [44.0 kB]
已下載 141 kB,耗時 2秒 (48.3 kB/s)
正在選中未選擇的軟件包 android-liblog。
(正在讀取數據庫 ... 系統當前共安裝有 215288 個文件和目錄。)
正準備解包 .../android-liblog_1%3a6.0.1+r16-3_amd64.deb  ...
正在解包 android-liblog (1:6.0.1+r16-3) ...
正在選中未選擇的軟件包 android-libbase。
正準備解包 .../android-libbase_1%3a6.0.1+r16-3_amd64.deb  ...
正在解包 android-libbase (1:6.0.1+r16-3) ...
正在選中未選擇的軟件包 android-libcutils。
正準備解包 .../android-libcutils_1%3a6.0.1+r16-3_amd64.deb  ...
正在解包 android-libcutils (1:6.0.1+r16-3) ...
正在選中未選擇的軟件包 android-libadb。
正準備解包 .../android-libadb_1%3a6.0.1+r16-3_amd64.deb  ...
正在解包 android-libadb (1:6.0.1+r16-3) ...
正在選中未選擇的軟件包 adb。
正準備解包 .../adb_1%3a6.0.1+r16-3_amd64.deb  ...
正在解包 adb (1:6.0.1+r16-3) ...
正在處理用於 libc-bin (2.23-0ubuntu11) 的觸發器 ...
正在處理用於 man-db (2.7.5-1) 的觸發器 ...
正在設置 android-liblog (1:6.0.1+r16-3) ...
正在設置 android-libbase (1:6.0.1+r16-3) ...
正在設置 android-libcutils (1:6.0.1+r16-3) ...
正在設置 android-libadb (1:6.0.1+r16-3) ...
正在設置 adb (1:6.0.1+r16-3) ...
正在處理用於 libc-bin (2.23-0ubuntu11) 的觸發器 ...

 二、查看安裝結果:adb version

snow@snow-machine:~$ adb version
Android Debug Bridge version 1.0.32
Revision debian

三、查看硬件是否鏈接:adb devices

snow@snow-machine:~$ adb devices
List of devices attached
e9901a0bf326eb31    device

 四、鏈接硬件:adb shell 

snow@snow-machine:~$ adb shell
/ # ls
bin       lib       mnt       root      sys       usr
data      lib32     oem       run       tmp       var
dev       linuxrc   opt       sbin      udisk
etc       media     proc      sdcard    userdata

 (二)WIFI鏈接

一、進入/data/cfg 進行wifi配置:cd /data/cfg

使用 vi 編輯 wpa_supplicant.conf:vi wpa_supplicant.conf

在設置好 wpa_supplicant.conf 後,能夠經過以下命令來從新聯網:

wpa_cli reconfigure
wpa_cli reconnect

 注意:第一次操做,調用 wpa_cli reconfigure 命令出錯:

/userdata/cfg # wpa_cli reconfigure
Failed to connect to non-global ctrl_ifname: (nil)  error: No such file or directory

 切換聯網命令:wpa_supplicant -B -i wlan0 -c 

/userdata/cfg # wpa_supplicant -B -i wlan0 -c 
/data/cfg/wpa_supplicant.conf
Successfully initialized wpa_supplicant

/userdata/cfg # wpa_cli reconfigure
Selected interface 'wlan0'
OK

/userdata/cfg # wpa_cli reconnect
Selected interface 'wlan0'
OK

 雖然顯示操做成功,可是查看網絡鏈接,發現仍是未成功鏈接(能夠看到wlan0並未顯示IP地址):

/userdata/cfg # ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

p2p0      Link encap:Ethernet  HWaddr C6:60:34:AC:2C:AA  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr C4:60:34:AC:2C:AA  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1 errors:0 dropped:12 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8555 (8.3 KiB)  TX bytes:7900 (7.7 KiB)

 重啓系統(若是一次不行,能夠進行屢次重啓),最後成功了(能夠看到wlan0顯示了分配的IP地址-192.168.1.110):

/userdata/cfg # reboot
/ # ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

p2p0      Link encap:Ethernet  HWaddr C6:60:34:AC:2C:AA  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr C4:60:34:AC:2C:AA  
          inet addr:192.168.1.110  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2234 (2.1 KiB)  TX bytes:1481 (1.4 KiB)

 

 (三)運行語音識別示例

進入/oem目錄,查看語音能力相關文件: cd oem

/oem # ls
1K.wav             libbd_alsa_audio_client.so
BDSpeechSDK           libbd_audio_vdev.so
RkLunch.sh            lost+found
alsa_audio_main_service     readme.txt
config_open_platfrom_rk3308_4_2.lst  setup.sh
environment.md          version
libbdSPILAudioProc.so

 

 查看文檔說明:cat readme.txt

libbdSPILAudioProc.so
md5:29669122675b50bb21f738014dc04fe5

libbd_audio_vdev.so
md5:8184b0a37c4037cc2264fee6518ed8a8

libbd_alsa_audio_client.so
md5:ec46e6c27734a1c684b1ab8fab762fe6

集成和使用說明:
1. push庫到設備上
   adb push lib/libbdSPILAudioProc.so /data
   adb push lib/libbd_audio_vdev.so /data
   adb push lib/libbd_alsa_audio_client.so /data
   adb push conf/config_open_platfrom_rk3308_4_2.lst /data
   adb push setup.sh /data
   adb push bin/alsa_audio_main_service /data
   adb push bin/alsa_audio_client_sample /data
   adb shell sync
2. 建立目錄,修改權限
   adb shell;cd /data
   chmod +x alsa_audio_*
   chmod +x setup.sh
3. 運行main service
   ./setup.sh
   ./alsa_audio_main_service multi_4_2 &
   hw:0,0是對應的錄音設備的聲卡號和device號,也能夠配置asound.conf,使用邏輯pcm設備名
4. 運行app,好比duer_linux, 須要添加/data目錄到duer_linux的動態庫連接路徑中
   也能夠運行咱們的sample程序
   ./alsa_audio_client_sample
   在當前目錄下會保存通過信號處理的錄音文件dump_pcm.pcm,是雙聲道,16K,小端,16bit位深音頻。

保存原始錄音數據的方法:
    啓動錄音前運行:
    mkdir -p /data/local/aw.so_profile
    touch  /data/local/aw.so_profile/dump_switch
    touch  /data/local/aw.so_profile/dump_switch_wakets
    mkdir -p /data/local/aud_rec/
    chmod 777 /data/local/aud_rec/
    
    看看配置文件的目錄
AUDCAP_DBG_SWICH        "/tmp/aw.so_profile/"
AUDCAP_DBG_FLDER        "/tmp/aud_rec/"
AUDCAP_DBG_SAVED        "/tmp/aud_rec/last/"
在/data/local/aud_rec目錄下會保存4路麥克風數據和2路參考數據,一路識別數據,一路喚醒數據。
文件的數據格式都是: 16KHz、小端、16bit、單聲道

 

根據文檔,相關文件應該在data目錄下,可是實際操做發現,相關文件在oem目錄下,故進入oem目錄,執行操做:

主要是運行如下四個命令(該命令是修改權限,啓動 alsa_audio_main_service服務,根聽說明書,使用語音識別功能須要先啓動alsa服務):

chmod +x alsa_audio_*
chmod +x setup.sh	
./setup.sh
./alsa_audio_main_service multi_4_2 &

 執行上述命令後,可以使用ps命令檢測alsa服務是否正確啓動:ps –A|grep alsa

 

根聽說明書,BDSpeechSDK 目錄下的sample目錄中包含語音識別示例,因爲語音識別運行時依賴lib、resources、extern目錄中的庫及資源文件,因此咱們須要在啓動時共享庫。

關於共享庫能夠看這裏:http://www.javashuo.com/article/p-pcrjzpvx-ex.html

進入目錄,運行語音識別示例:

cd /oem/BDSpeechSDK/sample/wakeup
LD_LIBRARY_PATH=/oem ./e2e_wp_asr_test

 

喊「小度小度,今每天氣怎麼樣」的識別結果:

能夠發現,本開發套件採用了流式識別,附帶中間結果!

(四)語音識別效果測試

經過距離遠近,語速快慢,中間是否有隔離物(隔離物爲電腦桌,顯示屏)等方式,對本開發套件進行了一次粗略的測試:

一米處:

有隔離:「一米一次喚醒測試」

有隔離,語速較快:「一米二次喚醒測試」

有隔離,語速較快:「今每天氣怎麼樣」

無隔離,正常語速:「一米三次喚醒測試」

無隔離,語速較快:「今每天氣怎麼樣」

2米處:(無隔離,正常語速)

「兩米一次喚醒測試"

「兩米二次喚醒測試」

「每天氣比較涼爽」

3米處:(無隔離,正常語速)

「三米一次喚醒測試」

「三米二次喚醒測試」

「據說明天有颱風」

5米處:(無隔離,正常語速)

「五米一次喚醒」

 

「五米二次喚醒」

「颱風來了怎麼辦」

6米處:(無隔離,正常語速)

注:首先須要較大聲喚醒小度,喚醒後,可識別正常音量的聲音:

「六米一次喚醒」

「六米二次喚醒」

 「今每天氣好晴朗」

測試結果:

通過上述的語音識別測試,能夠發現,本套件在5米內能夠達到比較良好的喚醒、識別效果,超過5米後,喚醒、識別效果降低比較明顯。

另外,對於通常性的用語,識別至關準確(即便達到6米,也能比較準確的識別),可是對於讀音相近的詞語(「一米」-「玉米」,「兩米」-「楊冪」等),識別準確性就有點差了(也可能跟發音有關)。

發音源跟套件之間是否有隔離物(非徹底隔離),對識別的影響不是很大(沒有讀音的影響大)。

語速不是很快的狀況下,通常也能正常識別。

整體而言,對識別結果影響較大的,除了距離外,就是讀音相近的詞語(發音)了。

(五)藍牙鏈接

輸入命令 :bt_realtek_start 便可啓動藍牙:

打開電腦的藍牙,能夠發現名爲realtek_bt的藍牙設備,嘗試進行配對:

配對成功:

配對成功後,就能夠用藍牙進行音樂播放等操做了。
斷開藍牙鏈接:

測試發現的問題:

一、初次打開藍牙播放音頻時,聲音過大,調整聲音後,又發現最大聲音音量有的小了。

二、雖然本套件藍牙能夠一次性鏈接多個藍牙(我嘗試了鏈接兩個藍牙設備),可是,兩個鏈接成功後,當用一個藍牙設備播放音樂,而後中止,再用另外一個藍牙設備播放音樂時,發現播放失敗,只能用以前的那個藍牙設備播放音樂。

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

 查看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

執行語音合成操做:LD_LIBRARY_PATH=/oem ./online-test:

運行結束後,會在當前目錄下生成一個xxx.pcm,其中xxx是一個測試時的時間戳.在終端執行以下命令體驗語音合成效果:aplay -t raw -c 1 -f S16_LE -r 16000 xxx.pcm

 (八)交叉編譯

 一、下載SDK 

將rk3308板子內的oem內的BDSpeechSDK目錄複製到虛擬機內。能夠進行adb pull /oem/BDSpeechSDK指令download下來,隨後將sdk放到虛擬機。

我這裏就直接將整個/oem 目錄下載放到了「下載」目錄。

二、交叉工具鏈: 

連接: https://pan.baidu.com/s/1lEuFlAqfxhAsMQGmFJswTA

提取碼: we2t

rk3308的編譯在標準linux上是編不出來的。咱們這裏須要用到交叉編譯工具鏈,這是一個特殊的編譯器,能夠認爲是在A平臺編譯出B平臺才能運行的工具包。

我這裏將交叉編譯鏈複製到虛擬機的桌面上了。

三、按要求構建項目工程目錄結構 

mkdir myProject
cd myProject
touch Makefile
mkdir src
touch src/main.cpp

 建立以下的目錄結構:

myProject/
├── Makefile
└── src
     └── main.cpp

編寫(copy) sample代碼

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

這裏先不作任何改動,就照搬就行。目前的第一目的是儘快正確交叉編譯併成功在板子上跑起來。 

 編寫(copy) Makefile代碼

 makefile能夠幫助工程快速鏈接編譯,它能省掉不少功夫。因爲本人不是純正的c++開發工程師,因此這裏copy了 sample/wakeup/ 中的Makefile代碼:

#make src=src/***.cpp
FILE_NAME=$(src)
SYS_ROOT=$(sr)
TARGET=$(basename $(notdir $(FILE_NAME)))

#build
CXX=arm-rockchip-linux-gnueabihf-g++
INCLUDE=-I../../include -I../../include/ASR -I../../include/TTS -I../../extern/include -I../../extern/include/longconnect
CPPFLAGS=-Wall -fopenmp -O2 -fPIC -g -D__LINUX__ -Wl,-rpath=../../lib,--disable-new-dtags,--copy-dt-needed-entries -Wl,-rpath=../../extern/lib,--disable-new-dtags -L../../lib -lBDSpeechSDK -L../../extern/lib -lzlog -llongconnect -lnghttp2 -lcurl -lssl -lcrypto -lz -lAudioEncoder -liconv -lAudioDecoder -lhttpDNS -lbd_alsa_audio_client -lgomp -lrt -ldl -lpthread
ifneq ($(strip $(SYS_ROOT)),)
MY_SYS_ROOT=--sysroot=$(SYS_ROOT)
endif

SRC_PATH=./src
SRC_FILE=$(shell cd $(SRC_PATH)&&echo *.cpp)
SRC=$(foreach n,$(SRC_FILE),$(SRC_PATH)/$(n))

$(TARGET):$(SRC)
    $(CXX) -o $(TARGET) ./$(FILE_NAME) $(MY_SYS_ROOT) $(INCLUDE) $(CPPFLAGS)

#clean
LIST_ALL_FILES=$(shell find . -maxdepth 1)
SOURCES=. ./Makefile ./src
RM_FILES=$(filter-out $(SOURCES),$(LIST_ALL_FILES))

clean:
    -rm -rf $(RM_FILES)

 嘗試編譯: 

配置完成後,須要在Makefile所在的目錄執行:

export PATH=/home/snow/桌面1/rk3308_arm_tool_chain/bin:$PATH
make FILE_NAME=src/main.cpp SYS_ROOT=/home/snow/桌面1/rk3308_arm_tool_chain/arm-rockchip-linux-gnueabihf/sysroot

上述語句中的 /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 的路徑:

 

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

export PATH=/home/snow/桌面/rk3308_arm_tool_chain/bin:$PATH
make FILE_NAME=src/main.cpp SYS_ROOT=/home/snow/桌面/rk3308_arm_tool_chain/arm-rockchip-linux-gnueabihf/sysroot

 

若是出現上述錯誤,說明缺乏alsa的so庫,咱們能夠從oem目錄中pull一個文件下來。他在/oem目錄下,名爲libbd_alsa_audio_client.so。將它複製到BDSpeechSDK/lib下,這個目錄專門放外部依賴的庫文件,這個也放這裏吧。

而後再次嘗試編譯,沒有任何錯誤提示了,編譯經過。

編譯成功,發現工程目錄下多了一個main文件,這就是咱們編譯好的可執行程序了。

將main可執行程序複製到/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 文件夾,執行 adb push ./esis_resource.pkg /tmp:

再次執行,出現錯誤:error:-1, domain:10, desc:alsa_audio_client_open failed, sn: ,

由於咱們的main也依賴於alsa的服務,因此須要開啓alsa服務:

cd /oem
chmod +x alsa_audio_*
chmod +x setup.sh
./setup.sh
./alsa_audio_main_service multi_4_2 &

 

或者能夠將上述語句寫入 /oem/Rklunch.sh 文件,這個文件是rk3308板子開機後會跑的一個執行文件,咱們能夠把全部須要在開機時啓動的東西,都寫在這個文件裏,這樣板子下次就會幫咱們自動啓動alsa了。

執行成功後,再次運行main程序:

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

執行成功。

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

按照上面的方法,咱們能夠編譯一下語音合成示例(能夠把合成的文字改成本身喜歡的,我這裏就改爲了「Hello World,今天時七夕情人節,中國的傳統節日!」,有條件的,能夠嘗試輸入文本,再合成語音)。

編譯程序:

上述警告能夠忽略。
把編譯完成的可執行文件下載到開發板並運行:

出現錯誤,仔細查看源代碼,發現main 函數中須要引用配置文件speech_sdk_log.conf,但路徑爲 ../../resources/speech_sdk_log.conf:

並將speech_sdk_log.conf文件push到/tmp路徑下:

從新執行:

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

 

執行成功,能夠看到/tmp目錄多了一個6832.pcm文件,運行命令 aplay -t raw -c 1 -f S16_LE -r 16000 6832.pcm,執行後,就能播放女生版的語音內容了。

 

3、產品建議 

通過一個星期的測試,發現百度遠場語音開發套件在語音喚醒、語音識別方面比較出色,識別率總體上準確很高,若是在發音類似的詞語方面多加訓練,效果會更好。此外根據我的的使用感覺在產品的功能上提一些建議:

一、 提高音質,語音多樣化

將來提供更多不一樣風格的發音人,並可讓用戶自主選擇,分別在進行購物、查詢信息、播放音頻資源等不一樣場景下有更多的音色供選擇適配。讓「小度」逐漸人性化、個性化。

二、 完善語音交互功能

提供更高質量的語音交互功能,增強對話理解和對話管理技術以及只是建設能力。經過不斷的練習,讓音箱可以更加「理解」用戶的話語意思, 給用戶提供更加準確的結果,輕鬆定製專業、可控、穩定的完整語音交互能力。

三、 音色識別

在語音交互中,經過聲紋識別不一樣用戶音色,根據音色判斷交互內容並理解,能夠將此功能利用在聲紋解鎖以及語音交互理解中,包括多人說話時執行命令的優先級。

語音交互將來可發揮的空間很大,可是如今的語音交互功能還不那麼普遍的,不過相信只要堅持發展,保持數據收集、場景優化,將來必定會在各個領域有更深度的拓展。

做者 :讓天涯

相關文章
相關標籤/搜索