NAO机器人语音识别(三):自定义模块快速调用

0 views

前言

由于nao机器人自带的模块的对于中文的识别率不是特别理想,而且自带的对话剧本太少,所以自己写了一个nao的模块来替换自带的语音识别模块。

模块介绍

ALSoundRecognition 是适用于NAO机器人的语音识别模块。 该模块调用了科大讯飞的语音识别和语义理解功能。 相对于系统自带的模块有对中文识别准确率更高,识别反应速度更快的优势。 github地址:https://github.com/zyqzyq/ALSoundRecognition

demo

根据github上的文档说明将模块拷入nao机器人后可以运行以下python demo进行简单的测试。
#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()
PREVIOUSdjango + gunicorn + nginx 部署
NEXTNAO机器人语音识别(二):调用讯飞SDK