《鴻蒙機器人比賽》課件-04-1 智能機器人語音技術(shù)概述_第1頁
《鴻蒙機器人比賽》課件-04-1 智能機器人語音技術(shù)概述_第2頁
《鴻蒙機器人比賽》課件-04-1 智能機器人語音技術(shù)概述_第3頁
《鴻蒙機器人比賽》課件-04-1 智能機器人語音技術(shù)概述_第4頁
《鴻蒙機器人比賽》課件-04-1 智能機器人語音技術(shù)概述_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1.語音采集與處理課程提綱數(shù)字音頻基礎(chǔ)ALSA架構(gòu)與基礎(chǔ)安裝與使用ALSA2?NXROBO2023實現(xiàn)效果3?NXROBO2023利用AlsaMixer工具調(diào)音數(shù)字音頻基礎(chǔ)?NXROBO20234聲音由變化的氣壓組成。它被麥克風這樣的轉(zhuǎn)換器轉(zhuǎn)換成電子形式。模/數(shù)(ADC)轉(zhuǎn)換器將模擬電壓轉(zhuǎn)換成離散的樣本值。聲音以固定的時間間隔被采樣,采樣的速率稱為采樣率。把樣本輸出到數(shù)/模(DAC)轉(zhuǎn)換器,比如擴音器,最后轉(zhuǎn)換成原來的模擬信號。樣本大小以位來表示。樣本大小是影響聲音被轉(zhuǎn)換成數(shù)字信號的精確程度的因素之一。另一個主要的因素是采樣率。奈奎斯特(Nyquist)理論中,只要離散系統(tǒng)的奈奎斯特頻率高于采樣信號的最高頻率或帶寬,就可以避免混疊現(xiàn)象ALSA聲音編程介紹&ALSA歷史?NXROBO20235ALSA,高級Linux聲音體系結(jié)構(gòu)(AdvancedLinuxSoundArchitecture)。它在Linux操作系統(tǒng)上提供了音頻和MIDI的支持。在2.6系列內(nèi)核中,ALSA已經(jīng)成為默認的聲音子系統(tǒng),用來替換2.4系列內(nèi)核中的OSS(OpenSoundSystem,開放聲音系統(tǒng))。成為了linux的主流音頻體系結(jié)構(gòu)。1.ALSA聲音編程介紹2.ALSA歷史ALSA項目發(fā)起的起因是Linux下的聲卡驅(qū)動(OSS/Freedrivers)沒有得到積極的維護。并且落后于新的聲卡技術(shù)。JaroslavKysela早先寫了一個聲卡驅(qū)動,并由此開始了ALSA項目,隨便,更多的開發(fā)者加入到開發(fā)隊伍中,更多的聲卡得到支持,API的結(jié)構(gòu)也得到了重組。Linux內(nèi)核2.5在開發(fā)過程中,ALSA被合并到了官方的源碼樹中。在發(fā)布內(nèi)核2.6后,ALSA已經(jīng)內(nèi)建在穩(wěn)定的內(nèi)核版本中并將廣泛地使用。ALSA體系架構(gòu)?NXROBO20236ALSA由許多聲卡的聲卡驅(qū)動程序組成,同時它也提供一個稱為libasound的API庫。應(yīng)用程序開發(fā)者應(yīng)該使用libasound而不是內(nèi)核中的ALSA接口。因為libasound提供最高級并且編程方便的編程接口。并且提供一個設(shè)備邏輯命名功能,這樣開發(fā)者甚至不需要知道類似設(shè)備文件這樣的低層接口。為了向后兼容,ALSA提供內(nèi)核模塊來模擬OSS,這樣之前的許多在OSS基礎(chǔ)上開發(fā)的應(yīng)用程序不需要任何改動就可以在ALSA上運行。ALSA包含插件功能,使用插件可以擴展新的聲卡驅(qū)動,包括完全用軟件實現(xiàn)的虛擬聲卡。ALSA提供一系列基于命令行的工具集,比如混音器(mixer),音頻文件播放器(aplay),以及控制特定聲卡特定屬性的工具。ALSA接口?NXROBO20237ALSAAPI可以分解成以下幾個主要的接口:控制接口:提供管理聲卡注冊和請求可用設(shè)備的通用功能

