🎵 音高测量
Pitch Detector
—
点击开始 → 浏览器会问你麦克风权限
最近 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,但够用。