帮我写通过海明窗处理并求出倒谱的代码
时间: 2024-02-25 13:56:44 浏览: 22
好的,以下是通过海明窗处理并求出倒谱的代码示例:
```python
import numpy as np
from scipy.fftpack import fft
from scipy.signal import hamming
# 假设音频信号为 x,采样率为 fs
# 求出每一帧的长度 N 和帧移 L
frame_length = int(0.025 * fs) # 一帧的长度为 25ms
frame_shift = int(0.010 * fs) # 帧移为 10ms
# 构建海明窗
hamming_window = hamming(frame_length)
# 对每一帧进行处理
frames = []
for i in range(0, len(x) - frame_length, frame_shift):
# 取出一帧并进行海明窗加窗
frame = x[i:i+frame_length] * hamming_window
# 对帧信号进行FFT
spectrum = np.log(np.abs(fft(frame)))
# 求出倒谱
cepstrum = np.real(fft(spectrum))
# 加入结果列表
frames.append(cepstrum)
# 转换成二维数组并返回
return np.array(frames)
```
需要注意的是,这里的倒谱是基于对数谱的,因此需要先对帧信号进行FFT后再取对数。此外,为了避免出现频谱包络的影响,这里使用了实数FFT求倒谱。