Swift51.com
麦子学院 头像
麦子学院  2018-04-15 23:34

使用python如何扩充音频数据?

回复:0  查看:3119  
经典的深度学习网络AlexNet 使用  数据扩充(Data Augmentation  的方式扩大数据集,取得较好的分类效果。在深度学习的图像领域中,通过平移、  翻转、加噪等方法进行数据扩充。但是,在  音频(Audio  领域中,如何进行数据扩充呢?
本文和大家分享的就是python 音频数据扩充的一些小技巧,一起来看看吧,希望对大家 学习python有所帮助。
  音频的数据扩充主要有以下四种方式:
  ·  音频剪裁( 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)  #  写入音频
   音频调音
  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)  #  写入音频
来源:网络