带你玩转OpenHarmony AI:打造智能语音子系统

简介

AI时代,智者当先,判断一个终端设备是否智能,语音能力是必不可缺的。智能家居、智慧厨房、智能汽车等等,一切衣食住行都在往智能方向发展,那我们该如何在OpenAtom OpenHarmony(简称“OpenHarmony”)系统现有的能力下,搭建一套完整的语音子系统呢?

本文介绍了博泰车联网的研发同学如何搭建一套属于OpenHarmony的语音子系统CarVoiceAssistant,并以车载交互的形态研发语音助理项目的过程。

效果展示

开发环境

硬件平台:DAYU200

系统版本:OpenHarmony 3.1 Release

开发语言:C++,JS,eTS

IDE:VS Code、DevEco Studio

功能介绍

交互流程介绍

本样例包含两个关键能力库:QGWebRTCVAD,用作有效音频检测和截取;QGPocketSphinx,用作唤醒词训练和识别,主要流程如下:

设备唤醒之后,需要持续采集用户音频数据,并传输给博泰QingAI云端,做持续识别和最终语义识别,识别之后客户端根据语义做具体动作执行 。

两步带你实现语义助理集成

1.语音子系统集成

(1)下载语音助理项目代码
(2)解压【data.zip】文件(…/…/dev/team_x/PATEO_CarVoiceAssistant/data.zip)
(3)使用hdc工具将data中的文件发送到OpenHarmony系统中

#1. 将动态库和资源文件发送到OpenHarmony系统中# 如果提示Read only system;进入OH系统后执行:"mount -o rw,remount /"命令后再发送文件hdc_std.exe file send voice_assistant_service.xml /system/profile/hdc_std.exe file send libcarvoiceassistant.z.so /system/lib/module/libcarvoiceassistant.z.sohdc_std.exe file send libvoiceassistant_service.z.so /system/lib/libvoiceassistant_service.z.sohdc_std.exe file send libpocketsphinx.z.so /system/lib/module/libpocketsphinx.z.sohdc_std.exe file send libps_vad.z.so /system/lib/module/libps_vad.z.sohdc_std.exe file send libvoicecloud.z.so /system/lib/libvoicecloud.z.sohdc_std.exe file send voice_assistant_service.cfg /system/etc/init/#在系统/system/etc/下,创建目录pocketsphinx; 创建目录命令: mkdir /system/etc/pocketsphinxhdc_std.exe file send voice_tip.mp3 /system/etc/pocketsphinx/hdc_std.exe file send zh.tar /system/etc/pocketsphinx/#在OpenHarmony系统中解压zh.tartar xvf zh.tar#确保/system/etc/pocketsphinx/下文件目录结构如下:├── zh│   ├── zh│   │   ├── feat.params│   │   ├── feature_transform│   │   ├── mdef│   │   ├── means│   │   ├── mixture_weights│   │   ├── noisedict│   │   ├── transition_matrices│   │   └── variances│   ├── zh_cn.dic│   └── zh_cn.lm.bin├── voice_tip.mp3#重启系统

2.语音助理App集成

(1)引入语音助理声明文件

import carvoiceassistant from '@ohos.carvoiceassistant'
// 获取语音助理管理类
let voiceManager = carvoiceassistant.getManager();

(2)开启唤醒

voiceManager.enableWakeUp()

(3)注册热词

voiceManager.registerHotwords(JSON.stringify(hotwords))

(4)经纬度设置,用于云语音定位地理位置;例如“今天天气怎么样?”语义可以返回设置的经纬度地区的天气信息

voiceManager.setCoord(23.025978, 113.754969)

(5)监听回调,可以监听识别状态、语义解析回调、TTS播报状态

