如何组合两个音频并在机器学习中对其进行训练

时间:2019-12-16 07:14:23

标签: python machine-learning audio pydub

我必须使用音频文件来训练神经网络。

我有一个音频数据集,其中包含带有人名和命令的文件夹。假设一个文件夹为“ Marvin”,此人的名字为“ Mavin”,另一个文件夹为“ speak”,因此命令为“ speak”。现在,我想获取音频文件,其中音频说“ Marvin说”。

现在,我认为的方法是将音频文件加入pydub库并训练神经网络。

from pydub import AudioSegment
sound_marvin = AudioSegment.from_file('marvin_audio.wav')
sound_speak = AudioSegment.from_file('speak_audio.wav')
final = sound_marvin + sound_speak
final.export('final.wav', format='wav')

我的方法正确还是有更好的方法呢?

欢迎任何建议/想法。

1 个答案:

答案 0 :(得分:0)

您的问题“ 我的方法正确还是有更好的方法来解决此问题?”。最突出的是:

  1. 读取两个不同的音频文件并将其连接起来
  2. 将音频文件混合为一个音频文件
  3. 将音频用作神经网络(NN)的输入(即应使用哪种形式的输入数据)
  4. 用于音频相关任务的NN类型
  5. 将训练NN进行的实际损失/任务
  6. 您如何验证这种方法更好

我认为您是在暗示您要询问1和2,所以我将重点放在1和2上。


仅在以下情况下,您显示的内容可能是一个最小的工作示例:

  1. marvin_audio.wavspeak_audio.wav具有相同的采样频率
  2. +意味着级联,这对于音频处理来说确实是超级不直观的。

如果以上两个都不成立,那么您的音频将会失真。

如果两个都正确,那么您将首先拥有第一个文件的音频,然后拥有第二个文件的音频。

您可以做的事情很少,不需要专业的现场知识。这些将是:

  1. 在音频文件中,从头到尾修剪静音(silene =连续采样,最大值低于阈值,例如-60 dB FS
  2. 规范化音频文件,使它们都具有| 1 |。作为最大值
  3. 在经过静音调整的音频文件的开头和结尾分别添加淡入和淡出
  4. 手动创建一个由您定义的持续时间的无声音频文件(即,全零作为样本值的音频文件),例如,在大多数音频文件组合/串联中听起来几乎是正常的。

要更好地控制自己的工作,我建议使用一些更专用的音频处理库,例如librosa