1

我想做的事:

我想导入一个 python 模块(pocketsphinx)并使用 Decoder 属性的输出。但是,当我尝试使用它时,我被告知模块属性“解码器”不存在。

decoder = Decoder(configSwitches)

然而,它确实存在,这就是它如此奇怪的原因。

到目前为止我所做的:

当我打开 python 控制台并输入import pocketsphinx时,它会毫无问题地导入。运行pocketsphinx。文件返回:

'/usr/local/lib/python2.7/dist-packages/pocketsphinx-0.0.8-py2.7-linux-armv7l.egg/pocketsphinx/__init__.pyc'

往里看'/usr/local/lib/python2.7/dist-packages/pocketsphinx-0.0.8-py2.7-linux-armv7l.egg/pocketsphinx/__init__.py',我看到:from pocketsphinx import *就是这样。

当我返回/usr/local/lib/python2.7/dist-packages/pocketsphinx/pocketsphinx.py并在文本编辑器中打开它时,我看到 pocketsphinx.py 确实有一个 Decoder 类,其中包含大量已定义的方法。

我的问题:

我还可以采取哪些其他步骤来诊断我在使用 pocketsphinx 模块时出了什么问题?

这是我在真正深入研究项目之前尝试运行的示例代码:

import pocketsphinx


hmmd = r"/home/michael/Desktop/sphinxASR/pocketsphinx-5prealpha/model/en-us/en-us"
lmdir = r"/home/michael/Desktop/sphinxASR/pocketsphinx-5prealpha/model/en-us/en-us.lm.bin"
dictp = r"/home/michael/Desktop/sphinxASR/pocketsphinx-5prealpha/model/en-us/cmudict-en-us.dict"
fileName = r'/home/michael/Desktop/sphinxASR/voice_message.wav'

if __name__ == "__main__":
    wavFile = open(fileName, "rb")

    speechRec = pocketsphinx.Decoder(hmm=hmmd, lm=lmdir, dictionary=dictp)

    wavFile.seek(44)

    speechRec.decode_raw(wavFile)

    result = speechRec.get_hyp()

    print(result)

堆栈跟踪:

Traceback (most recent call last):
  File "/home/michael/PycharmProjects/27test/getHypTest.py", line 14, in <module>
    speechRec = pocketsphinx.Decoder(lm=lmdir, dictionary=dictp)
AttributeError: 'module' object has no attribute 'Decoder'
4

2 回答 2

0

通过查看pocketsphinx 示例代码,您的导入似乎应该是:

from pocketsphinx.pocketsphinx import *

我诊断此问题的第一步是输入以下内容,以便我可以看到正在导入的内容:

import pocketsphinx
dir(pocketsphinx)
于 2015-11-17T23:34:07.240 回答
0

您应该从 pocketsphinx 导入解码器。代替

import pocketsphinx

尝试:

from pocketsphinx.pocketsphinx import Decoder
于 2015-11-17T23:35:03.367 回答