人工智能下的音頻還能這樣玩!!!!


人工智能音頻處理庫—librosa(安裝與使用)html


序言python

1、libsora安裝nginx

pypigit

condagithub

sourceweb

2、librosa經常使用功能數組

核心音頻處理函數bash

音頻處理微信

頻譜表示app

幅度轉換

時頻轉換

特徵提取

繪圖顯示

3、經常使用功能代碼實現

讀取音頻

提取特徵

提取Log-Mel Spectrogram 特徵

提取MFCC特徵

繪圖顯示

繪製聲音波形

繪製頻譜圖




序言

Librosa是一個用於音頻、音樂分析、處理的python工具包,一些常見的時頻處理、特徵提取、繪製聲音圖形等功能應有盡有,功能十分強大。本文主要介紹librosa的安裝與使用方法。




1、libsora安裝

Librosa官網提供了多種安裝方法,詳細以下:

pypi

最簡單的方法就是進行pip安裝,能夠知足全部的依賴關係,命令以下:

pip install librosa

conda

若是安裝了Anaconda,能夠經過conda命令安裝:

conda install -c conda-forge librosa

source

直接使用源碼安裝,須要提早下載源碼(https://github.com/librosa/librosa/releases/),經過下面命令安裝:

tar xzf librosa-VERSION.tar.gzcd librosa-VERSION/python setup.py install


2、librosa經常使用功能

核心音頻處理函數

這部分介紹了最經常使用的音頻處理函數,包括音頻讀取函數load( ),重採樣函數resample( ),短時傅里葉變換stft( ),幅度轉換函數amplitude_to_db( )以及頻率轉換函數hz_to_mel( )等。這部分函數不少,詳細可參考librosa官網 http://librosa.github.io/ librosa/core.html

音頻處理

頻譜表示

幅度轉換

時頻轉換

特徵提取

本部分列舉了一些經常使用的頻譜特徵的提取方法,包括常見的Mel Spectrogram、MFCC、CQT等。函數詳細信息可參考http:// librosa.github.io/librosa/feature.html

繪圖顯示

包含了經常使用的頻譜顯示函數specshow( ), 波形顯示函數waveplot( ),詳細信息請參考http://librosa.github.io/librosa/display. html



3、經常使用功能代碼實現

1.讀取音頻

# # 2020-11-9# # 李運辰#導入庫import librosa# # 讀取音頻# Load a wav filey, sr = librosa.load('./sample.wav')print(y)#Librosa默認的採樣率是22050,若是須要讀取原始採樣率,須要設定參數sr=None:print(sr)y, sr = librosa.load('./sample.wav',sr=None)#可見,'beat.wav'的原始採樣率爲16000。若是須要重採樣,只須要將採樣率參數sr設定爲你須要的值:print(sr)
y, sr = librosa.load('./sample.wav',sr=18000)print(sr)



2.提取特徵

提取Log-Mel Spectrogram 特徵

Log-Mel Spectrogram特徵是目前在語音識別和環境聲音識別中很經常使用的一個特徵,因爲CNN在處理圖像上展示了強大的能力,使得音頻信號的頻譜圖特徵的使用越發普遍,甚至比MFCC使用的更多。在librosa中,Log-Mel Spectrogram特徵的提取只需幾行代碼:

# # 提取特徵# Load a wav filey, sr = librosa.load('./sample.wav', sr=None)# extract mel spectrogram featuremelspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)# convert to log scalelogmelspec = librosa.power_to_db(melspec)print(logmelspec.shape)

可見,Log-Mel Spectrogram特徵是二維數組的形式,128表示Mel頻率的維度(頻域),100爲時間幀長度(時域),因此Log-Mel Spectrogram特徵是音頻信號的時頻表示特徵。其中,n_fft指的是窗的大小,這裏爲1024;hop_length表示相鄰窗之間的距離,這裏爲512,也就是相鄰窗之間有50%的overlap;n_mels爲mel bands的數量,這裏設爲128。



3.提取MFCC特徵

MFCC特徵是一種在自動語音識別和說話人識別中普遍使用的特徵。關於MFCC特徵的詳細信息,有興趣的能夠參考博客http:// blog.csdn.net/zzc15806/article/details/79246716。在librosa中,提取MFCC特徵只須要一個函數:

# # 提取MFCC特徵# extract mfcc featuremfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=40)print(mfccs)print(mfccs.shape)


關於mfcc,這裏就不在贅述。

Librosa還有不少其餘音頻特徵的提取方法,好比CQT特徵、chroma特徵等,在第二部分「librosa經常使用功能」給了詳細的介紹。



4.繪圖顯示

4.1繪製聲音波形

Librosa有顯示聲音波形函數waveplot( ):

# # 繪圖顯示import librosa.displayimport matplotlib.pyplot as pltget_ipython().run_line_magic('matplotlib', 'inline')plt.figure()librosa.display.waveplot(y, sr)plt.title('sample wavform')plt.show()




4.2繪製頻譜圖

Librosa有顯示頻譜圖波形函數specshow( ):

# # 繪製頻譜圖melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)logmelspec = librosa.power_to_db(melspec)plt.figure()librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')plt.title('sample wavform')plt.show()



將聲音波形和頻譜圖繪製在一張圖表中:

# # 將聲音波形和頻譜圖繪製在一張圖表中:# extract mel spectrogram featuremelspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)# convert to log scalelogmelspec = librosa.power_to_db(melspec)plt.figure()# plot a wavformplt.subplot(2, 1, 1)librosa.display.waveplot(y, sr)plt.title('sample wavform')# plot mel spectrogramplt.subplot(2, 1, 2)librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')plt.title('Mel spectrogram')plt.tight_layout() #保證圖不重疊plt.show()




到這裏,librosa的安裝和簡單使用就介紹完了。事實上,librosa遠不止這些功能,關於librosa更多的使用方法還請你們參考librosa官網http://librosa.github.io/librosa/index.html


正文結束!!!


歡迎關注公衆號:Python爬蟲數據分析挖掘,方便及時閱讀最新文章

記錄學習python的點點滴滴;

回覆【開源源碼】免費獲取更多開源項目源碼;

公衆號每日更新python知識和【免費】工具;

本文已同步到【開源中國】、【騰訊雲社區】、【CSDN】;

本文分享自微信公衆號 - Python爬蟲數據分析挖掘(zyzx3344)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索