日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python计算短时自相关函数 音频信号_librosa与python_speech_features

發布時間:2024/9/30 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python计算短时自相关函数 音频信号_librosa与python_speech_features 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在語音識別領域,比較常用的兩個模塊就是librosa和python_speech_features了。

最近也是在做音樂方向的項目,借此做一下筆記,并記錄一些兩者的差別。下面是兩模塊的官方文檔

LibROSA - librosa 0.6.3 documentation?librosa.github.ioWelcome to python_speech_features’s documentation!?python-speech-features.readthedocs.io

直接對比兩文檔就可以看出librosa功能十分強大,涉及到了音頻的特征提取、譜圖分解、譜圖顯示、順序建模、創建音頻等功能,而python_speech_features只涉及了音頻特征提取。就特征提取的實現方法和種類來看,兩者也有所不同。

python_speech_features的特征

支持的特征:

  • python_speech_features.mfcc() - 梅爾倒譜系數
  • python_speech_features.fbank() - 濾波器組能量
  • python_speech_features.logfbank() - 對數濾波器組能量
  • python_speech_features.ssc() - 子帶頻譜質心特征

提取mfcc、logfbank特征的方法

from

python_speech_features的比較好用的地方就是自帶預加重參數,只需要設定preemph的值,就可以對語音信號進行預加重,增強高頻信號。

python_speech_features模塊提供的函數

python_speech_features.base.mfcc(signal, samplerate=16000, winlen=0.025, winstep=0.01, numcep=13, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97, ceplifter=22, appendEnergy=True, winfunc=<function <lambda>>)

計算一個音頻信號的MFCC特征

返回: 一個大小為numcep的numpy數組,包含著特征,每一行都包含一個特征向量。

參數:

signal - 需要用來計算特征的音頻信號,應該是一個N*1的數組

samplerate - 我們用來工作的信號的采樣率

winlen - 分析窗口的長度,按秒計,默認0.025s(25ms)

winstep - 連續窗口之間的步長,按秒計,默認0.01s(10ms)

numcep - 倒頻譜返回的數量,默認13

nfilt - 濾波器組的濾波器數量,默認26

nfft - FFT的大小,默認512

lowfreq - 梅爾濾波器的最低邊緣,單位赫茲,默認為0

highfreq - 梅爾濾波器的最高邊緣,單位赫茲,默認為采樣率/2

preemph - 應用預加重過濾器和預加重過濾器的系數,0表示沒有過濾器,默認0.97

ceplifter - 將升降器應用于最終的倒譜系數。 0沒有升降機。默認值為22。

appendEnergy - 如果是true,則將第0個倒譜系數替換為總幀能量的對數。

winfunc - 分析窗口應用于每個框架。 默認情況下不應用任何窗口。 你可以在這里使用numpy窗口函數 例如:winfunc=numpy.hamming

python_speech_features.base.fbank(signal, samplerate=16000, winlen=0.025, winstep=0.01, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97, winfunc=<function <lambda>>)

從一個音頻信號中計算梅爾濾波器能量特征

返回:2個值。第一個是一個包含著特征的大小為nfilt的numpy數組,每一行都有一個特征向量。第二個返回值是每一幀的能量

python_speech_features.base.logfbank(signal, samplerate=16000, winlen=0.025, winstep=0.01, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97)

從一個音頻信號中計算梅爾濾波器能量特征的對數

返回: 一個包含特征的大小為nfilt的numpy數組,每一行都有一個特征向量

python_speech_features.base.ssc(signal, samplerate=16000, winlen=0.025, winstep=0.01, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97, winfunc=<function <lambda>>)

從一個音頻信號中計算子帶頻譜質心特征

返回:一個包含特征的大小為nfilt的numpy數組,每一行都有一個特征向量

librosa的特征提取

librosa的可以提取的特征種類十分豐富

篇幅原因不多介紹

librosa.features.mfcc(y=None,sr=22050,S=None,n_mfcc=20,dct_type=2,norm='ortho',**kwargs)

y, sr = librosa.load('test.wav',offset=30, duration=5) librosa.feature.mfcc(y=y, sr=sr, n_mfcc=40) # 返回shape=(n_mfcc, timestep)的二維矩陣

librosa.feature.spectral_centroid(y=None,sr=22050,S=None,n_fft=2048,hop_length=512,freq=None)
計算頻譜質心

>>> y, sr = librosa.load('test.wav') >>> cent = librosa.feature.spectral_centroid(y=y, sr=sr) >>> cent array([[ 4382.894, 626.588, ..., 5037.07 , 5413.398]])

藍調音樂的頻譜質心在頻譜偏中心的位置,金屬音樂在靠后的位置

librosa.feature.zero_crossing_rate(y,frame_length=2048,hop_length=512,center=True,**kwargs)

計算過零率

>>> y, sr = librosa.load('test.wav') >>> librosa.feature.zero_crossing_rate(y) array([[ 0.134, 0.139, ..., 0.387, 0.322]])

相對于python_speech_features來說,librosa沒有預加重的處理。或者說librosa提供自定義預加重功能。

預加重的一般傳遞函數為

差分方程實現預加重的方程為

總結

以上是生活随笔為你收集整理的python计算短时自相关函数 音频信号_librosa与python_speech_features的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。