人工智能(AI)識別系統開發實戰 課件 第3章 AI語音識別系統開發實戰_第1頁
人工智能(AI)識別系統開發實戰 課件 第3章 AI語音識別系統開發實戰_第2頁
人工智能(AI)識別系統開發實戰 課件 第3章 AI語音識別系統開發實戰_第3頁
人工智能(AI)識別系統開發實戰 課件 第3章 AI語音識別系統開發實戰_第4頁
人工智能(AI)識別系統開發實戰 課件 第3章 AI語音識別系統開發實戰_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論