資料介紹
描述
TinyML是一項(xiàng)尖端技術(shù),它通過(guò)支持創(chuàng)建可在微控制器等小型設(shè)備上運(yùn)行的超緊湊、低功耗機(jī)器學(xué)習(xí)模型,徹底改變了機(jī)器學(xué)習(xí)領(lǐng)域。
深度學(xué)習(xí)最流行的應(yīng)用之一是音頻分類(lèi),涉及對(duì)聲音進(jìn)行分類(lèi)并預(yù)測(cè)其各自類(lèi)別的任務(wù)。這類(lèi)問(wèn)題有很多實(shí)際應(yīng)用,例如通過(guò)對(duì)音樂(lè)片段進(jìn)行分類(lèi)來(lái)識(shí)別音樂(lè)的流派,或者通過(guò)對(duì)簡(jiǎn)短的話語(yǔ)進(jìn)行分類(lèi)來(lái)根據(jù)他們的聲音識(shí)別各個(gè)說(shuō)話者。借助生成式 AI 和文本轉(zhuǎn)語(yǔ)音技術(shù),我們現(xiàn)在可以使用合成數(shù)據(jù)來(lái)訓(xùn)練這些模型以識(shí)別特定模式,例如您的名字。通過(guò)使用合成數(shù)據(jù),我們可以創(chuàng)建高度真實(shí)和多樣化的數(shù)據(jù)集,這些數(shù)據(jù)集可用于以更高效和更具成本效益的方式訓(xùn)練機(jī)器學(xué)習(xí)模型。
該項(xiàng)目旨在演示如何開(kāi)發(fā)可以區(qū)分未知、背景噪音和人名類(lèi)別的音頻分類(lèi)系統(tǒng)。為實(shí)現(xiàn)這一目標(biāo),我們將使用Edge Impulse平臺(tái)來(lái)訓(xùn)練我們的模型,然后將其部署到邊緣設(shè)備,例如 Arduino Nicla Voice。
用于音頻信號(hào)處理的機(jī)器學(xué)習(xí)管道
圖中所示的音頻處理管道是使用機(jī)器學(xué)習(xí)技術(shù)分析音頻數(shù)據(jù)的常用方法。通過(guò)使用快速傅立葉變換 (FFT) 從音頻數(shù)據(jù)中提取頻域特征,可以訓(xùn)練機(jī)器學(xué)習(xí)模型來(lái)執(zhí)行語(yǔ)音識(shí)別、音樂(lè)分類(lèi)或音頻分割等任務(wù)。
總體而言,此圖說(shuō)明了使用機(jī)器學(xué)習(xí)處理音頻數(shù)據(jù)所涉及的基本步驟,包括數(shù)據(jù)預(yù)處理、特征提取、模型訓(xùn)練和模型推理。
讓我們開(kāi)始吧!
數(shù)據(jù)集生成
要根據(jù)不同的類(lèi)別對(duì)音頻進(jìn)行分類(lèi),您需要收集一些未知類(lèi)、背景噪聲類(lèi)和名稱(chēng)類(lèi)的樣本 WAV 文件。這將使系統(tǒng)能夠區(qū)分這三個(gè)類(lèi)別。
機(jī)器學(xué)習(xí)模型的數(shù)據(jù)集生成流程圖,該模型使用Google TensorFlow Speech Command數(shù)據(jù)集、AudioLDM文本轉(zhuǎn)音頻生成工具和Piper文本轉(zhuǎn)語(yǔ)音技術(shù)生成未知、背景噪聲和人名類(lèi),可以概括如下:
- 下載Google TensorFlow Speech Command 數(shù)據(jù)集,其中包含大量音頻樣本,以及每個(gè)樣本的類(lèi)標(biāo)簽,用于標(biāo)識(shí)聲音的類(lèi)型。這些文件可以作為代表未知類(lèi)的單獨(dú)類(lèi)添加到數(shù)據(jù)集中。
- 利用ChatGPT為背景噪音類(lèi)別生成不同的文本提示。
- 生成文本提示后,我們將它們發(fā)送到將文本轉(zhuǎn)換為音頻的模塊。AudioLDM文本轉(zhuǎn)音頻生成工具 cat 生成大量音頻文件。這些文件可以作為表示背景噪聲的單獨(dú)類(lèi)添加到數(shù)據(jù)集中。
- 使用Piper文本轉(zhuǎn)語(yǔ)音技術(shù)生成包含人名的音頻文件。這些文件可以作為一個(gè)單獨(dú)的類(lèi)添加到數(shù)據(jù)集中,代表人名或您要分類(lèi)的其他詞。
使用 Text to speech 技術(shù)生成高質(zhì)量的語(yǔ)音數(shù)據(jù) - Piper
文本轉(zhuǎn)語(yǔ)音 (TTS) 是一種尖端的語(yǔ)音合成技術(shù),可以將書(shū)面文本發(fā)聲成具有人聲的可聽(tīng)語(yǔ)音。TTS 的一個(gè)示例是由Michael Hansen開(kāi)發(fā)的Piper,它可用于從文本輸入生成語(yǔ)音數(shù)據(jù)。
從 Github 存儲(chǔ)庫(kù)下載 Piper TTS 的預(yù)編譯二進(jìn)制包。您可以使用 wget 命令通過(guò)在終端中運(yùn)行以下命令來(lái)下載程序包:
wget https://github.com/rhasspy/piper/releases/download/v0.0.2/piper_amd64.tar.gz
這將下載適用于 AMD64 架構(gòu)的 Piper TTS 二進(jìn)制包。如果您在 Raspberry Pi 或 Nvidia Jetson 等設(shè)備上使用不同的架構(gòu),例如 ARM64,您應(yīng)該從piper的 github 存儲(chǔ)庫(kù)下載適當(dāng)?shù)陌姹尽?/font> 提取 tar.gz 文件。
下載英文語(yǔ)言模型,在終端中運(yùn)行以下命令:
wget https://github.com/rhasspy/piper/releases/download/v0.0.2/voice-en-us-ryan-high.tar.gz
提取您下載的語(yǔ)言模型的 tar.gz 文件。您可以使用以下命令進(jìn)行提取:
tar -zxvf voice-en-us-ryan-high.tar.gz
使用以下代碼片段通過(guò) Piper TTS 生成 WAV 音頻文件。將model_path變量替換為您下載的語(yǔ)言模型的路徑,并將text變量替換為您要轉(zhuǎn)換為語(yǔ)音的文本。該代碼將在輸出目錄中生成 904 個(gè)音頻文件,每個(gè)文件都有不同的揚(yáng)聲器。
import subprocess
text = "Your name"
model_path = "./en-us-libritts-high.onnx"
for i in range(0, 904):
output_file = f'./output/{i}.wav'
cmd = f'echo "{text}" | ./piper/piper --model {model_path} --output_file {output_file} --speaker {i}'
subprocess.run(cmd, shell=True, check=True)
此外,您還可以使用為您準(zhǔn)備的 Google Colab 筆記本。該筆記本包含使用Piper TTS生成音頻文件的所有必要步驟和代碼。
您可以通過(guò)提供給您的鏈接訪問(wèn)筆記本。
默認(rèn)運(yùn)行時(shí)使用 CPU,但您可以將運(yùn)行時(shí)更改為 GPU。
為了在筆記本上使用 GPU,請(qǐng)選擇運(yùn)行時(shí) > 更改運(yùn)行時(shí)類(lèi)型菜單,然后將硬件加速器下拉菜單設(shè)置為 GPU
Piper TTS 無(wú)需 GPU 即可運(yùn)行,而AudioLDM文本到音頻生成工具需要 GPU 激活。以下是通過(guò)AudioLDM生成音頻的步驟。
使用 AudioLDM 生成高質(zhì)量的合成音頻數(shù)據(jù)集
要從文本生成音頻文件,下一步涉及使用名為AudioLDM的文本到音頻生成工具。該工具利用潛在擴(kuò)散模型從文本生成高質(zhì)量音頻。要使用 AudioLDM,您需要一臺(tái)配備強(qiáng)大 GPU 的獨(dú)立計(jì)算機(jī)。
要使用文本提示生成音頻文件,您有兩種選擇:您可以在自己的計(jì)算機(jī)上使用 GPU 安裝 audioldm,或者使用我為您準(zhǔn)備的Google Colab 。
首先,您需要通過(guò)運(yùn)行以下命令使用 pip 安裝 PyTorch
pip3 install torch==2.0.0
接下來(lái),您可以通過(guò)運(yùn)行命令來(lái)安裝 audioldm 包
pip3 install audioldm
安裝必要的包后,您可以使用 GitHub 部分中提供的代碼片段從文本提示生成音頻文件。為此,只需運(yùn)行命令
python3 generate.py
這將啟動(dòng)生成過(guò)程,您應(yīng)該會(huì)看到類(lèi)似于以下內(nèi)容的輸出:
genereated: A hammer is hitting a wooden surface
genereated: A noise of nature
genereated: The sound of waves crashing on the shore
genereated: A thunderstorm in the distance
genereated: Traffic noise on a busy street
genereated: The hum of an air conditioning unit
genereated: Birds chirping in the morning
genereated: The sound of a train passing by
一旦收集了 wav 音頻樣本,就可以將它們輸入神經(jīng)網(wǎng)絡(luò)以啟動(dòng)訓(xùn)練過(guò)程。
就這樣。現(xiàn)在我們可以簡(jiǎn)單地將這些 wav 文件上傳到Edge Impulse Studio以訓(xùn)練我們的模型。
使用 Edge Impulse 平臺(tái)進(jìn)行模型訓(xùn)練
對(duì)于模型訓(xùn)練、測(cè)試和部署,可以使用Edge Impulse Studio平臺(tái)。它是一個(gè)幾乎不提供代碼解決方案的 TinyML 框架,您無(wú)需具備良好的機(jī)器學(xué)習(xí)專(zhuān)業(yè)知識(shí)即可構(gòu)建您的 TinyML 模型。
首先,創(chuàng)建一個(gè)帳戶(hù)并登錄。然后創(chuàng)建一個(gè)新項(xiàng)目。將樣本加載到 Edge Impulse 中的最簡(jiǎn)單方法是使用上傳數(shù)據(jù)選項(xiàng)。
選擇數(shù)據(jù)采集選項(xiàng)卡并選擇上傳數(shù)據(jù)選項(xiàng),將出現(xiàn)以下窗口。
確保在標(biāo)簽選項(xiàng)下,您在輸入標(biāo)簽選項(xiàng)下提到了標(biāo)簽名稱(chēng)。上傳您的 wav 文件。
對(duì)上傳其他班級(jí)的音頻樣本重復(fù)相同的過(guò)程。您應(yīng)該確保每個(gè)音頻樣本都被正確標(biāo)記并分組到各自的類(lèi)別中,以避免在訓(xùn)練期間出現(xiàn)任何混淆。
我總共收集了 1 小時(shí) 19 秒的數(shù)據(jù),這些數(shù)據(jù)可以分為三個(gè)不同的類(lèi)別。
- 未知類(lèi)
- 背景噪音等級(jí)
- Shakhizat班(我的名字)
一旦你設(shè)置了所有的類(lèi)并且對(duì)你的數(shù)據(jù)集感到滿(mǎn)意,就可以訓(xùn)練模型了。在左側(cè)導(dǎo)航菜單中導(dǎo)航至 Impulse Design。
選擇Add a processing block并添加Audio(Syntiant) ,因?yàn)樗浅_m合基于Syntiant NDP120 Neural Decision Processor 的人聲應(yīng)用。它會(huì)嘗試將音頻轉(zhuǎn)換成某種基于時(shí)間和頻率特征的特征,這將有助于我們進(jìn)行分類(lèi)。然后選擇添加學(xué)習(xí)塊并添加分類(lèi)。
最后,點(diǎn)擊Save Impulse 。
然后導(dǎo)航到Syntiant 。在此步驟中,您將從輸入數(shù)據(jù)生成特征。特征是分類(lèi)算法用來(lái)對(duì)音頻進(jìn)行分類(lèi)的獨(dú)特屬性。
將特征提取器設(shè)置為log-bin(NDP120/200) ,然后單擊保存參數(shù)。
接下來(lái),單擊生成特征并使用特征資源管理器檢查生成的特征。每個(gè)數(shù)據(jù)樣本將根據(jù)其標(biāo)簽在圖中著色。
使用完功能瀏覽器后,單擊左側(cè)導(dǎo)航菜單中的分類(lèi)器項(xiàng)。
對(duì)于此項(xiàng)目,訓(xùn)練周期數(shù)設(shè)置為200 ,學(xué)習(xí)率設(shè)置為0.0005 。
該模型具有以下結(jié)構(gòu):
接下來(lái),單擊Start training以訓(xùn)練機(jī)器學(xué)習(xí)模型,這可能需要一些時(shí)間才能完成,具體取決于數(shù)據(jù)集的大小。
訓(xùn)練完成后,Edge Impulse Studio 將顯示模型的性能、混淆矩陣、特征資源管理器和設(shè)備上的性能細(xì)節(jié)。
對(duì)我來(lái)說(shuō),準(zhǔn)確率為 96.2%,損失為 0.12。訓(xùn)練集的準(zhǔn)確性非常好。
您可能會(huì)看到以下日志消息:
| | Total MACs: 284736 | | Total Cycles: 24762 (time=0.0011515066964285713s @ 21.504 MHz) | | Total Parameter Count: 948 | | Total Parameter Memory: 1.4375 KB out of 640.0 KB on the NDP120_B0 device. | | Estimated Model Energy/Inference at 0.9V: 5.56237 (uJ)
此信息很重要,因?yàn)樗砻髂P偷膬?nèi)存效率以及它是否可以部署在 Arduino Nicla Voice 等資源有限的設(shè)備上。
一旦您對(duì)模型的性能感到滿(mǎn)意,就可以將它部署到您的 Arduino Nicla Voice 中了。為此,單擊 Edge Impulse Studio 中的 Deployment 菜單項(xiàng),然后單擊 Arduino Nicla Voice 按鈕。
選擇模型后,單擊構(gòu)建。
打開(kāi) Arduino IDE 串行監(jiān)視器。將波特率設(shè)置為 115200。如果一切正常,您應(yīng)該會(huì)看到以下內(nèi)容:
如您所見(jiàn),我們的模型表現(xiàn)非常好。盡管有一些錯(cuò)誤分類(lèi),但我覺(jué)得它的結(jié)果非常棒。該系統(tǒng)能夠?qū)⒚總€(gè)說(shuō)出的詞分類(lèi)為“未知”類(lèi)別。此外,它還能將口語(yǔ)單詞“我的名字”正確識(shí)別為已知單詞,并將其分配到適當(dāng)?shù)念?lèi)別。另一方面,系統(tǒng)將背景中的噪音識(shí)別為噪音類(lèi)別并相應(yīng)地分配。
總之,該項(xiàng)目演示了如何使用 Edge Impulse 平臺(tái)構(gòu)建音頻分類(lèi)系統(tǒng)并將其部署在 Arduino Nicla Voice 等邊緣設(shè)備上。通過(guò)使用包含未知聲音、背景噪聲和人名的多樣化數(shù)據(jù)集來(lái)訓(xùn)練模型,我們可以創(chuàng)建一個(gè)強(qiáng)大的系統(tǒng),可以實(shí)時(shí)準(zhǔn)確地對(duì)音頻樣本進(jìn)行分類(lèi)。
我已經(jīng)讓公眾可以訪問(wèn)一個(gè)項(xiàng)目。有關(guān)此項(xiàng)目的更多詳細(xì)信息,請(qǐng)?jiān)L問(wèn) Edge Impulse。并且可以通過(guò)此鏈接訪問(wèn)它。
感謝您的閱讀!如果您有興趣了解有關(guān)音頻識(shí)別中機(jī)器學(xué)習(xí)的更多信息,我強(qiáng)烈建議您查看下面這篇文章中提到的參考資料
參考
- TinyML變得簡(jiǎn)單:圖像分類(lèi)
- 合成數(shù)據(jù)的不合理有效性
- TinyML:使用ChatGPT和合成數(shù)據(jù)檢測(cè)嬰兒哭聲
- 用于對(duì)象檢測(cè)的合成數(shù)據(jù)生成
- 使用Esp32和TinyML進(jìn)行手勢(shì)分類(lèi)
- TinyML:ESP32 CAM和TFT上的實(shí)時(shí)圖像分類(lèi)
- 基于判斷聚合模型的數(shù)據(jù)挖掘分類(lèi)算法 13次下載
- 基于LSTM網(wǎng)絡(luò)的在線學(xué)習(xí)課程推薦模型 6次下載
- 如何使用多線性分類(lèi)器擬合實(shí)現(xiàn)攻擊模擬算法 2次下載
- 基于級(jí)聯(lián)式分類(lèi)器的網(wǎng)頁(yè)分類(lèi)方法 0次下載
- 板材心理感知顏色在線模糊分類(lèi)器設(shè)計(jì)_常湛源 0次下載
- 朗訊PHS無(wú)線數(shù)據(jù)分組通信模式方案 13次下載
- 無(wú)線數(shù)據(jù)終端
- 基于隱馬爾可夫模型的音頻自動(dòng)分類(lèi)
- 合成孔徑雷達(dá)圖像目標(biāo)分類(lèi)研究
- 濾波器的定義、分類(lèi)及應(yīng)用 1674次閱讀
- 音頻混合器電路圖分享 4952次閱讀
- 如何制作一個(gè)音頻合成器? 1840次閱讀
- 如何創(chuàng)建基于DCO的音頻合成器 815次閱讀
- 【tinyML】使用EdgeImpulse讓您的Arduino可以辨識(shí)手勢(shì)! 4081次閱讀
- 如何使用TinyML在內(nèi)存受限的設(shè)備上部署ML模型呢 958次閱讀
- 使用無(wú)監(jiān)督學(xué)習(xí)和合成數(shù)據(jù)作為數(shù)據(jù)增強(qiáng)方法來(lái)分類(lèi)異常 920次閱讀
- 蒸餾無(wú)分類(lèi)器指導(dǎo)擴(kuò)散模型的方法 1057次閱讀
- 如何在 MCU 上快速部署 TinyML 1689次閱讀
- 如何利用TinyML實(shí)現(xiàn)語(yǔ)音識(shí)別機(jī)器人車(chē)的設(shè)計(jì) 2110次閱讀
- ups電源有幾種_ups電源分類(lèi) 1.1w次閱讀
- 音頻變壓器工作原理_音頻變壓器作用 1.4w次閱讀
- 一文看懂頻率合成原理與特點(diǎn) 1.3w次閱讀
- 音頻壓縮技術(shù)編碼分類(lèi) 9679次閱讀
- 直流和交流真的永遠(yuǎn)對(duì)立嗎? 1362次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多