gpt4 book ai didi

python - 如何使用 SciPy 以不同的采样率读取 .wav 文件?

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:32 24 4
gpt4 key购买 nike

默认情况下,scipy.io.wavfile.read 每秒采样 44100 个样本。是否可以更改此值,让它每秒抓取更少量的样本?

最佳答案

scipy.io.wavfile.read的第一个返回值是采样率,它取自音频文件的标题。如果你想改变采样率,你必须做一些samplerate rate conversion .

这里是一些通过插值改变采样率的基本代码。请注意,如果原始采样率低于新采样率,这只是无害的。相反,如果音频文件包含高于 Nyquist frequency 的频率,则可能会引入混叠。 .如果是这种情况,您应该在插值之前应用过滤器。

import numpy as np
from scipy.io import wavfile
from scipy import interpolate

NEW_SAMPLERATE = 48000

old_samplerate, old_audio = wavfile.read("test.wav")

if old_samplerate != NEW_SAMPLERATE:
duration = old_audio.shape[0] / old_samplerate

time_old = np.linspace(0, duration, old_audio.shape[0])
time_new = np.linspace(0, duration, int(old_audio.shape[0] * NEW_SAMPLERATE / old_samplerate))

interpolator = interpolate.interp1d(time_old, old_audio.T)
new_audio = interpolator(time_new).T

wavfile.write("out.wav", NEW_SAMPLERATE, np.round(new_audio).astype(old_audio.dtype))

编辑:您可以查看 Python 包 resampy ,实现了高效的采样率转换。

关于python - 如何使用 SciPy 以不同的采样率读取 .wav 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33682490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com