遥控四轮车(语音控制)

一、讯飞开放平台

1.1 语音听写SDK

讯飞开放平台 提供可供开发者的语音识别SDK,针对Linux系统下载对应版本的 语音听写(流式版)SDK,解压文件如下所示,其中主要测试的是文件夹samples中的iat_online_record_sample和tts_online_sample样例。

Linux_iat1226_tts_online 解压文件

1.2 样例使用

iat_online_record_sample是讯飞的的语音识别demo,使用方式如下

依赖配置,将共享库放置在系统库文件中
cd libs/x64       //32位系统选x86
sudo cp libmsc.so /usr/lib

//编译
cd samples/iat_online_record_sample/
source  64bit_make.sh         // 32位系统选32bit_make.sh 

//运行
cd bin/
./iat_online_record_sample

tts_online_sample 是文字转语音的demo,使用的方式类似。

二、SDK移植ROS系统

首先在ROS工程中创建功能包,catkin_create_pkg xxx roscpp std_msgs,再将iat_online_record_sample和tts_online_sample的代码复制进xxx包中的src、include文件夹中,主要算法不进行更改,只需要在添加ROS的通信架构,例如ROS的头文件,发布订阅信息之类的。例如对iat_online_record_sample的部分修改,

#include "ros/ros.h"
#include "std_msgs/String.h"

/**
.......
**/

// 初始化ROS
ros::init(argc, argv, "voiceRecognition");
ros::NodeHandle n;
ros::Rate loop_rate(10);

// 声明Publisher和Subscriber
// 订阅唤醒语音识别的信号
ros::Subscriber wakeUpSub = n.subscribe("voiceWakeup", 1000, WakeUp);   
// 发布信息
ros::Publisher voiceWordsPub = n.advertise<std_msgs::String>("voiceWords", 1000);  

/**
....  //iat_online_record_sample的算法
**/

std_msgs::String msg;
msg.data = g_result;  //g_result位语音识别的字符串
voiceWordsPub.publish(msg);

ros::spinOnce();

之后就是CMakeLists.txt部分,添加对应的add_executabletarget_link_librariesc++11的特性也要开启。

三、遥控四轮车

3.1 思路

通过iat_online_record_sample识别语音,然后对翻译出的文字进行关键字词的识别,不同的关键词对应小车的不同运动状态。后期还可以加入tts_online_sample,添加语音对话功能。

3.2 实现方式

当语音识别被激活时,麦克风开始获取语音信号,之后将语音识别处理成字符串data,最后根据data控制小车。

if (data 包含 ‘前’ ): 
    小车前进
else if (data  包含 ‘后’): 
    小车后退
else if (data  包含 ‘左’): 
    小车左转
else:if (data  包含 ‘右’): 
    小车右转
else:if (data 包含 ‘停’ ): 
    小车停止
基于语音控制小车

代码参考


   转载规则


《遥控四轮车(语音控制)》 kieranych 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录