音频分析器

基于 Web Audio API 的专业音频可视化分析工具,支持实时频谱、波形、声谱图与谐波分析。纯前端运行,音频数据仅在本地处理,不上传服务器。

🔊 Web Audio API 📊 FFT 频谱分析 🎵 基频检测 🔒 纯前端 · 零上传
输入源
显示模式
FFT 大小
平滑度
频谱分析
采样率: 频率分辨率: 更新率: FPS
📊

音频分析器就绪

点击「开启麦克风」或「上传音频」开始分析。
支持实时频谱、波形、声谱图与谐波检测。

20 Hz50100200500 1 k2 k5 k10 k20 kHz

🎵基频检测

检测基频
对应音名
音分偏差
置信度

📊谐波结构

THD 估算
谐波丰富度

📈信号质量

峰值电平
RMS 电平
动态范围
零穿越率
估算 SNR

六大分析维度 · 深入声音本质

基于 Web Audio API 与数字信号处理原理,提供专业的音频分析能力

🔊 实时频谱分析

使用 AnalyserNode 的 FFT(快速傅里叶变换)将时域信号转换为频域表示。支持 256–8192 点 FFT,频率分辨率从 172 Hz 到 5.4 Hz(以 44.1kHz 采样率计)。以柱状图形式展示 20Hz–20kHz 全频段能量分布。

Δf = fs / N
fs = 采样率, N = FFT 点数

〰️ 波形时域显示

通过 getByteTimeDomainData 获取原始音频样本,以 128 为中轴线绘制振幅-时间曲线。可直观观察信号的振幅包络、波形对称性与削波失真,是判断录音质量与动态范围的首选视图。

y(t) = A · sin(2πft + φ)
A = 振幅, f = 频率, φ = 相位

🌈 声谱图(Spectrogram)

将频谱数据按时间轴堆叠,形成"瀑布图"式可视化。横轴为时间,纵轴为频率,颜色深浅表示能量强度。可清晰观察泛音列随时间的演变、共振峰位置与瞬态特性,是语音与乐器音色分析的核心工具。

S(t,f) = |STFT{x(t)}|²
STFT = 短时傅里叶变换

🎵 基频检测(F0)

基于时域自相关算法(Autocorrelation)检测基频,适用于单音与主音明显的音频。通过寻找信号与自身延迟版本的最大相关性,确定周期 T,进而计算基频 f₀ = 1/T。支持音名映射与音分偏差计算。

R(τ) = Σ x[n]·x[n+τ]
f₀ = fs / argmax R(τ)

📊 谐波结构分析

在检测到基频后,自动识别整数倍频位置的谐波分量(2f₀, 3f₀, ... 8f₀),计算各次谐波相对基频的振幅比。谐波结构决定了音色的明暗与饱满度——弦乐器的谐波丰富,长笛的谐波较少。

Hₙ = 20·log₁₀(|X(n·f₀)| / |X(f₀)|)
THD = √(Σ Hₙ²)

📈 信号质量指标

实时计算峰值电平(Peak)、均方根电平(RMS)、动态范围(Peak - RMS)、零穿越率(ZCR)与估算信噪比(SNR)。这些指标综合反映了信号的强度、稳定性与噪声水平,是音频工程与声学测量的基础参数。

RMS = √(Σ x²[n] / N)
SNR ≈ 20·log₁₀(RMS_signal / RMS_noise)

技术参数 · 精确可靠

所有算法与参数均基于 Web Audio API 标准与声学工程规范

参数项 规格说明 备注
音频引擎 Web Audio API (AudioContext) 浏览器原生支持,低延迟实时处理
采样率 跟随设备默认(通常 44.1 kHz 或 48 kHz) 由 AudioContext.sampleRate 自动获取
FFT 大小 256 / 512 / 1024 / 2048 / 4096 / 8192 必须为 2 的整数次幂,越大频率分辨率越高
频率分辨率 5.4 Hz ~ 172 Hz(@44.1kHz) Δf = fs / N,如 44100/8192 ≈ 5.4Hz
频率范围 0 Hz ~ fs/2(奈奎斯特频率) 有效分析范围 20 Hz ~ 20 kHz
数据类型 Uint8Array (0–255) / Float32Array (dB) 频域用 getByteFrequencyData,时域用 getFloatTimeDomainData
平滑系数 0.1 ~ 0.95(AnalyserNode.smoothingTimeConstant) 越高越平滑,越低响应越快
基频检测算法 时域自相关(Autocorrelation) 适用于单音/主音明显场景,范围 50Hz–2000Hz
音准精度 ±5 cents(典型条件下) 受环境噪声与谐波复杂度影响
声谱图历史 约 4–8 秒滚动窗口 取决于 Canvas 宽度与刷新率
支持格式 WAV, MP3, AAC, OGG, FLAC, WebM 取决于浏览器解码器支持
隐私策略 纯前端处理,零数据上传 音频流仅在浏览器内存中分析

使用指南 · 四步启程

无需安装任何软件,浏览器即可运行完整的音频分析流程

选择输入源

点击「开启麦克风」授权浏览器访问设备麦克风,实时分析环境声音或乐器演奏;或点击「上传音频」选择本地音频文件(支持 WAV/MP3/AAC/FLAC 等格式)进行离线分析。

调整分析参数

根据分析需求选择显示模式(频谱/波形/声谱图)。频谱分析时,如需更高频率分辨率选择更大的 FFT 大小(如 8192);如需更流畅的动画选择较高的平滑度(0.8–0.95)。

观察分析结果

主 Canvas 显示实时可视化图形,右侧信息面板同步更新基频、音名、谐波结构与信号质量指标。声谱图模式最适合观察音色随时间的演变过程。

解读与应用

结合下方「功能说明」与「技术参数」理解各项指标含义。例如:基频检测可用于乐器调音,谐波分析可判断音色特征,SNR 估算可评估录音环境噪声水平。

FFT 频谱分析原理 · 从时域到频域

快速傅里叶变换(FFT)是音频分析的核心数学工具,理解其原理有助于正确使用分析结果

傅里叶变换:分解复合音的数学之眼

任何复杂的周期性信号都可以分解为一系列不同频率、振幅与相位的正弦波之和。傅里叶变换(Fourier Transform)正是实现这一分解的数学工具。快速傅里叶变换(FFT)是其高效算法实现,将计算复杂度从 O(N²) 降低到 O(N·logN)。

在音频分析中,FFT 将连续的时域采样信号转换为离散的频域表示。转换结果的每个"频率箱"(Frequency Bin)对应一段频率范围,其数值代表该频段内的信号能量。频率分辨率 Δf 由采样率 fs 与 FFT 点数 N 决定:

  • 频率分辨率:Δf = fs / N。N 越大,分辨率越高,能区分更近的频率成分
  • 奈奎斯特频率:f_max = fs / 2。高于此频率的成分会产生混叠(Aliasing)
  • 窗函数效应:实际使用 Hann/Hamming 窗减少频谱泄漏(Spectral Leakage)
  • 频率箱映射:第 k 个 bin 的中心频率为 f_k = k · fs / N

本工具使用浏览器原生 AnalyserNode 实现 FFT,其底层采用 Blackman 窗函数,在频率分辨率与旁瓣抑制之间取得良好平衡。

图:时域正弦波(上)经 FFT 转换为频域单峰(下)的示意

探索更多音乐工具

音频分析只是音乐工具集的一部分,调音器、节拍器、和弦生成器等工具同样值得体验。