波形示例。來源:用于機器學習的 Audio Singal Processing

頻譜或頻譜圖是一個圖表,其中 X 軸顯示聲波的頻率,而 Y 軸表示其振幅。這種類型的聲音數據可視化可幫助您分析頻率內容,但會遺漏時間分量。

頻譜圖的示例。來源: Analytics Vidhya

頻譜圖是信號的詳細視圖,涵蓋了聲音的所有三個特征。您可以從 x 軸了解時間,從 y 軸了解頻率,從顏色了解振幅。事件越響亮,顏色越亮,而寂靜則以黑色表示。在一個圖表上擁有三個維度非常方便:它允許您跟蹤頻率如何隨時間變化,檢查聲音的所有完整度,并通過視覺發現各種問題區域(如噪聲)和模式。

例如一個頻譜圖。來源:iZotope

Mel頻譜圖,其中mel代表旋律,是基于描述人們如何感知聲音特征的mel尺度的頻譜圖類型。我們的耳朵比高頻更能區分低頻。你可以自己檢查一下:嘗試播放 500 到 1000 Hz 的音調,然后播放 10,000 到 10,500 Hz 的音調。前者的頻率范圍似乎比后者寬得多,但實際上它們是相同的。梅爾頻譜圖結合了人類聽覺的這一獨特特征,將赫茲的值轉換為梅爾標度。這種方法廣泛用于流派分類、歌曲中的樂器檢測和語音情感識別。

梅爾頻譜圖的一個示例。資料來源:Devopedia

傅里葉變換 (FT)?是一種數學函數,可將信號分解為不同幅度和頻率的尖峰。我們用它來將波形轉換為相應的頻譜圖,以便從不同的角度查看相同的信號并執行頻率分析。這是理解信號和排除其中錯誤的有力工具。

快速傅里葉變換 (FFT)?是計算傅里葉變換的算法。

應用 FFT 可從時間和頻率角度查看相同的信號。來源:NTi Audio

短時傅里葉變換 (STFT) 是將波形轉換為頻譜圖的傅里葉變換序列。

音頻分析軟件

當然,您不需要手動執行轉換。您也不需要了解 FT、STFT 和音頻分析中使用的其他技術背后的復雜數學。所有這些任務和許多其他任務都由音頻分析軟件自動完成,在大多數情況下,該軟件支持以下操作:

以下是音頻分析中使用的最流行的工具列表。

Audacity?是一個免費的開源音頻編輯器,用于拆分錄音、去除噪聲、將波形轉換為頻譜圖并對其進行標記。Audacity 不需要編碼技能。然而,其音頻分析的工具并不十分先進。要執行后續步驟,您需要將數據集加載到?Python?或切換到專門專注于分析和/或機器學習的平臺。

在 Audacity 中標記音頻數據。來源:Towards Data Science

Tensorflow-io 包用于準備和增強音頻數據,讓你能夠執行廣泛的操作,包括噪聲消除、將波形轉換為頻譜圖、頻率和時間掩碼以使聲音清晰可聽等。該工具屬于開源 TensorFlow 生態系統,涵蓋端到端機器學習工作流程。因此,在預處理后,您可以在同一平臺上訓練 ML 模型。

Torchaudio 是 PyTorch 的音頻處理庫。它提供了多種用于處理和轉換音頻數據的工具。它支持各種音頻格式,并提供必要的數據加載和預處理功能。

Librosa 是一個幾乎包含音頻和音樂分析所需的一切的開源Python庫。它支持顯示音頻文件的特征、創建所有類型的音頻數據可視化以及從中提取功能,僅舉幾例。

MathWorks 的 Audio Toolbox?提供了許多用于音頻數據處理和分析的工具,從標記到估計信號指標,再到提取某些特征。它還附帶了預先訓練的機器學習和深度學習模型,可用于語音分析和聲音識別。

音頻數據分析步驟

