999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ESP32上TinyML語音識別應用軟硬件協同設計

2023-05-22 06:33:12蘇自清李國欣
物聯網技術 2023年5期
關鍵詞:模型

蘇自清,李國欣

(中國礦業大學 電氣學院,江蘇 徐州 221116)

0 引言

人工智能從1956年達特茅斯會議上第一次被提出開始,經歷了萌芽、發展、質疑、沉寂、再發展等階段,現階段人工智能正實實在在地影響著人們生活的方方面面。機器學習(Machine Learning)是人工智能的重要分支[1],通過使用大量數據訓練神經網絡,使得系統具備學習新事物的能力,能夠理解相關新情況并做出有效的決策,可以說機器學習應用幾乎已經遍布人工智能的所有領域。雖然大多數機器學習的訓練都發生在強大的云端服務器上,但是隨著嵌入式系統內部微控制器處理能力的不斷增強,人們對把機器學習模型部署到微控制器內越來越感興趣,由此TinyML(Tiny Machine Learning,微型機器學習)誕生了[2],旨在實現機器學習模型和深度學習算法在低內存、價格親民、低功耗的微控制器上運行。直接在微處理器中嵌入人工智能,逐漸成為消費和工業物聯網場景的關鍵。這種方法并不依賴于外部程序,也不依賴邊緣和云端,能夠提供最佳的實時響應,同時也能為人們的隱私提供極大保護。

雖然機器學習在云端平臺已經有了廣泛應用,但在微控制器端的應用卻很有限,語音識別在微小型機器人、機器小車平臺上也有巨大的需求。本文研究了TinyML 的實現流程;采用極簡的低功耗微控制器和麥克風傳感器等硬件元器件,對音頻文件進行預處理,并通過深度學習訓練音頻樣本文件,經過驗證和測試后生成相關模型;最后在微控制器上部署,實現了語音命令的采集、處理、識別功能;利用語音識別的結果,驅動伺服電機實現小車的前進、后退、左轉、右轉等動作,從而在更基礎層面實現微控制器端的機器學習的部署和應用。

1 總體設計

目前,語音識別技術在Android 平臺、機器人交換等領域的應用非常廣泛,但是在微控制器端的應用卻相對較少,因此本文的設計目的是把微控制器和關鍵詞識別結合起來,在微控制器端部署機器學習模型對關鍵詞進行識別,通過驅動小車的載體驗證識別結果的準確性、穩定性和可靠性。系統的總體設計思路如下:

第一步,遴選要識別的關鍵詞,根據驅動小車要實現的動作,確定將谷歌語音數據集Speech Commands Data Set的音頻文件作為訓練、驗證和測試的樣本數據,給關鍵詞的音頻數據文件設置相應的標簽。

第二步,在PC 端對音頻文件進行預處理,包括提取音頻文件的采樣率,再對其進行時域到頻域的轉換,然后通過短時傅里葉變換提取特征頻譜圖。

第三步,將音頻文件對應的頻譜圖輸入到機器學習模型中,并對模型進行訓練、驗證、測試、優化,從中找出最適合本系統的機器學習模型。

第四步,模型轉換。通過使用TensorFlow Lite 和TensorFlow Lite Converter運行并轉換模型,生成一個保留原有性能但是模型規模大小降低的文件,使得訓練過的模型適用于微控制器小內存的環境。

第五步,訓練模型轉換為包含TensorFlow Lite 模型的C源文件。由于微控制器大多沒有本地文件系統的支持,因此轉換后的C 源文件包含一個char 類型的C 數組,將其整合到微控制器端的應用程序中。

第六步,利用微控制器端麥克風傳感器采集包含關鍵詞的實時語音信號,經過模數轉換等預處理以及快速傅里葉變換后提取相關特征,經由部署在微控制器端的機器學習模型進行計算,獲取關鍵詞的概率,從而判斷輸出對應的關鍵詞,控制電機做出規定的動作。

根據語音控制小車的設計目標和總體設計思路,本系統可以分為訓練、轉換和應用三部分。訓練部分主要是訓練機器學習模型并驗證和測試,包含兩個模塊,分別為音頻數據獲取模塊和機器學習訓練模塊。轉換部分主要是優化訓練模型,生成適合微控制器運行環境的模型。應用部分用于小車端關鍵詞識別,包括兩個模塊,實時關鍵詞識別模塊和電機驅動控制模塊。總體結構如圖1所示。

