SLAM+語音機器人DIY系列:(七)語音交互與天然語言處理——2.機器人語音交互實現

摘要                                                    

這一章將進入機器人語音交互的學習,讓機器人能跟人進行語音對話交流。這是一件很酷的事情,本章將涉及到語音識別、語音合成、天然語言處理方面的知識。本章內容:php

1.語音交互相關技術html

2.機器人語音交互實現python

3.天然語言處理雲計算引擎linux



2.機器人語音交互實現                        

其實要本身作一款語音對話機器人仍是很容易的,咱們只須要選擇好語音識別、語音合成、天然語言處理的技術,就能夠在一款樹莓派3開發板上實現了。因爲語音交互系統的核心技術是雲端天然語言處理技術,因此咱們能夠選擇網上免費提供的語音識別、語音合成等現有方案,將主要精力用在雲端天然語言處理技術的研發上。語音識別與語音合成SDK有:科大訊飛、百度語音、Google…,對於咱們牆內玩家…(Google頭疼)。通過我本身的實測,發現比較好用的免費SDK是科大訊飛家的,因此強烈推薦。爲了測試方便,我先推薦圖靈機器人API做爲雲端天然語言處理技術。等你們將整個語音交互系統的工做原理學會後,隨時能夠將圖靈機器人API替換成本身的雲端服務器,從而將主要精力轉移到雲端天然語言處理技術的研發上。說了這麼多,咱們先來看看我們的機器人語音交互軟硬件實現的真容吧,如圖5。nginx

5機器人語音交互軟硬件實現django

USB麥克風拾取聲音,USB聲卡和音響播放聲音,樹莓派3開發板上運行語音識別、語音合成、QA及NLP請求。其中,語音識別和語音合成採用科大訊飛的SDK,QA及NLP請求調用圖靈機器人的API接口。ubuntu

這裏特別說明一下,爲何選用USB聲卡而不用樹莓派自帶AV聲卡的緣由。你能夠直接將耳機插口插入樹莓派的AV接口試試,確定很酸爽!雜音太大。這裏就須要硬件支持。雜音緣由: 由於樹莓派3的AV接口是音頻和視頻合併輸出的,這個接口是美標接口,而在中國是國標的,接口的接地和音頻是相反的,這就致使根本不能用了。另外對播放器的支持並不完善。centos

2.1.獲取科大訊飛的SDK                                                   

