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

news2025/1/12 1:02:44

简介

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.so
   hdc_std.exe file send libvoiceassistant_service.z.so /system/lib/libvoiceassistant_service.z.so
   hdc_std.exe file send libpocketsphinx.z.so /system/lib/module/libpocketsphinx.z.so
   hdc_std.exe file send libps_vad.z.so /system/lib/module/libps_vad.z.so
   hdc_std.exe file send libvoicecloud.z.so /system/lib/libvoicecloud.z.so
   hdc_std.exe file send voice_assistant_service.cfg /system/etc/init/
    
   #在系统/system/etc/下,创建目录pocketsphinx; 创建目录命令: mkdir /system/etc/pocketsphinx
   hdc_std.exe file send voice_tip.mp3 /system/etc/pocketsphinx/
   hdc_std.exe file send zh.tar /system/etc/pocketsphinx/
    
   #在OpenHarmony系统中解压zh.tar
   tar 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.coloradmin.cn/o/1687690.html

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

相关文章

海康监控web插件,跨域问题处理web-control

海康视频跨域问题处理web-control 海康监控视频,跨域处理,web-control修改案例 海康监控视频,跨域处理,web-control修改 海康监控,web-control,跨域播放,嵌套页面实现跨域播放 案例 能到做到…

【intel CPU】三代牙膏的对比

1、PC处理器的选择 制程工艺 传说的“intel7”,感觉就像老婆饼,并不是7nm。 2、12代到13代其实应该归为一代,那就是大核心不行就堆小核心 3、所以智能踢掉有小核的; 3.1、CPU规格 3.2 内存规格 3.3 封装规格 其他都是一样的; …

变量与常量

1.变量 数学中的定义: 变量:可变的数据称为变量 Java中定义: 内存中一块存储区域 该区域的数据可以在同一类型范围内不断变化 变量是程序中最基本的存储单元,包含了变量类型、变量名和存储的值 变量的作用就是在内存中保存…

uniapp微信小程序在ios端返回不显示弹窗的bug解决

这个问题其实是因为返回页面的时候弹的太快了导致的解决办法: 其实就是返回页面的弹窗加个延迟就好啦

新定义RD8T36P48点亮LED--汇编

其实汇编和C语言差不多,简单的东西用汇编挺好,中等及以上复杂度的程序还是C语言更灵活 直接在keil新建好工程,选好芯片型号和下载方式,再创建一个.asm文件并添加到工程, 工程创建完如图 工程配置 代码 ORG 0000HL…

Ubuntu中 petalinux 安装 移植linux --tftp/tftp-hpa服务的方法

Xilinx 文档 PetaLinux 指南:如何创建 PetaLinux 环境 (2019.1) PetaLinux工具参考指南 PetaLinux安装详解(Xilinx , linux, zynq, zynqMP) petalinux 2020.1安装教程 一、PetaLinux工具和库安装 PetaLinux 工具要求主机系统 /bin/sh 为“b…

【分享】3种方法取消PPT的“限制保护”

PPT如果设置了有密码的“只读方式”,每次打开PPT,都会出现对话框,提示需要输入密码才能修改文件,否则只能以“只读方式”打开。 以“只读方式”打开的PPT就会被限制,无法进行编辑修改等操作。那如果后续不需要“限制保…

搭建LNMP服务器

一、环境准备 Linux 采用 CentOS7 Nginx 采用 Nginx-1.24.0 安装目录/opt/nginx Mysql 采用 Mysql-5.7.23 安装目录/opt/mysql PHP 采用 PHP-7.3.5 安装目录/opt/php 用于测试环境,搭建在虚拟机上,只准备了一台虚拟机,所有服务都搭建在一…

代码随想录算法训练营第16天 |● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

文章目录 前言104.二叉树的最大深度思路知识点 方法一 递归法方法二 迭代法 559. n叉树的最大深度111.二叉树的最小深度思路方法一 后向遍历递归法方法二 迭代法 222.完全二叉树的节点个数思路方法一 当成普通二叉树来做方法二 利用完全二叉树的特性 总结 前言 所有的题目一刷…

