将Lmtool纳入PocketSphinx?

时间:2016-09-07 00:49:50

标签: python pocketsphinx

我正在尝试创建一种向PocketSphinx中添加新关键字的简单方法。我们的想法是拥有一个临时文本文件,可用于(通过脚本)添加自动添加到corpus.txtdictionary.diclanguage_model.lm的单词(或短语)。

目前,最好的方法是使用lmtool,然后用更新的版本替换上述文件。然而,这提出了三个问题:

  1. Lmtool对于大型库来说很慢,因此随着更多单词的添加,该过程将呈指数级变慢。
  2. Lmtool需要半可靠的互联网连接才能工作,我希望能够在离线时添加命令。
  3. 这不是添加命令的最有效方法,也不适用于我放在一起的设置。
  4. 我希望能够(如果可能的话)使用/创建lmtool的离线版本,该版本从临时文本文件(input.txt)获取输入并处理它们并将内容打印成三个临时文本文件(dic.txtlm.txtcorp.txt)。

    最后一步是运行一个脚本:

    1. 获取corp.txt中的输出,并将其添加到corpus.txt
    2. 的末尾
    3. 查看dictionary.dic并在dic.txt中添加任何新单词。
    4. 以某种方式修改language_model.lm以在lm.txt中包含新字词。
    5. 删除三个输出文件的内容。
    6. 我的问题是,是否有可能获得能够将结果输出到特定文本文件的lmtool的离线版本?我知道有可能自动化lmtool(根据他们的网站),但我希望能够在可能的情况下离线运行该进程。

      此外,在我可以作为向导之前,有没有人尝试过这样的事情?

      我在树莓派上运行pocketsphinx,我知道它可能无法自行运行lmtool。我的计划是让lmtool在本地服务器上运行,并通过wifi / ethernet与pi同步文件。

      任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

你没有多少选择,如果你想在Raspberry Pi本地生成字典和语言模型(至少是2B型)

对于语言模型生成,您可以使用

  1. CMUCLMTK

  2. SRILM(SRI语言模型工具包)

  3. 要在Raspbian上编译SRILM,您需要调整一些文件。 看看https://github.com/G10DRAS/SRILM-on-RaspberryPi

    对于字典生成,您可以使用

    1. Phonetisaurus可以使用G2P模型here(或者您可以使用phonetisaurus-cmudict-split生成FST,或
    2. g2p-seq2seq(序列到序列G2P工具包)
    3. 基于TensorFlow的g2p-seq2seq,RaspberryPi不正式支持。有关详细信息,请参阅Installing TensorFlow on Raspberry Pi 3

      有关详细信息(用法,如何编译等等),请查看相应工具包的文档。