如何无需保存为wav文件降低ndarray的采样率
无需保存文件的音频重采样方法
当然有不用存文件的简便方法,直接在内存里处理ndarray就行,给你两个常用的方案:
使用 librosa 直接重采样
librosa本身就支持对内存中的ndarray直接做重采样,完全不需要读写文件。示例代码如下:import librosa import numpy as np # 假设audio是你从麦克风获取的采样率48000的ndarray resampled_audio = librosa.resample(audio, orig_sr=48000, target_sr=16000)这个方法内置了针对音频优化的抗混叠滤波器,重采样后的音质比较有保障,是处理音频重采样的首选方式。
使用 scipy.signal.resample
如果不想引入librosa依赖,也可以用scipy的信号处理工具。需要先根据采样率比例计算目标采样点数量,再执行重采样:from scipy import signal import numpy as np # 计算目标长度:原长度 × 目标采样率/原采样率 new_length = int(len(audio) * 16000 / 48000) resampled_audio = signal.resample(audio, new_length)这个方法基于傅里叶变换实现,适合对音质要求不高或者整数倍采样率转换的场景,不过处理音频的效果不如librosa专业。
内容的提问来源于stack exchange,提问作者user3668129
相关产品推荐
相关产品推荐

