前言
本文主要实现 使用鸿蒙的 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 实例。
踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!