用Python画基音的基音频率图
时间: 2024-02-27 10:56:42 浏览: 34
要画出语音信号的基音频率图,可以使用Python中的Matplotlib库。以下是一个简单的示例代码:
```python
import numpy as np
import scipy.signal as signal
import matplotlib.pyplot as plt
# 读取语音信号
speech_signal, sample_rate = read_wave_file('speech.wav')
# 计算自相关函数
auto_corr = signal.correlate(speech_signal, speech_signal)
# 取自相关函数的一半作为基音周期范围
period_range = len(speech_signal) // 2
# 找到最大峰值
max_peak = np.argmax(auto_corr[period_range:]) + period_range
# 计算基音周期和基音频率
fundamental_period = max_peak
fundamental_freq = sample_rate / max_peak
# 计算每一帧的基音频率
frame_size = 256
hop_size = 128
num_frames = (len(speech_signal) - frame_size) // hop_size + 1
fundamental_freqs = np.zeros(num_frames)
for i in range(num_frames):
start = i * hop_size
end = start + frame_size
frame_signal = speech_signal[start:end]
auto_corr = signal.correlate(frame_signal, frame_signal)
max_peak = np.argmax(auto_corr[period_range:]) + period_range
fundamental_freqs[i] = sample_rate / max_peak
# 画出基音频率图
plt.plot(fundamental_freqs)
plt.xlabel('Frame')
plt.ylabel('Fundamental Frequency (Hz)')
plt.show()
```
这段代码假设你已经有一个名为 `read_wave_file` 的函数可以读取语音文件,并返回语音信号和采样率。代码的核心是计算语音信号的自相关函数,找到自相关函数的最大峰值,并将其转换为基音周期和基音频率。然后,代码使用短时傅里叶变换将语音信号分帧,并计算每一帧的基音频率。最后,代码使用Matplotlib库将基音频率图绘制出来。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)