使用Python第三方库pydub按一定bitrate,frame_rate压缩音频文件

安装pydub

pip install pydub

注: pydub支持wav格式音频读取,本文处理的是MP3格式,所以需要安装ffmpeg.

Linux下安装ffmpeg

sudo apt install ffmpeg

读取、压缩MP3格式文件

from pydub import AudioSegment
# 音频文件路径
path = "file's path"
# 读取音频文件,设置采样率<default=44100>
song = AudioSegment.from_mp3(path).set_frame_rate(22050)
# 按32k的bitrate导出文件到指定路径,这里是直接覆盖原文件
song.export(path, format='mp3', bitrate='32k')

扩展

"""
pydub提供了对mp3, wav, ogg, flv等格式的音频文件的支持,
对应有from_mp3, from_wav, from_ogg, from_flv等Classmethod;
支持设置sample_width, frame_rate, channels,
值得注意的是在AudioSegment初始化时,不可设置单个特征值,否则会报以下错误:
pydub.exceptions.MissingAudioParameter: Either all audio parameters or no parameter must be specified
对应的提供了设置单个特征值的方法:set_frame_rate, set_sample_width, set_channels;
"""
# pydub的源码相对简单, 下面是此次运用的两个方法的源代码:def export(self, out_f=None, format='mp3', codec=None, bitrate=None,parameters=None, tags=None, id3v2_version='4', cover=None):"""Export an AudioSegment to a file with given optionsout_f (string):Path to destination audio file. Also accepts os.PathLike objects onpython >= 3.6format (string)Format for destination audio file.('mp3', 'wav', 'raw', 'ogg' or other ffmpeg/avconv supported files)codec (string)Codec used to encoding for the destination.bitrate (string)Bitrate used when encoding destination file. (64, 92, 128, 256, 312k...)Each codec accepts different bitrate arguments so take a look at theffmpeg documentation for details (bitrate usually shown as -b, -ba or-a:b).parameters (string)Aditional ffmpeg/avconv parameterstags (dict)Set metadata information to destination filesusually used as tags. ({title='Song Title', artist='Song Artist'})id3v2_version (string)Set ID3v2 version for tags. (default: '4')cover (file)Set cover for audio file from image file. (png or jpg)"""passdef set_frame_rate(self, frame_rate):  # default: frame_rate=44100if frame_rate == self.frame_rate:return selfif self._data:converted, _ = audioop.ratecv(self._data, self.sample_width,self.channels, self.frame_rate,frame_rate, None)else:converted = self._datareturn self._spawn(data=converted,overrides={'frame_rate': frame_rate})

pydub对音频文件的处理是是磁盘IO操作,耗时较长,在web应用中建议做异步后台处理,笔者使用的是django框架做后台开发, django提供有django-rq和django_celery支持异步操作,关于celery和django_rq的使用在笔者其他文章中有所介绍。

