最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

用Tensorflow進(jìn)行簡(jiǎn)單音頻分類的高效方法

2021-06-23 19:18 作者:深度之眼官方賬號(hào)  | 我要投稿

Tensorflow因支持功能的全面性,序列化的突出優(yōu)點(diǎn),以及高性能的部署優(yōu)點(diǎn)等等俘獲了一大批的鐵桿粉絲。但是對(duì)于小白來(lái)說(shuō)要上手還是需要啃一些實(shí)戰(zhàn)案例,積累一些實(shí)現(xiàn)方法的。


在視覺、語(yǔ)言領(lǐng)域相關(guān)的深度學(xué)習(xí)發(fā)展很好,例如:CNN 在圖像上表現(xiàn)非常好,具有像素的局部相關(guān)性;RNN或transformers這樣的序列模型在語(yǔ)言上也表現(xiàn)得非常好,具有順序性。


音頻看起來(lái)用的很少,以至于一些同學(xué)也不知道處理音頻數(shù)據(jù)時(shí)使用了哪些類型的模型和過(guò)程。來(lái)啃下面的Tensorflow 代碼吧!你會(huì)收獲到音頻分類問(wèn)題的高效方法!



聲明:本案例出于演示目的,使用了“語(yǔ)音命令”數(shù)據(jù)集。


Waveforms(波形)


通?!?.wav?”格式的音頻文件,通常被稱為波形,波形是每個(gè)特定時(shí)間信號(hào)幅度的時(shí)間序列,當(dāng)將這些波形樣本中一部分進(jìn)行可視化,會(huì)這樣顯示:



直覺上,大部分人都可能會(huì)考慮使用某種RNN模型對(duì)這些數(shù)據(jù)進(jìn)行建模,就像常規(guī)時(shí)間序列(例如股票價(jià)格預(yù)測(cè))一樣,用這種方法這是可以做到的。

但是,由于我們使用的是音頻信號(hào),因此更合適的選擇是將波形樣本轉(zhuǎn)換為頻譜圖。


Spectrograms頻譜圖

頻譜圖是波形信號(hào)的圖像表示,它顯示了隨時(shí)間變化的頻率強(qiáng)度范圍,當(dāng)要評(píng)估信號(hào)隨時(shí)間變化的頻率分布時(shí),頻譜圖非常有用。


下圖是上面波形圖像的頻譜圖表示:



語(yǔ)音命令用例

為了讓大家能夠更容易理解整個(gè)操作過(guò)程,我們將使用“語(yǔ)音命令”數(shù)據(jù)集(在文章底部獲取鏈接),該數(shù)據(jù)集包含一秒鐘的音頻剪輯,其中包含以下口語(yǔ):“向下”、“前進(jìn)”、“左”、“否”、“右”、“停止”、“向上”和“是”。


使用 Tensorflow 處理音頻

上面講解了如何處理音頻數(shù)據(jù)以用于深度學(xué)習(xí)模型,接下來(lái)看如何用代碼實(shí)現(xiàn),所用管線將遵循下圖所述的簡(jiǎn)單工作流:



注意以下,在用例中,第一步是直接從“.wav”文件加載數(shù)據(jù),第三步是可選的,因?yàn)槊總€(gè)音頻文件只有一秒鐘,在某些情況下,裁剪音頻可能是個(gè)好的做法,這樣可以用于更長(zhǎng)的文件,也可以在所有樣本中保持固定長(zhǎng)度。


加載數(shù)據(jù)



load_dataset函數(shù)負(fù)責(zé)加載.wav文件并轉(zhuǎn)換為 Tensorflow 數(shù)據(jù)集


提取波形和標(biāo)簽



加載.wav文件后,然后對(duì)文件進(jìn)行解碼,使用tf.audio.decode_wav函數(shù)來(lái)完成,將.wav文件轉(zhuǎn)換為浮點(diǎn)張量。

