wave librosa pyaudio
[TOC] wave wave 模块提供了一个处理 WAV 声音格式的便利接口。它不支持压缩/解压,但是支持单声道/立体声。 install pip install wave example # 读取音频文件数据 def read_wav(audio_name): with wave.open(audio_name, 'rb') as rf: frames = [] frame = rf.readframes(3200) while frame: frames.append(frame) frame = rf.readframes(3200) return frames # 保存音频文件数据 def write_wav(save_file, frames, CHANNELS=1, SIMPLE_SIZE=2, RATE=16000): if save_file is not None: wf = wave.open(save_file, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(SIMPLE_SIZE) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close() wave可以读取和保存音频文件,但是不能做时频处理、特征提取等问题,如果你读取rate=16000的文件,保存为rate=8000的文件,音频的时长增加了一倍,播放速度降低了一倍。 参考:https://docs.python.org/zh-cn/3/library/wave.html#module-wave Librosa Librosa 是一个用于音频、音乐分析、处理的python工具包,一些常见的时频处理、特征提取、绘制声音图形等功能应有尽有,功能十分强大。 install pip install librosa # conda install conda install -c conda-forge librosa example # 改变频谱并保存 def change_sample_rate(read_file, save_file, orig_sr=48000, target_sr=8000): y, sr = librosa.load(read_file, sr=orig_sr) y_16k = librosa.resample(y, sr, target_sr) librosa.output.write_wav(save_file, y_16k, target_sr) 参考: http://librosa.github.io/librosa/tutorial.html ...