我想要构建一个模型,它可以本地化音频文件中某个特定单词的出现。例如,我想在大约5分钟的录音中找到“比萨饼”这个词。程序应该返回一个带有(start, stop)对象的数组,该数组描述文件中该单词的开始和停止边界。
我能不能用经典的对象定位和某种CNN,对象是想要的词在谱图?如果可以的话:我需要如何准备培训数据--用“比萨饼”这个词和同样数量的其他词或更多的词来记录?
是否有更好的方法在录音中搜索单词?
发布于 2020-01-31 14:42:49
您所描述的问题称为“唤醒字检测”或“触发字检测”。
我相信你可以用CNN来分类你的音频的块Mel-spectrogram (也见利布罗萨)。作为培训标签,您只需使用0作为没有唤醒词的时间戳(没有“比萨饼”),使用1作为时间戳和唤醒词。或者,对一个块的所有时间戳进行分类,您也可以为每个谱图块的中心框架进行训练(使事情变得更简单)。无论如何,您必须确保您的数据集至少是适度平衡的,也就是说,您必须有足够的唤醒词和非唤醒字实例。实现这一目标的一种方法是将背景噪声的录音与尾流和非尾流词的录音叠加起来。有一些教程详细介绍了如何做到这一点,例如这个YouTube视频、这篇文章或这个GitHub回购。请注意,所有这些方法都使用RNNs完成任务。然而,Bia等人认为,时态卷积网络体系结构(本质上是一个CNN 跳过连接和扩张)对于您描述的任务可能同样有效或更好,并且可能更容易训练。
希望这个答案能给你一些开始点。
发布于 2021-07-25 16:25:29
要想找到在录音中搜索单词的实用方法,可以考虑使用语音识别模型,只需在文本形式上进行匹配。现代的预先训练过的语音识别模型真的很好,既可以作为服务,也可以作为本地安装的开源包。字级语音识别实例的答案见此。
https://datascience.stackexchange.com/questions/67246
复制相似问题