语音识别-如何将句子分解为单词?

时间:2019-10-02 02:54:54

标签: python tensorflow pytorch tensorflow2.0

我是语音识别的新手,我正在寻找一种将音频/波形文件形式的句子(或多个句子)拆分成单个单词的方法?这听起来像是一个标准问题,所以我想知道业内人士是如何解决这个问题的。

ps:是的,这个问题是三年前提出的,但是我正在寻找使用较新库(例如pytorch和tensorflow 2.0)的最新答案。谢谢!

1 个答案:

答案 0 :(得分:1)

这不是那么简单。

您想要的称为对齐。即每个音频帧都与一个单词(或子单词,字符或更好的单个音素)对齐。

最合理的方法将需要标准的常规语音识别系统。最简单的方法是使用HMM系统,该系统由老式GMM或由NN支持(称为混合HMM-NN模型)。这也需要一个词典(将音素映射到单词)。通常,您会使用所有现有的实现,例如KaldiRASR,因为实现起来并不容易。我还没有看到纯TF的实现。然后该软件通过HMM计算最佳可能的对准路径(即根据训练后的模型具有最高的可能性)。如果您知道地面真话,这就是维特比算法,可以计算出最佳路径。否则,您将进行一些解码(使用波束搜索)。

您还可以做些什么,但这会变得更笨拙,并且效果更差(对于完成对齐任务):使用一些端到端模型,例如注意编码器或解码器,或CTC。对于注意力集中的编码器/解码器,您可以使用注意力权重来猜测单词的位置(然后您可能会猜出边界在哪里)。与CTC类似。但这并不准确。但这可以在纯TF中轻松实现。

无论如何,实现本身并不是困难的部分(尽管仍然不简单)。您首先需要了解所有背后的理论。也许StackOverflow不是问这个的正确地方。可能通读Kaldi或RASR文档,或观看有关语音识别的讲座,或阅读有关该主题的书。