为什么python pocketsphinx会给出TypeError?

时间:2016-03-19 18:35:38

标签: python pocketsphinx

根据

,我正在使用Python口袋狮身人面像教程

https://metakermit.com/2011/python-speech-recognition-helloworld/

(完整代码在这里):

import sys,os

def decodeSpeech(hmmd,lmdir,dictp,wavfile):
"""
Decodes a speech file
"""

try:
    import pocketsphinx as ps
    import sphinxbase

except:
    print """Pocket sphinx and sphixbase is not installed
    in your system. Please install it with package manager.
    """

speechRec = ps.Decoder(hmm = hmmd, lm = lmdir, dict = dictp)
wavFile = file(wavfile,'rb')
wavFile.seek(44)
speechRec.decode_raw(wavFile)
result = speechRec.get_hyp()

return result[0]

if __name__ == "__main__":
hmdir = "/usr/share/pocketsphinx/model/hmm/en_US/"
lmd = "/usr/share/pocketsphinx/model/lm/en_US/hub4.5000.DMP"
dictd = "/usr/share/pocketsphinx/model/lm/en_US/cmu07a.dic"
wavfile = sys.argv[1]
recognised = decodeSpeech(hmdir,lmd,dictd,wavfile)

print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
print recognised
print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"

当我运行它时,我收到以下错误消息:

Traceback (most recent call last):
File "hello.py", line 30, in <module>
recognised = decodeSpeech(hmdir,lmd,dictd,wavfile)
File "hello.py", line 17, in decodeSpeech
speechRec = ps.Decoder(hmm = hmmd, lm = lmdir, dict = dictp)
TypeError: __init__() got an unexpected keyword argument 'hmm'

你能帮帮我吗?

1 个答案:

答案 0 :(得分:8)

查看GitHub上的pocketsphinx代码,在decoder_test.py中我们有一个如何将选项传递给Decoder的示例。

所以看起来你的教程适用于旧版本,你真的想要:

config = ps.Decoder.default_config()
config.set_string('-hmm', hmmd)
config.set_string('-lm', lmdir)
config.set_string('-dict', dictp) 

speechRec = ps.Decoder(config)