【Python】pydub按一定比特率、采样率压缩音频文件相关推荐

  1. python 将一段文字转为mp3音频文件

    最近想实现利用python将文本文件转换成mp3--听书,pyttsx3是一款优秀的文字转语音的模块,它生成的音频文件也比较具有个性化. #encoding=utf8''' python将一段文字转为 ...

  2. Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件

    Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...

  3. 压缩音频文件怎么弄?这篇文章告诉你怎么实现

    嘿,小伙伴们,如果你需要将音频文件上传到云端或通过电子邮件发送给他人,但是文件过大而无法上传或发送,那么压缩音频文件就能够为你解决这个问题.通过使用压缩音频文件的软件,你可以将音频文件有效地压缩,并减 ...

  4. linux 音频文件长度,Linux下压缩音频文件

    安装工具 sudo apt-get install lame 具体用法可以查看帮助  lame --help 通过更改音频文件的帧数 可以让文件变小  但是音质也会随之下降 现在比较多的mp3文件是1 ...

  5. python 单词发音-在python中的单词上拆分语音音频文件

    更简单的方法是使用pydub模块.最近的silent utilities增加了所有的重任,如设置沉默threahold,设置沉默长度.与提到的其他方法相比,显着简化了代码. 这是一个演示实现,灵感来自 ...

  6. 音频比特率_将音频文件转换为更高的比特率有意义吗?

    音频比特率 When converting audio files, it would make sense to avoid converting into a higher bitrate, as ...

  7. 没事脱脱发,Python爬取“手机铃声”网站的音频文件

    一.目标网站:https://www.13400.com/ 二.获取最近铃声模块的音频内容 三.涉及库:request.bs4.xpinyin.time 开干!!!! 1.检查网页元素 我发现歌曲名字 ...

  8. 20行Python代码爬取2W多条音频文件素材【内附源码+详细解析】新媒体创作必备

    大家好,我是辣条. 今天的内容稍显简单,不过对于新媒体创作的朋友们还是很有帮助的,你能用上的话记得给辣条三连! 爬取目标 网站:站长素材 工具使用 开发工具:pycharm 开发环境:python3. ...

  9. php能转换音频采样率吗,音频采样频率怎么设置-音频采样率转换软件下载

    如果你是一个音乐爱好者,又或者是你很喜欢听音乐,那么你应该会注意到歌曲的采样率,很多的歌曲的采样率是不一样的,不过大部分来说都是48000Hz的.那么音频采样率是什么?音频采样率跟音质有什么关系吗?又 ...

  10. 搞定音频文件过大的问题,这些音频压缩软件帮你轻松压缩

    当我们想在手机或电脑上存储大量的音乐文件的时候,是否会遇见存储空间不足的情况.其实这个时候,我们可以用音频压缩软件把音乐文件的大小减小到合适的范围,以便在设备上存储更多的音乐.那你们知道可以压缩音频文 ...

最新文章

  1. SVN Access Manager 0.5.5.14 发布 - SVN 管理工具
  2. Android开源框架——依赖注入ButterKnife
  3. boost::regex模块captures相关的测试程序
  4. 在Python中使用MongoDB
  5. Vue is not defined;at App onLaunch function;at api getSystemInfo success callback function
  6. Spring课程 Spring入门篇 总结
  7. c语言实现的optics算法,基于深度学习的光学系统设计方法
  8. matlab语言主要功能,2014年秋季学期《MATLAB语言及应用》课程试题-2
  9. 【软件工程】基准配置(基线配置)
  10. coreldraw快速撤回_CorelDRAW快捷键:常用快捷键(1)
  11. 管理员权限自动注册Dll文件
  12. 软件测试(四)——正交实验法、功能图法、其他测试用例设计方法等
  13. linux命令键盘快捷键,如何将Linux命令设置成键盘快捷键
  14. linux 运维安全,运维安全有哪些分类呢?linux学习线路图
  15. 2021年关于Delphi/Object Pascal编程语言的现状和历史
  16. 京东自营售前客服考试
  17. 软实力:权力,从硬实力到软实力
  18. 九龙证券|半导体又涨嗨了!券商再喊牛市起点!
  19. 如何让自己打计算机打字快起来,电脑快速打字的技巧
  20. .Net iTextSharp 给Pdf添加图片水印

热门文章

  1. 双网卡实现内外网同时上网
  2. 基于matlab的模糊PID控制仿真
  3. Snagit 10 截图 虚拟打印机 【下载|注册码】
  4. 智能电气阀门定位器原理
  5. android根据轮播图片颜色改变背景颜色
  6. matlab 平滑曲线连接_基于S型曲线的连续多段曲线插补平滑过渡的规划算法(Matlab)...
  7. linux 强制结束任务管理器,结束拒绝访问的进程 cmd下结束进程 强行结束进程
  8. java调用cmd命令
  9. 供应链业务架构设计概览
  10. 三国志战略版交易助手攻略