音频在线解析与播放器
解析与播放 PCM 裸流、WAV 与 MP3 等音频,交互式波形定位、物理声学指标测算、帧结构剖析与 Hex 数据检视,支持一键转 WAV。
在音视频开发、语音识别(ASR/TTS)、蓝牙协议通信和嵌入式音频固件调试中,经常需要直接分析和播放 PCM 原始采样裸流。PCM 数据没有文件头、没有元数据,一旦采样率、位深度、声道数或字节序对不上,播放出来的就是白噪声、鬼畜音调或严重爆音。
本工具完全基于浏览器 Web Audio API 与 TypedArray 构建,所有音频解码、波形渲染与十六进制分析均在本地内存完成,零数据上传。不仅支持交互式波形精确拖拽试听,还从第一性原理拆解帧结构、展示交织采样内存分布,并支持一键将 PCM 封装为标准 WAV 文件下载。
从第一性原理理解数字音频与 PCM 物理量
连续的声波是空气压强的连续变化,数字音频通过脉冲编码调制(PCM)将其离散化:每秒采样的次数是采样率(如 16000 Hz、44100 Hz),每个采样点用多少位二进制记录振幅是位深度(如 16 位有符号数表示 -32768 到 32767)。PCM 裸流只是一长串纯二进制数字,播放器必须预先知道这些物理参数,才能把字节流重新转换成振膜振动。
为什么位深度与字节序错一点就会变成白噪声
在 16 位 PCM 中,每个样本占 2 个字节。如果是小端序(Little Endian),低位字节在前、高位字节在后。如果被错误地按大端序(Big Endian)读取,原本表示微弱振幅的高位字节与低位字节彻底颠倒,数值会在正负极值之间剧烈跳变,人耳听到的就会是刺耳的满幅白噪声。同样,如果 16 位的音频被误按 8 位解析,原本连续的波形就会变成完全失真的混乱离散点。
单双声道与内存中的交织(Interleaving)排列
单声道(Mono)每帧只包含一个样本;双声道(Stereo)每帧则包含左声道(L)和右声道(R)各一个样本。标准 PCM 流采用交织排列:[L0, R0, L1, R1, L2, R2...]。如果在双声道模式下只传了单声道数据,左右耳就会轮流播放错开的时域样本;反之如果把立体声当单声道播,声音就会变成两倍速播放的怪异音效。
PCM 封装为 WAV 的 RIFF 文件头规范
WAV 文件本质上是在 PCM 裸流前面拼接了一个 44 字节的标准 RIFF 容器头部:包括 "RIFF" 标识、文件总长度、"WAVE"、"fmt " 子块(明确声明音频格式为 1 表示 PCM,写入声道数、采样率、每秒字节率和块对齐大小)以及 "data" 标识和音频长度。本工具内置标准的 WAV 头封包逻辑,能将你配置好参数的 PCM 一键打包导出为任何播放器都能直接打开的 WAV 文件。
常见问题
- PCM 和 WAV 格式有什么本质区别?
- PCM 是最底层的音频采样数据本身,没有文件头和元数据,独立存在时无法直接被普通播放器识别;WAV 是微软与 IBM 制定的标准音频容器,本质就是在 PCM 数据前加了一个 44 字节的固定头部,标明了采样率、声道数和位深度。把 PCM 加上正确的 WAV 头就能直接作为 WAV 播放。
- 播放 PCM 时全是尖锐刺耳的杂音/白噪声是怎么回事?
- 通常有三个原因:一是字节序选错(如 Little-Endian 选成了 Big-Endian),导致高低字节倒置;二是位深度选错(如 16-bit 选成了 8-bit 或 24-bit);三是文件本身可能带有 WAV/MP3 容器头,导致前几十字节的非音频头数据被当作高频样本播放。可查看本工具顶部的容器检测提示或切到 Hex 视图检查前几个字节。
- 为什么音频播放速度变快像花栗鼠,或者变慢变沉?
- 因为设置的采样率与录制时的实际采样率不一致。例如原本用 16000 Hz 录制的音频,若按 32000 Hz 播放,每秒消耗的样本数增加一倍,播放时长缩短一半,音调升高一倍(类似花栗鼠声音);反之采样率设低了,播放就会变慢、音调变粗沉。
- 如何确定未知 PCM 文件的真实采样率和位深度?
- 可以利用时长和文件大小反推:文件总字节数 = 时长(秒) × 采样率 × 声道数 × (位深度 / 8)。在语音识别场景中,最常用的标准配置是 16000 Hz、16-bit、单声道(16k16bit mono);高保真音乐则通常是 44100 Hz 或 48000 Hz、16-bit、双声道。在工具中切换这几组常见参数,听到正常清晰人声的那一组就是正确配置。