現在我們已經對聲音數據有了基本的了解,讓我們快速瀏覽一下端到端音頻分析項目的關鍵階段。

  1. 獲取以標準文件格式存儲的特定于項目的音頻數據。
  2. 使用軟件工具為您的機器學習項目準備數據
  3. 從聲音數據的視覺表示中提取音頻特征。
  4. 選擇機器學習模型并針對音頻特征對其進行訓練
使用機器學習進行音頻分析的步驟

語音和聲音數據采集

您可以通過三種方式獲取數據以訓練機器學習模型:使用免費的聲音庫或音頻數據集,從數據提供商處購買數據,或者讓領域專家參與收集數據。

免費數據源

網絡上有很多這樣的來源。但在這種情況下,我們無法控制數據的質量和數量,以及記錄的一般方法。

聲音庫是按主題分組的免費音頻片段。Freesound?和?BigSoundBank?等來源提供錄音、環境聲音、噪音,以及各種類型的內容。例如,你可以找到掌聲的聲音景觀和帶滑板聲音的集合。

最重要的是,聲音庫并不是專門為機器學習項目準備的。因此,我們需要在布景完成、標簽和質量控制方面執行額外的工作。

相反,音頻數據集的創建考慮了特定的機器學習任務。例如,由機器聽覺實驗室提供的鳥類音頻檢測數據集包含在生物聲學監測項目中收集的7000多個片段。另一個例子是ESC-50:環境聲音分類數據集,包含2000個帶標簽的音頻錄音。每個文件長5秒,屬于五個類別中的50個語義類之一。

Google的AudioSet是最大的音頻數據集合之一。它包括超過 200 萬個從 YouTube 視頻中提取的人工標記的 10 秒聲音剪輯。該數據集涵蓋 632 個類別,從音樂和語音到碎片和牙刷聲音。

商業數據集

就數據完整性而言,用于機器學習的商業音頻集肯定比免費音頻集更可靠。我們可以推薦?ProSoundEffects?銷售數據集,以訓練語音識別、環境聲音分類、音頻源分離和其他應用程序的模型。該公司總共有 357,000 個由電影聲音專家錄制的文件,分為 500+ 個類別。

但是,如果你正在尋找的聲音數據過于特殊或罕見怎么辦?如果你需要完全控制錄音和標記怎么辦?那么最好與同一行業中可靠的專家合作進行你的機器學習項目。

專家數據集

在使用 Sleep.ai 時,我們的任務是創建一個能夠識別磨牙癥患者在睡眠中通常發出的磨擦聲的模型。顯然,我們需要特殊數據,而這些數據無法通過開源獲得。此外,數據可靠性和質量必須是最佳的,這樣我們才能獲得值得信賴的結果。

為了獲得這樣的數據集,這家初創公司與睡眠實驗室合作,科學家們在人們睡覺時對其進行監測,以定義健康的睡眠模式并診斷睡眠障礙。專家使用各種設備來記錄大腦活動、運動和其他事件。他們為我們準備了一個帶有大約12,000個樣本的標記數據集,包括磨牙和打鼾的聲音。

音頻數據準備

在 Sleep.io 的情況下,我們的團隊跳過了這一步,將我們項目的數據準備任務委托給睡眠專家。這同樣適用于從數據提供商處購買帶注釋的聲音集合的人。但是,如果您只有原始數據,即以其中一種音頻文件格式保存的錄音,則需要為機器學習做好準備。

音頻數據標注

數據標注或注釋是用正確的答案標記原始數據以運行監督式機器學習的過程。在訓練過程中,您的模型將學習識別新數據中的模式,并根據標簽做出正確的預測。因此,它們的質量和準確性對于 ML 項目的成功至關重要。

盡管標記意味著軟件工具的幫助和一定程度的自動化,但在大多數情況下,它仍然由專業注釋者和/或領域專家手動執行。在我們的磨牙癥檢測項目中,睡眠專家聽取了錄音,并用磨牙或打鼾標簽標記它們。

