js 利用audio buffers[int16Array]计算分贝

计算公式:引用:如何计算音频dB级别?

上代码👏👏👏

此处我以录音三秒为例,检测分贝

js 公式:
avgEnergy : 波形峰值
16位比特率:振幅可以高达32767

const db = 20 * Math.log10(avgEnergy / 32767);

基于npm 【recorder-core】录音框架为例

//必须引入的核心,换成require也是一样的。注意:recorder-core会自动往window下挂载名称为Recorder对象,全局可调用window.Recorder,也许可自行调整相关源码清除全局污染
import RecorderS from "recorder-core";
//需要使用到的音频格式编码引擎的js文件统统加载进来
import "recorder-core/src/engine/wav";
// import "recorder-core/src/engine/wav-engine";

//以上三个也可以合并使用压缩好的recorder.xxx.min.js
//比如 import Recorder from 'recorder-core/recorder.mp3.min' //已包含recorder-core和mp3格式支持
//可选的扩展支持项
import "recorder-core/src/extensions/waveview.js";

开始计算分贝

[可以放在onProcess 回调函数中计算]

let avgEnergy = 0; // 峰值
// 我这里获取的是最新的buffers
buffers[buffers.length -1].forEach(fragment => {
  avgEnergy += Math.abs(fragment)
});
// 计算分贝
const db = 20 * Math.log10(avgEnergy / 32767);
// 分贝可能会计算出无穷大或无穷小
if (isFinite(Math.abs(Math.ceil(db)))) {
  // 添加数组
  that.dBArray.push(Math.abs(Math.ceil(db)));
  // 最终可以算出平均分贝值
}

// 三秒后结束录音
if (bufferDuration >= 3000) {
  that.RecordingEnd(); // 结束录音
}

此功能仅做参考,有什么问题欢迎留言

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值