我一直在尝试制作一个使用sl4a.Android.recognizeSpeech
函数的qpython程序。该功能在线工作正常。
在我的手机设置中,我打开并下载了离线语音识别功能,谷歌现在可以正常离线工作,但是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()
答案 0 :(得分:1)
droid.recognizeSpeech("foo", None, None)
返回一个包含索引编号1中已识别语音的数组。因此,如果要访问它,则必须键入
return droid.recognizeSpeech("foo", None, None)[1]
答案 1 :(得分:0)
实际上,以上都不对我有用。所以我通过这种方式解决了这个问题:
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