最简单的,在mac笔记本上安装Unix-v6系统,进行“Unix内核源码剖析”

Unix V6 已经是 1975 年的系统了,但是其源代码拢共只有 1w 行左右,并且使用了 C 语言(K & R 之前的标准),还是现代操作系统的鼻祖,所以说是初学者最好的研究对象。 安装模拟器 brew install simh …

U-Mail邮件系统取得多项适配认证,全面支持国产化信创环境

随着信息技术的发展,信息化建设越来越深入到社会各个领域,成为驱动经济社会发展的重要力量。在此背景下,我国正加快构建国家信息安全保障体系,实现自主可控,形成安全可靠的信息技术体系。这正是我们所说的“信创”&…

Mac上安装多版本nodejs 并 随意切换node版本

Mac上安装多版本nodejs 并 随意切换node版本 1. 先查看当前版本2. 说明3. 安装 n 组件4. 根据需要安装其他版本的node4.1 查看node历史版本4.2 安装指定版本的node4.2.1 使用n 组件安装多版本4.2.2 n 组件常用命令 4.3 也可以安装node14 1. 先查看当前版本 如下:no…

26【构图】场景透视 —— 一点透视

1 一点透视更能体现纵深 2 图中的 消失点 透视线 视平线的位置 3 一点透视模型 蓝色的是消失点,根据消失点发射出无数的透视线 在PS中可以用简单的方法画出一点透视的透视线(通过多边形工具)

电脑视频如何压缩变小 mp4视频太大怎么压缩不影响画质

视频格式是指用于存储、编码、解码和播放数字视频内容的特定文件类型和结构。它定义了视频数据的压缩方式、存储布局以及播放参数,确保不同的设备和软件能够识别并正确处理视频文件。视频格式包括两大部分视频编码格式和容器格式。 视频太大的话有时候上传不了&…

Android Audio基础——AudioFlinger回放录制线程(七)

AndioFlinger 作为 Android 的音频系统引擎,重任之一是负责输入输出流设备的管理及音频流数据的处理传输,这是由回放线程 PlaybackThread 及其派生的子类和录制线程 RecordThread 进行的。 一、基础介绍 1、关系图 ThreadBase:PlaybackThread 和 RecordThread 的基类。 Re…

DDoS攻击的最新动态及市场趋势分析

随着数字化转型的加速和网络连接设备的增加,分布式拒绝服务(Distributed Denial of Service, DDoS)攻击已经成为全球网络安全领域的一大威胁。根据最新的市场研究报告,预计到2028年,DDoS防护软件市场的复合年增长率将达到14%以上,…

工作站虚拟化:RTX A5000的图形工作站实现多用户独立运行Siemens NX 设计软件

一、背景 Siemens NX 是由西门子数字工业软件(Siemens Digital Industries Software)开发的一款先进的集成计算机辅助设计(CAD)、计算机辅助制造(CAM)和计算机辅助工程(CAE)软件。它…

Linux:Ubuntu修改root密码

Linux:Ubuntu修改root密码 修改默认grub配置文件 rootshanxin:~# vim /etc/default/grub# 主要修改内容如下:GRUB_DEFAULT0 #GRUB_TIMEOUT_STYLEhidden 注释这一行 GRUB_TIMEOUT5 # 将这一行的时间改为5秒进行开启启动的grub文件的复写 rootshanxin:~…

618精选编程书单推荐:优质知识提升你的代码力

前言 在这个快速发展的技术时代,不断学习和提升自己的编程技能是每位程序员的必修课。今天,我为大家精心挑选了一系列编程技术书籍,它们将是你技术成长道路上的宝贵财富。 文章目录 前言编程之路:为何阅读书籍是不可或缺的书籍的…

vue连接mqtt实现收发消息组件超级详细

基本概念: MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级消息传输协议,专为低带宽、高延迟或不稳定的网络环境设计。以下是MQTT实现收发消息的基本原理: 客户端-服务器模型&#xff1a…