圖1 中的訓練、轉換、應用三部分通過將訓練好的機器學習模型轉換后部署在微控制器應用部分建立聯系。訓練和轉換部分可以在PC 端實現;直觀上,應用部分的每個實時語音要完整地經歷輸入、識別、特征提取、機器學習模型計算等4 個環節,相對耗時比較多,若被識別為關鍵詞,需要立刻轉化為電機驅動信號,保證整個系統的實時性是非常關鍵的。因此考慮在微控制器端加入實時的嵌入式操作系統FreeRTOS,以實現多個任務在宏觀上的并行運行。

圖1 系統總體結構

2 TinyML 語音數據機器學習方法

機器學習涉及最多的就是對多種格式的數據進行處理。在音頻數據分析領域,可以對音頻數據進行很多操作,比如自動語音識別、數字信號處理、音樂分類等。在本文中將嘗試分析音頻數據,通過對音頻數據的深度學習,建立框架,識別相應的語言命令。

2.1 音頻數據獲取

小車是通過接收并識別語音關鍵詞來驅動的,意味著每一個關鍵詞對應獨一無二的小車動作。因此,本課題選擇4個關鍵詞,分別是:left(左轉),right(右轉),forward(前進),backward(后退)。對除此以外的其他語音輸入小車均無響應。針對所選的關鍵詞,為了有效地進行語音數據的機器學習,需要有包含關鍵詞的大量樣本數據。本文采用谷歌公司推出的Speech Commands Data Set語音數據集(以下簡稱“谷歌語音數據集”)[3]。

2.2 語音數據模型訓練

在采用機器學習模型對音頻數據進行訓練時,最大的挑戰是如何處理音頻文件使之適合機器學習。音頻數據作為一種非結構化的數據形式,使用它之前需要對其進行結構化處理,一種常用的方法是提取音頻數據的頻譜圖特征,再對音頻文件對應的頻譜圖進行機器學習模型的訓練。語音數據機器學習模型訓練共分為以下四個階段:

第一階段:對音頻文件進行預處理。

第二階段:對預處理的音頻文件進行短時傅里葉變換(Short Time Fourier Transform,STFT),生成頻譜圖(spectrogram),具體生成numpy格式的訓練集、驗證集和測試集頻譜圖。

第三階段:在PC 端構建深度學習網絡,對頻譜圖進行機器學習訓練,并對模型進行驗證和評估。

第四階段:對評估性能良好的模型進行轉化,生成適合微控制器運行模型的文件。

語音數據機器學習模型訓練流程如圖2所示。

圖2 語音數據機器學習模型訓練流程

預處理主要是對音頻數據進行降噪、引入背景音等操作,豐富語音數據,實現數據增強。實現機器學習的一個重要手段是構建深度神經網絡(Deep Neural Networks,DNN)。與利用深度神經網絡對圖片進行識別、分類不同的是:圖片預處理的方式相對簡單,甚至可以直接輸入深度神經網絡。而開發語音識別應用時,需要充分利用已知的音頻數據特性,處理并生成音頻數據的特征編碼,然后再提供給DNN,一種常用的方法是把音頻信號轉換為頻譜圖。通常有兩種方法來表示聲音:時域(Time domain)和頻域(Frequency domain)[4]。針對時域,通常用橫軸表示自變量時間,縱軸表示信號變換,表達信號隨著時間的變化。時間被認為是時域中的一個獨立變量,它展示了信號如何隨時間變化。相反,頻域將信號的頻率視為自變量,它顯示了在一個頻率范圍內每個頻帶中有多少信號。頻譜圖(spectrogram)是通過時域信號的計算顯示信號頻率隨時間的變化,是將音頻信息表示為一系列頻率信息切片的標準方式,每個時間窗口為一個切片。通過將這些組合成一個序列,它們隨著時間的推移形成獨特的聲音指紋[5]。

通常采用短時傅里葉變換實現音頻信號轉換。短時傅里葉變換是將要轉換的信號函數乘以一個在短時片段上非零的窗口函數,對信號函數進行一維傅里葉變換,當窗口沿時間軸滑動時得到一系列的傅里葉變換頻域值,將這些頻域值依次按時間展開,從而得到一個二維的時頻圖[6]。

