gpt4 book ai didi

python - 如何预处理音频数据以输入神经网络

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:22 29 4
gpt4 key购买 nike

我目前正在开发一个关键字识别系统,该系统使用深度神经网络识别 0 到 9 之间的数字。我有一个人说数字的数据集(即 TIDIGITS 数据集,在 Texas Instruments, Inc 收集),但是该数据未准备好输入神经网络,因为并非所有音频数据都具有相同的音频长度,另外一些文件包含几个按顺序说出的数字,例如“一二三”。

谁能告诉我如何将这些 wav 文件转换为仅包含一位数字声音的 1 秒 wav 文件?有没有办法自动执行此操作?单独准备音频文件会很费时间。

提前致谢!

最佳答案

这取决于您拥有的其他数据集,但这是一种方法:只需从音频中盲目地剪下一秒钟的片段,然后判断每个音频片段文件是否实际上是一个语音数字。

为每个输入音频文件定义一个一秒钟的窗口,您将其取出并保存到它自己的文件中,然后将该窗口进一步滑入音频文件并再次将下一个片段取出到它自己的文件中。

因为我们想要一秒钟的剪辑,而且我们不知道我们的数字在源输入文件中的位置,一旦保存了第一个窗口片段,只需滑动 100 毫秒,然后取出下一个窗口。因此,对于每个输入音频文件,我们将创建一系列重叠片段,每个片段的起点与前一个片段仅相隔 100 毫秒。要轻松执行此操作,请使用命令行工具 ffmpeg

https://ffmpeg.org/ffmpeg.html

https://ffmpeg.org/ffmpeg-utils.html#time-duration-syntax

input_audio=audio_from_your_dataset.wav

output_audio=output/aaa

ffmpeg -i $input_audio -ss 0 -t 1 -acodec copy ${output_audio}.0.00.wav
ffmpeg -i $input_audio -ss 0.20 -t 1 -acodec copy ${output_audio}.0.20.wav
ffmpeg -i $input_audio -ss 0.40 -t 1 -acodec copy ${output_audio}.0.40.wav
ffmpeg -i $input_audio -ss 0.60 -t 1 -acodec copy ${output_audio}.0.60.wav
ffmpeg -i $input_audio -ss 0.80 -t 1 -acodec copy ${output_audio}.0.80.wav
ffmpeg -i $input_audio -ss 1.00 -t 1 -acodec copy ${output_audio}.1.00.wav
ffmpeg -i $input_audio -ss 1.20 -t 1 -acodec copy ${output_audio}.1.20.wav

在上面的 parm -ss 中以秒为单位定义片段的起始点...所以 0.60 将从 600 毫秒开始进入文件 ...parm -t 以秒为单位定义窗口的长度

所以它的输出将是

./output/aaa.0.00.wav
./output/aaa.0.20.wav
./output/aaa.0.40.wav
./output/aaa.0.60.wav
./output/aaa.0.80.wav
./output/aaa.1.00.wav
./output/aaa.1.20.wav

命令行上面的问题...它不仅限于wav,其他编解码器也可以...现在你有几个从相同输入音频中提取的一秒钟片段音频文件...然后我会包装上面的过程使用一个改变窗口宽度的元进程......没有任何东西说 1 秒所以对于从 0.1 秒到 1 秒不等的窗口执行上述所有操作......这将在几何上爆炸你生成的片段文件的数量...如果您添加另一个最外层循环,您可以在其中改变每个窗口起点滑动的增量时间,因为 100ms 也应该是一个自由变量...所以您的代码应该定义三个 for 循环围绕您的 ffmpeg 调用(到在输入文件中前进,改变窗口宽度,改变窗口滑动)

ffmpeg 是用于音频/视频操作的行业标准瑞士军刀(连同 Sox)...除了命令行工具集之外,ffmpeg 还是一组可从任何语言(python、go、. ..)

现在执行一些 ML 来识别这些片段中的哪些片段与已知口语数字的发音最接近,以确定您保留或丢弃哪些片段

关于python - 如何预处理音频数据以输入神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50087271/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com