全局网页音频响度平衡器

Created 3 days ago
Updated 3 days ago
在网页上对所有音频源进行响度规格化处理,支持跨域存储和本域名存储模式,可自动选择最佳音频源,支持播放补偿 EQ(10 段图示均衡器,含预设与信号链位置切换)。
#音频响度
#Web Audio API
#均衡器
#音频处理
Statistics
Total Installs
15
Last 24h
+1
User Rating
-
Ad
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

Script Details
Applicable Sites
LicenseMIT
Permissions & access
Capabilities
StorageMenu command