判断声音“混”的原因
使用工具来分析音频的波形和频谱,从而判断声音“混”的原因
#定义音频路径并重新执行分析
audio_path = "/mnt/data/cb2ddbdb-f728-4c7a-b5c2-a39276d08735.wav"# 读取音频文件
with wave.open(audio_path, 'rb') as wf:n_channels = wf.getnchannels()sample_width = wf.getsampwidth()framerate = wf.getframerate()n_frames = wf.getnframes()audio_data = wf.readframes(n_frames)# 转为numpy数组
audio_np = np.frombuffer(audio_data, dtype=np.int16)
if n_channels == 2:audio_np = audio_np[::2] # 只取一个声道# 生成波形图
time_axis = np.linspace(0, len(audio_np) / framerate, num=len(audio_np))# 生成频谱图
f, t, Sxx = spectrogram(audio_np, fs=framerate)# 可视化
fig, axs = plt.subplots(2, 1, figsize=(12, 6))axs[0].plot(time_axis, audio_np)
axs[0].set_title("Waveform")
axs[0].set_xlabel("Time (s)")
axs[0].set_ylabel("Amplitude")im = axs[1].pcolormesh(t, f, 10 * np.log10(Sxx), shading='gouraud')
axs[1].set_title("Spectrogram")
axs[1].set_xlabel("Time (s)")
axs[1].set_ylabel("Frequency (Hz)")
fig.colorbar(im, ax=axs[1], format="%+2.0f dB")plt.tight_layout()
plt.show()
✅ 波形图:
幅度整体较稳定,说明没有明显的爆音或削波问题。
但波形看起来比较压缩,峰值和谷值变化不够大,可能缺少高频细节或被“压缩得太狠”。
🎼 频谱图(Spectrogram):
高频(4000Hz以上)能量比较弱,声音亮度不够,容易感觉“混”或者“闷”。
中低频占比偏重,若没有削除低频噪音或背景声,会导致声音“糊”。
没有明显的清晰共振峰或谐波轨迹,说明音色信息没有很好地保留,模型输出可能存在频率模糊或失真。