使用Python剪辑 拼接音频文件

近日有同学让我帮他剪辑某一段音频,笔者就搜罗了下网上一些常用的剪辑音视频软件。各类杂七杂八的软件挺多的,在纠结于选择哪一个时,忽然想起”为嘛不用Python神器试试呢?“

有了想法,那就实践呗!这一搜索,还真有相应的库是可以切割音频的。

  • 方法1
from scipy.io import wavfile
import numpy as np

使用scipy库中的方法wavfile

  • 方法2
from pydub import AudioSegment

主要使用pydub库中的方法AudioSegment

经过比较,发现方法1操作简单,但是只对.wav格式有效。方法2 略微复杂,但是功能强大,支持多种文件格式,如,我们常见的mp3, wav,MP4等。学习成本也不算高, 因此,本文主要针对方法2 进行说明。方法1 在文末给出相应参考文档。

安装相关库及工具

  • 安装pudub
    pydub,用来处理音频,比如说MP3啊、wav之类的东西是很方便的。这个库的安装和其他常见的库类似:
    pip install pydub

  • 安装ffmeg

这个是一个命令行工具,可以用于一些音频格式的转换,比如mp3wav啊之类的,然后就可以处理其他类型的多媒体文件了。
可以去ffmeg官网下载,解压配置环境变量即可。
windows用户下载压缩包 ffmeg.
操作步骤很简单,这里给出一个参考教程
安装完之后,打开命令行测试;

音频剪辑

直接从源码入手:

'''
@Time    : 2020/2/12 13:55
@FileName: cutVoice.py
@Author  : Solarzhou
@Email   : t-zhou@foxmail.com
'''
from pydub import AudioSegmentfile_name = r"../data/source.mp3"
sound = AudioSegment.from_mp3(file_name)start_time = "0:00"
stop_time = "1:29"
print("time:", start_time, "~", stop_time)start_time = (int(start_time.split(':')[0]) * 60 + int(start_time.split(':')[1])) * 1000
stop_time = (int(stop_time.split(':')[0]) * 60 + int(stop_time.split(':')[1])) * 1000print("ms:", start_time, "~", stop_time)word = sound[start_time:stop_time]
# 保存路径
save_name = r"../data/" + "sound1" + file_name[-4:]
print(save_name)word.export(save_name, format="mp3", tags={'artist': 'AppLeU0', 'album': save_name[:-4]})

这里是先读取了mp3文件,使用AudioSegment.from_mp3函数,如果是其他的一些特殊格式,可以使用AudioSegment.from_file("sound.mp4", format="mp4")

剪切时间是按ms 毫秒来的,所以时间格式的转换就要到毫秒级的。sound[start_time:stop_time]使用了python里的list分割来选择时间的长短。最后export函数输出,指定保存为mp3格式的。

音频拼接

'''
@Time    : 2020/2/12 14:48
@FileName: joinVoice.py
@Author  : Solarzhou
@Email   : t-zhou@foxmail.com
'''
from pydub import AudioSegmentdef joinVoice():file1_name = r"../data/sound1.mp3"file2_name = r"../data/sound2.mp3"# 加载需要拼接的两个文件sound1 = AudioSegment.from_mp3(file1_name)sound2 = AudioSegment.from_mp3(file2_name)# 取得两个文件的声音分贝db1 = sound1.dBFSdb2 = sound2.dBFSdbplus = db1 - db2# 声音大小if dbplus < 0:sound1 += abs(dbplus)else:sound2 += abs(dbplus)# 拼接两个音频文件finSound = sound1 + sound2save_name = r"../data/" + "finSound" + file1_name[-4:]print("save_path:", save_name)finSound.export(save_name, format="mp3", tags={'artist': 'AppLeU0', 'album': save_name[:-4]})return True
if __name__ == '__main__':joinVoice()

到此,我们想要的音频已经剪辑完成。

剪辑效果图


我将所有的源码放在了公众号上,后台回复音频剪辑获取。

从一名不羁的码农开始

参考文档1
参考文档2
方法1参考文档

