0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于开源鸿蒙的语音识别及语音合成应用开发样例

OpenAtom OpenHarmony ? 来源:OpenAtom OpenHarmony ? 2025-08-25 14:26 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【拆·应用】是为开源鸿蒙应用开发者打造的技术分享平台,是汇聚开发者的技术洞见与实践经验、提供开发心得与创新成果的展示窗口。诚邀您踊跃发声,期待您的真知灼见与技术火花!

引言

本期内容由AI Model SIG提供,介绍了在开源鸿蒙中,利用sherpa_onnx开源三方库进行ASR语音识别与TTS语音合成应用开发的流程。

ASR/TTS介绍

ASR也就是自动语音识别(Automatic Speech Recognition),其主要作用是把人类语音里的词汇内容转变为计算机能够读取的文本形式。

TTS也就是文本转语音(Text-to-Speech),它主要的功能是把计算机里以文本形式存在的信息转变成人耳可听见的语音。

ASR/TTS有着广泛的用途,例如语音助手聊天、设备控制、新闻播报、有声阅读等。

Sherpa_onnx介绍

sherpa-onnx是一个开源语音处理工具包,具有轻量级、跨平台和高性能的语音识别推理能力。它基于ONNX Runtime,支持CPU/GPU加速,且内存占用低、延迟小,适合实时流式语音处理。它兼容多种 端到端语音模型(如Transformer、RNN-T),提供简洁的C++/Python API,并支持动态断句和流式识别,开箱即用。相比传统方案(如Kaldi),sherpa_onnx依赖更少、部署更简单,特别适合 移动端、离线语音助手、实时字幕等场景兼顾效率与易用性。

sherpa_onnx已经移植到开源鸿蒙,直接支持ArkTS接口,本示例用到的接口如下:

ae4539e0-7e72-11f0-a18e-92fbcf53809c.png

开发准备

1.环境搭建:确保安装了ArkUI开发所需的IDE,如DevEco Studio,并配置好相应的开发环境,包括SDK(本示例Api11及以上)版本等。

2.了解ArkUI框架特性:熟悉ArkUI的布局和组件使用方法,例如文本输入框用于接收用户输入,按钮组件用于触发ASR语音识别操作等。还要了解ArkUI的数据绑定机制,方便将ASR识别结果和TTS合成状态等信息实时显示在界面上。

示例界面设计

底部栏:语音采集与文本输入切换按钮,点击切换。

中间区:文本显示区,呈现识别后文本和输入内容。

头部栏:标题、语音播放按钮(播放中间区域文本)、设置按钮(语速设置和声音模型切换)。

ae501ed2-7e72-11f0-a18e-92fbcf53809c.png

示例功能逻辑

示例基于sherpa_onnx三方库开发,此库在OpenHarmony三方库中心仓下载安装,链接如下:

https://ohpm.openharmony.cn/#/cn/detail/sherpa_onnx

ae69b0fe-7e72-11f0-a18e-92fbcf53809c.png

以下所展示的是本示例的流程图,该流程图涵盖了从Vad声音活动检测的初始化阶段,音频采集器与渲染器初始化过程,接着是ASR(自动语音识别)模型和TTS(文本到语音)模型的加载,直至最终成功实现语音识别与语音生成的流程。

ae722e3c-7e72-11f0-a18e-92fbcf53809c.png

ASR模型解析核心实现

1.初始化Vad

Vad声音活动检测(Voice activity detection),也称为语音活动检测或语音检测(speech activity detection或者speech detection),是检测人类语音存在与否的技术,主要用于语音处理。Vad的主要用途在于说话人分割(speaker diarization)、语音编码(speech coding)和语音识别(speech recognition),初始化vad过程如下:

ae83b80a-7e72-11f0-a18e-92fbcf53809c.png

2.初始化音频采集器

初始化一个音频采集器,用于从麦克风硬件获取音频数据,注册回调事件micCallback将音频数据存储到ampleList数组中。

ae9384ba-7e72-11f0-a18e-92fbcf53809c.png

3.加载ASR模型

语音识别需要加载一个ASR模型,用户可依据自身业务需求下载合适的模型,模型下载地址:

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

ae9c45fa-7e72-11f0-a18e-92fbcf53809c.png

