簡體   English   中英

幫助使用FFT確定音頻樣本的頻率

[英]Help with using FFT to determine frequency of an audio sample

我目前正在開發打擊樂教程程序。 該程序要求我可以確定正在播放的鼓,為此,我將分析鼓錄制的頻率,並查看該頻率是否在給定范圍內。

到目前為止,我一直在使用Apache數學通用實現進行FFT(http://commons.apache.org/math/),但是我的問題是,一旦執行FFT,如何使用結果數組來計算頻率包含在信號中?

注意:我也嘗試過嘗試使用自相關,但似乎無法很好地處理鼓組中的樣品

對於如何確定擊打哪個鼓的任何幫助或替代建議,將不勝感激

編輯:自編寫此書以來,我發現了一個很棒的在線課程,內容涉及在Java中實現FFT以便進行時間/頻率轉換的Java頻譜分析

在音樂信息檢索領域,人們經常使用一種相關的度量標准,即梅爾頻率倒譜系數 (MFCC)。

對於信號的任何N個樣本段,請進行FFT。 將那些得到的N個樣本轉換為一組包含12個元素(即系數)的MFCC。 該12元素向量用於對樂器進行分類,包括使用哪個鼓。

要進行監督分類,您可以使用諸如支持向量機 (SVM)之類的東西。 LIBSVM是具有Java兼容性(和許多其他語言)的常用庫。 您可以使用這些MFCC及其相應的儀器標簽來訓練SVM。 然后,您通過提供查詢MFCC向量來對其進行測試,它將告訴您它是哪種儀器。

因此,基本程序總結如下:

  1. 獲取FFT。
  2. 從FFT獲取MFCC。
  3. 使用MFCC和儀器標簽訓練SVM。
  4. 使用查詢信號的MFCC查詢SVM。

檢查執行這些操作的Java軟件包。 (它們必須存在。我只是不了解它們。)相對而言,鼓轉錄比大多數其他樂器組更容易,因此我樂觀地認為這會奏效。

為了進一步閱讀,有很多關於鼓轉錄文章

當我使用DFT制作程序時,我為每個頻率創建了一個頻率和幅度數組。 然后,我可以找到最大的振幅,並將其與音符進行比較,從而很好地了解演奏的內容。 如果您知道感光鼓的大概頻率,則應該能夠做到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM