全局网页音频响度平衡器
在网页上对所有音频源进行响度规格化处理,支持跨域存储和本域名存储模式,可自动选择最佳音频源,支持播放补偿 EQ(10 段图示均衡器,含预设与信号链位置切换)。
#音频响度
#Web Audio API
#均衡器
#音频处理
Statistics
Total Installs
15
Last 24h
+1
User Rating
-
Ad
Description
Versions1
Ratings0
Permissions
A global web audio loudness normalizer that uses compressor
全局网页音频响度平衡器
对所有网页的音频源进行响度规格化处理,让不同视频、不同网站之间的音量保持一致,避免忽大忽小。
功能特性
- 响度规格化:基于 Web Audio API 的压缩器 + 自动增益(AGC)+ 输出限制三段式处理链
- 等响度加权:支持 A 加权(dBA,推荐)、C 加权(dBC)和线性 dBFS 三种测量模式,模拟人耳听感
- 播放补偿 EQ:10 段图示均衡器(ISO 1/1 倍频程),支持多种预设(平坦、低音增强、人声突出、高音清晰、低音削减、响度补偿)和自定义,可切换信号链位置(输入段/输出段)
- 多音频源管理:自动检测页面内的
<video>/<audio>元素,按打分自动选择最佳源;也可手动绑定 - 黑/白名单:支持通配符(
*.example.com)和正则(/^https?:\/\/music\./)两种匹配语法 - 跨域 / 本域名存储:设置可全局共享(GM_)或仅本域名生效(localStorage),切换时自动迁移
- SPA 适配:监听 URL 变化,自动重新扫描音频源
- 健康检查:长时间无音频时自动尝试重绑,避免静音丢失
- 悬浮 UI:可拖动、可收起,包含电平表、参数面板、音频源列表、排除列表、EQ 面板
- 全参数可调:每个滑块都带有 tooltip 说明,鼠标悬停可查看建议值
- GM 菜单命令:通过 Tampermonkey 菜单快速打开设置面板
- 关闭按钮:支持"本次关闭"和"本页不再显示"两种模式
使用方法
脚本在所有网页(*://*/*)自动运行,页面右下角会出现一个悬浮小球。
悬浮球操作
| 操作 | 效果 |
|---|---|
| 鼠标悬停 | 展开面板,显示电平表与按钮 |
| 鼠标移开 | 自动收起(200ms 延迟) |
| 拖动小球 | 移动位置(自动记忆) |
| 触摸拖动 | 移动端同样支持 |
按钮说明
- 规格化 开/关:一键启用 / 关闭响度处理
- ♫:音频源列表,可手动选择页面内的音频元素
- 🚫:排除列表 / 白名单管理
- ♬:播放补偿 EQ 面板(10 段图示均衡器)
- ⚙:参数设置面板
- ✕:关闭悬浮球(支持"本次关闭"和"本页不再显示"两种模式)
排除列表
支持两种模式:
- 黑名单模式(默认):列表内的站点不启用响度处理,其余启用
- 白名单模式:仅列表内的站点启用,其余全部排除
规则写法:
通配符: *.bilibili.com
music.example.com/*
example.com/path/*
正则: /^https?:\/\/(music|cdn)\./
排除面板内提供「加入域名」「加入路径」「本次会话临时启用」等快捷按钮。
参数设置
所有参数均带 tooltip,悬停可见说明与建议值。主要分组:
压缩器
| 参数 | 说明 | 建议值 |
|---|---|---|
| 阈值 threshold | 触发压缩的电平 | -30 ~ -20 dB |
| 拐点 knee | 压缩过渡平滑度 | 20 ~ 40 dB |
| 压缩比 ratio | 压缩强度 | 人声 4-8:1,音乐 2-4:1 |
| 启动 attack | 起效延迟 | 0.002 ~ 0.01 s |
| 释放 release | 恢复时长 | 0.1 ~ 0.5 s |
自动增益(AGC)
| 参数 | 说明 | 建议值 |
|---|---|---|
| 目标电平 | 期望维持的输出响度 | -23 ~ -18 dB |
| 最大增益 | 微弱信号放大上限 | 6 ~ 18 dB |
| 提升速度 | 增益上升速率 | 3 ~ 12 dB/s |
| 下降速度 | 增益回落速率 | 30 ~ 80 dB/s |
| 噪声门阈值 | 视为噪声的电平 | -60 ~ -35 dB |
| 输出限制 | 最终峰值硬限制 | -1 ~ -0.3 dB |
响度加权
| 参数 | 说明 | 建议值 |
|---|---|---|
| 加权模式 | A / C / 关闭 | A(日常) |
| 频域平滑 | 电平表稳定度 | 0.5 ~ 0.8 |
| 窗补偿 | FFT 窗函数补偿 | +3 dB(默认) |
| 加权强度 | 人耳感知与物理电平的混合比例 | 50% ~ 80% |
| 频率下限 | 参与计算的最低频率 | 30 ~ 80 Hz |
| 频率上限 | 参与计算的最高频率 | 10000 ~ 16000 Hz |
设置存储
全局(跨域共享):所有网站共用同一份设置(推荐)本域名:仅当前网站生效,互不影响
切换时自动复制当前设置到目标存储,无需重新配置。
播放补偿 EQ
10 段图示均衡器,频率点遵循 ISO 1/1 倍频程标准(31Hz - 16kHz),每段增益范围 ±12dB。
预设模式
| 预设名称 | 说明 |
|---|---|
| 平坦 | 所有频段增益为 0,不做补偿 |
| 低音增强 | 提升低频(31-125Hz),适合小音箱或耳机 |
| 人声突出 | 提升中频(250-4kHz),适合播客、人声内容 |
| 高音清晰 | 提升高频(2-16kHz),增加细节和空气感 |
| 低音削减 | 衰减低频,适合低频过多的音源 |
| 响度补偿 | 根据等响度曲线补偿高低频,适合小音量聆听 |
| 自定义 | 使用当前手动调整的增益值 |
信号链位置
EQ 可插入音频处理链的两个位置,完整信号链路如下:
输入段 EQ:
MediaElement → [EQ 10段] → Analyser → Compressor → AGC → Limiter → Destination
输出段 EQ:
MediaElement → Analyser → Compressor → AGC → Limiter → [EQ 10段] → Destination
| 位置 | 信号流向 | 影响范围 | 适用场景 |
|---|---|---|---|
| 输入段 | EQ 在 Analyser 之前 | EQ 后的信号会经过 Analyser 检测、压缩器、AGC 处理 | 需要 EQ 影响动态处理时使用。例如:提升低频后让压缩器对低频更敏感 |
| 输出段 | EQ 在 Limiter 之后 | EQ 仅作用于最终输出,不影响前级动态处理 | 纯音色调整时使用。例如:仅想改变听感,不希望影响响度检测和压缩 |
选择建议:
- 推荐输出段:大多数情况下用于补偿听感,放在输出段更直观,EQ 调整不会干扰响度平衡算法
- 输入段场景:当你希望 EQ 改变后的信号参与响度检测和动态压缩时使用,但可能导致 AGC 对 EQ 调整产生补偿反应
GM 菜单命令
通过 Tampermonkey 扩展菜单快速访问:
- 打开响度平衡设置:直接打开参数设置面板,无需先显示悬浮球
关闭悬浮球
点击悬浮球上的 ✕ 按钮,弹出菜单提供两种关闭模式:
- 本次关闭:临时隐藏悬浮球,刷新页面后恢复显示
- 本页不再显示:将当前域名加入隐藏列表,访问该域名时自动隐藏悬浮球
隐藏列表存储在设置中,可手动编辑 hiddenDomains 字段管理。
技术实现
音频处理链路:
MediaElementSource → Analyser → Compressor → GainNode → Limiter → Destination
- Analyser:FFT 分析 + 时域 RMS,计算加权响度
- Compressor:动态范围压缩,平滑瞬态峰值
- GainNode:AGC 自动增益,按目标电平调整
- Limiter:硬限制器,防止削波失真
等响度加权通过预计算 A/C 加权曲线表实现,按 FFT 频率 bin 缓存,避免每帧重复计算。
License
MIT
Statistics
Total Installs
15
Last 24h
+1
User Rating
-
Permissions & access
Capabilities
StorageMenu command