创建语音识别实例OfflineRecognizer,加载该模型。

aeb33a6c-7e72-11f0-a18e-92fbcf53809c.png

4.语音解析成文字

“按住说话”按钮,当手指按下时采集音频数据,触发micCallback回调保存数据,手指抬起时终止采集,随后,将数据经由worker线程发送至子线程予以解析。

aec383e0-7e72-11f0-a18e-92fbcf53809c.png

子线程在获取音频数据之后,将其解析为文字,最终呈现在应用界面上,具体解析流程如下:

aece7c64-7e72-11f0-a18e-92fbcf53809c.png

TTS模型解析核心实现

1.初始化音频渲染器

初始化一个音频渲染器,用于将音频数据输出到设备扬声器。通过配置音频参数和渲染属性,确保音频格式与硬件兼容,并建立数据写入的回调机制audioPlayCallback。

aee0db66-7e72-11f0-a18e-92fbcf53809c.png

aeef8936-7e72-11f0-a18e-92fbcf53809c.png

2.加载TTS模型

语音合成需要加载一个TTS模型,用户可依据自身业务需求下载合适的模型,模型下载地址:

https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models。

其中有多种文本转语音模型,本示例选用了6种TTS模型,用在设置界面切换不同的声音。

将解压后的模型文件放到指定的路径下。

路径:src/main/resources/rawfile

aef79ce8-7e72-11f0-a18e-92fbcf53809c.png

创建语音识别实例OfflineTts,加载该模型:

af074620-7e72-11f0-a18e-92fbcf53809c.png

加载完TTS模型后,获取模型相关信息,音频采样率、说话人(音色)数量,CPU线程数(本示例为双线程)。

af18f0f0-7e72-11f0-a18e-92fbcf53809c.png

3.文本解析成音频

点击播放图标,播放或暂停可将中间区域的文字以语音形式予以播放。

af23c156-7e72-11f0-a18e-92fbcf53809c.png

将文本信息通过worker发送至子线程进行语音合成;

text为输入文本,当界面上无文字时默认“你好”,有文字时,将文字以句号分割,使播放句子有停顿效果;

sid说话人音色(模型相关信息numSpeakers)参数选择(通常0 ≤ sid ≤ numSpeakers);

speed语速,默认语速为1,可在设置界面调节。

af32ccd2-7e72-11f0-a18e-92fbcf53809c.png

使用tts.generateAsync方法把文字转化为语音,TtsInput为TTS合成输入参数,文字转成语音后,数据由worker回传至主线程。

af43ff98-7e72-11f0-a18e-92fbcf53809c.png

接收到语音数据后,将数据存储在sampleBuffer数组,然后通过this.audioRenderer.start()触发语音播放。

效果展示

ASR/TTS示例应用代码

代码仓链接:https://gitcode.com/openharmony-sig/applications_ai_model_samples/tree/master/AsrAndTts

AI Model SIG简介

AI Model SIG 是经开源鸿蒙PMC(项目管理委员会)正式批准成立的特别兴趣小组(SIG),核心目标是丰富开源鸿蒙生态下的大小应用模型,并提供端到端的实践范例,为开发者构建 AI 应用提供高效支撑。

未来,AI Model SIG 将围绕三大方向持续深耕:

聚焦模型推理框架与多推理后端的深度适配,夯实 AI 能力底层基座;

推进多模态模型的生态适配与优化,拓展 AI 应用场景边界;

将技术成果分享出来,确保广大开发者可便捷获取与使用。

同时,小组将联合全球开发者协同共建,持续完善开源鸿蒙 AI 技术体系,助力打造更具竞争力的全场景智能终端生态。

如果您对开源鸿蒙AI技术感兴趣,欢迎加入AI Model SIG,一起探索万物智联的未来!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 语音识别
    +关注

    关注

    39

    文章

    1790

    浏览量

    114509
  • 开源
    +关注

    关注

    3

    文章

    3797

    浏览量

    44175
  • 鸿蒙
    +关注

    关注

    60

    文章

    2665

    浏览量

    44398