科大訊飛提供用於研究用途的語音識別、語音合成的免費SDK,科大訊飛分發該SDK的形式是庫文件(libmsc.so+庫受權碼(APPID),庫文件libmsc.so與庫受權碼APPID是綁定在一塊兒的,這也是大多說商業軟件分發的方式。服務器

註冊科大訊飛帳號:網絡

首先,前往訊飛開放平臺https://www.xfyun.cn),註冊科大訊飛帳號,註冊好後,就能夠進入本身的控制檯進行設置了,如圖6

6註冊科大訊飛帳號及登陸

建立應用:

咱們要在科大訊飛的開放平臺建立咱們須要的應用,這樣訊飛就根據應用類型給咱們生成對應的SDK庫。

進入訊飛開放平臺的控制檯後,找到左側欄的[建立應用],按要求填寫各個選項,注意[應用平臺]一欄填Linux,由於咱們用的樹莓派3開發板裝的是Linux系統,如圖7

7建立應用

建立應用完成後,就要給該應用添加相應的AI技能了,因爲咱們須要訊飛的在線語音合成、在線語音識別(也就是語音聽寫),因此添加這兩個服務就好了。如圖8

8添加語音合成與識別服務

申請樹莓派3平臺對應的Linux SDK庫:

因爲科大訊飛開放平臺默認只提供PCx86架構的Linux庫,因此若是咱們想在樹莓派3(樹莓派3ARM架構)上使用科大訊飛的Linux SDK庫,就須要另外申請。其實申請方法也很簡單,進入科大訊飛中個人語音雲頁面:

http://www.xfyun.cn/index.php/mycloud/app/linuxCrossCompile

進行樹莓派Linux平臺文件交叉編譯申請,選擇應用(必須是linux平臺的應用,按照默認勾選所有在線服務,平臺架構ARM硬件型號Broadcom BCM2837(樹莓派3b型,即樹莓派3SOC,其他版本樹莓派,樹莓派2BroadcomBCM2836,更早的版本爲BroadcomBCM2835),處理器位數32,運行內存填了1GB最後記得填上本身的郵箱,提交後,填寫無誤正確,你的郵箱收到可下載庫的連接,下載解壓後獲得libmsc.so這個庫文件就是咱們申請的樹莓派3平臺對應的Linux SDK庫了。如圖9。關於交叉編譯器和編譯腳本,從這裏http://pan.baidu.com/s/1pLFPTYr下載,具體交叉能夠參考這一篇

http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=32028&highlight=

9申請樹莓派3平臺對應的Linux SDK

關於這個庫文件對應的庫受權碼APPID能夠在[個人應用]界面查看,如圖10

10查看庫文件對應的庫受權碼APPID

2.2.編譯安裝訊飛語音交互實例ROSDEMO

利用科大訊飛提供的SDK庫文件和官方API說明文檔,咱們就能夠開發出本身的語音交互實例程序,固然也能夠開發對應的ROS程序。在咱們的miiboo機器人上開發的語音交互ROS功能包叫miiboo_asrmiiboo_asr功能包文件組織結構,如圖11。其中lib文件夾下存放科大訊飛提供的libmsc.so庫文件,iat.cpp是語音識別節點源文件,tts.cpp是語音合成節點源文件,qa_nlp.cppQA&NLP邏輯處理節點源文件,其餘的文件咱們能夠不用關心。

11miiboo_asr功能包文件組織結構

瞭解了miiboo_asr功能包的基本狀況後,咱們就開始編譯安裝吧。首先,將miiboo_asr包拷貝到~/catkin_ws_apps/src/目錄下。而後將上面申請到的樹莓派3平臺對應的Linux SDKlibmsc.so文件拷貝到miiboo_asr/lib/中,並將miiboo_asr/CMakeLists.txt文件中有關libmsc.so的路徑替換爲你存放該libmsc.so的實際路徑。如圖12

12CMakeLists.txt文件中有關libmsc.so的路徑修改

接着咱們須要將miiboo_asr/launch/xf.launch文件中的各個appid、聲卡硬件地址、麥克風硬件地址設置成本身實際的值。關於與libmsc.so庫綁定的appid上面已經介紹了查看方法,而聲卡硬件地址、麥克風硬件地址的查詢也很簡單。

麥克風硬件地址的查詢直接使用命令arecord -l如圖13

 

13麥克風硬件地址的查詢

在這裏麥克風錄製設備處於卡1,設備0因而咱們的麥克風硬件地址就是plughw::CameraB409241」。

聲卡硬件地址的查詢直接使用命令aplay -l,如圖14

 

14聲卡硬件地址的查詢

在這裏聲卡播放設備有三個,卡0中的設備03.5音頻輸出,卡0設備1HDMI音頻輸出,卡2設備0USB聲卡輸出。這裏我推薦使用USB聲卡輸出,因此咱們的聲卡硬件地址就是「plughw:DAC」。

在編譯miiboo_asr前,咱們還須要安裝一些依賴項,其實就是麥克風錄音和音樂播放工具,安裝命令以下:

sudo apt-get update

sudo apt-get install libasound2-dev

sudo apt-get install mplayer

如今能夠編譯miiboo_asr了,編譯命令以下:

cd ~/catkin_ws_apps/

catkin_make -DCATKIN_WHITELIST_PACKAGES=」miiboo_asr」

編譯完成後,就能夠運行語音交互節點來實現語音對話了,舒適提醒,請確保樹莓派已鏈接網絡,由於語音交互節點運行時須要訪問網絡。啓動語音交互各個節點很簡單,直接一條命令:

roslaunch miiboo_asr xf.launch

節點都運行起來會聽到歡迎語句「你好,歡迎使用miiboo機器人語音控制系統」以後就能夠對着麥克風說出本身的指令,語音識別被轉換爲文本文本經圖靈機器人獲得應答,並經過語音合成使咱們能聽到回答的聲音。這樣一個語音交互的聊天機器人就誕生了,盡情享受和機器人聊天的樂趣吧^_^

這裏說明一下,若是你使用咱們的miiboo機器人,那麼miiboo機器人上已經安裝編譯好了miiboo_asr功能包,因此只須要上面roslaunch miiboo_asr xf.launch這條啓動命令,就能夠開始機器人聊天之旅。可是,miiboo機器人上安裝的miiboo_asr功能包的libmsc.so的訪問次數和頻率是有限制的,只能供學習使用。若是你們須要將miiboo_asr功能包用來二次開發或實際應用,就須要按照上面的步驟去科大訊飛官網申請本身的SDK庫了。

後記                                                      

------SLAM+語音機器人DIY系列【目錄】快速導覽------

第1章:Linux基礎

1.Linux簡介

2.安裝Linux發行版ubuntu系統

3.Linux命令行基礎操做

第2章:ROS入門

1.ROS是什麼

2.ROS系統總體架構

3.在ubuntu16.04中安裝ROS kinetic

4.如何編寫ROS的第一個程序hello_world

5.編寫簡單的消息發佈器和訂閱器

6.編寫簡單的service和client

7.理解tf的原理

8.理解roslaunch在大型項目中的做用

9.熟練使用rviz

10.在實際機器人上運行ROS高級功能預覽

第3章:感知與大腦

1.ydlidar-x4激光雷達

2.帶自校準九軸數據融合IMU慣性傳感器

3.輪式里程計與運動控制

4.音響麥克風與攝像頭

5.機器人大腦嵌入式主板性能對比

6.作一個能走路和對話的機器人

第4章:差分底盤設計

1.stm32主控硬件設計

2.stm32主控軟件設計

3.底盤通訊協議

4.底盤ROS驅動開發

5.底盤PID控制參數整定

6.底盤裏程計標

第5章:樹莓派3開發環境搭建

1.安裝系統ubuntu_mate_16.04

2.安裝ros-kinetic

3.裝機後一些實用軟件安裝和系統設置

4.PC端與robot端ROS網絡通訊

5.Android手機端與robot端ROS網絡通訊

6.樹莓派USB與tty串口號綁定

7.開機自啓動ROS節點

第6章:SLAM建圖與自主避障導航

1.在機器人上使用傳感器

2.google-cartographer機器人SLAM建圖

3.ros-navigation機器人自主避障導航

4.多目標點導航及任務調度

5.機器人巡航與現場監控

第7章:語音交互與天然語言處理

1.語音交互相關技術

2.機器人語音交互實現

3.天然語言處理雲計算引擎

第8章:高階拓展

1.miiboo機器人安卓手機APP開發

2.centos7下部署Django(nginx+uwsgi+django+python3)

----------------文章將持續更新,敬請關注-----------------

 

若是你們對博文的相關類容感興趣,或有什麼技術疑問,歡迎加入下面的《SLAM+語音機器人DIY》QQ技術交流羣,一塊兒討論學習^_^

關於咱們:

視頻教程:

 

https://www.bilibili.com/video/av61448040

相關文章
相關標籤/搜索