2017-09-21 46 views
2

的存在,我想創建Keras音頻分類系統,該系統簡單地確定一個給定的樣本是否含有人的聲音或沒有。沒有其他的。這將是我第一次嘗試機器學習。音頻分類與Keras:人聲

此音頻預處理器存在。它聲稱不會做,但它已經分叉了幾聲:

https://github.com/drscotthawley/audio-classifier-keras-cnn

我不明白這其中是如何工作的,但我已經準備好試一試:

https://github.com/keunwoochoi/kapre

但是,讓我們說,我得到了那些工作,將在過程的其餘部分是類似的圖像分類嗎?基本上,我從來沒有完全理解何時使用Softmax以及何時使用ReLu。如果我將數據映射爲張量,這與聲音會如何相似?

+0

我還在開發一個應用程序來確定給定的樣本是否包含人聲(而不是任何其他可能的聲音)。你在凱拉斯取得了不錯的成績嗎? – felipeduque

+0

@ eje211你可以分享你的進度代碼嗎?我正在處理類似的問題。如果我在狗皮上訓練模型,我想要模型來確定狗皮在測試文件中的位置。 –

+0

我在之前的工作中這樣做過。我不再有權訪問代碼。抱歉。但是我的僱主對我的追求並不感興趣,所以我並沒有走得太遠。 – eje211

回答

1

聲音可以被看作是一維圖像並且與一維卷積工作。 通常情況下,擴張的卷積可以做一個好工作,看到Wave Nets

聲音也可以被看作是序列和與RNN層工作(但也許他們在爲數據量是太笨重)

對於您的情況下,您只需要一個輸出,並在最後激活'sigmoid',並且'binary_crossentropy'損失。

  • 結果= 0 - >沒有語音
  • 結果= 1 - >有語音

當使用 'SOFTMAX'?

的SOFTMAX功能是很好的,你只需要一個類,結果多類問題(不是你的情況下)。 softmax函數的所有結果總和爲1.其意圖就像每個類的概率。

它主要用在最後一層,因爲你只能得到類作爲最終結果。

這是很好的情況下,當只有一個類是正確的。在這種情況下,虧損categorical_crossentropy

RELU和這些都不是很統治模式

中部其他激活。有很多可能性。我經常在圖像卷積模型中看到relu。

要知道的重要事情是他們的「範圍」。他們的輸出有什麼限制?

  • 乙狀結腸:從0到1 - 在模型結束時,這將是您存在/最大分類的最佳選擇。對於需要許多可能的類的模型也很有用。
  • 雙曲正切:從-1到1
  • RELU:從0到無限(它只是削減負值)
  • SOFTMAX:從0到1,但確保所有值的總和爲1的好在許多類中只需要一個類的模型的結尾。
+0

謝謝!我會開始做的。 我想我明白了。我的最終結果會給人類語音帶來0到某個最大值的可能性。 Sigmoid將從0到1歸一化。然後,由我來確定0和1之間的哪個值確實意味着存在人聲。 – eje211

+0

通常,您可以創建「真實標籤」或從某個數據集加載它們。所有帶有人聲的樣本都歸類爲1,並且所有沒有人類語音的樣本歸類爲0.然後,用這些數據進行訓練,並且您的模型會帶來某種發生語音的可能性。粗略地說,當你的模型預測接近於零的東西時,它沒有聲音,當它預測接近1的東西時,就有聲音。如果你的模型預測中間的東西,那麼你的模型不是很確定.... –

0

通常情況下是非常有用的預處理音頻頻譜:

Spectogram

以此爲輸入,可以使用傳統的圖像分類方法(如卷積神經網絡)。在你的情況下,你可以將輸入音頻劃分爲大約20ms-100ms的幀(取決於你需要的時間分辨率),然後將這些幀轉換爲譜圖。卷積網絡也可以與週期性單元結合考慮更大的時間背景。

另外,也可以培養使用1D卷積原始波形神經網絡。然而研究表明,使用頻率變換的預處理方法通常會獲得更好的結果。