音频信号增强

除了模型结构和超参数,数据是值得重视的。
因为垃圾进,垃圾出。
数据量不够是常见的问题,使用数据增强的方式产生合成新数据,从某种程度上可以提高模型的泛化能力。
这里介绍一些基本的音频信号增强方法。

语音增强方法

添加噪声(noise injection),时间平移(shifting time), 改变音高和速度(changing pitch and speed).
使用Numpy添加噪声和时间平移;
使用librosa修改pitch和speed;

noise injection

import numpy as np
def manipulate(data, noise_factor):
    noise = np.random.randn(len(data))
    augmented_data = data + noise_factor * noise
    # Cast back to same data type
    augmented_data = augmented_data.astype(type(data[0]))
    return augmented_data

Shifting Time

向左右平移数秒,右平移在左边填0,左平移在右边填0.

import numpy as np
def manipulate(data, sampling_rate, shift_max, shift_direction):
    shift = np.random.randint(sampling_rate * shift_max)
    if shift_direction == 'right':
        shift = -shift
    elif self.shift_direction == 'both':
        direction = np.random.randint(0, 2)
        if direction == 1:
            shift = -shift
    augmented_data = np.roll(data, shift)
    # Set to silence for heading/ tailing
    if shift > 0:
        augmented_data[:shift] = 0
    else:
        augmented_data[shift:] = 0
    return augmented_data

Changing Pitch

随机修改音高

import librosa
def manipulate(data, sampling_rate, pitch_factor):
    return librosa.effects.pitch_shift(data, sampling_rate, pitch_factor)

Changing Speed

修改速度

import librosa
def manipulate(data, speed_factor):
    return librosa.effects.time_stretch(data, speed_factor)
不要随便合成数据,要在了解信号的基础上选择合适的方式去产生。

译自:Data Augmentation for Audio
作者: Edward Ma
原文链接:https://medium.com/@makcedward/data-augmentation-for-audio-76912b01fdf6

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章