Python:AttributeError:' module'对象没有属性,这是不真实的

时间:2015-11-17 23:12:26

标签: python pocketsphinx

我想做什么:

我想导入一个python模块(pocketsphinx)并使用Decoder属性的输出。但是,当我尝试使用它时,我已通知模块属性' 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'

2 个答案:

答案 0 :(得分:0)

通过查看pocketsphinx example code,您的导入似乎应该是:

from pocketsphinx.pocketsphinx import *

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

import pocketsphinx
dir(pocketsphinx)

答案 1 :(得分:0)

您应该从pocketsphinx导入解码器。 而不是

public override void copyAttributes(BasicCardModel bcm) {
    base.copyAttributes(acm);
    var acm = bcm as AttackCardModel;
    if (acm != null) {
        attackType = acm.attackType;
        Debug.Log("Attack strength = " + acm.attackStrength);
        attackStrength = acm.attackStrength;
    }
}

尝试:

import pocketsphinx