前言
pydub是Python中用户处理音频文件的一个库。本文主要介绍了关于Python音频处理库pydub使用的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:
安装:
1、安装pip工具:sudo apt-get install python-pip
2、安装pydub:sudo pip install pydub
3、pydub依赖于ffmpeg,所以还需要安装ffmpeg,由于Ubunbtu14.04官方源移除了ffmpeg,因此通过ppa源安装:
1
2
3
|
sudo apt-add-repository ppa:mc3man /trusty-media sudo apt-get update sudo apt-get install ffmpeg |
使用:
AudioSegment方法能够将一个音频文件打开成AudioSegment示例,并使用各种方法处理音频,使用前先调用from pydub import AudioSegment
打开音频:
1
2
3
4
|
sound1 = AudioSegment.from_file( "/path/to/sound.wav" , format = "wav" ) / / 默认mp3格式 sound2 = AudioSegment.from_file( "/path/to/another_sound.mp3" , format = "mp3" )等价于sound1 = AudioSegment.from_mp3( "/path/to/sound.mp3" ) |
音量处理:
1
2
3
4
5
6
7
8
9
10
11
|
louder = sound1 + 6 / / sound1 声音提高 6dB quieter = sound1 - 6 / / sound1 声音降低 6dB combined = sound1 + sound2 / / sound1 和sound2叠加 duration_in_milliseconds = len (sound1) / / 获取sound的时长 beginning = sound1[: 5000 ] / / 获取sound1的前 5 秒音频数据 end = sound1[ - 5000 :] / / 获取sound1的后 5 秒音频数据 |
注意:
1、对于多个音频的计算,需要多个音频之间的通道数、帧数、采样率以及比特数都一样,否则低质量的音频会向高质量的转换,单声道会向立体声转换,低帧数向高帧数转换。
2、AudioSegment原生就支持wav和raw,如果其他文件需要安装ffmpeg。raw还需要,sample_width,frame_rate,channels三个参数。
生成文件:
export()
方法可以使一个AudioSegment对象转化成一个文件。
1
2
3
4
5
6
7
8
|
sound = AudioSegment.from_file( "/path/to/sound.wav" , format = "wav" ) file_handle = sound.export( "/path/to/output.mp3" , format = "mp3" ) / / 简单输出 file_handle = sound.export( "/path/to/output.mp3" , format = "mp3" , bitrate = "192k" , tags = { "album" : "The Bends" , "artist" : "Radiohead" }) / / 复杂输出 |
AudioSegment.empty():
AudioSegment.empty()
用于生成一个长度为0的AudioSegment对象,一般用于多个音频的合并。
1
2
3
4
5
6
7
8
|
sounds = [ AudioSegment.from_wav( "sound1.wav" ), AudioSegment.from_wav( "sound2.wav" ), AudioSegment.from_wav( "sound3.wav" ), ] playlist = AudioSegment.empty() for sound in sounds: playlist + = sound |
AudioSegment.silent():
1
|
ten_second_silence = AudioSegment.silent(duration = 10000 ) / / 产生一个持续时间为 10s 的无声AudioSegment对象 |
获取参数:
此外,还能通过AudioSegment获取音频的参数,同时还能修改原始参数。
具体详见:https://github.com/jiaaro/pydub/blob/master/API.markdown
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:http://blog.csdn.net/gent__chen/article/details/52931728