Python 如何在pocketsphinx上使用关键字列表

Python 如何在pocketsphinx上使用关键字列表,python,pocketsphinx,Python,Pocketsphinx,我正在用python和pocketsphinx构建一个程序,以便用我的声音控制无人机。 我有这本字典: DOWN D AW N GO G OW LEFT L EH F T RIGHT R AY T TURN T ER N UP AH P 如果我说的是本词典中的一个单词,一切正常,但如果我说的是词典口袋中没有的一个单词,斯芬克斯将尝试从词典中找到最接近的匹配项。例如,如果我说Stoppocketsphinx将显示UP,但如果是这种情况,我的程序不应执行任何操作。 我在互联网上搜索过,

我正在用
python
pocketsphinx
构建一个程序,以便用我的声音控制无人机。 我有这本字典:

DOWN  D AW N
GO  G OW
LEFT  L EH F T
RIGHT  R AY T
TURN  T ER N
UP  AH P
如果我说的是本词典中的一个单词,一切正常,但如果我说的是词典口袋中没有的一个单词,斯芬克斯将尝试从词典中找到最接近的匹配项。例如,如果我说
Stop
pocketsphinx将显示
UP
,但如果是这种情况,我的程序不应执行任何操作。 我在互联网上搜索过,我发现这个问题可以通过使用关键字列表来解决,但是我找不到关于如何在python中使用它的信息。 这是我目前掌握的代码

#!/usr/bin/env python

import os
from pocketsphinx import LiveSpeech, get_model_path

i = 0
j = 0
frase = ''
tab = [['x','o','o'],['o','o','o'],['o','o','o']]

def move():
    global i,j,frase

    if 'DOWN' in frase and i!= 2:
        i=i+1
    if 'UP' in frase and i!= 0:
        i=i-1
    if 'LEFT' in frase and j != 0:
        j = j - 1
    if 'RIGHT' in frase and j != 2:
        j = j + 1

def draw():
    global i,j
    s = 0
    for l in range(3):
        for c in range(3):
            if tab[l][c] == 'x':
                tab[l][c] = 'o'
                s = 1
                break
        if s == 1:
            break
    tab[i][j] = 'x'
    for p in tab:
        print p


model_path = get_model_path()

speech = LiveSpeech(
    verbose=False,
    sampling_rate=16000,
    buffer_size=2048,
    no_search=False,
    full_utt=False,
    hmm= os.path.join(model_path,'en-us'),
    lm=os.path.join(model_path, 'drone.lm.bin'),
    dic=os.path.join(model_path, 'drone.dict'),
)

for p in tab:
    print p

for phrase in speech:
    frase = str(phrase)
    print frase
    move()
    draw()
我使用一个带有
X
的矩阵来模拟无人机。
我使用
lmtool
建立了词典和语言模型,提供了一个语料库文件。

最后我知道有一个“词汇表外”单词OOV,如果词汇表中的任何单词不匹配,应该会返回该单词。但我想这不会发生。为@kenti添加注释可以解决您的问题吗?我还试图创建一个关键字列表来触发python脚本。但是怎么做呢?谢谢