我是信號處理的新手,并試圖計算不同 .wav 文件的共振峰頻率特征。為了計算共振峰頻率,我需要三個參數值:線性預測系數 (LPC)根角度我正在嘗試在 python 中使用 librosa.core.lpc 計算線性預測系數( LPC )。它需要兩個參數:librosa.core.lpc(y, order)我有 Y 但我不知道如何計算順序,我有很多 .wav 文件,我必須設置順序才能從所有文件中提取特征。如何確定所有wav文件計算LPC的順序?接下來的兩件事根和角度可以像這樣輕松計算: rts = numpy.roots(A) rts = [r for r in rts if numpy.imag(r) >= 0]angz = numpy.arctan2(numpy.imag(rts), numpy.real(rts))# Get frequencies.Fs = spf.getframerate()frqs = sorted(angz * (Fs / (2 * math.pi)))先感謝您!
1 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
應該使用的 LPC 順序背后沒有精確的科學,但有兩條經驗法則:
一個期望找到的共振峰數量的兩倍,再加上兩個。穩態元音共振峰分析中的系統誤差中提供的解釋:每個共振峰對應于一個阻尼正弦曲線,可以由一對具有正確頻率和阻尼的根捕獲(其中一個根是其他)。兩個額外的系數“以防萬一”以吸收信號中的任何剩余能量
以 kHz 為單位的采樣頻率。如果
Fs=16000
ie16kHz
,將 order 設置為 16。
第一種方法似乎更流行一些,例如在Mathworks 頁面上進行了描述。
優化注意事項
與問題無關,但我忍不住對代碼提出了兩個小調整,以使其更加麻木:
import numpy as np
import librosa
A = librosa.core.lpc(y, 12)
rts = np.roots(A)
rts = rts[np.imag(rts) >= 0]
angz = np.arctan2(np.imag(rts), np.real(rts))
frqs = angz * fs / (2 * np.pi)
frqs.sort()
添加回答
舉報
0/150
提交
取消