PCM接口:管理數(shù)字音頻回放(playback)和錄音(capture)的接口。本節(jié)課后續(xù)總結(jié)重點放在這個接口上,因為它是開發(fā)數(shù)字音頻程序最常用到的接口。RawMIDI接口:支持MIDI(MusicalInstrumentDigitalInterface),標準的電子樂器。這些API提供對聲卡上MIDI總線的訪問。這個原始接口基于MIDI事件工作,由程序員負責管理協(xié)議以及時間處理。定時器(Timer)接口:為同步音頻事件提供對聲卡上時間處理硬件的訪問。時序器(Sequencer)接口混音器(Mixer)接口語音采集

1.測試首先在系統(tǒng)設(shè)置里sound中input設(shè)置內(nèi)置語音音量,不要太大。安裝完成后我們就可以運行測試了。首先,插入你的麥克風設(shè)備,然后在系統(tǒng)設(shè)置里測試麥克風是否有語音輸入。然后,運行包中的測試程序:?NXROBO2023語音采集2.系統(tǒng)更新3.安裝ALSA庫

簡要說明一下重要的庫:

alsa-tools:該庫提供了對音頻操作的相關(guān)指令

libasound2-dev:提供alsa應(yīng)用編程API,如果使用c/c++編程會用到該庫的一些函數(shù)。$sudoaptupdate$sudoaptupgrade

?NXROBO2023$sudoaptinstallalsa-toolsalsa-ossflexlibc-binlibc-dev-binpython-pexpectlibasound2-dev語音采集4.使用arecord錄音工具進行錄音解析:

arecord工具為我們剛剛安裝的alsa-tools提供的音頻操作,即錄音

-d:錄制時間(秒)

-D:指明設(shè)備名(plughw:i,j):其中i是卡號,j是這塊聲卡上的設(shè)備號

5.安裝sox播放工具

$arecord-d10-Dplughw:0,0test.wav

?NXROBO2023$sudoaptinstallsox語音采集

