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脚本。但是怎么做呢?谢谢