三文带你轻松上手鸿蒙的 AI 语音 02-声音文件转文本
发表于 2025-07-22 10:43:23

前言

本文主要实现 使用鸿蒙的 AI 语音功能将声音文件识别并转换成文本

实现流程

1、利用AudioCapturer 录制声音,生成录音文件

2、利用 AI 语音功能,实现识别

1.png

两个录音库介绍

在HarmonyOS NEXT 应用开发中,实现录音的两个核心库分别为

1、AudioCapturer

2、AVRecorder

AVRecorder 录制出来的声音封装格式只能是 aac,这个文件格式我们的 AI 语音引擎不支持,AI 语音引擎只支持 pcm 格式,而 AudioCapturer 录制的声音封装格式则是 pcm。因此我们选择使用 AudioCapturer 来录制声音。

AudioCapturer

AudioCapturer 介绍

AudioCapturer 是音频采集器,用于录制 PCM(Pulse Code Modulation)音频数据,适合有音频开发经验的开发者实现更灵活的录制功能。

状态变化示意图

2.png

能看到使用 AudioCapturer 的主要流程为:

1、创建 AudioCapturer 实例

2、调用 start 方法开始录音

3、调用 stop 方法停止录音

4、调用 release 方法释放实例

创建 AudioCapturer 实例

(文末会提供封装好,可以直接使用的代码 下面的代码示例都是基于封装好的代码进行的)

我们通过调用 createAudioCapturer 方法实现创建 AudioCapturer 实例,其中该方法需要传递相关参数。

3.png

调用 start 方法开始录音

开始调用 start 方法时,需要准备相关数据。如:

1、提供录音的文件名,可以自定义

2、写入录音数据的回调函数(在录制声音的过程中持续触发)

3、调用 start 方法

4.png

调用 stop 方法停止录音

调用 stop 方法则相对简单,直接调用即可

5.png

调用 release 方法释放实例

同理

6.png

封装好的录音代码

\entry\src\main\ets\utils\AudioCapturerManager.ets 下面是这个类的属性和方法的总结:

属性

· static audioCapturer:

类型是 audio.AudioCapturer | null,是一个静态属性,用于存储当前的音频捕获器实例。

· private static recordFilePath:

类型是 string,是一个静态私有属性,用于存储录音文件的路径。

方法

· static async createAudioCapturer():

如果 audioCapturer 已经存在,则直接返回该实例;否则创建一个新的音频捕获器实例,并设置其音频流信息和音频捕获信息,然后创建并返回新的实例。

· static async startRecord(fileName: string):

异步静态方法,用于启动录音过程。首先调用 createAudioCapturer() 方法确保有一个音频捕获器实例。之后初始化缓冲区大小,并打开或创建一个指定名称的 .wav 录音文件。定义一个读取数据的回调函数,用于将捕获到的数据写入文件中。最后开始录音,并记录下录音文件的路径。

· static async stopRecord():

异步静态方法,用于停止录音过程。停止音频捕获器的工作,释放其资源,并清除 audioCapturer 实例。

7.png

8.png

9.png

页面中开始录音

10.png

可以通过以下路径查看录音文件是否真实生成

/data/app/el2/100/base/你的项目的boundle名称/haps/entry/files

11.png

页面代码

Index.ets

12.png

13.png

用 AI 语音功能 实现声音文件转文本

该流程其实和和上一章的实时识别声音功能类似,只是多了一个步骤

1、创建 AI 语音引擎

2、注册语音监听事件

3、开始监听

4、读取录音文件

创建 AI 语音引擎

14.png

注册语音监听事件

15.png

开始监听

(需要设置 recognitionMode 为 1 表示识别语音文件)

16.png

读取录音文件

(需要调用 SpeechRecognizerManager.asrEngine?.writeAudio 来监听语音文件)

17.png

一步调用

18.png

完整代码

19.png

20.png

21.png

22.png

23.png

24.png

25.png

页面代码

26.png

27.png

28.png

踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!

CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
微博关注
【免责声明:CSDN本栏目发布信息,目的在于传播更多信息,丰富网络文化,稿件仅代表作者个人观点,与CSDN无关。其原创性以及文中陈述文字和文字内容未经本网证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本网不做任何保证或者承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件有任何怀疑或质疑,请立即与CSDN联系,我们将迅速给您回应并做处理。】