我是靠谱客的博主 清脆电话,最近开发中收集的这篇文章主要介绍语音离线命令词识别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近帮别人的车载系统整了一个小项目,分享一下最原始的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,机器人语音系统的文章:
机器人语音系统项目

最后

以上就是清脆电话为你收集整理的语音离线命令词识别的全部内容,希望文章能够帮你解决语音离线命令词识别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部