录音时如何获取麦克风实时音量 HarmonyOS 鸿蒙Next

录音时如何获取麦克风实时音量 HarmonyOS 鸿蒙Next 有没有API可以在录音时获取麦克风实时音量,录音时显示语音振幅

2 回复

您可以使用AudioCapturer,他提供音频采集的相关接口,使用getVolume获取音量的大小。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-audio-V5#ZH-CN_TOPIC_0000001884758254__audiocapturer8

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/using-audiocapturer-for-recording-V5?catalogVersion=V5,该文档提供了采集的示例,可以参考。

更多关于录音时如何获取麦克风实时音量 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,获取麦克风实时音量可以通过使用AudioCapturer类来实现。AudioCapturer是鸿蒙系统提供的用于音频捕获的API。

首先,需要创建一个AudioCapturer实例,并配置音频参数,如采样率、通道数和音频格式。然后,调用start()方法开始录音。在录音过程中,可以通过read()方法读取音频数据,并计算这些数据的音量。

具体步骤如下:

  1. 创建AudioCapturer实例并配置参数:

    let audioCapturer = audio.createAudioCapturer({
        streamInfo: {
            samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
            channels: audio.AudioChannel.CHANNEL_1,
            sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
            encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
        }
    });
    
  2. 开始录音:

    audioCapturer.start();
    
  3. 读取音频数据并计算音量:

    let bufferSize = 4096;
    let buffer = new ArrayBuffer(bufferSize);
    let audioData = new Int16Array(buffer);
    audioCapturer.read(audioData, bufferSize).then((readSize) => {
        let sum = 0;
        for (let i = 0; i < readSize / 2; i++) {
            sum += Math.abs(audioData[i]);
        }
        let avg = sum / (readSize / 2);
        let volume = Math.log10(avg) * 20;
        console.log(`实时音量: ${volume} dB`);
    });
    
  4. 停止录音:

    audioCapturer.stop();
    

通过上述步骤,可以在鸿蒙Next中获取麦克风的实时音量。

回到顶部