带有Python的音频处理(附带源码)
由于博客播放不了音频,所以音频将以视频形式展现。公众号也正在进行抽书
往下拉就是文章地址
有时,在进行编程时,我们需要进行一些音频处理。编程中最常用的音频处理任务包括–加载和保存音频文件,将音频文件拆分和追加到片段,使用不同的数据创建混合音频文件,操纵声音级别,应用一些过滤器以及生成音频调整和也许更多。
所有这些东西都可以使用Python
来实现。Python
是一种灵活的语言。它为您听说过的几乎所有任务提供了库。对于音频处理,Python
提供了Pydub
,这是一个非常简单且设计良好的模块。
安装Pydub
就像Python Pydub
中的所有其他模块一样,也可以使用简单的命令– pip install pydub
轻松安装。
音频处理:加载和播放
AudioSegment
是Pydub
中的父类。它起着可以加载,操作和保存音频文件的容器的作用。让我们用python
创建我们的第一个音频。为此,我们将需要一个测试文件,该文件可以采用任何格式,例如WAV,MP3
或任何格式。在本文中,我将下载一个音频文件,就像我们从网络上抓取数据一样:
import urllib.request
from pydub import AudioSegment
from pydub.playback import play
urllib.request.urlretrieve("音频地址", "音频名称")
loop = AudioSegment.from_wav("音频名称")
play(loop)
音频素材请看上面
基本音频处理
加载音频后,现在我们可以执行各种类型的音频处理,让我们从重复音频文件的一些必要步骤开始:
loop2 = loop * 2
length = len(loop2)
fade_time = int(length * 0.5)
faded = loop2.fade_in(fade_time).fade_out(fade_time)
音频素材请看上面
分层音频
上面我们只是简单地重复了音频,现在让我们分层并混合不同级别的音频片段:
urllib.request.urlretrieve("https://tinyurl.com/yx3k5kw5", "beat.wav")
beat = AudioSegment.from_wav("beat.wav")
mixed = beat[:length].overlay(loop2)
音频素材请看上面
音频处理:应用过滤器
现在,让我们通过应用滤镜和反转音频效果,将所有内容融合在一起,以进一步发展:
filtered = beat.low_pass_filter(3000)
loop = loop2.reverse().pan(-0.5).overlay(loop2.pan(0.5))
final = filtered.overlay(loop2 - 3, loop=True)
音频素材请看上面
现在,如果您要保存音频文件,则可以按如下所示轻松进行操作:
final.export("final.mp3", format="mp3")
合成音调
除了处理上面介绍的声音的所有步骤之外,我们还可以合成新的音调。这些音调可以是任何频率的正弦波,方波或操纵波。我们还可以执行白噪声。在下面的示例中,我将显示正弦方法,以谐波的方式为最初的15个间隔产生正弦调谐:
result = AudioSegment.silent(duration=0)
for n in range(15):
gen = Sine(200 * n)
sine = gen.to_audio_segment(duration=200).apply_gain(-3)
sine = sine.fade_in(50).fade_out(100)
result += sine
play(result)
音频素材请看上面
带有Python的音频处理(附带源码)的更多相关文章
- Python机器学习经典实例电子版和附带源码
Python机器学习经典实例电子版和附带源码 下载:https://pan.baidu.com/s/1m6ODNJk--PWHW8Vdsdjs-g 提取码:nyc0 分享更多python数据分析相关电 ...
- Log4Net 日志配置[附带源码]
前述 园子里有许多人对log4net这款开源的日志记录控件有很多介绍.在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少查阅资料的时间.利用log4net可以方便地将日志信息记录 ...
- SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转
SpringMVC关于json.xml自动转换的原理研究[附带源码分析] 原文地址:http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-c ...
- 【Hook技术】实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展
[Hook技术]实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展 公司有个监控程序涉及到进程的保护问题,需要避免用户通过任务管理器结束掉监控进程,这里使用 ...
- iOS 指南针的制作 附带源码
iOS 指南针的制作 附带源码 代码下载地址: http://vdisk.weibo.com/s/HK4yE http://pan.baidu.com/share/link?shareid=7 ...
- 【轮子狂魔】抛弃IIS,打造个性的Web Server - WebAPI/Lua/MVC(附带源码)
引言 此篇是<[轮子狂魔]抛弃IIS,向天借个HttpListener - 基础篇(附带源码)>的续篇,也可以说是提高篇,如果你对HttpListener不甚了解的话,建议先看下基础篇. ...
- 简单的c#winform象棋游戏(附带源码)
算法源自网络(网络源码连接:http://www.mycodes.net/161/6659.htm) 整体思路:用二维数组构建棋盘每一个数组元素封装为一个picturebox附带若干属性(例如:棋 ...
- SpringMVC拦截器详解[附带源码分析]
目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:h ...
- SpringMVC异常处理机制详解[附带源码分析]
目录 前言 重要接口和类介绍 HandlerExceptionResolver接口 AbstractHandlerExceptionResolver抽象类 AbstractHandlerMethodE ...
- SpringMVC视图机制详解[附带源码分析]
目录 前言 重要接口和类介绍 源码分析 编码自定义的ViewResolver 总结 参考资料 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门bl ...
随机推荐
- g/test/s/lose/won/g
包含字符串test的任意行商,用lose代替won
- 映泰主板H100系列安装win7的各种坑
自100系列主板发布以来,windows7好像就被遗弃一样,原因就在于安装win7的时候,会出现USB设备无法使用导致无法安装的问题.主要在于Win7系统没有整合USB的XHCI驱动,而100系列芯片 ...
- Spring框架之事务源码完全解析
Spring框架之事务源码完全解析 事务的定义及特性: 事务是并发控制的单元,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务将逻辑相关的一组操作绑定在一 ...
- postgresql插件安装
postgresql安装包自带插件安装: 1.编译安装插件 # root用户 # postgresql安装过程省略 # 进入解压包的contrib目录 cd postgresql-10.6/contr ...
- MongoDB查询优化--explain,慢日志
引入 与Mysql数据库一样,MongoDB也有自己的查询优化工具,explain和慢日志 explain shell命令格式 db.collection.explain().<method(. ...
- PAT练习num1-害死人补偿命的3n+1猜想
卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...
- 通过动态构建Expression Select表达式并创建动态类型来控制Property可见性
通过动态构建Expression Select表达式并创建动态类型来控制Property可见性 项目中经常遇到的一个场景,根据当前登录用户权限,仅返回权限内可见的内容.参考了很多开源框架,更多的是在V ...
- 深度学习论文翻译解析(十八):MobileNetV2: Inverted Residuals and Linear Bottlenecks
论文标题:MobileNetV2: Inverted Residuals and Linear Bottlenecks 论文作者:Mark Sandler Andrew Howard Menglong ...
- Web渗透-SQLmap
Web渗透-SQLmap 一.sqlmap简介 1.1 sqlmap 参数解析 二.sqlmap自动化注入 2.4 提权操作 示例步骤: 1.获得当前数据库 2.获得数据库表 3.获得表的字段 4.获 ...
- java校验导入的模板
/** * 验证导入模板的正确性 InputStream inputStream = file.getInputStream(); */ @SuppressWarnings("depreca ...