人工智能(AI)識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn) 課件 第3章 AI語(yǔ)音識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn)_第1頁(yè)
人工智能(AI)識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn) 課件 第3章 AI語(yǔ)音識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn)_第2頁(yè)
人工智能(AI)識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn) 課件 第3章 AI語(yǔ)音識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn)_第3頁(yè)
人工智能(AI)識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn) 課件 第3章 AI語(yǔ)音識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn)_第4頁(yè)
人工智能(AI)識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn) 課件 第3章 AI語(yǔ)音識(shí)別系統(tǒng)開發(fā)實(shí)戰(zhàn)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

3.1語(yǔ)音識(shí)別系統(tǒng)架構(gòu)3.2語(yǔ)音識(shí)別硬件設(shè)計(jì)3.3語(yǔ)音識(shí)別硬件代碼詳解3.4語(yǔ)音識(shí)別服務(wù)器開發(fā)3.1語(yǔ)音識(shí)別系統(tǒng)架構(gòu)AI語(yǔ)音識(shí)別系統(tǒng)的架構(gòu)如圖3.1-1所示。語(yǔ)音采集板卡采集到環(huán)境語(yǔ)音,通過I2S接口傳送到CC3200,再通過WiFi把采集到的語(yǔ)音信號(hào)發(fā)送給服務(wù)器,通過服務(wù)器使用百度AI語(yǔ)音識(shí)別的開源API接口,把語(yǔ)音信號(hào)傳送到百度AI的服務(wù)器上,識(shí)別成功后百度AI返回識(shí)別后的字符串傳給服務(wù)器,再由服務(wù)器通過WiFi把識(shí)別到的字符串回傳給CC3200,CC3200把收到的字符串通過12864液晶屏顯示出來。3.2語(yǔ)音識(shí)別硬件設(shè)計(jì)語(yǔ)音采集板卡主要運(yùn)用的是TI官方的方案TLV320AIC3254音頻編解碼器+TPA2012D2RTJ功率放大器。圖3.2-1為語(yǔ)音采集主板的實(shí)物圖。TLV320AIC3254(有時(shí)也稱為AIC3254)是一款靈活的低功耗、低電壓立體聲音頻編解碼器,具有可編程輸入和輸出,PowerTune功能,完全可編程的miniDSP,固定的預(yù)定義和可參數(shù)化信號(hào)處理模塊,集成PLL,集成LDO和靈活的數(shù)字接口,支持I2C和SPI。TLV320AIC3254的內(nèi)部結(jié)構(gòu)如圖3.2-2所示。 圖3.2-3為語(yǔ)音采集主板TLV320AIC3254的外圍電路。TPA2012D2是一款立體聲的D類音頻放大器(D類放大器),為每個(gè)通道提供獨(dú)立的關(guān)閉控制。使用G0和G1增益選擇引腳可以將增益選擇為6dB、12dB、18dB或24dB,在語(yǔ)音采集板卡上主要是實(shí)現(xiàn)把采集回來的聲音通過耳機(jī)播放出來的效果,其功能框圖如圖3.2-4所示。圖3.2-5為語(yǔ)音采集主板的TPA2012D2外圍電路。3.3語(yǔ)音識(shí)別硬件代碼詳解TLV320AIC3254支持I2C和SPI接口,這里用到I2C,用IAR打開AI_ASR里面的工程。代碼清單3.3-1所示為CC3200初始化I2C部分代碼。對(duì)TLV320AIC3254初始化函數(shù),如代碼清單3.3-2所示。通過該函數(shù)可以設(shè)置設(shè)備的ID、采樣位數(shù)、采樣速率、音頻通道、音頻輸出及音頻輸入。本次實(shí)驗(yàn)使用UDP連接的方式進(jìn)行通信。使用CC3200配置為UDP模式的代碼,如代碼清單3.3-3所示。打開common.h,連接的路由器名稱及密碼如代碼清單3.3-4所示,特別注意的是要修改加密方式OPEN、WEP或者WPA。連接服務(wù)器的IP地址及端口如圖3.3-1所示。在network.c找到HOST_IP_ADDR,可在宏定義中修改IP地址,通過改變usPort的值修改端口。IP地址用十六進(jìn)制來表示,如“192”對(duì)應(yīng)十六進(jìn)制的“0xc0”、“168”對(duì)應(yīng)十六進(jìn)制的“0xa8”、“05”對(duì)應(yīng)十六進(jìn)制的“0x05”、“05”對(duì)應(yīng)十六進(jìn)制的“0x05”,合起來就是0xc0a80505()。(1)Network任務(wù):主要是實(shí)現(xiàn)網(wǎng)絡(luò)連接,在本次實(shí)驗(yàn)中用的是UDP通信,所以該任務(wù)主要是實(shí)現(xiàn)CC3200連接上路由器,建立UDP。任務(wù)如代碼清單3.3-5所示。在ConnectToNetwork()函數(shù)內(nèi)有一個(gè)函數(shù)WlanConnect(),通過該函數(shù)可以連接上Common.h的宏定義中的路由器。WlanConnect()函數(shù)如代碼清單3.3-6所示。CreateUdpServer()函數(shù)則是建立Udp服務(wù)器,該函數(shù)如代碼清單3.3-7所示。(2)Microphone任務(wù):主要是實(shí)現(xiàn)音頻板卡語(yǔ)音的采集,以及把語(yǔ)音信號(hào)通過Udp發(fā)送出去的事項(xiàng)。通過該任務(wù)下的GetBufferSize(pRecordBuffer)函數(shù)便可以把音頻板卡駐極體上的聲音信號(hào)采集回來,存儲(chǔ)在pRecordBuffer這個(gè)緩沖區(qū)中。GetBufferSize()函數(shù)如代碼清單3.3-8所示。通過該任務(wù)下的sendto()函數(shù)可以把采集到的語(yǔ)音信號(hào)發(fā)送到服務(wù)器端。通過sl_RecvFrom便可接收到解析好的語(yǔ)音字符串,然后通過12864液晶屏顯示出來。3.4語(yǔ)音識(shí)別服務(wù)器開發(fā)3.4.1HttpClient語(yǔ)音識(shí)別我們知道,聲音實(shí)際上是一種波。常見的mp3、wmv等格式都是壓縮格式,必須轉(zhuǎn)成非壓縮的純波形文件來處理。比如,WindowsPCM文件里面只存儲(chǔ)的是音波形的一個(gè)點(diǎn),pcm格式音頻文件無法直接播放,我們需要給其加上一個(gè)描述音頻參數(shù)(比如采樣率、聲道數(shù)等)的頭部信息,才能在播放器上播放,加了頭部信息的pcm文件也就是我們??吹降膚av格式文件。本節(jié)將講解利用HttpClient使用.pcm文件調(diào)取百度語(yǔ)音接口進(jìn)行語(yǔ)音識(shí)別。下面是進(jìn)行語(yǔ)音識(shí)別的核心方法,rate表示采樣率,channel表示聲道數(shù),我們傳入所需參數(shù)即可,如代碼清單3.4-1所示。具體過程如下:(1)導(dǎo)入SpeechRecognition項(xiàng)目,在src/main/java目錄的com.fengke.Ai包下找到testHttpClient類,將AccessToken中的client_id和client_secret(61,62行)分別替換成自己的百度應(yīng)用APIKey和SecretKey。(2)將main方法中的文件路徑改為自己需要識(shí)別的語(yǔ)音文件路徑和運(yùn)行程序。如果接口返回結(jié)構(gòu)error_code為0,代表識(shí)別成功,控制臺(tái)輸出示例。{"corpus_no":"6585055296866966357","err_msg":"success.","err_no":0,"result":["手把手教你玩轉(zhuǎn)ai語(yǔ)音識(shí)別,"],"sn":"184143891301533202663"}3.4.2Netty接收語(yǔ)音文件在實(shí)際運(yùn)行過程中語(yǔ)音文件并不是事先就被保存在服務(wù)器上,需要使用聲音采集設(shè)備不斷實(shí)時(shí)地采集音頻數(shù)據(jù),并發(fā)送到服務(wù)器,最終由服務(wù)器將音頻數(shù)據(jù)識(shí)別后向采集設(shè)備回傳文字信息。本實(shí)例將實(shí)現(xiàn)服務(wù)器端接收實(shí)時(shí)音頻數(shù)據(jù),并將其存儲(chǔ)為本地音頻文件。本實(shí)例接收的音頻數(shù)據(jù)是實(shí)時(shí)采集的,在接收數(shù)據(jù)時(shí)無法確定數(shù)據(jù)量的大小,所以會(huì)在計(jì)算機(jī)中開辟一個(gè)300?KB大小的內(nèi)存空間,用于臨時(shí)存放音頻數(shù)據(jù)。此空間一旦被存滿,就會(huì)把數(shù)據(jù)全部取出,并寫入硬盤中的文件,其中涉及一個(gè)很重要的緩存類Cache,如代碼清單3.4-2所示。Cache里面有一個(gè)很重要的參數(shù)index,即為游標(biāo)。我們可將大小為300KB(300×1024?B)的緩存空間想象成一個(gè)帶有刻度的水杯,里面緩存的數(shù)據(jù)就是水杯里面裝著的水,index就相當(dāng)于試管的當(dāng)前刻度。緩存數(shù)據(jù)的過程,就相當(dāng)于有一個(gè)水龍頭會(huì)連續(xù)、不時(shí)地向下放水。每一次放水就相當(dāng)于接收到一個(gè)單片機(jī)的語(yǔ)音數(shù)據(jù),我們用水杯接著它,而等到水杯接滿后我們就喝掉它,然后空杯放在那繼續(xù)接,水杯每次接到一點(diǎn)水,刻度就會(huì)上升一點(diǎn),但是前提條件是接到的水不能溢出來,所以我們每次接水前都需要先計(jì)算一下,已知水杯里面已經(jīng)有多少水了,我們也知道這一次需要接的水是多少。如果加起來大于了水杯的最大容積,那么水就可能溢出,所以我們分三步操作。第一步先將水杯倒?jié)M,關(guān)閉水龍頭;第二步將水杯里面的水喝掉,現(xiàn)在水杯又空了;第三步,再打開水龍頭,將這次未接完的剩余部分的水再裝進(jìn)去。除此之外,還有兩種特殊情況需要考慮:第一,如果某一次放出來的水,你發(fā)現(xiàn)它是渾濁的,可以意識(shí)到水管里頭沒水了,我們要做的就是將水杯里的水倒掉,留下一個(gè)干凈的空杯子等待下一次水流(接收到結(jié)束報(bào)文,代表此次語(yǔ)音信息已經(jīng)全部被接收完);第二,如果某一次接水的時(shí)候,我們發(fā)現(xiàn)杯子里面已經(jīng)有了一部分水,而且還是幾天以前留下的,已經(jīng)變質(zhì)了,那我們得先把這變質(zhì)的水倒掉,再接新的水(代表上次的傳輸有異常中斷過程,既沒有收到結(jié)束報(bào)文,也沒有在3秒內(nèi)再繼續(xù)接收到新的數(shù)據(jù),需要清空)。實(shí)驗(yàn)過程及現(xiàn)象如下:(1)導(dǎo)入TranceVoice項(xiàng)目,在src/main/java目錄下找到UdpHandler類,將saveFile方法里的voiceDir參數(shù)(代碼第95行)修改為自己計(jì)算機(jī)里的一個(gè)目錄。(2)在src/main/java目錄下找到UDPServer類,運(yùn)行main方法。當(dāng)控制臺(tái)出現(xiàn)如圖3.4-1所示的字樣,說明程序成功運(yùn)行。(3)查看自己計(jì)算機(jī)的內(nèi)網(wǎng)IP地址,將音頻采集設(shè)備傳輸?shù)腎P和端口修改為本機(jī)的內(nèi)網(wǎng)IP和運(yùn)行的端口,并開始采集和發(fā)送數(shù)據(jù)。(4)如果一切正常,控制臺(tái)會(huì)打印出存儲(chǔ)的音頻文件的文件名,也可以在對(duì)應(yīng)的存儲(chǔ)目錄下找到這些文件(文件格式是?.pcm文件),我們可以將使用的pcm2wav.exe(進(jìn)入瘋殼官網(wǎng)下載)轉(zhuǎn)換為?.wav格式文件,并在各類播放器上播放,如圖3.4-2所示。對(duì)于AI語(yǔ)音識(shí)別系統(tǒng),我們先來具體分析一下后臺(tái)服務(wù)器需要實(shí)現(xiàn)的功能。在前面,我們已經(jīng)有了使用Netty搭建UDP服務(wù)器和使用httpClient來調(diào)取百度語(yǔ)音識(shí)別接口的經(jīng)驗(yàn)?,F(xiàn)在,我們需要做的就是把這兩個(gè)例子結(jié)合起來,使UDP服務(wù)器去獲取單片機(jī)傳過來的語(yǔ)音字節(jié)碼。由于單片機(jī)傳遞的數(shù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論