我必须使用音频文件训练神经网络。
我有一个音频数据集,其中包含带有人名和命令的文件夹。假设,一个文件夹是"Marvin",人的名字变成"Mavin",另一个文件夹是"说话",所以命令是"说话"。现在我想要音频文件,其中音频说,"马文说话"。
现在我想的方法是加入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')
我的方法是否正确,或者有更好的方法可以做到这一点?
欢迎任何建议/想法。
您的问题涉及许多问题">我的方法是否正确还是有更好的方法来做到这一点?最突出的是:
- 读取两个不同的音频文件并将它们连接起来 将音频文件
- 混合到一个音频文件
- 使用音频作为神经网络(NN(的输入(即应使用哪种形式的输入数据(
- 用于音频相关任务的 NN 类型
- NN 将接受培训以执行的实际损失/任务
- 如何验证方法是否更好
我认为你是在暗示你问的是 1 和 2,所以我将把我的答案集中在 1 和 2 上。
只有在以下情况下,您展示的内容才可能是一个最小的工作示例:
marvin_audio.wav
和speak_audio.wav
具有相同的采样频率+
意味着串联,这对于音频处理来说确实非常不直观。
如果以上两种情况都不正确,那么您将拥有失真的音频。
如果两者都成立,那么您将首先获得第一个文件的音频,然后是第二个文件的音频。
您可以做的事情很少,也不需要专家的现场知识。这些将是:
- 从音频文件中,从开始和结束修剪静音(硅烯 = 最大值低于阈值的连续样本,例如 -60 dB FS(
- 规范化音频文件,以便两者都具有 |1| 作为最大值
- 在静音修剪音频文件的开头和结尾(分别(添加淡入和淡出
- 手动创建一个静音音频文件(即以全零作为样本值的音频文件(,其持续时间由您定义,例如在音频文件的大多数组合/串联下听起来几乎正常。
为了更好地控制你正在做的事情,我建议使用一些更专用的音频处理库,比如librosa。