python如何将音频进行变速

亦凉 2023-07-23 06:54 67阅读 0赞

有的时候需要手里的音频文件变速听,或可能变慢或可能变快

这里使用的python进行操作,我的目标是将文件转成2倍速

首先需要安装插件

  1. pip install ffmpeg

然后再执行:

  1. from ffmpeg import audio
  2. audio.a_speed("D:\\1505.mp3", "2", "D:\\1505_2x.mp3")

如果执行不出错,会返回一个true

运行结果

20200407142708777.png

我可以看到这里的音频速度提升以后音频小了

这里我是将目标路径下的MP3音频转成了2倍速的,设立不局限于MP3。其他格式的音频文件也是可以进行处理的。

当然这里还可以进行批量操作

  1. import os
  2. import sys
  3. from ffmpeg import audio
  4. audio_path = "D:\\audio\\"
  5. finish_path = "D:\\2x_audio\\"
  6. def run():
  7. audio_file = os.listdir(audio_path)
  8. for i, audio1 in enumerate(audio_file):
  9. print(audio_path+audio1)
  10. audio.a_speed(audio_path+audio1, "2", finish_path+"2x"+audio1)
  11. run()

实际上这个的源码干了一件这个事情

  1. import subprocess
  2. # 调整音频播放速率
  3. def a_speed(input_file, speed, out_file):
  4. try:
  5. cmd = "ffmpeg -y -i %s -filter_complex \"atempo=tempo=%s\" %s" % (input_file, speed, out_file)
  6. res = subprocess.call(cmd, shell=True)
  7. if res != 0:
  8. return False
  9. return True
  10. except Exception:
  11. return False

实际可以看到,使用的f调用的原生的fmpeg,也就是基于fmpeg开发的

不过好像我发现,如果音频文件太大会失败,返回false

我试过原生的fmpeg是可以进行的,只是会转换很慢

  1. D:\>ffmpeg -n -i 222.mp3 -filter:a "atempo=2" output.mp3

现在不知道是不是因为限制了大小(现在猜测可能是显示了大或者限制了响应时间大小,在源码里没有发现什么诡异的地方),音频不算大的是没问题的,我试的单个文件是100多兆的文件,会失败,但是10m是没有问题的。

实在不行就直接用原生的好了

  1. import os
  2. import sys
  3. #from ffmpeg import audio
  4. audio_path = "D:\\audio\\"
  5. finish_path = "D:\\2x_audio\\"
  6. def run():
  7. audio_file = os.listdir(audio_path)
  8. for i, audio1 in enumerate(audio_file):
  9. #print(audio_path+audio1)
  10. cmd="ffmpeg -n -i "+audio_path+audio1+" -filter:a atempo=2 "+finish_path+"2x"+audio1
  11. #print(cmd)
  12. os.system(cmd)
  13. #audio.a_speed(audio_path+audio1, "2", finish_path+"2x"+audio1)
  14. run()

后来发现,最好音频的文件名不要有汉字

上面另两个代码应该都是可以的

发表评论

表情:
评论列表 (有 0 条评论,67人围观)

还没有评论,来说两句吧...

相关阅读

    相关 如何模拟音频

    要模拟音频,你可以使用计算机的声卡或音频接口,通过软件或硬件来生成音频信号。具体方法可以根据你使用的编程语言和开发环境的不同而有所差别。 例如,在 Python 中,你可以使