我有一个音频文件和与该音频文件中的语音相对应的文本。
我收集的音频文件来自志愿者,他们朗读了提供给他们的文本。我想制作一个算法,将他们录制的音频与文本进行匹配,以确保他们确实朗读了该文本。
我还没有决定使用哪种语言,但我很好奇这是否可以在网上实现?
回答:
使用预训练的自动语音识别(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模型使用上下文来确定记录,一些更高级的(但仍然基于字符或单词的)文本相似性度量方法,如BLEU或Levenshtein距离可能更适合,特别是因为它们可以处理额外或遗漏的单词问题,这在自创的度量方法中可能很难处理。
一般来说,你可以使用评估自动语音识别模型的相同方法,因为你做的是同样的事情(将记录与预期的文本进行比较)。有用于此的存储库和包,例如这个和这个。
无论如何,你需要意识到模型的语音识别永远不会是完美的,所以一个不完美的分数并不意味着你的志愿者没有遵循脚本。但如果你比较志愿者之间的分数,你可以了解他们有多紧密地遵循脚本,以及他们总体上讲话有多清晰。
你还应该记住,像口音、背景噪音、音频质量以及你的志愿者录音方式与模型训练数据录音方式之间的总体相似性都会影响分数。