在離散傅里葉變換公式的基礎上,把要轉換的原始信號分成較短的等長片段,然后在每個片段上分別進行傅里葉變換。生成時頻域內的復數矩陣,公式為:

短時傅里葉變換原理描述如圖3所示。

圖3 短時傅里葉變換原理描述

對一段連續的音頻信號進行短時傅里葉變換要確定如下參數:

(1)加窗:短時傅里葉變換的核心就是加窗,把整個時域信號過程分解成若干個等長的小過程,這樣就保證每個小過程為近似平穩信號。圖3 中的window size 即為設置的窗口大小,當信號中最后一個開窗大于原始信號長度時,對原始信號進行補零以匹配窗口長度。

(2)滑動步長(hop size,H):主要涉及到信號重疊頻點,重疊的主要原因是為了減少邊界處的偽跡。

(3)窗口的序號m:如圖3所示加了三個窗口,m依次為1、2、3。

(4)一個窗口內離散采樣點的數量N。

(5)窗函數w[n]:是頻譜分析中的一個重要部分。對原始的非平穩信號截取時會發生頻譜泄露,為了解決這一問題,通過對截取信號進行加窗處理降低頻譜中因泄露而造成的測量不準確性。窗函數既可以加在時域上,也可以加在頻域上,通常的做法是加在時域上。加窗在時域上是點乘的形式,在頻域上則表現為卷積。一個理想的窗函數應該是在頻域的主瓣非常窄,保證有足夠的頻率分辨率,而旁瓣則要求非常低,降低頻率之間的干擾。但在實際應用中,窗口函數很難同時滿足主瓣和旁瓣性能最佳要求,通常在這兩種中取得平衡。常見的窗函數有矩形窗(rectangular)、Hanning(漢寧)、Gaussian(高斯)等。矩形窗的優點是主瓣比較集中,頻率分辨率最高,不足之處是旁瓣也較高。Hanning 窗又稱升余弦窗,主瓣變寬,頻率分辨率下降;旁瓣減少,可有效獲知頻譜泄露[7]。Hanning 窗函數如圖4所示,具體公式為:

圖4 Hanning 窗函數

Gaussian 窗主瓣較寬,頻率分辨率低,沒有負旁瓣。綜合比較而言,Hanning 窗函數是短時傅里葉變換的首選窗函數。

圖5 是Speech command 數據集中的left/00b01445_nohash_0.wav 文件波形圖和頻譜圖。圖5(b)是調用TensorFlow 框架中tf.signal.stft 函數生成的頻譜圖,圖5(c)是調用librosa.stft 函數生成的頻譜圖,兩幅頻譜圖雖然顏色不同,但是圖5(b)和圖5(c)明亮部分都準確顯示了時域內頻率的分布情況。頻譜圖中顏色較亮的部分比顏色較暗的部分集中了更多的聲音,顏色較暗部分的聲音幾乎是空白的。

圖5 聲音文件的波形圖和短時傅里葉變換生成的頻譜圖

構建深度學習網絡主要包括導入頻譜圖、預處理、構建卷積神經網絡、訓練模型和驗證模型等步驟,具體如下:

步驟1:調用np.load 導入訓練、驗證和測試集數據。

步驟2:預處理,為訓練、驗證和測試集標簽獨立編碼,設置batch_size并創建train_dataset、validation_dataset和test_dataset。

步驟3:構建卷積神經網絡,由輸入層、卷積層、池化層、Flatten 層、Dropout 層、全連接層和輸出層組成[8]。語音數據卷積神經網絡組成如圖6所示。

圖6 卷積神經網絡組成

模型訓練結果如圖7所示。從圖7 中可以看出,隨著一個完整的數據集在神經網絡中前向傳播和反向傳播次數的增多(10個epoch),一方面,訓練集和驗證集的準確率不斷提高,達到92%左右,loss 在不斷降低;另一方面,兩者的準確率和loss 趨于接近,說明模型很好地處理了過擬合問題。

圖7 模型訓練結果

3 小車系統設計

基于前文所述的系統功能,小車系統硬件主要包括ESP32 微控制器模塊、INMP441 語音接收模塊[9]和360°舵機驅動模塊。

ESP32 端程序主要由應用層、驅動層和神經網絡部署層共三層組成,如圖8所示。

圖8 微控制器端程序結構

