开始语音交互

本 demo 是基于科大讯⻜的离线命令词识别,离线语音合成功能和 VAD 算法的结合来实现的语音控制。

离线命令词 负责检测⻨克⻛输入数据

离线语音合成 负责合成反馈输出数据

VAD 负责获取⻨克⻛输入数据并保存


1 实现流程

VAD算法能实时判断周围的能量,并根据能量的门限判断是否识别为语音,如果识别为语音,则将其保存下来并通过离线关键词检测,判断语音中是否有唤醒关键词。若有唤醒关键词,则反馈给唤醒状态机,否则机器人将保持休眠状态。

当唤醒状态机处于唤醒状态时,这时候下达的指令如果是有效的指令,则机器人会执行相应的指令,完成后让唤醒状态机返回休眠模式。

2 使用方式

  1. 前往科大讯飞官网,扫码快捷登录,注册帐号

login

  1. 先创建一个属于自己的应用案例,创建完应用后会得到自己专属的appid,后续会使用到,需要用户在我的应用中查找。

创建应用

  1. 导航栏选择SDK下载,下载离线语音合成离线命令词识别的SDK,这里可以将两个SDK一同打包下载。

SDK

SDK

  1. 将下载的压缩包解压,并打开解压后的压缩包,将handsfree_speech/cfg/msc/res/asr/talking.bnf文件拷贝到刚刚解压的文件夹的bin/msc/res/asr路径下,然后将SDK的bin/msc/res/ttsbin/msc/res/asr 两个文件夹覆盖我们所提供 speech demo 中的 cfg 文件中同名文件路径下,即handsfree_speech/cfg/目录 (这里的 common.jet 有两个,一个是离线语音合成的,一个是离线命令词识别的,要一一对应)

copy

  1. 修改代码handsfree_speech/src/Voice_feedback/tts_offline_sample.cpphandsfree_speech/src/Voice_recognition/asr_offline_record_sample.cpp文件中的 appid 登录参数。因为每一个用戶的 SDK 都绑定相应的 appid,如果appid不匹配的话,会有相应的错误信息反馈。

appid

  1. 返回handsfree_ros_ws/目录下,打开新的终端进行编译

    catkin_make

  2. 关闭所有终端,并打开一个新的终端,运行指令(至少需要运行语音交互节点和VAD语音活动侦测节点,其他的功能需要使用的时候,需要什么功能打开什么功能,目前多个功能的同时调用的话,还存在一点问题,联动还未完全打通)


    //语音交互节点
    roslaunch handsfree_speech offline_interactive_ros.launch

    //VAD语音活动侦测节点
    rosrun handsfree_speech vad_record.py

    //语音控制驱动节点(可选,可以用来进行“前进”和“后退”等基本操作)
    rosrun handsfree_speech cn_voice_cmd_vel.py

    //语音导航节点(可选,进行语音导航时才需要启动)
    rosrun handsfree_speech set_goal.py

    //语音巡逻节点(可选,进行语音巡逻时才需要启动)
    rosrun handsfree_speech multi_point_patrol.py

这里我们可以使用仿真环境先看一下效果,我们已在handsfree中提供了相应的仿真环境工具。您可以运行上面的语音交互节点VAD语音活动侦测节点语音控制驱动节点三条指令,并运行以下指令(二选一即可)来进行仿真环境的机器人语音测试。

(通过唤醒词小道唤醒程序,利用前进,后退左转右转等基本语音指令来控制仿真环境中的机器人进行运动,详细指令可以看后续教程)

roslaunch handsfree_2dnav navigation.launch

这两条指令都可以用于启动仿真环境,在空间不够空旷的情况下,我们执行其中任意一个即可进行仿真测试。通过仿真环境,我们可以测试语音交互的执行效果,并进行机器人驱动功能的调试。

如果您想在实际环境中用语音控制机器人的话,还需要运行以下指令来启动实际的驱动控制节点。

roslaunch handsfree_hw handsfree_hw.launch//驱动控制节点

我们建议您先学习后续的的详细教程,通过修改一些代码的参数,并进行仿真测试来了解代码功能,最后再对机器人进行实际环境下的控制。

下面是一个科大讯飞的错误码信息查询,如果在调用科大讯飞的时候报错了相关的错误码,可以通过这个链接查询。
科大讯飞错误码信息查询

results matching ""

    No results matching ""