使用 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值