写点什么

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

  • 2022-12-23
    天津
  • 本文字数:2279 字

    阅读完需:约 7 分钟

带你玩转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.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开发者官方账号 2021-12-15 加入

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展

评论

发布
暂无评论
带你玩转OpenHarmony AI:打造智能语音子系统_OpenHarmony_OpenHarmony开发者_InfoQ写作社区