热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

(原创)用讯飞语音实现人机交互的功能

目前在做一款车载的项目,其中有一个需求是在开车的时候实现人与手机的对话,全过程不需要用手,只用语音操控。这个就类似于人与机器人的对话,机器人在后台一直待命,用户说话机器人做出对应的反映。但由于用户手

目前在做一款车载的项目,其中有一个需求是在开车的时候实现人与手机的对话,全过程不需要用手,只用语音操控。

这个就类似于人与机器人的对话,机器人在后台一直待命,用户说话 机器人做出对应的反映。

但由于用户手机电源的宝贵性,又不能让用户一直开着录音监听,这样很耗费资源。因此使用了讯飞语音提供的唤醒功能。

具体怎么做呢?

看一张流程图吧:这张流程图使用了讯飞的大部分技术(语音唤醒、语音唤醒+命令词识别、语义识别、语音合成),不废话,看图

流程图已经写的很清晰了,简单介绍下

在程序启动的时候先启动唤醒,这个时候用户说唤醒词就会将机器唤醒,并 聆听命令。但如果这个时候有播报信息的话会优先播报信息,播报的时候会将唤醒暂停,播报完成后再启动唤醒。这么做有一个重要的原因是讯飞的唤醒是一直占用录音资源的,而这个时候去播报语音会断断续续,听说这个可以设置,但播报的时候用于一般也不会去说唤醒词。

讯飞的唤醒有两种模式:单纯的唤醒和唤醒+命令词识别

单纯的唤醒会有一个唤醒成功的回调,比较简单

而唤醒+命令词识别不仅能够唤醒,如果你在说唤醒词的同时说了一个命令,那么他也会识别这个命令,你可以很干脆的收到这个命令去执行,而不需要在启动什么语义识别后在执行命令了,这对用户来说也是很爽的。

但是命令词有一定的限制,就是命令词使用之前必须先构建语法,而命令词的内容必须得是提前知道的。但是如果用户说了一个 石河子大学怎么走,这个命令在你的命令词构建的语法文件里没有!怎么办?这时候你就得提示用户让用户去语义输入了。

所以我这里的构想是:用户说命令词,启动唤醒,然后识别命令词。识别命令词成功执行命令,识别命令词错误启动语义识别。

这有个缺点就是用户说了唤醒词+语义识别的内容,语义识别的内容被命令词消耗掉了,用户只有再说一次语义识别的内容才可以识别语义。

为了避免这个问题,我们在唤醒词识别后,如果命令词不能识别的时候,用合成语音提示以下用户“请问有什么可以帮您”,这个就代表机器没有识别到用户刚才的语义内容,需要 用户重新说,我是不是很奸诈o(∩_∩)o 

接下来就是语义识别了,这个没什么说的,主要的一点就是如果用户不说话你要一直让它保持录音状态吗?当然不行啊,这多耗电啊!为了帮用户省电,我还设计了一个用户不说话20s自动进入等待唤醒的状态的流程。20s怎么来?使用时间戳啊!就是每次用户命令识别成功或者唤醒成功的时候记录一个时间戳。然后下次再启动语义识别前先判断当前时间和时间戳时间是否相差大于20s,如果小于20s则继续启动语义识别,如果大于20s则启动唤醒,准备让用户说命令词来唤醒吧。

好了,差不多了。不要问我为什么不一直让用户说唤醒词再执行对应的命令。如果你要干某一件事情之前总是还要说唤醒词,我估计你会疯掉的,即使你不疯别人也会认为你是神经病的。没有贬义,开玩笑,o(∩_∩)o 哈哈

 

 

我的github地址:https://github.com/dongweiq/study

欢迎关注,欢迎star o(∩_∩)o 。有什么问题请邮箱联系 dongweiqmail@gmail.com qq714094450


推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细介绍了如何在 Spring Boot 应用中通过 @PropertySource 注解读取非默认配置文件,包括配置文件的创建、映射类的设计以及确保 Spring 容器能够正确加载这些配置的方法。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 本文基于对相关论文和开源代码的研究,详细介绍了LOAM(激光雷达里程计与建图)的工作原理,并对其关键技术进行了分析。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍如何使用 Sortable.js 库实现元素的拖拽和位置交换功能。Sortable.js 是一个轻量级、无依赖的 JavaScript 库,支持拖拽排序、动画效果和多种插件扩展。通过简单的配置和事件处理,可以轻松实现复杂的功能。 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
author-avatar
2702934635_941
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有