voiceManager.on(carvoiceassistant.EventType.VoiceAssistantEventTypeRecognizeStateChanged, (err, data) => {this.isRecognizing = data['isRecognizing']if (this.isRecognizing) {this.voiceText = "我正在听..."} else if (this.voiceText == "我正在听...") {this.voiceText = ''}})voiceManager.on(carvoiceassistant.EventType.VoiceAssistantEventTypeAsrResult, (err, data) => {let json: AsrModel = JSON.parse(data['result'])...})voiceManager.on(carvoiceassistant.EventType.VoiceAssistantEventTypeTTSPlayStateChanged, (err, data) => {let isPlaying = data["isPlaying"]if (isPlaying == false) {if (this.needDeclare) {this.isUserStopRecognizing = false;this.needDeclare = false;voiceManager.startRecognize();}this.voiceText = '';}})}

(6)识别接口

voiceManager.startRecognize(); //开始识别
voiceManager.stopRecognize(); //停止识别

以上步骤完成后,你也就完成了OpenHarmony系统下语义能力集成。

总结

通过本篇文章介绍,您对OpenHarmony系统下CarVoiceAssistant项目功能应该有了初步的了解。

为了帮助到大家能够更有效的学习OpenHarmony 开发的内容,下面特别准备了一些相关的参考学习资料:

OpenHarmony 开发环境搭建:https://qr18.cn/CgxrRy

《OpenHarmony源码解析》:https://qr18.cn/CgxrRy

  • 搭建开发环境
  • Windows 开发环境的搭建
  • Ubuntu 开发环境搭建
  • Linux 与 Windows 之间的文件共享
  • ……

系统架构分析:https://qr18.cn/CgxrRy

  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调度子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……

OpenHarmony 设备开发学习手册:https://qr18.cn/CgxrRy

在这里插入图片描述

OpenHarmony面试题(内含参考答案):https://qr18.cn/CgxrRy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未来十年,IT行业的无限可能!

未来十年,IT行业的无限可能! 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学…

多联机分户计费控制系统

中央空调多联机分户计费控制系统,针对国内常见几种品牌的多联机空调系统实行,远程控制与计费管理。系统采用MQTT网络协议,以订阅/发布模式实行设备感知,实现对室外机、室内机的状态监测、实时故障报警、累计分摊费用的实时数据传导…

AI - 各类AI针对Excel分析对比

一个水果销量表,Excel包含多个年份sheet,需要提取某个品种的水果每年的销量,看看几个AI的分析结果吧 1、文心一言3.5(不支持Excel) 不支持上传Excel文件 2、 通义千问2.5(完成★) 顺利完成…

C++-函数

函数(Function):是一个提前封装好的、可重复使用的、完成特定功能的独立代码单元。 特点:提前封装、可重复使用的、完成特定功能 将针对特定功能的、有重复使用需求的代码,提前封装到函数内, 在需要的时候…

游戏陪玩/在线租号/任务系统网站源码

源码介绍 游戏陪玩系统/在线租号系统/小姐姐陪玩任务系统/网游主播任务威客平台源码/绝地吃鸡LOL在线下单/带手机端/声优线上游戏任务系统网站源码 界面美观,功能齐全,已对接支付,安装教程放源码压缩包里了! 界面截图 源码下载 https://download.csdn.net/download/huayula…

【计算机网络原理】浅谈应用层协议的自定义和传输层UDP协议的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

如何在cPanel面板中开启双因素身份验证

本周有一个客户,购买Hostease的主机, 客户购买的是Linux虚拟主机,带cPanel面板的。询问我们的在线客服,如何加强他的cPanel的安全性。cPanel的双因素身份验证功能可以帮助帮客户加固安全性。 双因素身份验证(2FA)是一种增强安全性…

【虚拟机软件】 VMware Workstation Pro 17 新建 Linux 虚拟机教程(CentOS 7 版本)

文章目录 下载安装 VMware Workstation Pro 17 软件下载 Linux 的 ISO 映像文件Linux版本选择 新建虚拟机准备配置新建安装 后续设置文章导航 我是一名立志把细节说清楚的博主,欢迎【关注】🎉 ~ 原创不易, 如果有帮助 ,记得【点赞…

slam14讲(第8讲、前端里程计)LK光流、直接法

