🎵 音高测量

Pitch Detector

🔒 麦克风音频只在你的浏览器里跑算法,不上传、不存储、不联网。关掉页面就消失。
 
-50 -25 0 +25 +50
cents 偏差
点击开始 → 浏览器会问你麦克风权限
最近 5 秒音高(Y 轴:音名,对数刻度)
 
主频音名
平均频率
音高范围
 
⚠️ 提示:autocorrelation 假设输入是单一周期信号。复音(和弦、人声 + 伴奏、多人合唱)会让结果跳来跳去,仅供参考。最准的输入是单人清唱、独奏乐器、或纯音。
关于这个工具

cents(音分)是音高的对数刻度:100 cents = 一个半音,1200 cents = 一个八度。±5 cents 内一般听不出来,±20 cents 就能明显感觉到"跑调"。

autocorrelation:对一段信号 x[n],计算它和自己延迟 τ 后的相关性,相关性最大的 τ 就是基频周期。freq = sampleRate / τ。这里再用抛物线插值精修 lag,达到亚采样精度。

检测范围:70 Hz – 1500 Hz(≈ B1 到 F♯6),覆盖人声、大多数旋律乐器。低于这个范围的极低音、极高泛音不在检测窗口里。

实时模式AnalyserNode + requestAnimationFrame,每帧 2048 采样点。RMS 低于 0.01 时跳过,避免环境噪声。

文件模式把音频解码成 PCM(取第一声道),按 50ms 步长切窗,每窗跑一次同样算法,得到 contour(pitch over time)。

限制:autocorrelation 在多基频信号(和弦、伴奏)上会失准;在嘶哑、气声、共振峰被压扁的发声状态下也会偏。它不是专业的 YIN/CREPE,但够用。