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

需求驱动开发,首先说需求:将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

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值