使用Python剪辑 拼接音频文件相关推荐

  1. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作

    [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...

  2. 音乐剪辑php能写吗,我想将一段录音中部分剪出来, 如何剪辑(截取)音频文件

    如果想把一段录音截取后保留自己想要的部分该怎么做? 如何剪辑(截取)音频文件?也可以引申用来做自己的个性铃声,电脑开关机音乐.现在编辑软件很多,这里给大家分享一个音频剪辑(截取)软件,眼见为实,下面就 ...

  3. Python 将MP3音频文件转换成MIDI乐谱文件

    Python 将MP3音频文件转换成MIDI乐谱文件 spleeter 1.系统环境 我的Python环境 安装spleeter pip install spleeter 查看spleeter是否安装 ...

  4. 如何利用蜜蜂剪辑切割音频文件

    对于新手而言,想在短时间内学习处理音频素材,除了老司机的帮忙之外,还需要一款好软件,小编推荐使用蜜蜂剪辑,颇受大众欢迎.本文详细介绍了使用蜜蜂剪辑切割音乐文件的操作方法,请参考. 如何利用蜜蜂剪辑切割 ...

  5. 使用python绘制wav 音频文件频谱图

    1.wav 文件需要是Windows PCM 格式(未压缩),请参考 2.python 库的安装: pip install pyaudio(可能会用到) pip install matplotlib( ...

  6. php切割音频文件,我想将一段录音中部分剪出来, 如何剪辑(截取)音频文件

    如果想把一段录音截取后保留自己想要的部分该怎么做? 如何剪辑(截取)音频文件?也可以引申用来做自己的个性铃声,电脑开关机音乐.现在编辑软件很多,这里给大家分享一个音频剪辑(截取)软件,眼见为实,下面就 ...

  7. Python播放MP3音频文件

    Python播放MP3音频文件(转载) 按推荐顺序排列 ①使用playsound库 from playsound import playsoundplaysound('xx.mp3') ②使用pyga ...

  8. 使用Python合并mp3音频文件的最简单方法

    想把多个单独的英语单词MP3朗读音频文件合并在一起,开始找的方法一是下载专门的音频编辑合成软件,但是觉得太麻烦.二是使用免费的在线mp3音频合成服务,这种网站免费,使用也很简单.但是需要把文件一个个上 ...

  9. Python获取mp3音频文件时长方法汇总

    '''pymediainfo: pip3 install pymediainfo 版本:5.1.0不支持网络音频 ''' class pymediainfoTest():@classmethoddef ...

  10. python 读取wav 音频文件的两种方式

    python 中,常用的有两种可以读取wav音频格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfi ...

最新文章

  1. python自学什么书比较好-有什么好的自学 Python 的书籍推荐?
  2. 从入门到熟悉 HTTPS 的 9 个问题
  3. 算法练习day9——190327(“之” 字形打印矩阵、在行列都排好序的矩阵中找数、打印两个有序链表的公共部分、判断一个链表是否为回文结构)
  4. ajax异步验证效果展示,AJAX(二)-实现验证码异步验证功能(示例代码)
  5. 比_thread高级的threading模块,对比释放锁例子
  6. oracle中distinct的正确应用
  7. Android开发之使用Handler刷新UI控件
  8. 网络干货,无论是运维还是开发都要知道的网络知识系列之(八)
  9. python导入dat数据_收好Python代码,导入项目数据不费力
  10. UG应用标准库遇到 当前搜索选项查文件失败,部件已卸载
  11. CSDN新手机号绑定不成功,提示已存在账号,CSDN换绑手机号的相关问题
  12. 2017第十四届国际真空展览会会刊(参展商名录)
  13. axios配置多个请求地址(打包后可通过配置文件修改)
  14. 【MCS-51系列单片机汇编语言】学习笔记(在更)
  15. CSDN版主考核方案
  16. Linux下安装各种常用软件
  17. 《深度学习的艺术:知乎采铜自选集》读书笔记
  18. java中用于定义小数的关键字_Java 中用于定义小数的关键字有两个:( ) 和 ( )。_学小易找答案...
  19. 计算机怎么弄64位,64位系统怎么装?安装64位系统教程
  20. Python+Vue计算机毕业设计报刊征订管理系统uu609(源码+程序+LW+部署)

热门文章

  1. HTML 转义字符表
  2. 如何对QQ好友的IP地址进行精准定位
  3. finereport 格式化金额函数_帆软报表常用函数总结
  4. java调用百度api完成人脸识别
  5. SQL SELECT语句的基本用法
  6. 老板子华硕A7N8X-X
  7. eclipse 反编译插件 图文
  8. VC6.0用file-open后,出现“MSDEV.EXE-应用程序错误 遇到问题需要关闭“
  9. 电源大师课笔记 2.4
  10. VisualStudio开发工具中的C#主流控件属性及事件汇总(菜鸟必备)