我在python 2.7.9上玩pyspeech 0.5.2并撞墙。 您可以通过向pyspeech提供要收听的单词列表来监听特定单词,如下所示:
color = ['green', 'red', 'yellow', 'brown'...]
phrase = speech.input("I'm listening", color)
print phrase
只有在识别出上面列表中的任何字词时才会继续。 我想要实现的目标需要两个单独的列表。我在这些列表中真正拥有的单词对于语音识别来说太奇怪了,没有提供的列表就会猜测,并且列表很大,可以制作组合表if-statments。 让我们说我使用上面的颜色列表,我想为每个颜色列表分配额外的命令: 搜索 绿色。或绘制 绿色。
这些单词,搜索和 paint ,其中包含在另一个列表中,我需要将每个列表中的一个单词组合成两个单词的句子。我该怎么做?
这里是我想要的可视化:
color = ['green', 'red', 'yellow', 'brown'...]
commands = ['search', 'paint', 'show'...]
phrase = speech.input("I'm listening", commands, color,)
---saying green & paint out loud---
>>> phrase
['green', 'paint'] # OR 'green paint'
或者,如果我从颜色列表中找到一个单词,并让识别猜出另一个单词,这也会有所帮助,如下所示:
phrase = speech.listenfor -> 'open %s'
#where %s would be replaced by anything after open
prhase = speech.listenfor -> color + "%s"
#one word from color, and %s would be replaced with anything I said after
('代码'上面更多的是代表性)
答案 0 :(得分:0)
在内部pyspeech使用语法界面从短语列表中设置语法:
grammar.DictationSetState(0)
# dunno why we pass the constants that we do here
rule = grammar.Rules.Add("rule",
_constants.SRATopLevel + _constants.SRADynamic, 0)
rule.Clear()
for phrase in phraselist:
rule.InitialState.AddWordTransition(None, phrase)
# not sure if this is needed - was here before but dupe is below
grammar.Rules.Commit()
您可以修改此部分代码以添加更复杂的规则,这不可能通过公共pyspeech API在pyspeech之外实现。或者你也可以直接使用winapi而不用pyspeech。