三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别
前言
HarmonyOSNext中集成了强大的 AI 功能。Core Speech Kit(基础语音服务)是它提供的众多 AI 功能中的一种。
Core Speech Kit(基础语音服务)集成了语音类基础 AI 能力,包括文本转语音(TextToSpeech)及语音识别(SpeechRecognizer)能
力,便于用户与设备进行互动,实现将实时输入的语音与文本之间相互转换。
简单来讲 Core Speech Kit 主要提供了两大语音 AI 功能:
- 语音识别
- 文本转语音
语音识别介绍
语音识别功能可以将一段音频信息(短语音模式不超过 60s,长语音模式不超过 8h)转换为文本。
其中语音识别又可以实现:
- 实时语音转文本
- 声音文件转文本
实时语音转文本
实现流程
先介绍语音识别的流程,后面的文字转语音大同小异
- 申请权限
- 创建 AI 语音引擎
- 设置监听回调
- 开始监听
tips: 完整代码在每一个功能的末尾,可以结合封装后的代码来阅读
申请权限

因为在开发功能过程中,需要调用手机的麦克风功能。所以需要主动申请权限。

申请权限分成 3 个步骤
- 声明权限
- 检查是否拥有权限
- 申请权限
声明权限
-
在\entry\src\main\module.json5
中添加以下配置代码 requestPermissions
-
在\entry\src\main\resources\base\element\string.json
添加 申请原因 voice_reason
检查权限
实际开发中,我们在申请权限之前可以先调用接口checkAccessTokenSync
,检查下是否已经拥有权限。如果没有,则主动申请权限
申请权限
当我们需要申请某个功能的权限时,可以通过调用 requestPermissionsFromUser
来实现
封装好的权限代码
因为HarmonyOSNext中关于权限的代码,都是没有经过封装的,难以使用。所以这里提供了封装好的版本。
没有封装过的示例代码:

封装好的代码
entry\src\main\ets\utils\permissionMananger.ets
页面中使用权限代码
Index.ets

实时语音识别相关步骤
以下主要实现实时语音识别
创建 AI 语音引擎
创建 AI 语音引擎主要有以下几个步骤
-
声明 AI 语音引擎配置参数,主要有语种、区域信息等

-
调用开始创建 createEngine
方法开始创建,并且返回 AI 语音实例引擎
设置 AI 语音监听回调
在开始语音识别之前,需要先设置语音识别回调 setListener
。它主要有以下几个分类
- 开始识别回调
- 事件回调
- 识别结果回调
- 识别完成回调
- 识别错误回调

开始监听实时语音
需要先配置监听的参数,便可以调用startListening
实现语音识别了
参数配置 其中,实时语音识别和语音文件识别的主要配置在 recognitionMode
字段, 0 表示实时语音识别

封装好的语音识别代码
\entry\src\main\ets\utils\SpeechRecognizerManager.ets
页面中调用语音识别代码

语音识别结果分析
语音识别成功后的数据格式如下
实时语音识别 {"isFinal":false,"isLast":false,"result":"是"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":"是否给你承诺的太多"}
I 实时语音识别 {"isFinal":true,"isLast":false,"result":"是否给你承诺的太多?"}
I 实时语音识别 {"isFinal":false,"isLast":false,"result":""}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
其中需要关注的是:
-
识别功能是持续触发的,当收集到声音时持续触发
-
isFinal 表示一个句子是否结束

-
isLast 表示这一次语音识别是否结束
总结
HarmonyOSNext中集成了强大的 AI 功能。Core Speech Kit(基础语音服务)是它提供的众多 AI 功能中的一种。
Core Speech Kit(基础语音服务)集成了语音类基础 AI 能力,包括文本转语音(TextToSpeech)及语音识别(SpeechRecognizer)能
力,便于用户与设备进行互动,实现将实时输入的语音与文本之间相互转换。
简单来讲 Core Speech Kit 主要提供了两大语音 AI 功能:
- 语音识别
- 文本转语音
其中语音识别又可以实现:
- 实时语音转文本
- 声音文件转文本
本文主要实现了 实时语音转文本 , 声音文件转文本 将会在下文讲解。
赞赞赞