帶你玩轉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.pswp.cn/web/14237.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14237.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14237.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Java Stream API的map方法將包含Long類型ID的流轉換為String數組

在這個例子中,idList是一個包含Long類型ID的列表。我們使用stream()方法創建一個流,然后應用map(String::valueOf)方法將Long類型的ID轉換為String類型。最后,我們使用toArray(String[]::new)方法將流中的元素收集到一個新的String[]數組中。…

【spark001】SparkSQL內置函數手冊總結(更新中)

1.熟悉、梳理、總結下SparkSQL相關知識體系。 2.日常研發過程中使用較少,隨著時間的推移,很快就忘得一干二凈,所以梳理總結下,以備日常使用參考 3.歡迎批評指正,跪謝一鍵三連! 文章目錄 1.函數清單 1.函數清…

未來十年,IT行業的無限可能!

未來十年,IT行業的無限可能! 😄生命不息,寫作不止 🔥 繼續踏上學習之路,學之分享筆記 👊 總有一天我也能像各位大佬一樣 🏆 博客首頁 怒放吧德德 To記錄領地 🌝分享學…

Netty-時間輪

Netty-時間輪 歸檔 GitHub: Netty-時間輪 參考 Netty-時間輪 說明 其實 Netty 框架并沒有使用,其可做學習算法原理的參考 單元測試 public class HashedWheelTimerTest2 {public static void main(String[] args) {System.out.println("---------> &qu…

多聯機分戶計費控制系統

中央空調多聯機分戶計費控制系統,針對國內常見幾種品牌的多聯機空調系統實行,遠程控制與計費管理。系統采用MQTT網絡協議,以訂閱/發布模式實行設備感知,實現對室外機、室內機的狀態監測、實時故障報警、累計分攤費用的實時數據傳導…

AI - 各類AI針對Excel分析對比

一個水果銷量表,Excel包含多個年份sheet,需要提取某個品種的水果每年的銷量,看看幾個AI的分析結果吧 1、文心一言3.5(不支持Excel) 不支持上傳Excel文件 2、 通義千問2.5(完成★) 順利完成…

C++-函數

函數(Function):是一個提前封裝好的、可重復使用的、完成特定功能的獨立代碼單元。 特點:提前封裝、可重復使用的、完成特定功能 將針對特定功能的、有重復使用需求的代碼,提前封裝到函數內, 在需要的時候…

Linux(openEuler22.03) 定時備份任務 解決方案

目錄 定時備份與清理服務環境需求概述步驟詳解1. 配置 rsyncd 服務在 backup 服務器上配置 rsyncd 2. 在 nfs01 和 web01 上配置備份腳本腳本:backup_configs.sh配置定時任務 3. 在 backup 服務器上配置同步和清理腳本腳本:cleanup_backups.sh配置定時任…

游戲陪玩/在線租號/任務系統網站源碼

源碼介紹 游戲陪玩系統/在線租號系統/小姐姐陪玩任務系統/網游主播任務威客平臺源碼/絕地吃雞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算法大部分耗時被占。特…

com.alibaba.fastjson.JSONObject循環給同一對象賦值會出現“$ref“:“$[0]“現象問題

1、問題描述 有些場景下,我們會選擇用JSONObject代替Map來處理業務邏輯,但是使用JSONObject時有一個需要注意的地方:在處理JSONObject對象時,引用的com.alibaba.fastjson.JSONObject,在一個集合中,循環給這…

【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文…

centos 安裝nginx 并配置https ssl

進入你要安裝的目錄 一般是/usr/local/ wget https://nginx.org/download/nginx-1.24.0.tar.gz解壓安裝包:使用以下命令解壓下載的Nginx安裝包: tar -zxvf nginx-1.24.0.tar.gz在編譯和安裝Nginx之前,確保您的系統上已安裝了必要的編譯工具和…

flume channel和interceptor簡介及官方用例

一、Flume Channels channel是在代理上暫存事件的存儲庫。Source 添加事件,Sink 將其刪除。 1、Memory Channel 事件存儲在具有可配置最大大小的內存中隊列中。它非常適合需要更高吞吐量的流,但在agent發生故障時會丟失暫存數據 Property Name Defau…

k近鄰和kd樹

K近鄰 選取k值的時候可以采用交叉驗證的方法 一般采用歐氏距離 kd樹 采用樹這個特殊的數據結構來實現k近鄰算法 先假設是二維的情況 下面講解kd樹的完整構造過程 找這個中位數是按照每棵子樹來創建的 前提是已經有了一棵kd樹,然后來一個實例點