BiquadFilterNode是Web Audio API中实现低通和高通滤波最直接高效的方式,通过设置type为'lowpass'或'highpass'及frequency值即可实时处理音频,支持动态调节与平滑过渡。

Web Audio API 的 BiquadFilterNode 是实现低通(Low-pass)和高通(High-pass)滤波最直接、高效的方式。它基于二阶 IIR 滤波器,只需设置类型和截止频率,就能实时处理音频信号,无需手动计算系数。
一、创建并配置 BiquadFilterNode
先获取音频上下文,创建滤波节点,并连接到音频图中:
const audioCtx = new (window.AudioContext || window.webkitAudioContext)(); const source = audioCtx.createBufferSource(); const filter = audioCtx.createBiquadFilter(); // 设置为低通滤波 filter.type = 'lowpass'; // 或设为高通滤波 // filter.type = 'highpass'; filter.frequency.value = 1000; // 截止频率,单位 Hz filter.Q.value = 1; // 品质因数,影响过渡带陡峭程度(可选) source.connect(filter); filter.connect(audioCtx.destination);
二、低通与高通的核心区别
关键在 type 属性和频率响应行为:
-
低通滤波(
'lowpass'):允许低于frequency的频率通过,衰减高频成分;适合模拟“闷音”、“远距离声源”或去除嘶声。 -
高通滤波(
'highpass'):允许高于frequency的频率通过,衰减低频(如嗡嗡声、风噪);常用于语音清晰化或消除低频干扰。
三、动态控制滤波参数(实时调节)
所有参数都支持自动化,可平滑变化,避免爆音:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
立即学习“前端免费学习笔记(深入)”;
- 用
setValueAtTime()+exponentialRampToValueAtTime()实现对数频率扫频(人耳更自然) - 例如从 200Hz 扫到 5000Hz 的低通截止频率:
filter.frequency.setValueAtTime(200, audioCtx.currentTime); filter.frequency.exponentialRampToValueAtTime(5000, audioCtx.currentTime + 2);
注意:frequency 必须 > 0,且不能为 0;若需静音效果,建议改用 gain 节点或断开连接。
四、实用提示与常见问题
- Q 值影响共振峰:Q > 1 时,低通/高通会在截止频率附近产生轻微峰值(类似“强调”),Q ≈ 0.707(√2/2)对应最平坦的巴特沃斯响应。
- 避免自激振荡:过高 Q 值(如 > 10)配合高增益信号可能引发啸叫,尤其在反馈回路中需谨慎。
-
采样率兼容性:Web Audio 自动适配当前设备采样率,
frequency值始终以 Hz 为单位,无需换算。 -
多滤波串联:可将多个
BiquadFilterNode串接,实现更陡峭的滚降(如双二阶低通近似四阶),但会增加延迟与计算开销。
不复杂但容易忽略:务必在调用 start() 前完成节点连接,且 frequency 等参数应在播放开始后仍可安全修改——Web Audio 的参数调度机制天然支持实时音频处理。


