直接法的引出 因为第7讲大部分都是讲特征点法,通过提取orb特征点和点的描述子,来构建两帧图像之间的特征点对应关系。这种方法会有缺点: 关键点和描述子提取计算耗时,如果相机的频率高,则slam算法大部分耗时被占。特…

【MySQL精通之路】InnoDB(10)-行格式

目录 1.表数据结构 1.1 聚集索引数据结构 1.2 辅助索引数据结构 2.行格式 2.1 REDUNDANT行格式 2.2 REDUNDANT存储特性 2.3 COMPACT行格式 2.4 COMPACT存储特性 2.5 DYNAMIC行格式 2.6 DYNAMIC存储特性 2.7 COMPRESSED行格式 2.8 COMPRESSED存储特性 3.定义表格的…

数组-区间合并

一、题目描述 二、题目思路 这里提供满足基本要求的解题思路: 1.先对列表内按照start大小升序排序,这里创建Comparator接口的实现类,重写compare方法。 2.遍历intervals,设置laststart、lastend两个变量与当前区间相比较&#…

Ansible实战YAML语言完成apache的部署,配置,启动全过程

🏡作者主页:点击! 🏝️Ansible专栏:点击! ⏰️创作时间:2024年5月24日15点59分 目录 💯趣站推荐💯 🎊前言 ✨️YAML语言回顾 🎆1.编写YAML文…

k近邻和kd树

K近邻 选取k值的时候可以采用交叉验证的方法 一般采用欧氏距离 kd树 采用树这个特殊的数据结构来实现k近邻算法 先假设是二维的情况 下面讲解kd树的完整构造过程 找这个中位数是按照每棵子树来创建的 前提是已经有了一棵kd树,然后来一个实例点

Python UDP编程简单实例

TCP是建立可靠的连接,并且通信双方都可以以流的形式发送数据。 相对于TCP,UDP则是面向无连接的协议,不需要建立连接,只需要知道对方IP地址和端口号,就可以直接发送数据包。但是只管发送不保证到达。 虽然UDP传输数据…

Docker快速部署Seata的TC服务以及微服务引入Seata教程

目录 一、使用docker部署Seata的TC服务 1、拉取TC服务镜像 2、创建并运行容器 ​3、修改配置文件 4、在Nacos中添加TC服务的配置 5、重启TC服务 二、微服务集成Seata 1、引入依赖 2、修改配置文件 Seata是阿里的一个开源的分布式事务解决方案,能够为分布…

STM32学习和实践笔记(31):输入捕获实验

1.输入捕获介绍 在定时器中断实验章节中我们介绍了通用定时器具有多种功能,输入捕获就是其中一种。STM32F1除了基本定时器TIM6和TIM7,其他定时器都具有输入捕获功能。输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,…

Redis系统架构中各个处理模块是干什么的?no.19

Redis 系统架构 通过前面的学习,相信你已经掌握了 Redis 的原理、数据类型及访问协议等内容。本课时,我将进一步分析 Redis 的系统架构,重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis…

SSMP整合案例第一步 制作分析模块创建与开发业务实体类

制作分析 我们要实现一个模块的增删改查 实际开发中mybatisplus用的不多,他只能对没有外键的单表进行简单的查询 但在这个案例中我们还是选择mybatisplus开发 模块创建 我们把所有服务器都放在一起 就不用前后端分离 我们尝试用后端开发进行全栈开发 新建项目添…

Thinkphp3.2.3网站后台不能访问如何修复

我是使用Thinkphp3.2.3新搭建的PHP网站,但是网站前台可以访问,后台访问出现如图错误: 由于我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板,对于上述出现的问题不清楚如何处理,因此联系Hostease的…

(3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)

目录 一、磁共振快速采集技术基础 1.K空间的基本特点 2.快速成像的理由: 3.快速成像的硬件要求: 二、磁共振快速采集技术 1.采集更少的相位编码线 2.平行采集技术PAT 3.其他与快速采集有关的技术 1)部分回波技术 2)频率…