简介

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项目功能应该有了初步的了解。如果您对本篇文章内容以及所实现的Demo感兴趣,可以根据本篇文章介绍自行下载CarVoiceAssistant源码进行研究和使用。同时也欢迎更多开发者与我们共享开发成果,分享技术解读与经验心得。

OpenHarmony PATEO_CarVoiceAssistant仓库地址

https://gitee.com/openharmony-sig/knowledge_demo_travel/tree/master/docs/PATEO_CarVoiceAssistant

参考链接

博泰OpenHarmony语音助理

https://gitee.com/openharmony-sig/knowledge_demo_travel/tree/master/docs/PATEO_CarVoiceAssistant

OpenHarmony知识体系工作组

https://gitee.com/openharmony-sig/knowledge

带你玩转OpenHarmony AI:打造智能语音子系统的更多相关文章

  1. AI中台——智能聊天机器人平台的架构与应用(分享实录)

    内容来源:宜信技术学院第3期技术沙龙-线上直播|AI中台——智能聊天机器人平台 主讲人:宜信科技中心AI中台团队负责人王东 导读:随着“中台”战略的提出,目前宜信中台建设在思想理念及架构设计上都已经取 ...

  2. jQuery打造智能提示插件二(可编辑下拉框)

    在上一篇 jQuery打造智能提示插件 上改进,增加下拉按钮,修复点击下拉区域外不隐藏BUG 效果 下拉按钮素材: js封装,注意红色部分为BUG修复,然后传入boxwidth不带px: /* /// ...

  3. Google发布机器学习平台Tensorflow游乐场~带你玩神经网络(转载)

    Google发布机器学习平台Tensorflow游乐场-带你玩神经网络 原文地址:http://f.dataguru.cn/article-9324-1.html> 摘要: 昨天,Google发 ...

  4. 带新手玩转MVC——不讲道理就是干(上)

    带新手玩转MVC——不讲道理就是干(上) 前言:这几天更新了几篇博客,都是关于Servlet.JSP的理解,后来又写了两种Web开发模式,发现阅读量还可以,说明JSP还是受关注的,之前有朋友评论说JS ...

  5. 带你玩转Visual Studio

    带你玩转Visual Studio 带你新建一个工程 工程目录下各文件的含义 解决方案与工程 在这之前先了解一个概念:解决方案与工程. 解决方案(Solution):一个大型项目的整体的工作环境: 工 ...

  6. 来吧!带你玩转 Excel VBA

    来吧!带你玩转 Excel VBA 从错失良机到艰辛的DOS征程,从坎坷购机自学路到转机起程,从爱好到事业,他从一个完全不懂电脑的人到VBA高级应用者,一切全是自学…… 我是罗刚君,来自四川的一个小县 ...

  7. 转: 带你玩转Visual Studio——带你理解多字节编码与Unicode码

    上一篇文章带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑帮我们理解了Windows中的各种类型C/C++运行时库及它的来龙去脉,这是C++开发中特别容易误入歧途的 ...

  8. iOS开发——高级UI&带你玩转UITableView

    带你玩装UITableView 在实际iOS开发中UITableView是使用最多,也是最重要的一个控件,如果你不会用它,那别说什么大神了,菜鸟都不如. 其实关于UItableView事非常简单的,实 ...

  9. acdream 瑶瑶带你玩激光坦克 (模拟)

    瑶瑶带你玩激光坦克 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 256000/128000KB (Java/Others) Submi ...

  10. Android SurfaceView实战 带你玩转flabby bird (下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43063331,本文出自:[张鸿洋的博客] 1.概述 在Android Surfa ...

随机推荐

  1. centos docker服务问题

    概述 docker的应用版本正式上线,结果一上线就出各种幺蛾子. 本文档主要介绍centos系统安装docker和启动的问题解决方法. 环境 docker registry:2 centos 6 &a ...

  2. 【Azure 应用服务】添加自定义域时,Domain ownership 验证无法通过 

    问题描述 在Azure App Service添加自定义域名时,遇见了Domain ownership 验证无法通过的问题? 问题解决 因为DNS中配置App Service默认域名和自定义域名的CN ...

  3. linux基本文件命令复习笔记

    https://www.bilibili.com/video/BV1ex411x7Em/?p=4&spm_id_from=pageDriver&vd_source=92305fa48e ...

  4. Java 创建类,对象+调用方法

    1 //测试类 2 public class PersonTest 3 { 4 public static void main(String[] args) 5 { 6 //创建Person类的对象 ...

  5. Django 初步使用

    Django 框架系列 目录 Django 框架系列 一. 安装启用 1.1 主流web框架概述 1.2 安装版本 1.3 启动的两种方式 1)命令行创建 2)pycharm创建 3)两种方式的区别 ...

  6. 超低延时超低功耗的2.4G无线音频收发解决方案特色解析

    为什么是我们?   团队从做芯片开始,一直在无线领域这个圈子里面混.从刚开始的wifi芯片,到后面的bt芯片,再到后面的音频算法,再到后面一起创业,做无线音频解决方案.随着和客户关系的逐渐深入,团队慢 ...

  7. .Net Core 你必须知道的source-generators

    源生成器是 C# 9 中引入的一项功能,允许在编译过程中动态生成代码. 它们直接与 C# 编译器集成(Roslyn)并在编译时运行,分析源代码并根据分析结果生成附加代码. 源生成器提供了一种简化的自动 ...

  8. 5G+实时云渲染,让元宇宙应用触手可及

    从2021年初被称为"元宇宙第一股"的罗布乐思(Roblox)正式在纽交所上市,到2021年10月Facebook更名为"Meta"宣布进军元宇宙,再到如今各大 ...

  9. 为什么ASP.NET Core的路由处理器可以使用一个任意类型的Delegate

    毫不夸张地说,路由是ASP.NET Core最为核心的部分.路由的本质就是注册一系列终结点(Endpoint),每个终结点可以视为"路由模式"和"请求处理器"的 ...

  10. 记录--前端如何优雅导出多表头xlsx

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 xlsx导出是比较前后端开发过程中都比较常见的一个功能.但传统的二维表格可能很难能满足我们对业务的需求,因为当数据的维度和层次比较多 ...