音频伸缩


AudioExtend 译为 音频伸缩.大多数情况下我在学习语速比较快的外语歌曲时常常会使用 Adobe Auditio 来调整音频的速度,这个应用特别消耗资源而且打开也特别慢.事实上我打开它就是为了更……

背景


AudioExtend 译为 音频伸缩.大多数情况下我在学习语速比较快的外语歌曲时常常会使用 Adobe Auditio 来调整音频的速度,这个应用特别消耗资源而且打开也特别慢.事实上我打开它就是为了更改速度,为此我要自己写一个独立的工具解决这个问题.

介绍


可以改变音频的速度,减缓或增快.

效果图

为什么重复造轮子?


我想看看自己能不能通过参考工具的 API 和百度以及英文文档和别人的代码写出一个工具.不使用其他工具一方面是因为其他工具夹带了很多不干净的东西.

环境


你需要配置 FFmpeg 的环境变量.理论上来说你可以把 FFmpeg 放在当前程序运行的目录下,应该也是可以的

  1. 下载 FFmpeg
  2. 添加 ffmpeg\bin 到系统环境变量中的 Path

设计思路


  • Python 掉用下 FFmpeg 的方法传个参数进去,估计一行就能搞定.
  • 掉命令行来执行.

遇到的问题


  • FFmpeg 的 API 文档都是英文,翻译后的简直没法看
  • 百度后的一些 Python 代码在我实际操作会有因为乱码的问题,即时在我删除了所有非法字符后依然报错

事实上通过我阅读 FFmpeg.audio 下的方法,发现也是在调用命令行来执行的.

# 简化代码
def a_speed(input_file, speed, out_file):
  cmd = "ffmpeg -y -i %s -filter_complex \"atempo=tempo=%s\" %s" % (input_file, speed, out_file)

Python 搞了半天没解决问题,我想着要不用易语言试试.关键是我着急用,不能浪费太多的时间在这上面,只要把工具写出来就行了.

解决方法


用易语言调用命令行来实现,虽然我不清楚更改速度的命令具体是什么.但是可以根据 cmd = "ffmpeg -y -i %s -filter_complex \"atempo=tempo=%s\" %s" % (input_file, speed, out_file) 代码中的拼接字符串得出具体指令.

运行 (“ffmpeg -y -i ” + 输入文件名 + “ -filter_complex ” + #引号 + “atempo=tempo=” + 倍速 + #引号 + “ ” + 输出文件名, 真, 1)

测试转换音频效果


经过测试发现使用 Adobe Audition 转换的音频文件体积会很大,大了接近 30 倍.

源文件: 4.41 mb
Adobe Audition: 118 mb
AudioExtend: 11.7 mb

看来还是自己动手写的工具比较好.

事实上 AudioExtend 封装了 FFmpeg 的命令行参数,是为了更加方便的改变文件.


文章作者: StringOD
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 StringOD !
  目录