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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

librosa能量_librosa与python_speech_features

發(fā)布時(shí)間:2023/12/10 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 librosa能量_librosa与python_speech_features 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在語(yǔ)音識(shí)別領(lǐng)域,比較常用的兩個(gè)模塊就是librosa和python_speech_features了。

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

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

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

python_speech_features的特征

支持的特征:

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

提取mfcc、logfbank特征的方法

from python_speech_features import mfcc from python_speech_features import logfbank import scipy.io.wavfile as wav(rate,sig) = wav.read("file.wav") # 返回信號(hào)的采樣率以及信號(hào)數(shù)組ndarray mfcc_feat = mfcc(sig,rate) # 返回一個(gè)二維ndarray數(shù)組 fbank_feat = logfbank(sig,rate) # 返回一個(gè)二維ndarray數(shù)組print(fbank_feat[1:3,:])

python_speech_features的比較好用的地方就是自帶預(yù)加重參數(shù),只需要設(shè)定preemph的值,就可以對(duì)語(yǔ)音信號(hào)進(jìn)行預(yù)加重,增強(qiáng)高頻信號(hào)。

python_speech_features模塊提供的函數(shù)

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>>)

計(jì)算一個(gè)音頻信號(hào)的MFCC特征

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

參數(shù):

signal - 需要用來計(jì)算特征的音頻信號(hào),應(yīng)該是一個(gè)N*1的數(shù)組

samplerate - 我們用來工作的信號(hào)的采樣率

winlen - 分析窗口的長(zhǎng)度,按秒計(jì),默認(rèn)0.025s(25ms)

winstep - 連續(xù)窗口之間的步長(zhǎng),按秒計(jì),默認(rèn)0.01s(10ms)

numcep - 倒頻譜返回的數(shù)量,默認(rèn)13

nfilt - 濾波器組的濾波器數(shù)量,默認(rèn)26

nfft - FFT的大小,默認(rèn)512

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

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

preemph - 應(yīng)用預(yù)加重過濾器和預(yù)加重過濾器的系數(shù),0表示沒有過濾器,默認(rèn)0.97

ceplifter - 將升降器應(yīng)用于最終的倒譜系數(shù)。 0沒有升降機(jī)。默認(rèn)值為22。

appendEnergy - 如果是true,則將第0個(gè)倒譜系數(shù)替換為總幀能量的對(duì)數(shù)。

winfunc - 分析窗口應(yīng)用于每個(gè)框架。 默認(rèn)情況下不應(yīng)用任何窗口。 你可以在這里使用numpy窗口函數(shù) 例如: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>>)

從一個(gè)音頻信號(hào)中計(jì)算梅爾濾波器能量特征

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

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)

從一個(gè)音頻信號(hào)中計(jì)算梅爾濾波器能量特征的對(duì)數(shù)

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

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>>)

從一個(gè)音頻信號(hào)中計(jì)算子帶頻譜質(zhì)心特征

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

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)
計(jì)算頻譜質(zhì)心

>>> 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]])

藍(lán)調(diào)音樂的頻譜質(zhì)心在頻譜偏中心的位置,金屬音樂在靠后的位置

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

計(jì)算過零率

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

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

預(yù)加重的一般傳遞函數(shù)為

差分方程實(shí)現(xiàn)預(yù)加重的方程為

總結(jié)

以上是生活随笔為你收集整理的librosa能量_librosa与python_speech_features的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。