Python的pydub库的一些操作:mp3转wav,获取音频时长,获取原始pcm

2022-10-27 14:47:53

需求驱动开发,首先说需求:将MP3文件转成16k采样率,16bits采样深度,单声道的wav,本来想试试Python自带的wave库的,没成功,结果还是靠pydub搞定了。

先生成MP3对象,在分别设置参数,最后导出wav文件

#生成MP3对象
sound1 = AudioSegment.from_file("/home/wangjinyu/work1/work_practice/intent_repeat.mp3", format="mp3")

修改对象参数
sound2=sound1.set_frame_rate(16000)
sound2=sound2.set_channels(1)
sound2=sound2.set_sample_width(2)

#导出wav文件
sound2.export('intent_repeat.wav',format='wav',)

结束后file 产看结果,成功

本来想获取MP3的原始pcm数据,在export出wav的,结果不行,必须按照MP3的原始参数填写,参数一变生成的的wav文件时间异常,听不了

from pydub import AudioSegment

sound = AudioSegment.from_mp3('一生所爱.mp3')
#获取原始pcm数据,本来想用read直接读二进制文件,获取读wav文件取到44字节的头文件,发现不行,

#data=sound.raw_data
data=sound._data


sound_wav = AudioSegment(

    #指定原始pcm文件
    # raw audio data (bytes)
    data=data,

    #指定采样深度,可选值1,2,3,4
    # 2 byte (16 bit) samples
    sample_width=2,

    #指定采样频率
    # 44.1 kHz frame rate
    # 16kHz frame rate
    frame_rate=16000,
    
    #指定声道数量
    # stereo or mono
    channels=1
)
#导出wav文件
sound_wav.export('一生所爱.wav',format='wav')

顺便说下获取音频文件时长的方法,网上的中文资料还不如这个呢

亲测wav和MP3都可以

#生成实例
sound = AudioSegment.from_file('一生所爱.mp3')

#获取文件时长
sound_time=sound.duration_seconds
  • 作者:wangjinyu124419
  • 原文链接:https://blog.csdn.net/u011519550/article/details/88875359
    更新时间:2022-10-27 14:47:53