HarmonyOS 音视频之音频采集实战

HarmonyOS 音视频之音频采集实战

💡 原文中文,约10800字,阅读约需26分钟。
📝

内容提要

本文介绍了HarmonyOS中实现音频采集的两种方式:TS层的AudioCapture和C++层的OHAudio,包括参数配置、开始录制、停止录制和资源释放等。最后,介绍了音频录制的最佳实践和权限申请的方法。

🔎

延伸解读

TS层与C++层音频采集的选型考量

文章对比了TS层的AudioCapture和C++层的OHAudio两种采集方式。AudioCapture适合纯TS应用开发,接口简单;OHAudio则适用于依赖Native层音频输入的场景,尤其当音频编码库为C/C++实现时,可减少TS与C++层间的数据传递消耗,提升效率。开发者应根据项目技术栈和性能需求选择。

音频采集参数配置的关键点

无论是AudioCapture还是OHAudio,都需要配置采样率、声道数、采样格式和编码类型等参数。文章示例中采样率为48000Hz,双声道,S16LE格式,编码类型为RAW(PCM)。目前仅支持PCM格式,若需其他格式如MP3,需后续自行编码。音源类型需根据场景选择,如MIC、VOICE_RECOGNITION等。

权限申请与最佳实践注意事项

音频采集需动态申请ohos.permission.MICROPHONE权限,并在module.json5中声明。最佳实践包括:确保OHAudio的所有回调函数被初始化(赋值或置空),避免不可预期行为;对延时要求高的场景(如语音通话),可使用低时延模式创建录制构造器,以获得更高质量的音频体验。

音频数据处理的后续方向

在音频回调中获取到PCM数据后,可交给ASR进行语音识别,或直接写入文件。文章提到后续将实现编码成MP3并写入文件的实践,这意味着当前采集仅提供原始PCM流,若需压缩存储或传输,还需进一步编码处理。开发者需根据应用场景规划数据处理流程。

❓

Q&A

HarmonyOS中如何实现音频采集?

HarmonyOS提供了两种音频采集接口:TS层的AudioCapture和C++层的OHAudio。

使用AudioCapture进行音频录制的步骤有哪些?

使用AudioCapture录制音频涉及创建实例、配置参数、开始与停止录制、资源释放等步骤。

OHAudio接口的特点是什么?

OHAudio支持普通音频通路和低时延通路,适用于Native层音频输入功能,仅支持PCM格式。

在HarmonyOS中如何申请音频采集权限?

音频采集需要动态申请权限,并在module.json5中声明权限,如ohos.permission.MICROPHONE。

音频采集的最佳实践有哪些?

最佳实践包括确保回调函数初始化和使用低时延模式以提高音频质量。

如何处理录制的音频数据?

音频数据处理可以交给ASR或直接写入文件,后续将实现编码成mp3并写入文件的实践。

🏷️

标签

➡️

继续阅读