HarmonyOS 录制音频,获取录制音频流的音量?

用audio.AudioCapturer 来进行音频录制,想要获取说话人的音量大小,做一个音量波动的动画,想问下有没有相关的api

阅读 608
1 个回答

1.通过以下方法可以把PCM数据转成对应音量的分贝值:

private pcm2Db(buffer: ArrayBuffer) {
  // 获取一个 Int32Array 类型的视图,该视图将数组缓冲区解释为带符号 32 位整数数组
  const intArray = new Int32Array(buffer);
  let sum: number = 0;
  for (let i = 0; i < intArray.length; i++) {
    let sample: number = intArray[i] / 32768;
    console.log('cwq sample is ' + sample)
    sum += sample * sample;
  }
  let rms = Math.sqrt(sum / buffer.byteLength);
  let db = 20 * Math.log10(rms);
  console.log('cwq db is ' + db)
  return db;
}

2.尝试使用https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-audio-V5\#getmaxamplitudeforinputdevice12

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进