一、讯飞开放平台
1.1 语音听写SDK
讯飞开放平台 提供可供开发者的语音识别SDK,针对Linux系统下载对应版本的 语音听写(流式版)SDK
,解压文件如下所示,其中主要测试的是文件夹samples
中的iat_online_record_sample和tts_online_sample样例。
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_executable
和target_link_libraries
,c++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 包含 ‘停’ ):
小车停止