音频应用   音频插件联盟,正版插件,欢迎大家选择!

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 16731|回复: 0

[资讯] 机器学习利用Python进行音频数据增强

[复制链接]

476

积分

2

听众

128

音贝

音频应用

Rank: 1

积分
476
发表于 2018-5-29 | |阅读模式
音频应用公众号资讯免费发布推广
机器学习利用Python进行音频数据增强



数据增强通常用于机器学习和深度学习,以便在训练产生大量数据后获得良好的性能。

在这篇文章中,我将展示如何用一些音频增强技术使用输入音频文件生成新的音频文件。首先,我们首先导入依赖库,这些库在以下先决条件部分给出。为了在给定的音频文件上应用任何技术,我们需要阅读它。要读取输入音频文件,有一个用于音乐和音频分析的“ LibROSA ” python包。通过使用librosa,我们将读取输入音频文件并对其应用一些效果。然后,我们将保存新的音频文件作为输出,并显示输出声音的波形。

依赖库
NumPy

Matplotlib

LibROSA

读音频文件
在我们导入依赖库后,我们可以开始创建一个新的“AudioAugmentation”类。这个类的第一个方法是将一个参数作为“file_path”的“read_audio_file”方法。在librosa库的帮助下,给定“wav”文件可以加载如下。

import librosa

import numpy as np

import matplotlib.pyplot as plt

class AudioAugmentation:

def read_audio_file(self, file_path):

input_length = 16000

data = librosa.core.load(file_path)[0]

if len(data) > input_length:

data = data[:input_length]

else:

data = np.pad(data, (0, max(0, input_length - len(data))), "constant")

return data

对音频文件的影响
现在,我们编写了三种方法来对给定的音频文件应用新的效果。这些方法是“add_noise”、“shift”和“stretch”。在“add_noise”方法中,我们添加了由numpy库生成的随机噪声。在“shift”方法中,我们再次使用numpy库来转换给定的音频数据。最后,“stretch”方法应用于librosa效应的time_stretch。

接下来,您可以看到这三种方法的python实现。

def add_noise(self, data):

noise = np.random.randn(len(data))

data_noise = data + 0.005 * noise

return data_noise

def shift(self, data):

return np.roll(data, 1600)

def stretch(self, data, rate=1):

input_length = 16000

data = librosa.effects.time_stretch(data, rate)

if len(data) > input_length:

data = data[:input_length]

else:

data = np.pad(data, (0, max(0, input_length - len(data))), "constant")

return data

保存生成的音频文件
为了应用这些效果,我们可以生成新的音频文件。要将它们存储到下一个研究中使用的文件夹中,我们可以使用librosa的“write_wav”功能,如下所示。

def write_audio_file(self, file, data, sample_rate=16000):

librosa.output.write_wav(file, data, sample_rate)

现在,我们可以从“AudioAugmentation”类创建一个新实例并调用它的任何方法。(在读取输入声音之后,我们在其上施加了噪音。)

aa = AudioAugmentation()

# Read cat sound

data = aa.read_audio_file("data/cat.wav")

aa.plot_time_series(data)

# Adding noise to sound

data_noise = aa.add_noise(data)

绘制时间序列
要查看生成声音的波形,我们可以使用matplotlib库编写以下方法。

def plot_time_series(self, data):

fig = plt.figure(figsize=(14, 8))

plt.title('Raw wave ')

plt.ylabel('Amplitude')

plt.plot(np.linspace(0, 1, len(data)), data)

plt.show()

最后,我们可以调用这个" plot_time_series "方法来显示生成的声音文件的波形。在下面,对于每一个声音(生的猫的声音,和音效),都有一些带有原始波和振幅的波图。
t015cc0e399d4f13f64.webp.jpg


猫声波
t0102453c1b0d630572.webp.jpg
随机噪声的猫声波
t01eaf2228de2e0dd87.webp.jpg


Shifting the Cat Sound Wave
t011e5e325db6f64dd5.webp.jpg


t01011fea81d12e0e82.webp.jpg


Stretching the Cat Sound Wave
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频招标|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表