接下來(lái),從文件中提取標(biāo)簽,在這個(gè)特定用例中,從每個(gè)樣本的文件路徑中獲取標(biāo)簽,之后只需要進(jìn)行單(獨(dú))熱編碼(one-hot encode the labels)。


看這個(gè)例子,首先,我們得到這樣一個(gè)文件路徑:



然后我們提取第二個(gè)“ / ”之后的文本,在這種情況下,標(biāo)簽是向上的,最后,我們使用commands列表對(duì)標(biāo)簽進(jìn)行單(獨(dú))熱編碼(one-hot encode the labels)。



將波形轉(zhuǎn)換為頻譜圖


接著將波形文件轉(zhuǎn)換為頻譜圖,Tensorflow 有一個(gè)功能可以直接做到,tf.signal.stft應(yīng)用short-time Fourier transform (?STFT?) 將音頻轉(zhuǎn)換為時(shí)頻域,然后我們應(yīng)用tf.abs算子去除信號(hào)相位,只保留幅度。


這里注意一下,tf.signal.stft函數(shù)有一些參數(shù),例如frame_length和frame_step,它們會(huì)影響生成的頻譜圖。



將頻譜圖轉(zhuǎn)換為 RGB 圖像


最后一步是將頻譜圖轉(zhuǎn)換為 RGB 圖像,這一步是可選的,這里使用在ImageNet數(shù)據(jù)集上預(yù)先訓(xùn)練的模型,該模型需要具有 3 個(gè)通道的輸入圖像,除此之外,還可以只保留一個(gè)通道的光譜圖。



結(jié)合在一起




總而言之,在完成所有步驟之后,將文件名輸入到get_dataset函數(shù)中,返回一個(gè)帶有 RGB 光譜圖像及其標(biāo)簽的 Tensorflow 數(shù)據(jù)集。


該模型



我們的模型將有一個(gè)EfficientNetB0主干

在其頂部,我們添加了一個(gè)GlobalAveragePooling2D,然后是一個(gè)Dropout,最后一個(gè)Dense層將進(jìn)行實(shí)際的多類分類。

對(duì)于小數(shù)據(jù)集,EfficientNetB0可能是一個(gè)很好的基線,即使是一個(gè)快速和輕的模型,它也有相當(dāng)好的精度。


訓(xùn)練


Keras 模型的訓(xùn)練代碼非常標(biāo)準(zhǔn),你可能不會(huì)在這里找到任何新內(nèi)容。

現(xiàn)在大家應(yīng)該更清楚地了解了將深度學(xué)習(xí)應(yīng)用于音頻文件的工作流程,雖然這并不是唯一的解決辦法,但它是一種關(guān)于易用性和性能權(quán)衡的最佳選擇。


本文參考文檔:

https://pub.towardsai.net/a-gentle-introduction-to-audio-classification-with-tensorflow-c469cb0be6f5

語(yǔ)言命令數(shù)據(jù)集:

https://arxiv.org/abs/1804.03209

tensorflow官方文檔:

https://www.tensorflow.org/tutorials/audio/simple_audio


今后學(xué)姐還會(huì)更新更多

深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的干貨及示例

關(guān)注學(xué)姐變大神!





??點(diǎn)個(gè)贊吧!這樣學(xué)姐就有動(dòng)力肝更多干貨了!??



用Tensorflow進(jìn)行簡(jiǎn)單音頻分類的高效方法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
东乌珠穆沁旗| 绥滨县| 岢岚县| 乐昌市| 卓资县| 梅河口市| 威信县| 阿拉尔市| 获嘉县| 三原县| 永康市| 习水县| 行唐县| 高邮市| 邵阳市| 眉山市| 许昌县| 渝北区| 吉木萨尔县| 松潘县| 高尔夫| 朝阳市| 建瓯市| 武胜县| 清水县| 清涧县| 容城县| 永济市| 永泰县| 吴江市| 阿城市| 建瓯市| 平阴县| 绍兴县| 新余市| 政和县| 鄂尔多斯市| 多伦县| 依安县| 大安市| 长治市|