用python提取语音文件的lpcc、lpc、lsp特征
时间: 2023-12-22 09:02:39 浏览: 226
提取语音文件的特征可以使用Python中的LibROSA库。以下是提取语音文件的LPCC、LPC、LSP特征的示例代码:
```python
import librosa
import numpy as np
from scipy.signal import lfilter
# 读取语音文件
y, sr = librosa.load('sample.wav', sr=None)
# 提取LPCC特征
order = 12 # LPC阶数
n_fft = 512 # FFT窗口大小
hop_length = 160 # 帧移
win_length = 320 # 帧长
lpcc = librosa.lpc(y, order)
lpcc = librosa.feature.lpcc(y=y, sr=sr, n_fft=n_fft, hop_length=hop_length, win_length=win_length, n_mfcc=order, ref=1.0, lifter=0, normalize=False)
# 提取LPC特征
lpc = librosa.lpc(y, order)
lpc = -1 * lpc[1:]
# 提取LSP特征
m = order + 1
a = np.zeros((m, m))
a[0, 0] = 1
a[1:, 0] = -lpc
a[0, 1:] = lpc
for i in range(2, m):
a[i, i-1] = 1
a[i, i] = -lpc[i-2]
r = np.roots(a.T)
r = np.sort(np.angle(r))
lsp = r
print('LPCC:', lpcc)
print('LPC:', lpc)
print('LSP:', lsp)
```
这里使用了LibROSA库中的`lpc`函数来计算LPC系数,`lpcc`函数来计算LPCC系数,和自己实现的算法来计算LSP系数。其中,`n_fft`表示FFT窗口大小,`hop_length`表示帧移,`win_length`表示帧长,`order`表示LPC阶数。LPCC和MFCC类似,它们都是一种基于梅尔频率的特征。LSP是LPC系数在极坐标下的表示,它通常被用来作为LPC系数的一种替代表示方式,因为它具有更好的鲁棒性。
阅读全文