librosa怎么安装_librosa保存音频
目錄
序言
一、libsora安裝
pypi
conda
source
二、librosa常用功能
核心音頻處理函數
音頻處理
頻譜表示
幅度轉換
時頻轉換
特征提取
繪圖顯示
三、常用功能代碼實現
讀取音頻
提取特征
提取Log-Mel Spectrogram 特征
提取MFCC特征
繪圖顯示
繪制聲音波形
繪制頻譜圖
序言
Librosa是一個用于音頻、音樂分析、處理的python工具包,一些常見的時頻處理、特征提取、繪制聲音圖形等功能應有盡有,功能十分強大。本文主要介紹librosa的安裝與使用方法。
一、libsora安裝
Librosa官網提供了多種安裝方法,詳細如下:
pypi
最簡單的方法就是進行pip安裝,可以滿足所有的依賴關系,命令如下:
pip install librosa
Jetbrains全家桶1年46,售后保障穩定
conda
如果安裝了Anaconda,可以通過conda命令安裝:
conda install -c conda-forge librosa
source
直接使用源碼安裝,需要提前下載源碼(https://github.com/librosa/librosa/releases/),通過下面命令安裝:
tar xzf librosa-VERSION.tar.gz
cd librosa-VERSION/
python setup.py install
二、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
三、常用功能代碼實現
讀取音頻
>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav')
>>> y
array([ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
8.12290182e-06, 1.34394732e-05, 0.00000000e+00], dtype=float32)
>>> sr
22050
Librosa默認的采樣率是22050,如果需要讀取原始采樣率,需要設定參數sr=None:
>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=None)
>>> sr
44100
可見,’beat.wav’的原始采樣率為44100。如果需要重采樣,只需要將采樣率參數sr設定為你需要的值:
>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=16000)
>>> sr
16000
提取特征
提取Log-Mel Spectrogram 特征
Log-Mel Spectrogram特征是目前在語音識別和環境聲音識別中很常用的一個特征,由于CNN在處理圖像上展現了強大的能力,使得音頻信號的頻譜圖特征的使用愈加廣泛,甚至比MFCC使用的更多。在librosa中,Log-Mel Spectrogram特征的提取只需幾行代碼:
>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=None)
>>> # extract mel spectrogram feature
>>> melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)
>>> # convert to log scale
>>> logmelspec = librosa.power_to_db(melspec)
>>> logmelspec.shape
(128, 194)
可見,Log-Mel Spectrogram特征是二維數組的形式,128表示Mel頻率的維度(頻域),194為時間幀長度(時域),所以Log-Mel Spectrogram特征是音頻信號的時頻表示特征。其中,n_fft指的是窗的大小,這里為1024;hop_length表示相鄰窗之間的距離,這里為512,也就是相鄰窗之間有50%的overlap;n_mels為mel bands的數量,這里設為128。
提取MFCC特征
MFCC特征是一種在自動語音識別和說話人識別中廣泛使用的特征。關于MFCC特征的詳細信息,有興趣的可以參考博客http:// blog.csdn.net/zzc15806/article/details/79246716。在librosa中,提取MFCC特征只需要一個函數:
>>> import librosa
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=None)
>>> # extract mfcc feature
>>> mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=40)
>>> mfccs.shape
(40, 194)
關于mfcc,這里就不在贅述。
Librosa還有很多其他音頻特征的提取方法,比如CQT特征、chroma特征等,在第二部分“librosa常用功能”給了詳細的介紹。
繪圖顯示
繪制聲音波形
Librosa有顯示聲音波形函數waveplot( ):
>>> import librosa
>>> import librosa.display
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=None)
>>> # plot a wavform
>>> plt.figure()
>>> librosa.display.waveplot(y, sr)
>>> plt.title('Beat wavform')
>>> plt.show()
輸出圖形為:
繪制頻譜圖
Librosa有顯示頻譜圖波形函數specshow( ):
>>> import librosa
>>> import librosa.display
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=None)
>>> # extract mel spectrogram feature
>>> melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)
>>> # convert to log scale
>>> logmelspec = librosa.power_to_db(melspec)
>>> # plot mel spectrogram
>>> plt.figure()
>>> librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')
>>> plt.title('Beat wavform')
>>> plt.show()
輸出結果為:
將聲音波形和頻譜圖繪制在一張圖表中:
>>> import librosa
>>> import librosa.display
>>> # Load a wav file
>>> y, sr = librosa.load('./beat.wav', sr=None)
>>> # extract mel spectrogram feature
>>> melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)
>>> # convert to log scale
>>> logmelspec = librosa.power_to_db(melspec)
>>> plt.figure()
>>> # plot a wavform
>>> plt.subplot(2, 1, 1)
>>> librosa.display.waveplot(y, sr)
>>> plt.title('Beat wavform')
>>> # plot mel spectrogram
>>> plt.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
參考:http://librosa.github.io/librosa/index.html
總結
以上是生活随笔為你收集整理的librosa怎么安装_librosa保存音频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java mvc mvp_一篇文章让你彻
- 下一篇: insert键指的是什么意思