use*_*621 3 python audio scipy
默认情况下,scipy.io.wavfile.read每秒采样44100个样本。是否可以更改此值,使其每秒捕获较少的样本量?
的第一个返回值scipy.io.wavfile.read是采样率,它取自音频文件的标题。如果要更改采样率,则必须进行一些采样率转换。
这里有一些基本代码可以通过插值来更改采样率。请注意,这仅在原始采样率低于新采样率的情况下才是无害的。反之,如果音频文件包含的频率高于奈奎斯特频率,则可以引入混叠。如果是这种情况,则应在插值之前应用过滤器。
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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2370 次 |
| 最近记录: |