Python 音频数据扩充的技巧

枫铃3年前 (2021-09-30)Python244

经典的深度学习网络AlexNet使用数据扩充(Data Augmentation)的方式扩大数据集,取得较好的分类效果。在深度学习的图像领域中,通过平移、 翻转、加噪等方法进行数据扩充。但是,在音频(Audio)领域中,如何进行数据扩充呢?

Audio

音频的数据扩充主要有以下四种方式:

  • 音频剪裁(Clip)
  • 音频旋转(Roll)
  • 音频调音(Tune)
  • 音频加噪(Noise)

音频处理基于librosa音频库;矩阵操作基于scipy和numpy科学计算库。

以下是Python的实现方式:

音频剪裁

import librosa
from scipy.io import wavfile

y, sr = librosa.load("../data/love_illusion.mp3")  # 读取音频
print y.shape, sr
wavfile.write("../data/love_illusion_20s.mp3", sr, y[20 * sr:40 * sr])  # 写入音频

音频旋转

import librosa
import numpy as np
from scipy.io import wavfile

y, sr = librosa.load("../data/raw/love_illusion_20s.mp3")  # 读取音频
y = np.roll(y, sr*10)
print y.shape, sr
wavfile.write("../data/raw/xxx_roll.mp3", sr, y)  # 写入音频

音频调音

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import cv2
import librosa
from scipy.io import wavfile

y, sr = librosa.load("../data/raw/love_illusion_20s.mp3")  # 读取音频
ly = len(y)
y_tune = cv2.resize(y, (1, int(len(y) * 1.2))).squeeze()
lc = len(y_tune) - ly
y_tune = y_tune[int(lc / 2):int(lc / 2) + ly]
print y.shape, sr
wavfile.write("../data/raw/xxx_tune.mp3", sr, y)  # 写入音频

音频加噪,注意:在添加随机噪声时,保留0值,否则刺耳难忍!

import librosa
from scipy.io import wavfile
import numpy as np

y, sr = librosa.load("../data/raw/love_illusion_20s.mp3")  # 读取音频
wn = np.random.randn(len(y))
y = np.where(y != 0.0, y + 0.02 * wn, 0.0)  # 噪声不要添加到0上!
print y.shape, sr
wavfile.write("../data/raw/love_illusion_20s_w.mp3", sr, y)  # 写入音频

相关文章

Python的常用包有哪些,分别有什么作用?

Python的常用包有哪些,分别有什么作用?

1、Python的常用包有哪些,分别有什么作用? Python常用包 1、Numpy(数值运算库)...

python爬虫Scrapy框架之增量式爬虫

一 增量式爬虫 什么时候使用增量式爬虫: 增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基...

Python模块的四种形式

Python模块的四种形式

一、什么是模块? 模块是一系列功能的集合体,而函数是某一个功能的集合体,因此模块可以看成是一堆函数的集合体。一个p...

python中统计计数的几种方法

以下实例展示了 coun...

python多进程编程常用到的方法

python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程。pyth...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。