选择合适的阈值采用librosa中两种不同的去除静音的算法,将record.wav文件去除静音。将原始信号和两个去除静音的信号三个波形图在一个figure中绘制
时间: 2024-02-25 13:53:12 浏览: 159
go-waveform:从 wav 音频文件绘制波形图像
好,这是一个音频信号处理的问题。下面是一些Python代码实现这个问题:
```python
import librosa.display as ld
import matplotlib.pyplot as plt
import soundfile as sf
# 读取录音文件
data, sr = sf.read('record.wav')
# 设置阈值
threshold = 0.05
# 去除静音方法1:利用能量阈值
no_silence1 = librosa.effects.trim(data, top_db=threshold)[0]
# 去除静音方法2:利用过零率阈值
frame_length = 2048
hop_length = 512
energy = librosa.feature.rms(data, frame_length=frame_length, hop_length=hop_length)
zcr = librosa.feature.zero_crossing_rate(data, frame_length=frame_length, hop_length=hop_length)
threshold_frames = (energy > threshold) | (zcr > threshold)
no_silence2 = data[threshold_frames[0]]
# 绘制图像
plt.figure(figsize=(15, 10))
plt.subplot(3, 1, 1)
ld.waveshow(data, sr=sr)
plt.title('Original Signal')
plt.subplot(3, 1, 2)
ld.waveshow(no_silence1, sr=sr)
plt.title('Signal without Silence (Method 1)')
plt.subplot(3, 1, 3)
ld.waveshow(no_silence2, sr=sr)
plt.title('Signal without Silence (Method 2)')
plt.tight_layout()
# 保存图片
plt.savefig('no_silence.png')
```
执行上述代码后,将会生成一个名为 `no_silence.png` 的图片,其中展示了原始信号和两个去除静音的信号的波形图。第一个去除静音的方法是基于能量阈值,第二个方法是基于过零率阈值。
阅读全文