构建openears兼容的语言模型

har*_*alb 17 iphone speech-recognition language-model

我正在对文本和文本到语音的语音进行一些开发,我发现OpenEars API非常有用.

这个基于cmu-slm的API 的原理是它使用语言模型来映射iPhone设备收听的语音.所以我决定找一个大的英语语言模型来提供API语音识别器引擎.但我无法理解与OpenEars一起使用的voxfourge英文数据模型的格式.

有没有人知道如何让英语语言的.languagemodel和.dic文件与OpenEars一起使用?

Til*_*ilo 5

关于LM格式:

AFAIK大多数语言模型使用语言模型的ARPA标准.Sphinx/CMU语言模型被编译成二进制格式.您需要源格式将Sphinx LM转换为另一种格式.大多数其他语言模型都是文本格式.

我建议使用HTK语音识别工具包; 详细文档:http://htk.eng.cam.ac.uk/ftp/software/htkbook_html.tar.gz

这里还介绍了CMU的SLM工具包:http://www.speech.cs.cmu.edu/SLM/toolkit_documentation.html

以下是我在网上找到的ARPA格式的语言模型示例:http://www.arborius.net/~jphekman/sphinx/full/index.html

您可能希望首先创建ARPA LM,然后根据需要将其转换为任何二进制格式.

一般来说:

要构建语言模型,您需要大量的训练数据 - 在观察到此时间点的当前输入后,确定词汇表中任何其他单词的概率.

您不仅可以通过添加要识别的单词来"制作"语言模型 - 您还需要大量的训练数据(=运行语音识别应用程序时观察到的典型输入).

语言模型不仅仅是一个单词列表 - 它估计输入中下一个标记(单词)的概率.为了估计这些概率,您需要运行一个训练过程,该过程将覆盖训练数据(例如历史数据),并在那里观察词频以估计上述概率.

对于您的问题,也许作为一种快速解决方案,只需假设所有单词具有相同的频率/概率.

  1. 用你想要识别的单词创建一个字典(字典中的N个单词)

  2. 创建一个语言模型,其中每个单词的概率为1/N(单语语言模型)

然后,您可以使用HTK Toolkit将该单一语言模型(LM)与另一个LM插入更大的语料库

  • 首先感谢你回答了很长一段时间后我问了这个问题.答案看起来像是一个谜题.我知道这个主题需要大量的研发但是如果你有一些附近的暗示让我接触到兼容lm的opeanears. (2认同)

Hal*_*lle 2

老问题,但也许答案仍然很有趣。OpenEars 现在具有内置语言模型生成功能,因此您可以选择使用 LanguageModelGenerator 类根据需要在应用程序中动态创建模型,该类使用 MITLM 库和 NSScanner 来完成与上述 CMU 工具包相同的任务。在 iPhone 上处理超过 5000 个单词的语料库将需要很长时间,但您始终可以使用模拟器运行一次,然后从文档文件夹中获取输出并保留它。

这里解释了大词汇量识别的另一种选择:

创建 50,000 个单词的 ARPA 语言模型文件

话虽如此,作为 OpenEars 开发人员,我需要指出,CMU 工具的 5000 个单词的限制与最大词汇量非常接近,在使用 Pocketsphinx 时,该最大词汇量可能在 iPhone 上具有不错的准确性和处理速度。因此,最后一个建议是要么重新概念化您的任务,以便它绝对不需要大量词汇识别(例如,由于 OpenEars 允许您动态切换模型,您可能会发现您不需要一个巨大的模型,但是可以使用多个可以在不同上下文中切换的较小的 API),或者使用基于网络的 API,可以在服务器上进行大量词汇识别(或者在您自己的服务器上使用 Sphinx4 制作您自己的 API)。祝你好运!