三文带你轻松上手鸿蒙的 AI 语音 02- 声音文件转文本
前言
本文主要实现 使用鸿蒙的 AI 语音功能将声音文件识别并转换成文本
实现流程
1、利用 AudioCapturer 录制声音,生成录音文件
2、利用 AI 语音功能,实现识别

两个录音库介绍
在 HarmonyOS NEXT 应用开发中,实现录音的两个核心库分别为
1、AudioCapturer
2、AVRecorder
AVRecorder 录制出来的声音封装格式只能是 aac,这个文件格式我们的 AI 语音引擎不支持,AI 语音引擎只支持 pcm 格式,而 AudioCapturer 录制的声音封装格式则是 pcm。因此我们选择使用 AudioCapturer 来录制声音。
AudioCapturer
AudioCapturer 介绍
AudioCapturer 是音频采集器,用于录制 PCM(Pulse Code Modulation)音频数据,适合有音频开发经验的开发者实现更灵活的录制功能。
状态变化示意图

能看到使用 AudioCapturer 的主要流程为:
1、创建 AudioCapturer 实例
2、调用 start 方法开始录音
3、调用 stop 方法停止录音
4、调用 release 方法释放实例
创建 AudioCapturer 实例
(文末会提供封装好,可以直接使用的代码 下面的代码示例都是基于封装好的代码进行的)
我们通过调用 createAudioCapturer 方法实现创建 AudioCapturer 实例,其中该方法需要传递相关参数。

调用 start 方法开始录音
开始调用 start 方法时,需要准备相关数据。如:
1、提供录音的文件名,可以自定义
2、写入录音数据的回调函数(在录制声音的过程中持续触发)
3、调用 start 方法

调用 stop 方法停止录音
调用 stop 方法则相对简单,直接调用即可

调用 release 方法释放实例
同理

封装好的录音代码
\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 实例。



页面中开始录音

可以通过以下路径查看录音文件是否真实生成
/data/app/el2/100/base/你的项目的 boundle 名称/haps/entry/files

页面代码
Index.ets


用 AI 语音功能 实现声音文件转文本
该流程其实和和上一章的实时识别声音功能类似,只是多了一个步骤
1、创建 AI 语音引擎
2、注册语音监听事件
3、开始监听
4、读取录音文件
创建 AI 语音引擎

注册语音监听事件

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

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

一步调用

完整代码







页面代码



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