谷歌语音识别在我说“深红色”时会触发“打开”。

3

我正在为我的智能灯制作Python语音控制系统。

但是当我说“深红色”时,它会同时触发“开启”和“深红色”,因为单词“深红色”末尾包含“on”字母。

我真的不想改变名字。

elif ('light' in query) or ('lights' in query): #家居自动化

            if 'on' in query:
                control_lights("light on")
                speak("okay, turning on light")

            if 'off' in query:
                control_lights("light off")
                speak("okay, turning off light")

            if 'crimson' in query:
                control_lights("light crimson")
                speak("okay, turning light to crimson")
3个回答

1
你可以改变 if 语句的顺序并使用一些 elif 语句,这样一旦识别出单词 crimson,代码就会忽略单词 on
        if 'crimson' in query:
            control_lights("light crimson")
            speak("okay, turning light to crimson")

        elif 'on' in query:
            control_lights("light on")
            speak("okay, turning on light")

        if 'off' in query:
            control_lights("light off")
            speak("okay, turning off light")

顺便说一下,我认为你的项目非常酷:)我有点想现在做同样的事情lol


0
你能创建一个开关语句,使其只执行1个条件而不是遍历所有的IF吗?
如果你的语音识别将"light crimson"识别为"light on"并触发了开关语句中的该条件,那么你只能更改"light on"或"light crimson"作为命令,因为在识别方面,"light crimson"="light on"。

0

我假设您的命令在执行之前被转换为文本,在这种情况下,第一个if是满足的,因为“on”确实在“crimson”中。因此,将“on”更改为其他单词可能会解决您的问题。或者,您可以只需交换if语句的顺序,以便如果您说“深红色”,它将在“on”之前被识别。
其次,我建议将第二个和第三个if更改为elif,以避免一般情况下多个条件的进入,因此一旦选择了一个命令,就不会选择其他命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接