6.安裝并使用alsamixer7.驗證與測試播放錄好的音?NXROBO2023$sudoapt-getinstallalsamixer$playtest.wav2.離線語音識別課程提綱學習VOSK包的安裝及接口調(diào)用方法使用不同的識別模型實時語音識別把識別結(jié)果作為ROS話題發(fā)布13?NXROBO2023實現(xiàn)效果14?NXROBO2023查看語音識別結(jié)果VOSK介紹?NXROBO202315Vosk是言語識別工具包。Vosk是開源的語音識別開發(fā)套件,可以支持多種語言,并且可以和開源媒體服務(wù)器Asterisk,F(xiàn)reeSWITCH,unimrcp和Jigasi集成(開源jitsi視頻會議服務(wù)器的SIP接口)實現(xiàn)離線識別。其語音識別引擎使用的是基于開源語音識別引擎kaldi實現(xiàn)。其應(yīng)用場景包括輕量級的離線語音識別,支持安卓,樹莓派等終端設(shè)備。支持二十+種語言-中文,英語,印度英語,德語,法語,西班牙語,葡萄牙語,俄語,土耳其語,越南語,意大利語,荷蘭人,加泰羅尼亞語,阿拉伯,希臘語,波斯語,菲律賓語,烏克蘭語,哈薩克語,瑞典語,日語,世界語,印地語,捷克語移動設(shè)備上脫機工作-RaspberryPi,Android,iOS使用簡單的pip3installvosk安裝每種語言的手提式模型只有是50Mb,但還有更大的服務(wù)器模型可用提供流媒體API,以提供最佳用戶體驗(與流行的語音識別python包不同)還有用于不同編程語言的包裝器-java/csharp/javascript等可以快速重新配置詞匯以實現(xiàn)最佳準確性支持說話人識別安裝依賴&VOSK?NXROBO202316安裝依賴$pip3installsounddevice安裝VOSK$pip3installvosk$sudoaptinstallpython3-pippython3-yaml安裝模型?NXROBO202317下載地址:/vosk/models我們可以在這個網(wǎng)址下載不同的語言模型,該網(wǎng)站提供兩種類型的模型——大模型和小模型,小模型非常適合移動應(yīng)用程序上的一些有限的任務(wù)。它可以在智能手機和樹莓派上運行,也可以在桌面應(yīng)用程序上使用。小型模型的大小通常在50Mb左右,運行時需要大約300Mb的內(nèi)存。大模型用于服務(wù)器上的高精度轉(zhuǎn)錄。大型模型由于采用了先進的人工智能算法,內(nèi)存容量最高可達16Gb。通常情況下,模型越大,識別精度越高,根據(jù)設(shè)備選擇合適的模型,這里我們選擇vosk-model-small-en-us-0.15和vosk-model-small-cn-0.3來分別實現(xiàn)英文和中文的語音識別。同學們可以根據(jù)自己機器的性能,嘗試使用其他模型對比效果。安裝模型?NXROBO202318在包voice_02下面建一個models目錄,存放語音模型文件$cd~/voice_02$mkdirmodels$cdmodels將下載好的模型下載后,解壓至此目錄。測試離線語音識別?NXROBO202319終端運行rosrun啟動程序$rosrunvoice_02local_asr.py對著麥克風,講一些簡單的語句,(如果使用英文庫,請說英文;如果使用普通話庫,請說中文)用rostopicecho進行查看識別的輸出,即ROS發(fā)布的結(jié)果消息$rostopicecho/voice/stt3.在線語音識別課程提綱開通百度語音功能websocket接口調(diào)用參數(shù)調(diào)整及功能調(diào)試21?NXROBO2023實現(xiàn)效果22?NXROBO2023查看語音識別結(jié)果注冊百度AI開放平臺?NXROBO2023231、注冊賬號,并登錄百度大腦AI開放平臺/2、通過控制臺左側(cè)導(dǎo)航,選擇語音技術(shù)注冊百度AI開放平臺?NXROBO2023243、點擊創(chuàng)建應(yīng)用,按要求填入信息百度大腦AI開放平臺/4、選擇管理應(yīng)用,記住AppID和APIKEY備用將百度語音應(yīng)用到ros節(jié)點?NXROBO202325安裝依賴創(chuàng)建包$cdvoice_kit/src$pip3installwebsocket-client$catkin_creat_pkgvoice_03roscpprospystd_msgs參考/Baidu-AIP/speech_realtime_api/blob/master/python-realtime-asr/realtime_asr.py代碼編寫ROS節(jié)點將百度語音應(yīng)用到ros節(jié)點?NXROBO202326創(chuàng)建節(jié)點文件編寫CMakeLists.txt文件$cd~/voice_kit在scripts文件夾下創(chuàng)建baidu_asr.py$catkin_make參考下文代碼部分編譯$source~/voice_kit/devel/setup.bash測試在線語音識別?NXROBO202327終端運行node節(jié)點$rosrunvoice_03baidu_asr.py$roscore對著麥克風講話,會識別出來,如下圖4.自然語言理解課程提綱自然語言理解開發(fā)平臺新建機器人機器人添加技能插件調(diào)用參數(shù)調(diào)整JSON格式處理29?NXROBO2023實現(xiàn)效果30?NXROBO2023使用百度機器人進行對話自然語言理解?NXROBO202331自然語言理解是所有支持機器理解文本內(nèi)容的方法模型或任務(wù)的總稱。NLU在文本信息處理系統(tǒng)中扮演著非常重要的角色,是推薦、問答、搜索等系統(tǒng)的必備模塊。人機交互過程中,機器人理解我的訴求的環(huán)節(jié),使用的技術(shù),就是所謂的自然語言理解(NaturalLanguageUnderstanding,NLU)。登錄百度AI開放平臺?NXROBO202332選擇云端版,免費使用進行注冊后,進入平臺注冊百度AI開放平臺賬號并進入平臺/unit/home注冊百度AI開放平臺?NXROBO202333點擊左側(cè)的“+”號,新建機器人注冊百度AI開放平臺?NXROBO2023341.設(shè)置機器人名稱2.選擇技能分發(fā)3.修改機器人描述注冊百度AI開放平臺?NXROBO202335然后進入新創(chuàng)建的機器人,點擊“技能管理”,添加“閑聊”技能,這里大家可以嘗試創(chuàng)建自定義技能,并添加到自己的機器人中。注冊百度AI開放平臺?NXROBO202336點擊左上角的“對話”,測試一下剛添加的技能是否生效,并注意記錄機器人的ID,比如這里的“S67717”,后面代碼中需要用到這個ID。注冊百度AI開放平臺?NXROBO202337確認技能無誤后,選擇發(fā)布上線,選擇研發(fā)/生產(chǎn)環(huán)境通過查看發(fā)布至研發(fā)環(huán)境中的對話API接口3.0,進行對話配置測試;點擊獲取APIKey/SecretKey,查看自己的AppID,APIKey以及SecretKey將百度語音應(yīng)用到ros節(jié)點?NXROBO202338安裝依賴編寫ROS自然語言理解節(jié)點$cd~/voice_kit/src$sudopip3installrequests$catkin_creat_pkgvoice_04roscpprospystd_msgs在scripts文件夾下創(chuàng)建baidu_nlu.py,源碼見下文答案,需修改自己的密鑰及機器人ID信息編譯并運行?NXROBO202339編譯啟動&測試$roscore$cd~/voice_kit/$rosrunvoice_03baidu_asr.py//語音識別$catkin_make$source~/voice_kit/devel/setup.bash$rosrunvoice_04baidu_nlu.py//語義理解向主題發(fā)消息,會收到回復(fù)$rostopicpub-1/voice/sttstd_msgs/String"你叫什么名字"比如對著麥克風講:今天天氣怎么樣?會收到智能的回復(fù)其他功能?NXROBO202340我們還可以添加自定義技能實現(xiàn)定制化的對話。5.離線語音合成課程提綱TTS功能包espeak安裝與使用espeak把語音合成集成進ROS中42?NXROBO2023實現(xiàn)效果43?NXROBO2023語音合成結(jié)果espeak44?NXROBO2023espeak(TextToSpeech)參考地址:/index.html安裝espeak英文語音合成工具?NXROBO202345安裝espeak測試espeak$espeak-vzh“helloworld”$sudoaptinstallespeak編寫ROS節(jié)點啟動TTS?NXROBO202346參考:voice_05文件夾下的local_tts_test.py文件會收到智能的回復(fù)1.使用Python創(chuàng)建節(jié)點文件2.創(chuàng)建訂閱者訂閱話題3.編寫回調(diào)函數(shù),在Python中啟動終端執(zhí)行命令編譯&測試合成效果?NXROBO202347編譯啟動節(jié)點$rosrunvoice_05local_tts_test.py$cd~/spark_noetic/$rostopicpub-1/voice/ttsstd_msgs/String"helloworld"TTS效果$catkin_make測試效果6.在線語音合成課程提綱開通百度語音合成功能學習百度語音合成示例

將百度語音應(yīng)用到ros節(jié)點49?NXROBO2023實現(xiàn)效果50?NXROBO2023在線語音合成百度開通語音合成功能?NXROBO202351使用百度帳號,開通語音合成功能參考:/tech/speech/tts_online將百度語音應(yīng)用到ros節(jié)點?NXROBO2023522.編譯(需要先將源代碼復(fù)制到spark_app)3.啟動&測試$rosrunvoice_06baidu_tts.py$cd~/spark_noetic/$catkin_make$sourcedevel/setup.bash4.發(fā)布話題數(shù)據(jù)$rostopicpub-1/voice/ttsstd_msgs/String"今天天氣如何"實現(xiàn)語音合成1.安裝依賴$pip3installnumpysounddevice主要就是訂閱一個自定義話題上的文本消息傳給百度tts獲取語音流并播放。注意填入自己的密鑰信息。詳細見源碼。$roscore7.語音指令控制課程提綱語音識別移動控制參數(shù)調(diào)整54?NXROBO2023實現(xiàn)效果55?NXROBO2023語音控制spark移動語音識別?NXROBO202356啟動第2或

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論