原文标题:拆·应用丨第3期:开源鸿蒙语音识别及语音合成应用开发

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    明远智睿SSD2351开发板:语音机器人领域的变革力量

    接口则让语音机器人可以连接到互联网,实时获取最新的信息,增强其智能性和交互能力。 在实际应用场景中,以智能客服语音机器人为。SSD2351开发板可以驱动
    发表于 05-28 11:36

    语音识别模块

    目前市面上语音识别模块哪家识别率比较高,又带语音合成功能?
    发表于 09-01 15:20

    语音合成芯片与语音芯片对比

    目前市面上的可发声芯片分为两大类:语音合成芯片与语音芯片。在实际开发语音终端产品工作中,有很多的研发人员在这两类芯片的认知上难免会出现概念上
    发表于 03-08 17:26

    语音合成芯片与语音芯片对比

    目前市面上的可发声芯片分为两大类:语音合成芯片与语音芯片。在实际开发语音终端产品工作中,有很多的研发人员在这两类芯片的认知上难免会出现概念上
    发表于 03-11 15:39

    语音合成IC与语音IC的两三事

    目前市面上的可发声IC分为两大类:语音合成IC(TTS 芯片)与语音IC。在实际开发语音终端产品工作中,有很多的研发人员在这两类
    发表于 05-13 17:02

    语音合成IC选型之经验分享

    体积最小的一款芯片,只有28个管脚,生产成本低,应用范围广;支持GB2312编码格式,在智能识别度和操作方面偏低;建议需要实现简单语音合成(TTS)功能的用户可以尝试一下,省去了录音的麻烦 l如果
    发表于 05-19 14:37

    【大联大品佳 Nuvoton ISD9160语音识别试用申请】家居养老语音求助系统

    和探索。想借助发烧友论坛和Nuvoton ISD9160 语音识别开发板平台完善该项目的开源设计。项目计划项目设计为为居家养老的老年人提供语音呼唤服务,由于现在居家老人不太会使用智能设
    发表于 08-10 17:40

    【HarmonyOS HiSpark AI Camera】居家语音智能识别控制

    项目名称:居家语音智能识别控制试用计划:申请理由:熟悉学习鸿蒙os。利用鸿蒙开发开发一个智能
    发表于 10-29 15:18

    使用语音控制的鸿蒙小车开发流程

    之前我们已经有一篇文章讲了如何驱动鸿蒙小车,通过网络控制小车的运行。基于鸿蒙系统 + Hi3861 的wifi小车,可以通过电脑、手机控制:这一篇我们来试点不一的:使用语音控制
    发表于 11-24 14:38

    使用语音控制的鸿蒙小车开发流程

    之前我们已经有一篇文章讲了如何驱动鸿蒙小车,通过网络控制小车的运行。基于鸿蒙系统 + Hi3861 的wifi小车,可以通过电脑、手机控制:这一篇我们来试点不一的:使用语音控制
    发表于 12-02 16:58

    怎样去设计基于STM32F429的语音识别交互系统

    一、开发环境/工具:环境:keil5器件:STM32F429开发板、YS-LDV7语音识别模块、YS-SYN6288语音
    发表于 08-04 06:25

    【1024平头哥开发套件开发体验】 语音识别开发板的比较

    程度也不一。其中最易使用的要数Arduino,只是它所提供的功能十分有限,若是也能提供语音的录制、播放及识别功能将是最理想的开发工具。此外,其提供的产品使用说明书也十分欠缺,导致其产
    发表于 12-13 00:13

    [CB5654智能语音开发板测评] 语音识别开发板的比较

    程度也不一。其中最易使用的要数Arduino,只是它所提供的功能十分有限,若是也能提供语音的录制、播放及识别功能将是最理想的开发工具。此外,其提供的产品使用说明书也十分欠缺,导致其产
    发表于 03-09 08:11

    使用Arduino进行语音识别合成

    电子发烧友网站提供《使用Arduino进行语音识别合成.zip》资料免费下载
    发表于 11-17 11:26 ?5次下载
    使用Arduino进行<b class='flag-5'>语音</b><b class='flag-5'>识别</b>和<b class='flag-5'>合成</b>

    离线语音识别与在线语音识别有什么不一

    离线语音识别与在线语音识别有什么不一? 离线语音识别
    的头像 发表于 12-12 14:36 ?2067次阅读