2019-09-24

机器学习利用Python进行音频数据增强

数据增强通常用于机器学习和深度学习,以便在训练产生大量数据后获得良好的性能。

在这篇文章中,我将展示如何用一些音频增强技术使用输入音频文件生成新的音频文件。首先,我们首先导入依赖库,这些库在以下先决条件部分给出。为了在给定的音频文件上应用任何技术,我们需要阅读它。要读取输入音频文件,有一个用于音乐和音频分析的" LibROSA " python包。通过使用librosa,我们将读取输入音频文件并对其应用一些效果。然后,我们将保存新的音频文件作为输出,并显示输出声音的波形。

依赖库

NumPy

Matplotlib

LibROSA

在我们导入依赖库后,我们可以开始创建一个新的"AudioAugmentation"类。这个类的第一个方法是将一个参数作为"file_path"的"read_audio_file"方法。在librosa库的帮助下,给定"wav"文件可以加载如下。

import librosa

import numpy as np

import matplotlib.pyplot as plt

class AudioAugmentation:

def read_audio_file(self, file_path):

input_length = 16000

data = librosa.core.load(file_path)[0]

if len(data) > input_length:

data = data[:input_length]

else:

data = np.pad(data, (0, max(0, input_length - len(data))), "constant")

return data

对音频文件的影响

现在,我们编写了三种方法来对给定的音频文件应用新的效果。这些方法是"add_noise"、"shift"和"stretch"。在"add_noise"方法中,我们添加了由numpy库生成的随机噪声。在"shift"方法中,我们再次使用numpy库来转换给定的音频数据。最后,"stretch"方法应用于librosa效应的time_stretch。

接下来,您可以看到这三种方法的python实现。

def add_noise(self, data):

noise = np.random.randn(len(data))

data_noise = data + 0.005 * noise

return data_noise

def shift(self, data):

return np.roll(data, 1600)

def stretch(self, data, rate=1):

input_length = 16000

data = librosa.effects.time_stretch(data, rate)

if len(data) > input_length:

data = data[:input_length]

else:

data = np.pad(data, (0, max(0, input_length - len(data))), "constant")

return data

保存生成的音频文件

为了应用这些效果,我们可以生成新的音频文件。要将它们存储到下一个研究中使用的文件夹中,我们可以使用librosa的"write_wav"功能,如下所示。

def write_audio_file(self, file, data, sample_rate=16000):

librosa.output.write_wav(file, data, sample_rate)

现在,我们可以从"AudioAugmentation"类创建一个新实例并调用它的任何方法。(在读取输入声音之后,我们在其上施加了噪音。)

aa = AudioAugmentation()

# Read cat sound

data = aa.read_audio_file("data/cat.wav")

aa.plot_time_series(data)

# Adding noise to sound

data_noise = aa.add_noise(data)

绘制时间序列

要查看生成声音的波形,我们可以使用matplotlib库编写以下方法。

def plot_time_series(self, data):

fig = plt.figure(figsize=(14, 8))

plt.title('Raw wave ')

plt.ylabel('Amplitude')

plt.plot(np.linspace(0, 1, len(data)), data)

plt.show()

最后,我们可以调用这个" plot_time_series "方法来显示生成的声音文件的波形。在下面,对于每一个声音(生的猫的声音,和音效),都有一些带有原始波和振幅的波图。

###找了好久的文章,谢谢楼主,学习了啊

