訊飛小車比賽語音控制
第一次寫這玩意可能寫的不咋地,主要也是看了一些網上的資料后面給了連接,千萬不要罵人,不行我刪掉,謝謝
1.硬體層面
本次比賽所使用的麥克風為ucar小車自帶的環形六麥克風陣列,該麥克陣列采用平面式分布結構,包六個麥克風可實作 360 度等效拾音,喚醒解析度為 1度,用戶可以使用麥克風陣列獲取原始和降噪音頻,獲取喚醒角度,主麥編號也可以設定主麥編號,燈光點亮和關閉,
在麥克風陣列中,我們一般指定一個主麥來實作指定方向聲音加強,其他方向抑制的目的,且降噪音頻的獲取也基于該主麥方向的,若未主動設定主麥,則主麥方向隨機,其獲取到的降噪音頻不一定基于你說話的方向,這時生成的降噪音頻可能不是最優的,用戶可通過喚醒或手動設定主麥的方式來設定主麥,以此來提高錄音質量,
2.麥克風相關ros包
1.上傳音頻和關閉上傳音頻(服務)
服務名稱:/xf_asr_offline_node/start_record_srv
服務型別:xf_mic_asr_offline::Start_Record_srv
int8 whether_start
---
string result
string fail_reason
內容:1為開啟錄音,錄音開啟即開始上傳,0 為關閉音頻,關閉音頻則停止上傳,
2.音頻流(話題)
話題名稱:/mic/pcm/deno
話題型別:xf_mic_asr_offline/Pcm_msg
Int32 length
char[] pcm_buf
內容:話題內容包括兩部分,length 表示 pcm_buf 中的長度,即有效音頻的大小,pcm_buf 存放的是指定大小的音頻位元組,
3.喚醒角度被動(話題)
話題名稱:/mic/awake/angle
話題型別:std_msgs/Int32
std_msgs/Int32
內容:0-360 之間的整數,解析度為1,表示喚醒角度,
4.喚醒角度主動(服務)
服務名稱:/xf_asr_offline_node/get_offline_recognise_result_srv
服務型別:xf_mic_asr_offline::Get_Offline_Result_srv
---
string result
int32 awake_angle
string fail_reason
內容:0-360 之間的整數,解析度為1,表示喚醒角度,
5.點亮和關閉燈光(服務)
服務名稱:/xf_mic_asr_offline/set_target_led_on_srv
服務型別:xf_mic_asr_offline::Set_Led_On_srv
int8 led_id
---
string result
string fail_reason
內容:0-11 之間的整數,若輸入值是 1-11,則分別代表 0-11 號燈,特殊地,99 表示關閉燈光,
6.設定主麥克風(服務)
服務名稱:/xf_asr_offline_node/set_major_mic_srv
服務型別:xf_mic_asr_offline::Set_Major_Mic_srv
int8 mic_id #取值為 0-5
---
string result
string fail_reason
內容:輸入為 0-5 時,對應編號為 0-5 的麥克風,
7.獲取主麥克風(服務)
服務名稱:/xf_asr_offline_node/get_major_mic_srv
服務型別:xf_mic_asr_offline::Get_Major_Mic_srv
---
string result
int8 mic_id
string fail_reason
內容:獲取主麥 id,0-5.
8.更改喚醒詞(服務)
服務名稱:/xf_asr_offline_node/set_awake_word_srv
服務型別:xf_mic_asr_offline::Set_Awake_Word_srv
string awake_word
---
string result
string fail_reason
內容:輸入字串形式喚醒詞,要 4-6 個漢字,其他引數無效,
8.更改喚醒詞(服務)
服務名稱:/xf_asr_offline_node/set_awake_word_srv
服務型別:xf_mic_asr_offline::Set_Awake_Word_srv
string awake_word
---
string result
string fail_reason
內容:輸入字串形式喚醒詞,要 4-6 個漢字,其他引數無效,
8.獲取離線命令詞識別結果(服務)
服務名稱:/xf_asr_offline_node/get_offline_recognise_result_srv
服務型別:xf_mic_asr_offline::Get_Offline_Result_srv
int8 offline_recognise_start #1 表示開啟
int8 confidence #指定置信度
Int8 time_per_order #指定單次離線命令時麥克風接收語音的時長(秒)
---
string result
內容:其中,若離線識別成功檢測到文字內容,result 為“ok”,其他情況均反饋為“fail”;
若反饋為“fail”,則 fail_reason 項不再為空,且會回傳錯誤型別,
3.功能包的運行
在運行功能包的時候直接把環形麥克風陣列的功能包xf_mic_asr_offline放到創建好的catkin_ws作業空間中,再進行編譯,即使編譯成功往往也是不能運行的,比如直接執行:
$ roslaunch xf_mic_asr_offline xf_mic_asr_offline.launch
直接執行啟動麥克風介面功能包往往會報錯因為還有一些準備作業沒有完成,
1.檢查麥克風連接是否正常
環形麥克風陣列通過一個usb介面可與電腦連接,在插后輸入如下指令:
$ lsusb
若檢測到 VID:PID 為 10d6:b003 的設備,則設備讀取成功可以進行環境配置以及下一步的作業,
2.配置麥克風的 udev 規則
找到xf_mic.rules這個檔案,在此打開終端運行如下指令:
$ sudo cp xf_mic.rules /etc/udev/rules.d/
然后執行如下指令重啟 udev 服務:
$ sudo service udev restart
再次重啟設備或插拔麥克風設備,然后再重復第一步檢查麥克風是否連接成功,
3.安裝聲卡庫和音頻播放庫
安裝必要的聲卡庫:
$ sudo apt-get install libasound2-dev
安裝必要的音頻播放庫:
$ sudo apt-get install sox
$ sudo apt-get install mplayer
4.配置動態庫檔案
在功能包的lib檔案夾中有動態庫檔案,根據自己的設備型別選擇相應的庫進行配置,進相應的檔案夾下面打開終端運行 :
sudo cp lib*.so /usr/lib/
5.為作業空間配置環境
在主目錄下打開.bashrc檔案在檔案最后加入
source /home/lishubo/xf_ws/devel/setup.bash
#(根據實際情況輸入絕對路徑)
6.修改CMakelist里面的內容
將該檔案中18-20行內容進行檢查和修改
若為 Nvidia Jetson 平臺,則修改為lib/arm64,若為 x64 平臺,如筆記本電腦,則修改為lib/x64,
link_directories(
lib/x64
#lib/arm64
)
7.訊飛開放平臺
訊飛開放平臺的網址為:
https://www.xfyun.cn/
在該平臺注冊,登錄,申請應用,下載離線命令詞識別的SKD,
1.替換common.jet檔案
將自己下載SKD功能包的common.jet檔案復制粘貼到功能包相應的檔案夾中,替換掉功能包中原有的common.jet檔案,
commonn.jet檔案在功能包中的路徑為:
xf_mic_asr_offline/config/msc/res/asr
2.更改用戶引數檔案中的appid
打開引數檔案
xf_mic_asr_offline/config/mic_offline_params.yaml
將其中的appid更換為自己的appid,
8.啟動
順利完成上述步驟之后重新編譯一下,就可以簡單運行這個功能包了
$ roslaunch xf_mic_asr_offline xf_mic_asr_offline.launch
9.錯誤碼
錯誤碼查通道:
https://www.xfyun.cn/document/error-code
10.相關參考教程通道
科大訊飛六麥克環形陣列板快速上手
訊飛六麥環形陣列基本功能測驗
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290764.html
標籤:其他
下一篇:使用 YOLO 進行目標檢測
