Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyspeech,来自两个列表的两个未知输入_Python_List_Speech Recognition_Sapi - Fatal编程技术网

Python Pyspeech,来自两个列表的两个未知输入

Python Pyspeech,来自两个列表的两个未知输入,python,list,speech-recognition,sapi,Python,List,Speech Recognition,Sapi,我在Python2.7.9上玩pyspeech 0.5.2,遇到了麻烦。 您可以通过给pyspeech一个要听的单词列表来听特定的单词,如下所示: color = ['green', 'red', 'yellow', 'brown'...] phrase = speech.input("I'm listening", color) print phrase phrase = speech.listenfor -> 'open %s' #where %s would be replac

我在Python2.7.9上玩pyspeech 0.5.2,遇到了麻烦。 您可以通过给pyspeech一个要听的单词列表来听特定的单词,如下所示:

color = ['green', 'red', 'yellow', 'brown'...]
phrase = speech.input("I'm listening", color)
print phrase
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
只有当它识别出上面列表中的任何单词时,它才会继续。 我想要实现的,需要两个单独的列表。如果没有提供的列表,我在这些列表中真正拥有的单词对于语音识别来说太过复杂,无法猜测,而且如果需要的话,列表太大,无法组成一个组合表。 假设我正在使用上面的颜色列表,我想为每个颜色列表分配额外的命令: 搜索绿色。或者漆成绿色

这些单词,搜索和绘画,以及其他单词在另一个列表中,我需要将每个列表中的一个单词组合成一个两个单词的句子。我该怎么做

以下是我想要的形象:

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'
或者,如果我从颜色列表中得到一个单词,让识别人员猜测另一个单词,也会有所帮助,比如:

color = ['green', 'red', 'yellow', 'brown'...]
phrase = speech.input("I'm listening", color)
print phrase
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
(上面的“代码”更像是一种表示)

内部使用语法接口从短语列表中设置语法:

    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之外是不可能通过公共pyspeechapi实现的。或者,您可以直接使用winapi而不使用pyspeech。

您是否正在寻找一个大的颜色+命令组合列表?你可以通过
语句=[''.join((名词,动词))来表示命令中动词的颜色中的名词]
,但我不确定这是否是你想要的。@EricAppelt这正是我想要的。但是,尽管有400多个彩色单词和20个命令,这个列表将是巨大的。因此,我正在寻找一种方法,让pyspeech/pywin输入两个列表,从每个列表中识别一个作为输出,而不是一个列表一个单词作为输出。如果我没有完全弄错
语法。DictationSetState(0)
(零参数)意味着它不允许自由词识别,如果我需要命令+未知->“关闭%s”。我想我可以用足够长的停顿时间说出两个单词,以创建一个空格作为输入,按空格分割,然后在每个单词的单独列表中查找语法。不可能混合听写和语法。你可以使用听写或语法。如果你事先知道项目列表(如你写了400多个项目)你仍然可以使用语法,它应该会给你一个很好的准确性。我明白了。但是我如何才能做到以下几点:“在%location%中天气如何”,其中location是免费的单词识别?(本例中没有列表)我必须听什么,然后检查是否“What's weather in”“包含,并提取以下单词?”?感谢您目前的帮助。如果您没有确切的列表,您可以使用听写模式