语音识别¶
rcute_ai.WakeWordDetector 和 rcute_ai.STT 两个类分别用来进行唤醒词检测和语音识别,它们的使用方法十分类似
唤醒词,类似于 iPhone 的 “Hi, Siri” 或者小米的 “小爱同学”。一般的语音识别应用中先要进行唤醒词检测,只有听到唤醒词之后,才会对紧接着一段时间内的声音进行语音识别,这样能提高识别的准确性。
唤醒词检测¶
rcute_ai.WakeWordDetector 是用来作唤醒词检测的类,若没有特别指定,默认的唤醒词是 “阿Q” 或 “R-Cute”
它的 detect() 方法接受一个声音来源作为参数,当识别到唤醒词时,返回识别到的唤醒词字符串;还可以指定一个 timeout 参数,如果在 timeout 时间(秒)内没有识别到唤醒词,则返回 None
运行下面的程序,对则 Cozmars 背上的麦克风说 “阿Q” 或 “R-Cute”,看能不能被识别到:
import rcute_ai as ai
from rcute_cozmars import Robot
# 新建一个唤醒词检测器,默认唤醒词是 “阿Q” 或 “R-Cute”
wwd = ai.WakeWordDetector()
# 把 IP 换成你的 Cozmars IP 地址,连接机器人
with Robot() as robot:
# 把麦克风音量较小,所以我们把音量调到 100%
robot.microphone.volumn = 100
# 打开麦克风
with robot.microphone.get_buffer() as mic_buf:
while True:
# 通过 Cozmars 的麦克风进行唤醒词检测,设置 10 秒的超时
text = wwd.detect(mic_buf, timeout=10)
# 如果识别到唤醒词,就发出“嘟”的一声提示音符,并把唤醒词打印出来
if text:
robot.speaker.beep([600])
print('识别到唤醒词:', text)
# 如果 10 秒内没有识别到唤醒词,就退出程序
else:
break
唤醒词检测 + 语音识别¶
rcute_ai.STT 是用来作语音识别的类,它的 stt() 方法将语音转化为文本(Speech To Text)
接下来我们拓展上面的程序,在唤醒词检测之后进行语音识别。运行程序,对着 Cozmars 背上的麦克风说:“阿Q”,在听到“嘟”的一声提示音后,接着说出你的命令:“前进”/“后退”/“左传”/“右转”,或者说“结束程序”
import rcute_ai as ai
from rcute_cozmars import Robot
# 新建一个唤醒词检测器,默认唤醒词是 “阿Q” 或 “R-Cute”
wwd = ai.WakeWordDetector()
# 新建一个语音识别器,并设置语言为中文(默认是英语)
sr = ai.STT(lang='zh')
# 把 IP 换成你的 Cozmars IP 地址 或 序列号
with Robot() as robot:
with robot.microphone.get_buffer() as mic_buf:
while True:
# 先进行唤醒词检测,不设置超时,直到识别到唤醒词该函数才返回
wwd.detect(mic_buf)
# 识别到唤醒词后发出“嘟”的一声提示音符
robot.speaker.beep([600])
# 开始语音识别并返回识别到的文字
text = sr.stt(mic_buf)
print(text)
if text == '前进':
robot.forward(2)
elif text == '后退':
robot.backward(2)
elif text == '左转':
robot.turn_left(2)
elif text == '右转':
robot.turn_right(2)
elif text == '结束':
break