【拆·應(yīng)用】是為開源鴻蒙應(yīng)用開發(fā)者打造的技術(shù)分享平臺,是匯聚開發(fā)者的技術(shù)洞見與實(shí)踐經(jīng)驗(yàn)、提供開發(fā)心得與創(chuàng)新成果的展示窗口。誠邀您踴躍發(fā)聲,期待您的真知灼見與技術(shù)火花!
引言
本期內(nèi)容由AI Model SIG提供,介紹了在開源鴻蒙中,利用sherpa_onnx開源三方庫進(jìn)行ASR語音識別與TTS語音合成應(yīng)用開發(fā)的流程。
ASR/TTS介紹
ASR也就是自動(dòng)語音識別(Automatic Speech Recognition),其主要作用是把人類語音里的詞匯內(nèi)容轉(zhuǎn)變?yōu)橛?jì)算機(jī)能夠讀取的文本形式。
TTS也就是文本轉(zhuǎn)語音(Text-to-Speech),它主要的功能是把計(jì)算機(jī)里以文本形式存在的信息轉(zhuǎn)變成人耳可聽見的語音。
ASR/TTS有著廣泛的用途,例如語音助手聊天、設(shè)備控制、新聞播報(bào)、有聲閱讀等。
Sherpa_onnx介紹
sherpa-onnx是一個(gè)開源語音處理工具包,具有輕量級、跨平臺和高性能的語音識別推理能力。它基于ONNX Runtime,支持CPU/GPU加速,且內(nèi)存占用低、延遲小,適合實(shí)時(shí)流式語音處理。它兼容多種 端到端語音模型(如Transformer、RNN-T),提供簡潔的C++/Python API,并支持動(dòng)態(tài)斷句和流式識別,開箱即用。相比傳統(tǒng)方案(如Kaldi),sherpa_onnx依賴更少、部署更簡單,特別適合 移動(dòng)端、離線語音助手、實(shí)時(shí)字幕等場景兼顧效率與易用性。
sherpa_onnx已經(jīng)移植到開源鴻蒙,直接支持ArkTS接口,本示例用到的接口如下:
開發(fā)準(zhǔn)備
1.環(huán)境搭建:確保安裝了ArkUI開發(fā)所需的IDE,如DevEco Studio,并配置好相應(yīng)的開發(fā)環(huán)境,包括SDK(本示例Api11及以上)版本等。
2.了解ArkUI框架特性:熟悉ArkUI的布局和組件使用方法,例如文本輸入框用于接收用戶輸入,按鈕組件用于觸發(fā)ASR語音識別操作等。還要了解ArkUI的數(shù)據(jù)綁定機(jī)制,方便將ASR識別結(jié)果和TTS合成狀態(tài)等信息實(shí)時(shí)顯示在界面上。
示例界面設(shè)計(jì)
底部欄:語音采集與文本輸入切換按鈕,點(diǎn)擊切換。
中間區(qū):文本顯示區(qū),呈現(xiàn)識別后文本和輸入內(nèi)容。
頭部欄:標(biāo)題、語音播放按鈕(播放中間區(qū)域文本)、設(shè)置按鈕(語速設(shè)置和聲音模型切換)。
示例功能邏輯
示例基于sherpa_onnx三方庫開發(fā),此庫在OpenHarmony三方庫中心倉下載安裝,鏈接如下:
https://ohpm.openharmony.cn/#/cn/detail/sherpa_onnx
以下所展示的是本示例的流程圖,該流程圖涵蓋了從Vad聲音活動(dòng)檢測的初始化階段,音頻采集器與渲染器初始化過程,接著是ASR(自動(dòng)語音識別)模型和TTS(文本到語音)模型的加載,直至最終成功實(shí)現(xiàn)語音識別與語音生成的流程。
ASR模型解析核心實(shí)現(xiàn)
1.初始化Vad
Vad聲音活動(dòng)檢測(Voice activity detection),也稱為語音活動(dòng)檢測或語音檢測(speech activity detection或者speech detection),是檢測人類語音存在與否的技術(shù),主要用于語音處理。Vad的主要用途在于說話人分割(speaker diarization)、語音編碼(speech coding)和語音識別(speech recognition),初始化vad過程如下:
2.初始化音頻采集器
初始化一個(gè)音頻采集器,用于從麥克風(fēng)硬件獲取音頻數(shù)據(jù),注冊回調(diào)事件micCallback將音頻數(shù)據(jù)存儲到ampleList數(shù)組中。
3.加載ASR模型
語音識別需要加載一個(gè)ASR模型,用戶可依據(jù)自身業(yè)務(wù)需求下載合適的模型,模型下載地址:
https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models。
本示例使用的是sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17模型,支持中文、英文、日文、韓文以及粵語五種語言。
將解壓后的模型文件放入指定路徑中。
路徑:src/main/resources/rawfile
創(chuàng)建語音識別實(shí)例OfflineRecognizer,加載該模型。
4.語音解析成文字
“按住說話”按鈕,當(dāng)手指按下時(shí)采集音頻數(shù)據(jù),觸發(fā)micCallback回調(diào)保存數(shù)據(jù),手指抬起時(shí)終止采集,隨后,將數(shù)據(jù)經(jīng)由worker線程發(fā)送至子線程予以解析。
子線程在獲取音頻數(shù)據(jù)之后,將其解析為文字,最終呈現(xiàn)在應(yīng)用界面上,具體解析流程如下:
TTS模型解析核心實(shí)現(xiàn)
1.初始化音頻渲染器
初始化一個(gè)音頻渲染器,用于將音頻數(shù)據(jù)輸出到設(shè)備揚(yáng)聲器。通過配置音頻參數(shù)和渲染屬性,確保音頻格式與硬件兼容,并建立數(shù)據(jù)寫入的回調(diào)機(jī)制audioPlayCallback。
2.加載TTS模型
語音合成需要加載一個(gè)TTS模型,用戶可依據(jù)自身業(yè)務(wù)需求下載合適的模型,模型下載地址:
https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models。
其中有多種文本轉(zhuǎn)語音模型,本示例選用了6種TTS模型,用在設(shè)置界面切換不同的聲音。
將解壓后的模型文件放到指定的路徑下。
路徑:src/main/resources/rawfile
創(chuàng)建語音識別實(shí)例OfflineTts,加載該模型:
加載完TTS模型后,獲取模型相關(guān)信息,音頻采樣率、說話人(音色)數(shù)量,CPU線程數(shù)(本示例為雙線程)。
3.文本解析成音頻
點(diǎn)擊播放圖標(biāo),播放或暫停可將中間區(qū)域的文字以語音形式予以播放。
將文本信息通過worker發(fā)送至子線程進(jìn)行語音合成;
text為輸入文本,當(dāng)界面上無文字時(shí)默認(rèn)“你好”,有文字時(shí),將文字以句號分割,使播放句子有停頓效果;
sid說話人音色(模型相關(guān)信息numSpeakers)參數(shù)選擇(通常0 ≤ sid ≤ numSpeakers);
speed語速,默認(rèn)語速為1,可在設(shè)置界面調(diào)節(jié)。
使用tts.generateAsync方法把文字轉(zhuǎn)化為語音,TtsInput為TTS合成輸入?yún)?shù),文字轉(zhuǎn)成語音后,數(shù)據(jù)由worker回傳至主線程。
接收到語音數(shù)據(jù)后,將數(shù)據(jù)存儲在sampleBuffer數(shù)組,然后通過this.audioRenderer.start()觸發(fā)語音播放。
效果展示
ASR/TTS示例應(yīng)用代碼
代碼倉鏈接:https://gitcode.com/openharmony-sig/applications_ai_model_samples/tree/master/AsrAndTts
AI Model SIG簡介
AI Model SIG 是經(jīng)開源鴻蒙PMC(項(xiàng)目管理委員會)正式批準(zhǔn)成立的特別興趣小組(SIG),核心目標(biāo)是豐富開源鴻蒙生態(tài)下的大小應(yīng)用模型,并提供端到端的實(shí)踐范例,為開發(fā)者構(gòu)建 AI 應(yīng)用提供高效支撐。
未來,AI Model SIG 將圍繞三大方向持續(xù)深耕:
聚焦模型推理框架與多推理后端的深度適配,夯實(shí) AI 能力底層基座;
推進(jìn)多模態(tài)模型的生態(tài)適配與優(yōu)化,拓展 AI 應(yīng)用場景邊界;
將技術(shù)成果分享出來,確保廣大開發(fā)者可便捷獲取與使用。
同時(shí),小組將聯(lián)合全球開發(fā)者協(xié)同共建,持續(xù)完善開源鴻蒙 AI 技術(shù)體系,助力打造更具競爭力的全場景智能終端生態(tài)。
如果您對開源鴻蒙AI技術(shù)感興趣,歡迎加入AI Model SIG,一起探索萬物智聯(lián)的未來!
-
語音識別
+關(guān)注
關(guān)注
39文章
1795瀏覽量
115021 -
開源
+關(guān)注
關(guān)注
3文章
3874瀏覽量
45169 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2736瀏覽量
45005
原文標(biāo)題:拆·應(yīng)用丨第3期:開源鴻蒙語音識別及語音合成應(yīng)用開發(fā)
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
明遠(yuǎn)智睿SSD2351開發(fā)板:語音機(jī)器人領(lǐng)域的變革力量
語音合成芯片與語音芯片對比
語音合成芯片與語音芯片對比
語音合成IC與語音IC的兩三事
語音合成IC選型之經(jīng)驗(yàn)分享
【大聯(lián)大品佳 Nuvoton ISD9160語音識別試用申請】家居養(yǎng)老語音求助系統(tǒng)
【HarmonyOS HiSpark AI Camera】居家語音智能識別控制
使用語音控制的鴻蒙小車開發(fā)流程
使用語音控制的鴻蒙小車開發(fā)流程
怎樣去設(shè)計(jì)基于STM32F429的語音識別交互系統(tǒng)
【1024平頭哥開發(fā)套件開發(fā)體驗(yàn)】 語音識別開發(fā)板的比較
[CB5654智能語音開發(fā)板測評] 語音識別開發(fā)板的比較
使用Arduino進(jìn)行語音識別和合成

評論