音頻數據預處理

除了使用有意義的標簽豐富數據外,我們還必須對可靠的數據進行預處理,以實現更好的預測準確性。以下是語音識別和聲音分類項目的最基本步驟。

Framing?是指將連續的聲音流切割成相同長度(通常為 20-40 ms)的短片段(幀),以便進一步進行分段處理。

窗口化是一種基本的音頻處理技術,用于最大限度地減少頻譜泄漏,頻譜泄漏是一種常見的錯誤,會導致頻率模糊并降低振幅精度。有幾種窗口函數(Hamming、Hanning、Flat Top 等)適用于不同類型的信號,盡管 Hanning 變體在?95%?的情況下效果很好。

基本上,所有窗口都執行相同的操作:減小或平滑每幀開頭和結尾的振幅,同時在中心增加振幅以保持平均值。

窗口化前后的信號波形。源:美國國家儀器

重疊添加 (OLA)?方法可防止丟失可能由窗口化引起的重要信息OLA 在相鄰幀之間提供 30-50% 的重疊,允許修改它們而不會有失真的風險。并能夠從窗口中準確重構原始信號。

重疊的窗口化示例。來源: 阿爾托大學維基

特征提取

音頻特征或描述符是從預處理后的音頻數據可視化計算得出的信號屬性,它們可以分為以下三個領域:

音頻數據可視化:時域波形、頻域頻譜以及時域和頻域頻譜圖。來源: ML 的音頻特征類型

時域特征

正如我們之前提到的,時域或時間特征是直接從原始波形中提取的。請注意,波形本身并不包含太多有關聲音實際聽起來如何的信息。它們僅指示振幅如何隨時間變化。在下圖中,我們可以看到空調和警報器波形看起來很相似,但可以肯定的是,這些聲音不會相似。

波形示例。來源:Towards Data Science

現在讓我們來看看我們可以從波形中提取的一些關鍵特征。

振幅包絡 (AE) 跟蹤幀內的振幅峰值,并顯示它們如何隨時間變化。使用 AE,您可以自動測量聲音不同部分的持續時間(如下圖所示)。AE 廣泛用于起始檢測以指示某個信號何時開始,以及用于音樂流派分類。

tico-tico 鳥歌唱的振幅包絡。來源: Seewave: Sound Anaysis principles

短時能量 (STE)?顯示短語音幀內的能量變化。它是一個強大的工具,用于分離有聲和無聲片段。

均方根能量(RMSE)提供了對信號平均能量的理解。它可以根據波形或頻譜圖計算。在第一種情況下,您將更快地獲得結果。然而,頻譜圖可以更準確地表示能量隨時間的變化。RMSE 對于音頻分段和音樂流派分類特別有用。

過零率 (ZCR)?計算信號波在幀內穿過水平軸的次數。它是最重要的聲學特征之一,廣泛用于檢測語音的存在與否,以及區分噪聲與沉默、音樂與語音。

頻域特征

頻域特征比時域特征更難提取,因為該過程涉及使用 FT 或 STFT 將波形轉換為頻譜圖或頻譜圖。然而,正是頻率內容揭示了許多在時域中不可見或難以看到的重要聲音特征。

最常見的頻域特征包括

當然,這個領域還有許多其他特性值得研究。概括地說,它告訴我們聲能如何在頻率之間傳播,而時域則顯示信號如何隨時間變化。

時頻域特征

該域結合了時間和頻率分量,并使用各種類型的頻譜圖作為聲音的視覺表示。您可以從應用短時傅里葉變換的波形中獲得頻譜圖。

最流行的時頻域特征組之一是?mel 頻率倒譜系數 (MFCC)。它們在人類聽覺范圍內工作,因此基于我們之前討論的梅爾標度和梅爾頻譜圖。

