根据给出的浊音信号,分别画出浊音信号的时域波形、加矩形窗和加汉明窗后计算短时自相关归一化后的结果。语音的抽样频率为8kHz,窗长为320,并写出实验步骤
时间: 2024-03-09 19:47:34 浏览: 72
好的,下面是实验步骤:
1. 读取浊音信号,并绘制其时域波形。若信号数据格式为wav,可以使用Python中的librosa库进行读取和绘制。代码示例:
```python
import librosa
import librosa.display
import matplotlib.pyplot as plt
# 读取浊音信号
signal, sr = librosa.load('voice.wav', sr=8000)
# 绘制时域波形
plt.figure(figsize=(8,4))
librosa.display.waveplot(signal, sr=sr)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Waveform of Voiced Sound')
plt.show()
```
2. 对时域波形进行加矩形窗和加汉明窗的预处理。可以使用Python中的numpy库进行实现。代码示例:
```python
import numpy as np
# 加矩形窗
rectangular_window = np.ones(320)
signal_rectangular = signal[:320] * rectangular_window
# 加汉明窗
hamming_window = np.hamming(320)
signal_hamming = signal[:320] * hamming_window
```
3. 对预处理后的信号计算短时自相关归一化后的结果。可以使用Python中的numpy库进行实现。代码示例:
```python
# 计算短时自相关函数
acf_rectangular = np.correlate(signal_rectangular, signal_rectangular, mode='full')
acf_hamming = np.correlate(signal_hamming, signal_hamming, mode='full')
# 取出中间的一段数据
acf_rectangular = acf_rectangular[len(acf_rectangular)//2: len(acf_rectangular)//2+320]
acf_hamming = acf_hamming[len(acf_hamming)//2: len(acf_hamming)//2+320]
# 归一化
acf_rectangular /= np.max(acf_rectangular)
acf_hamming /= np.max(acf_hamming)
```
4. 绘制结果图像。可以使用Python中的matplotlib库进行实现。代码示例:
```python
# 绘制结果图像
plt.figure(figsize=(12,4))
plt.subplot(131)
plt.plot(signal[:320])
plt.title('Waveform of Voiced Sound')
plt.subplot(132)
plt.plot(signal_rectangular)
plt.title('Rectangular Window')
plt.subplot(133)
plt.plot(acf_rectangular)
plt.title('Normalized Short-Time Autocorrelation')
plt.show()
```
```python
# 绘制结果图像
plt.figure(figsize=(12,4))
plt.subplot(131)
plt.plot(signal[:320])
plt.title('Waveform of Voiced Sound')
plt.subplot(132)
plt.plot(signal_hamming)
plt.title('Hamming Window')
plt.subplot(133)
plt.plot(acf_hamming)
plt.title('Normalized Short-Time Autocorrelation')
plt.show()
```
这样就可以得到浊音信号的时域波形、加矩形窗和加汉明窗后计算短时自相关归一化后的结果了。
阅读全文