Python 音頻數據擴充的技巧


經典的深度學習網絡AlexNet使用數據擴充(Data Augmentation)的方式擴大數據集,取得較好的分類效果。在深度學習的圖像領域中,通過平移、 翻轉、加噪等方法進行數據擴充。但是,在音頻(Audio)領域中,如何進行數據擴充呢?

歡迎加入我的QQ群`923414804`與我一起學習,群里有我學習過程中整理的大量學習資料。加群即可免費獲取

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)  # 寫入音頻

音頻調音

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)  # 寫入音頻

OK, that's all! Enjoy it!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM