python将音频进行变速的操作方法


Posted in Python onApril 08, 2020

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

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

首先需要安装插件

pip install ffmpeg

然后再执行:

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

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

运行结果

python将音频进行变速的操作方法

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

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

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

import os
import sys
from ffmpeg import audio
audio_path = "D:\\audio\\" 
finish_path = "D:\\2x_audio\\"
 
def run():
 audio_file = os.listdir(audio_path)
 for i, audio1 in enumerate(audio_file):
  print(audio_path+audio1)
  audio.a_speed(audio_path+audio1, "2", finish_path+"2x"+audio1)
run()

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

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

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

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

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

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

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

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

import os
import sys
#from ffmpeg import audio
 
audio_path = "D:\\audio\\" 
finish_path = "D:\\2x_audio\\"
 
def run():
 audio_file = os.listdir(audio_path)
 for i, audio1 in enumerate(audio_file):
  #print(audio_path+audio1)
  cmd="ffmpeg -n -i "+audio_path+audio1+" -filter:a atempo=2 "+finish_path+"2x"+audio1
  #print(cmd)
  os.system(cmd)
  #audio.a_speed(audio_path+audio1, "2", finish_path+"2x"+audio1)
run()

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

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

总结

到此这篇关于python将音频进行变速的操作方法的文章就介绍到这了,更多相关python 音频变速内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python字符串逐字符或逐词反转方法
May 21 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
Python实现XML文件解析的示例代码
Feb 05 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
在python中实现对list求和及求积
Nov 14 Python
Python常见数字运算操作实例小结
Mar 22 Python
python实现爬取百度图片的方法示例
Jul 06 Python
PyCharm中代码字体大小调整方法
Jul 29 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
pytorch中的model=model.to(device)使用说明
May 24 Python
一文搞懂Python Sklearn库使用
Aug 23 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 #Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 #Python
在python中修改.properties文件的操作
Apr 08 #Python
python3 配置logging日志类的操作
Apr 08 #Python
python3 logging日志封装实例
Apr 08 #Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 #Python
Python 输出详细的异常信息(traceback)方式
Apr 08 #Python
You might like
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
React快速入门教程
2017/01/17 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
Vue父组件调用子组件事件方法
2018/02/23 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
vue实现短信验证码输入框
2020/04/17 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
Python实现处理管道的方法
2015/06/04 Python
json跨域调用python的方法详解
2017/01/11 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
数学专业推荐信范文
2013/11/21 职场文书
剪彩仪式主持词
2014/03/19 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
求职自我评价怎么写
2015/03/09 职场文书
开业典礼致辞
2015/07/29 职场文书
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL