语音离线命令词识别
来源:互联网 发布:java web 前后端分离 编辑:程序博客网 时间:2024/06/04 19:04
最近帮别人的车载系统整了一个小项目,分享一下最原始的Demo!
**说明:**XF的语音服务很多,类似提供语音服务的国内巨头还有百度!
客户需求:实现简单的语音控制指令【听音乐、暂停、下一首、上一曲、声音大一点、声音小一点】,程序入口:打开某某应用,嵌入到项目中实现TTS服务,人机交互。
如下简单的实现了命令控制,使用XF的离线命令词识别+TTS服务。
第一步:编写离线命令词文件,遵守它的语法规则
BNF文件如下:
#BNF+IAT 1.0 UTF-8;!grammar call;!slot <usOprate>;!slot <usAccess>;!slot <FuncTemp>;!slot <FuncModel>;!slot <ModelType>;!slot <acModel>;!start <acStart>;<acStart>:<Model>;<Model>: <ModelType>;<ModelType>:暂停!id(101)|上一曲!id(102)|下一曲!id(103)|关机!id(104)|大点声!id(105)|大声!id(106)|小点声!id(107)|小声!id(108)|后退!id(109)|天气!id(110)|天气!id(111)|唱首歌!id(112)|唱歌!id(113)|讲故事!id(114)|打开地图!id(115)|打电话!id(116)|打开相册!id(117)|音乐!id(118)|拍照!id(119)|QQ!id(120)|扣扣!id(121)|口口!id(122)|叩叩!id(123)|微信!id(124);
配上语法详解:
第二步:接口调用
封装XF的离线命令词识别和和TTS服务,基于接口的实现而已。当用户说的话是命令词的时候,就直接触发命令执行相关业务逻辑。系统始终监听声音。
采用多态思想,让抽象方法实现接口,使得具体运用时候可以不实现接口中所有的方法,而且在抽象类中实现想实现的方法,需要时候,直接用抽象类的实例直接调用就OK。
部分代码如下:
public interface IVoiceCommandListener { // 打电话 void onCallSomebody(); // 打开的相册 void onViewPhoto(); // 我想听歌 void onPlayMusic(); // 查询天气命令 void onViewQQ(); // 拍照、照相 public void onTakePhoto(); // 微信 public void onViewWX();}
public abstract class VoiceCmdListener implements IVoiceCommandListener { private Context mContext; public VoiceCmdListener(Context context) { mContext = context; } @Override public void onCallSomebody() { String pkg = "com.example.news.movenews"; String cls = "com.wxzh.news.MainActivity"; ComponentName componet = new ComponentName(pkg, cls); Intent intent = new Intent(); intent.setComponent(componet); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); }
实例化:
voiceCommandListener = new VoiceCmdListener(UnderstanderService.this) { };
直接调用抽象类中实现的方法: voiceCommandListener.onPlayMusic();
此项目主要为最原始的测试的离线命令词+TTS服务的Demo,有非常大的借鉴的意义,项目已经运用到市场中去了。读者拿了之后直接更换资源即可测试,更改拓展项目。
项目下载地址
可参考前几天的demo,机器人语音系统的文章:
机器人语音系统项目
0 0
- 语音离线命令词识别
- Android离线语音识别
- pocketsphinxAdroid离线语音识别-入门
- android离线语音识别demo
- android离线语音识别demo
- android离线语音识别demo
- 用PocketSphinx做离线命令词识别
- Android下PocketSphinx的离线语音识别
- Android下PocketSphinx的离线语音识别
- Sphinx 离线语音识别研究(一)
- Android下PocketSphinx的离线语音识别
- Android离线语音识别(PocketSphinx)
- PocketSphinx For Android离线语音识别
- 【Android】灵云离线语音识别使用说明
- Hololens入门之语音识别(语音命令)
- Android-谷歌语音识别之离线识别(二)
- 讯飞语音——离线命令词识别
- 讯飞语音——离线命令词+语义识别
- 网络基本功(十):细说TCP确认机制
- libsvm使用注意事项(参数顺序)
- 网络基本功(十一):TCP窗口调整与流控
- 网络基本功(十二):细说Linux网络配置(上)
- 网络基本功(十三):细说Linux网络配置(下)
- 语音离线命令词识别
- dispatch_semaphore_t 信号量相关知识
- Android Service 之启动服务( startService() )
- 【其他】windows10下mysql5.7安装中的登录以及密码过期问题
- 内容提供者(ContentProvider)---获取联系人
- Atitit 单项功能开发 最佳实践规范 标准化流程attilax总结.docx
- Atitit orm优缺点 Hinaernate mybatis 区别。attilax总结
- Atitit Atitit 客户常见技术问题的解答.docx
- Android中内容观察者的使用---- ContentObserver类详解