Python中pydub使用详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gent__chen/article/details/52931728

pydub是python中用户处理音频文件的一个库。
安装:

  1、安装pip工具:sudo apt-get install python-pip

  2、安装pydub:sudo pip install pydub

  3、pydub依赖于ffmpeg,所以还需要安装ffmpeg,由于Ubunbtu14.04官方源移除了ffmpeg,因此通过ppa源安装:

  sudo apt-add-repository ppa:mc3man/trusty-media
  sudo apt-get update
  sudo apt-get install ffmpeg


使用:

AudioSegment方法能够将一个音频文件打开成AudioSegment示例,并使用各种方法处理音频,使用前先调用from pydub import AudioSegment

打开音频:

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")


音量处理:

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、sound = AudioSegment.from_file("/path/to/sound.wav", format="wav") 

2、file_handle = sound.export("/path/to/output.mp3", format="mp3")     //简单输出

3、file_handle = sound.export("/path/to/output.mp3", 
                           format="mp3",
                           bitrate="192k",
                           tags={"album": "The Bends", "artist": "Radiohead"})         //复杂输出


AudioSegment.empty():

AudioSegment.empty()用于生成一个长度为0的AudioSegment对象,一般用于多个音频的合并。

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():

ten_second_silence = AudioSegment.silent(duration=10000)  //产生一个持续时间为10s的无声AudioSegment对象


获取参数:

此外,还能通过AudioSegment获取音频的参数,同时还能修改原始参数。

具体详见:https://github.com/jiaaro/pydub/blob/master/API.markdown









   

展开阅读全文

没有更多推荐了,返回首页