Python音频处理
待看:
Python音频处理
Python pydub音频处理
1. 常用的工具和库
概述
wave
是Python的标准模块,Python 处理音频数据等常见模块有两个:
librosa
:擅长音频信号处理,内部用 numpy 存储数据,读写文件依赖 soundfile 模块(不支持mp3)pydub
:底层基于ffmpeg
读写文件,代码简洁,支持切割、格式转换、音量、ID3等常用功能,门槛低。(ffmpeg
是一个极其强大的开源视频处理软件)
使用建议:日常用 pydub 足够应付,更强大的信号处理则需要 librosa,但有一定数学门槛,需要了解信号处理原理,掌握傅立叶变换等基本算法。
wave
wave
是Python的标准模块,Python 音频处理:wave 记录了它的一些简单介绍和源码
pydub
Pydub lets you do stuff to audio in a way that isn’t stupid
pydub
可以让我们处理音频文件,但是Pydub只支持原生的wav格式
的文件处理。所以如果你想处理其他格式的音频,或者说你想处理媒体文件中的音频那你需要在你本地安装FFmpeg
支持。
其官方文档中记录了很多简单实用的代码样例:API Documentation
pydub
中的 AudioSegment() 是不可改变对象,其中包含了丰富的操作对象,比如音量的增减、音频的合并、读取音频时长、截取音频等操作。注意处理多个音频时,首先确保它们有相同的 通道数、帧率、采样率、比特深等。
下面简单记录了基本所有的用法:
- AudioSegment(…).from_file(),打开音频并返回一个AudioSegment 实例
- AudioSegment(…).export(),将 AudioSegment 写入一个文件。
- AudioSegment.empty(),创建一个空的(时长为0)的 AudioSegment。
- AudioSegment.silent(),创建一个静音音频片段
- AudioSegment.from_mono_audiosegments(),融合多个单通道的音频,注意每个单通道音频需要有相同的长度,直到帧计时开始。
- AudioSegment(…).dBFS,返回以dBFS (db relative to the maximum possible loudness)为度量的声音响度。
- AudioSegment(…).rms,返回以 rms 为度量的响度
- AudioSegment(…).channels
- AudioSegment(…).sample_width
- AudioSegment(…).frame_rate
- AudioSegment(…).frame_width
- AudioSegment(…).max,返回音频中的最大振幅
- AudioSegment(…).max_dBFS,以 dBFS 返回音频中的最大振幅
- AudioSegment(…).duration_seconds,返回音频时长,单位是 ms(milliseconds)
- AudioSegment(…).raw_data,返回原始音频
- AudioSegment(…).frame_count(),返回帧数
- AudioSegment(…).append(),合并音频,比如
combined = sound1.append(sound2)
,默认crossfade=100ms - AudioSegment(…).overla