前言
由于 nao 机器人自带的模块的对于中文的识别率不是特别理想,而且自带的对话剧本太少,所以自己写了一个 nao 的模块来替换自带的语音识别模块。
模块介绍
ALSoundRecognition 是适用于 NAO 机器人的语音识别模块。
该模块调用了科大讯飞的语音识别和语义理解功能。
相对于系统自带的模块有对中文识别准确率更高,识别反应速度更快的优势。
github 地址:https://github.com/zyqzyq/ALSoundRecognition
demo
1
| 根据github上的文档说明将模块拷入nao机器人后可以运行以下python demo进行简单的测试。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #coding:utf-8 from naoqi import ALProxy import chardet import json '''/* * isr_status参数说明 * 0:未开始语音识别 * 1:初始化成功 * 2:正在识别中 * 3:识别中止 * 4:识别失败,请对照错误进行处理 * 5:识别成功 */''' def main(): asr = ALProxy("ALSoundRecognition", "192.168.3.13", 9559) tts = ALProxy("ALTextToSpeech", "192.168.3.13", 9559) rec = asr.getStatus() print rec if rec == 0: print u"未初始化成功" elif rec == 4: asr.restart() while 1: print "start recognition" asr.startSession() while 1: rec = asr.getStatus() if rec == 2: continue else: break if rec == 5: result = asr.getResult() print "result:" if result!='': result_json = json.loads(result) print result_json if result_json["rc"]==0: tts.say(result_json["answer"]["text"].encode("utf-8")) else: #print result_json["text"],type(result_json["text"]) tts.say(result_json["text"].encode("utf-8")) elif rec == 4: errorCode = asr.getResult() print u"error:",errorCode asr.stopSession() elif rec == 3: print "识别中止"
if __name__ == "__main__": main()
|