将音频与文本匹配

我有一个音频文件和与该音频文件中的语音相对应的文本。

我收集的音频文件来自志愿者,他们朗读了提供给他们的文本。我想制作一个算法,将他们录制的音频与文本进行匹配,以确保他们确实朗读了该文本。

我还没有决定使用哪种语言,但我很好奇这是否可以在网上实现?


回答:

使用预训练的自动语音识别(ASR)模型,例如使用Python和huggingface,像Facebook的Wav2vec 2.0模型(https://huggingface.co/facebook/wav2vec2-base-960h)或任何其他ASR模型(https://huggingface.co/models?pipeline_tag=automatic-speech-recognition)来获取语音的文本记录。这些模型通常依赖于语言,所以你需要找到适合你目标的模型。

将你已有的文本处理成更接近音频记录的形式(转换为小写,去除标点符号等)。

然后,你可以决定如何比较这两个文本。这也取决于文本的长度。如果只是单个句子,你可以直接比较它们是否完全相同。如果文本稍长,你可以从单词级匹配开始,看看有多少百分比的单词是正确/错误的(词错误率)。由于许多训练过的ASR模型使用上下文来确定记录,一些更高级的(但仍然基于字符或单词的)文本相似性度量方法,如BLEULevenshtein距离可能更适合,特别是因为它们可以处理额外或遗漏的单词问题,这在自创的度量方法中可能很难处理。

一般来说,你可以使用评估自动语音识别模型的相同方法,因为你做的是同样的事情(将记录与预期的文本进行比较)。有用于此的存储库和包,例如这个这个

无论如何,你需要意识到模型的语音识别永远不会是完美的,所以一个不完美的分数并不意味着你的志愿者没有遵循脚本。但如果你比较志愿者之间的分数,你可以了解他们有多紧密地遵循脚本,以及他们总体上讲话有多清晰。

你还应该记住,像口音、背景噪音、音频质量以及你的志愿者录音方式与模型训练数据录音方式之间的总体相似性都会影响分数。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注