python学习音频-机器学习利用Python进行音频数据增强相关推荐

  1. Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件

    Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...

  2. 数据结构学习笔记:利用Python列表实现栈结构

    数据结构学习笔记:利用Python列表实现栈结构 利用Python列表实现栈结构.有两种实现方式: 1.将列表的末尾(rear)作为栈顶(top) 2.将列表的前端(front)作为栈顶(top) 一 ...

  3. Python学习笔记:利用timeit计算函数调用耗时

    Python学习笔记:利用timeit计算函数调用耗时 一.timeit模块简介 Timer对象包含两个参数:第一个参数是你想要计时的Python语句,第二个参数运行一次来建立测试. 默认情况time ...

  4. Python学习笔记:利用控制器跳转不同页面

    Python学习笔记:利用控制器跳转不同页面 程序需要用到数据库student里的学生表t_student 1.创建python项目demo02 2.创建页面index.html 3.创建控制器con ...

  5. 小猪的Python学习之旅 —— 17.Python数据分析:我主良缘交友了解下

    小猪的Python学习之旅 -- 17.Python数据分析:我主良缘交友了解下 标签:Python 一句话概括本文: 爬取我主良缘交友所有的妹子信息,利用Jupyter Notebook对五个方面: ...

  6. 用python做数据分析pdf_利用python进行数据分析pdf

    利用python进行数据分析pdf微盘下载!<利用python进行数据分析>利用Python实现数据密集型应用由浅入深帮助读者解决数据分析问题~适合刚刚接触Python的分析人员以及刚刚接 ...

  7. 小猪的Python学习之旅 —— 19.Python微信自动好友验证,自动回复,发送群聊链接

    小猪的Python学习之旅 -- 19.Python微信自动好友验证,自动回复,发送群聊链接 标签:Python 一句话概括本文: 上一节利用itchat这个库,做了小宇宙早报的监测与转发, 本节新增 ...

  8. Python学习细节总结以及python与c语言区别比较(4)

    本文python学习基于廖雪峰老师的学习网站:字符串和编码 - 廖雪峰的官方网站 (liaoxuefeng.com),其内容相对完整,适合初学者学习.由于楼主之前有c语言的学习经验,在此本文仅对其中与 ...

  9. 小猪的Python学习之旅 —— 18.Python微信转发小宇宙早报

    小猪的Python学习之旅 -- 18.Python微信转发小宇宙早报 标签:Python 一句话概括本文: 利用itchat,监控特定信息,转发到特定微信群- 引言: 上一篇 小猪的Python学习 ...

最新文章

  1. HALCON选择标定板文件
  2. 利用循环神经网络生成唐诗_11种主要神经网络结构图解
  3. const深度总结(effective C++)
  4. 矩阵迹的性质_矩阵(含逆)的迹、行列式关于矩阵自身的导数计算与Maple验证...
  5. (二十):response 对象 (JSP学习第六天)
  6. promise的状态以及api介绍_前端 api 请求缓存
  7. emui消息推送服务器,别再抱怨,这次或许真的轮到你了,EMUI9.1推送进度再次更新...
  8. as3:sprite作为容器使用时,最好不要指定width,height
  9. Mybatis批量删除
  10. mysql 用户划表_mysql用户表
  11. 用Python实现ax²+by的图灵机【形式语言与自动机】
  12. 搭建私有云=我使用的是开源的可道云,服务器是win service 2019+公网ip+动态域名解析
  13. 爬虫-Scrapy(七)抓取招聘信息技能关键词,生成词云图
  14. 用聚宽数据排一排商誉雷(附结果)
  15. Android开发拍照图片旋转
  16. 史上很全的注册表修改大全
  17. STM32硬件I2C与软件模拟I2C超详解
  18. lisp 角平分线_证明冯奥贝尔定理的3种方法
  19. 一部电影,一种人生 (会议分享表述用)
  20. android证书制作

热门文章

  1. (4)打鸡儿教你Vue.js
  2. synchronous_commit 参数的再次说明
  3. 【转】Hive学习路线图
  4. sping中注解事务的应用
  5. svn的merge使用例子
  6. Scrum仪式之Sprint计划会议
  7. ASP.NET - 截取固定长度字符串显示在页面,多余部分显示为省略号
  8. InstallShield 2011中数字签名失败的问题
  9. python开发安卓程序-如何使用python开发android应用
  10. python编程题-python编程题库