應用層主要由4 個模塊組成,利用FreeRTOS 創建并開啟系統運行總體任務[10];硬件引腳配置模塊主要完成I2S 引腳的設定和參數設置;語音命令監測模塊完成語音輸入和處理、神經網絡初始化的工作以及開啟利用神經網絡對輸入關鍵詞進行識別的任務;電機驅動模塊根據識別的關鍵詞結果設置驅動命令隊列,通過調整2 路PWM 輸出驅動左右兩輪。

驅動層由兩個模塊組成。語音數據輸入包括從I2S 端口讀入采樣數據并加入至樣本隊列,啟動采樣任務并不斷取出樣本隊列中的語音數據;語音數據處理模塊對采樣數據進行短時傅里葉變換生成頻譜圖數據。

神經網絡部署層由兩個模塊組成。神經網絡部署模塊包括從PC 端獲取的訓練好的模型轉換數組,建立微控制器端的神經網絡模型,并根據模型轉換數組在本地端進行解析。TFLite 內核模塊包括TensorFlow 框架版本信息和TFLite 提供的內核以及第三方的一些支持文件。

4 結語

本文構建了一個基于微控制端TinyML 的語音識別系統,利用其識別結果控制小車運動,從而驗證語音識別的效果。具體開展了以下工作:(1)研究了TinyML 的特點和流程,提出了在小車端基于微型機器學習實現語音關鍵詞識別的總體設計;(2)基于谷歌語音集,選擇合適的關鍵詞,在PC 端對關鍵詞進行了預處理;通過短時傅里葉變換,把語音數據轉換為頻譜圖;(3)構建深度神經網絡,對頻譜圖進行模型訓練并驗證、分類,并轉換為TFLite;(4)設計了基于ESP32 微控制器的小車系統,實現語音識別控制小車;(5)采用TensorFlow TFLite 框架,實現TinyML 全流程。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 午夜a视频| 国产一区二区精品高清在线观看| 国产微拍一区| 毛片一级在线| 国产成人福利在线视老湿机| 亚洲欧美精品一中文字幕| 日韩欧美国产成人| 亚洲美女一区二区三区| 成年人免费国产视频| 日本a∨在线观看| 2019年国产精品自拍不卡| 日韩色图区| 国产福利不卡视频| 2021国产精品自拍| 亚洲日产2021三区在线| 无码精品福利一区二区三区| 久久久噜噜噜| 日韩午夜片| 国产精品亚洲天堂| 婷婷久久综合九色综合88| 四虎综合网| 免费人成在线观看成人片| 最近最新中文字幕在线第一页| 福利姬国产精品一区在线| 日韩中文无码av超清| 激情综合网址| 日韩经典精品无码一区二区| 国产日韩丝袜一二三区| 伊人久久久大香线蕉综合直播| 无码福利视频| 91人妻在线视频| 欧美日韩综合网| 嫩草在线视频| 久久精品亚洲专区| 伊人五月丁香综合AⅤ| 伊人色天堂| 欧美日韩中文字幕在线| 99久视频| 中文字幕1区2区| 凹凸国产分类在线观看| 亚洲色偷偷偷鲁综合| 国产亚洲一区二区三区在线| 99re精彩视频| 韩国福利一区| 色屁屁一区二区三区视频国产| 夜夜高潮夜夜爽国产伦精品| 亚洲无线一二三四区男男| 一级做a爰片久久免费| 色视频国产| 色天堂无毒不卡| a在线观看免费| 国产亚洲精品va在线| 亚洲香蕉在线| 人妻免费无码不卡视频| 精品欧美视频| 中文字幕亚洲乱码熟女1区2区| 亚洲午夜福利精品无码| 欧美亚洲中文精品三区| 欧美综合激情| 99re热精品视频中文字幕不卡| 孕妇高潮太爽了在线观看免费| 久久久久九九精品影院| 亚洲综合狠狠| 国产精品视频导航| av性天堂网| 久久夜夜视频| 无码综合天天久久综合网| 久久国产免费观看| www.91中文字幕| 日韩一区二区在线电影| 亚洲成人在线免费观看| 玩两个丰满老熟女久久网| 57pao国产成视频免费播放| 91精品国产一区自在线拍| 一级全黄毛片| 国产精品夜夜嗨视频免费视频| 欧美天堂久久| 亚洲一区色| 国产精品一老牛影视频| 91久久国产热精品免费| 国内精品91| 成年人久久黄色网站|