音頻數據擴充

  在機器學習任務中,存在數據集類別失衡的情況,那麼解決類別失衡的方法是1.上採樣即:擴充樣本較少的類數據直到跟樣本多的類差不多爲止;或者用下采樣即:在樣本多的類中隨機剔除部分數據。
  針對上採樣的話,在圖像領域可以有的操作是:平移、旋轉、加噪等,在語音領域可以有的操作是裁剪、旋轉、調音、加噪。
  1. 裁剪(clip):即截取音頻段

# 將原始視頻裁剪20s
import librosa
from scipy.io import wavfile
y, sr = librosa.load('test.mp3')
wavfile.write('clip_20s.mp3', sr, y[20*sr:40*sr])

  2. 旋轉(roll):即平移

# 將音頻向右移動10s,最後10s將挪到最前面
import librosa
import numpy as np
from scipy.io import wavfile
y, sr = librosa.load('clip_20s.mp3')
y = np.roll(y, sr*10)
wavfile.write('roll.mp3', sr, y)

  3. 調音(tune)

import librosa
import cv2
from scipy.io import wavfile
y, sr = librosa.load('clip_20s.mp3')
ly = len(y)
y_tune = cv2.resize(y, (1, int(ly*1.2))).squeeze()
lc = len(y_tune)-ly
y_tune = y_tune[int(lc/2):int(lc/2)+ly]
wavfile.write('tune.mp3', sr, y)

  4. 加噪(noise):爲音頻加入白噪聲,呲呲響的那種哦!

import librosa
import numpy as np
from scipy.io import wavfile
y, sr = librosa.load('clip_20s.mp3')
wn = np.random.randn(len(y))
y = np.where(y != 0.0, y + 0.02 * wn, 0.0) # 噪聲不要添加到0上!np.where(condition,x,y)condition爲true取x,否者取y
wavfile.write("add_noise.mp3", sr, y) # 寫入音頻
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章