2016-09-07 30 views
1

我想创建一个简单的方法来将新关键字添加到PocketSphinx中。这个想法是有一个临时文本文件,可用于(通过脚本)添加一个字(或短语)自动添加到corpus.txt,dictionary.diclanguage_model.lm将Lmtool合并到PocketSphinx中?

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

  1. Lmtool对于大型图书馆来说很慢,所以随着更多单词的添加,这个过程将呈指数级变慢。
  2. Lmtool需要一个半可靠的互联网连接才能工作,我希望能够在离线状态下添加命令。
  3. 这不是最有效的添加命令的方式,并且不会与我放在一起的设置一起使用。

我想什么,能够做的是(如果可能)使用/创建lmtool从一个临时的文本文件(input.txt)需要投入的离线版本对其进行处理,将内容打印成三个临时文本文件(dic.txt,lm.txt,corp.txt)。

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

  1. 就拿输出corp.txt并把它添加到corpus.txt结束。
  2. 翻阅dictionary.dic并在dic.txt中添加新单词。
  3. 以某种方式修改language_model.lm以包含lm.txt中的新术语。
  4. 清除三个输出文件的内容。

我的问题是,如果有可能得到离线版本的lmtool,能够将结果输出到特定的文本文件?我知道可以自动化lmtool(根据他们的网站),但我希望能够在可能的情况下离线运行此过程。

另外,有没有人尝试过这样的事情之前,我可以用作指导?

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

任何帮助,将不胜感激。

回答

2

你有几个选择,如果你想在树莓派在本地生成字典和语言模型(型号2B至少)

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

  1. CMUCLMTK

  2. SRILM(SRI语言建模工具箱)

要在Raspbian上编译SRILM,你需要调整一些文件。 就拿这里https://github.com/G10DRAS/SRILM-on-RaspberryPi

对于字典生成一看,你可以使用

  1. Phonetisaurus与G2P模型得到here,或者
  2. g2p-seq2seq(或者你可以自己使用phonetisaurus-cmudict-split产生FST)(序列 - to-Sequence G2P工具包)

g2p-seq2seq根据TensorFlow这是官方不支持树莓派。欲了解更多详情,请参阅Installing TensorFlow on Raspberry Pi 3

有关更多详细信息(用法,如何编译等...)请通过各自工具包的文档。

+0

第三个选项是在C + flite中实现的用于g2p转换的lmtool的自定义代码。它在这里实现,但不容易在Linux上编译:https://github.com/DanielSWolf/rhubarb-lip-sync –

+1

字典生成的第四选项(可能)是使用espeak。首先使用IPA编写音素,然后将它们转换为ARPABet。当然,你需要一个IPA到ARPABet转换脚本。 – G10DRAS

+0

我会检查这些建议。到目前为止,CMUCLMTK已经下载得很好,但是在Jasper网站下载Phonetisaurus的下载说明后,我留下了一个我无法解决的未满足的依赖性错误。 –