Автономное распознавание речи в qpython3

Я пытался создать программу qpython, которая использует функцию sl4a.Android.recognizeSpeech. Функционал отлично работает онлайн.

В настройках телефона я включил и загрузил распознавание речи в автономном режиме, и Google теперь отлично работает в автономном режиме, но речь python вообще не работает, каждый раз предлагая повторить попытку.

Образец кода:

import sl4a 
import time

droid = sl4a.Android()

def speak(text):
    droid.ttsSpeak(text)
    while droid.ttsIsSpeaking()[1] == True:
        time.sleep(1)

def listen():
    return droid.recognizeSpeech('Speak Now',None,None)

def login():
    speak('Passphrase, please')
    try:
        phrase = listen().result.lower()
    except:
        phrase = droid.dialogGetPassword('Passphrase').result
    print(phrase)
    if phrase == 'pork chops':
        speak('Welcome')
    else:
        speak('Access Denied')
        exit(0)

login()

person Ryzokuken    schedule 28.02.2016    source источник


Ответы (2)


droid.recognizeSpeech("foo", None, None)

возвращает массив с распознанной речью в индексе номер 1. Поэтому, если вы хотите получить к нему доступ, вам нужно ввести

return droid.recognizeSpeech("foo", None, None)[1]
person hoppla1232    schedule 19.04.2016

На самом деле ничего из вышеперечисленного не работало для меня. Поэтому я решил это так:

x, result, error = droid.recognizeSpeech("Speak")

Переменная результата хранит речь, распознанную пользователем.

Пример:

import sl4a
import time

droid = sl4a.Android()

def Speak(talk):
   try:
     droid.ttsSpeak(talk)
     while droid.ttsIsSpeaking()[1] == True:
           time.sleep(2)
   except:
     droid.ttsSpeak("nothing to say")

def listen():
   global result,error
   time.sleep(1)
   x, result, error = droid.recognizeSpeech("Speak")

while True:
   try:
     listen()
   except:
     print(error)

   try:
     if len(str(result)) > 0:
        print(result)
        if result == "how old are you":
           Speak("I'm 1 year old")
        elif result is None:
           break
        else:
           Speak("I heard " + result)
   except Exception as e:
     print(e)
     break
person XploitsR    schedule 10.05.2019