毫無疑問,MFCC 的最初應用是語音和語音識別。但它們也被證明對音樂處理和醫療目的的聲學診斷有效,包括打鼾檢測。例如,工程學院(東密歇根大學)最近開發的一個深度學習模型就是在 1000 張打鼾聲的 MFCC 圖像(頻譜圖)上訓練的。

打鼾聲波形 (a) 及其 MFCC 頻譜圖 (b) 與沖廁聲音波形 (c) 和相應的 MFCC 圖像 (d) 的比較。來源:用于打鼾檢測的深度學習模型(電子雜志,第 8 卷,第 9 期)

為了為 Sleep.ai 項目訓練模型,我們的數據科學家從時域和頻域中選擇了一組最相關的特征。通過結合這些特征,他們創建了磨牙和打鼾聲音的豐富檔案。

選擇和訓練機器學習模型

由于音頻特征以視覺形式出現(主要以頻譜圖的形式出現),因此它們成為依賴于深度神經網絡的圖像識別對象。有幾種流行的架構在聲音檢測和分類方面表現出色。在這里,我們只關注兩種常用的通過聲音來識別睡眠問題的方法。

長短期記憶網絡 (LSTM)

長短期記憶網絡 (LSTM)?以其能夠發現數據中的長期依賴關系并記住許多先前步驟中的信息而聞名。根據睡眠呼吸暫停檢測研究,當使用 MFCC 特征作為輸入來區分正常的打鼾聲和異常的打鼾聲時,LSTM 可以達到?87%?的準確率。

另一項研究顯示了更好的結果:LSTM 以?95.3%?的準確率對正常和異常的打鼾事件進行分類。該神經網絡使用了包括MFCCs和時間域中的短時能量在內的五種類型的特征進行訓練。它們共同代表了打鼾的不同特征。

卷積神經網絡 (CNN)

卷積神經網絡在醫療保健和其他行業的計算機視覺領域處于領先地位。它們通常被稱為圖像識別任務的自然選擇。CNN 架構在頻譜圖處理中的效率再次證明了這一說法的有效性。

在工程學院(東密歇根大學)的上述項目中,基于 CNN 的深度學習模型在打鼾聲和非打鼾聲的分類中達到了?96%?的準確率。

CNN 和 LSTM 架構的組合報告了幾乎相同的結果。埃因霍溫理工大學的科學家小組應用 CNN 模型從頻譜圖中提取特征,然后運行 LSTM 將 CNN 輸出分類為打鼾和非打鼾事件。準確率值范圍為?94.4% 到 95.9%,具體取決于用于錄制打鼾聲的麥克風的位置。

對于 Sleep.io 項目,AltexSoft 數據科學團隊使用了兩個 CNN(用于打鼾和磨擦檢測),并在 TensorFlow 平臺上對其進行訓練。在模型達到 80% 以上的準確率后,它們被投入生產。隨著從真實用戶那里收集到的輸入數據不斷增加,它們的結果也在不斷改進。

構建用于打鼾和磨牙檢測的應用程序

為了讓我們的音頻分類算法面向更廣泛的受眾,我們將它們打包到一個 iOS 應用程序?Do I Snore 或 Grind?中,您可以從 App Store 免費下載。我們的用戶體驗團隊創建了一個統一的流程,使用戶能夠記錄睡眠期間的噪音、跟蹤他們的睡眠周期、監控振動事件,并接收有關影響睡眠的因素的信息以及有關如何調整習慣的提示。所有音頻數據分析都在設備上執行,因此即使沒有 Internet 連接,您也會獲得結果。

Do I Snore 還是 Grind App 界面

請注意,無論智能程度如何,沒有任何健康應用程序可以替代真正的醫生。AI 得出的結論必須經過您的牙醫、醫生或其他醫學專家的驗證。

原文鏈接:https://www.altexsoft.com/blog/audio-analysis/

上一篇:

如何使用coze多代理模式

下一篇:

LLM 如何與聊天機器人中的 NLU 協同工作?
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費