我一直试图制作一个使用sl4a.Android.recognizeSpeech函数的qpython程序。该功能在线运行良好。
在我的手机设置中,我打开并下载了离线语音识别,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()发布于 2016-04-19 16:20:09
droid.recognizeSpeech("foo", None, None)返回在索引1中具有可识别语音的Array。因此,如果要访问它,必须键入
return droid.recognizeSpeech("foo", None, None)[1]发布于 2019-05-10 09:29:14
实际上,上述任何一件事对我都没有用。所以我解决了这个问题:
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)
breakhttps://stackoverflow.com/questions/35683016
复制相似问题