如何在 MP3、WAV、FLAC 和 AAC 之间转换音频文件
音频文件转换格式时究竟发生了什么,为什么每次转换都有代价,以及浏览器能为您做什么、不能做什么。
音频文件分三类,而不是两类
人们习惯把音频分成“音质好”和“体积小”两种,这反而掩盖了更有用的区分。音频文件其实分为三类,弄清手上的文件属于哪一类,大多数问题还没问出口就有了答案。
WAV 是未压缩格式。它在一个简短的 RIFF 文件头后面存放原始 PCM 采样:采样时钟每走一格,每个声道记下一个数值。既不做分析,也不丢弃任何内容,所以它的大小纯粹是算术:采样率乘以位深度,再乘以声道数。
FLAC 是压缩格式,但属于无损压缩。它预测波形接下来的走向,存储预测值与真实采样之间的差值,再把这些差值高效地打包。解码 FLAC,得到的采样与原始输入逐位完全相同。它明显比 WAV 小,但远没有有损文件那么小。
MP3、AAC 和 Vorbis(大多数 .ogg 文件里用的编解码器)都是有损格式。它们用心理声学模型分析信号,判断哪些部分您的耳朵察觉不到,然后干脆不存储这些部分。被丢弃的音频就此消失。有损文件可以解码回 PCM,但解码出来的是编码器选择保留的内容,而不是当初录下的声音。
每次转换都要经过同一个中间步骤
从 MP3 到 AAC 没有直达的路。MP3 先被解码回 PCM 采样,然后 AAC 编码器重新审视这些采样,自行决定丢掉什么。这就是转码,而每一次转码都要付出代价,无一例外。
损失比听起来更严重,因为第二个编码器分不清信号里哪些是音乐、哪些是第一个编码器留下的失真,只能花比特把两者都保留下来。转码次数一多,结果就听得出来:镲片变成嘶嘶声,尖锐的瞬态前面多出一层淡淡的模糊,频谱顶端则悄无声息地消失。
由此可以得出一条适用于大多数情况的规则:始终用您手上最好的那份副本来转换,而不是上周刚转换出来的那份。如果您有 FLAC,就用 FLAC 生成 AAC。把有损文件转成 WAV 或 FLAC 也找不回任何东西,只是把损失装进了更大的容器。
本站的转换器实际做了什么
这个工具把您的文件交给浏览器自带的解码器,所以浏览器能播放的格式,它基本都能打开:MP3、AAC、M4A、OGG、WAV,以及在浏览器支持时的 FLAC。接下来的处理取决于您选择的格式。
- WAV 直接由解码后的采样写成 16 位 PCM。
- MP3 由 LAME 以 192 kbps 编码,编码在后台 Worker 中进行,因此处理长文件时页面仍然可以正常操作。
- AAC 由浏览器内置的音频编码器以 192 kbps 编码,保存为原始 .aac 码流。少数应用要求 AAC 放在 .m4a 容器中,打不开这种文件。
- OGG 使用同一个内置编码器,以 128 kbps 写入 Opus。Opus 比大多数旧 .ogg 文件所用的 Vorbis 编解码器更新。当前的浏览器和 VLC 等播放器都支持它,但一些老式硬件播放器只认 Vorbis。
- AAC 和 OGG 依赖这个内置编码器,所以在没有它的浏览器上,这两个选项会被禁用,而不是悄悄生成别的东西。
转换过程中会改变什么
有几个细节常常让人措手不及。转换器把所有文件都以 44.1 kHz 解码,OGG 则用 48 kHz,因为 Opus 只支持这个采样率,所以 96 kHz 的源文件在转换时会被重新采样。转换为 MP3、AAC 和 OGG 时,环绕声文件会被缩混为立体声。WAV 输出按每个采样 16 位写入,因此 24 位的母带会被截断。这些对听音乐毫无影响,但如果有人要求您提供特定格式,每一点都很重要。
标签完全不会保留。解码器只返回采样,别的什么都没有,所以艺术家、专辑、音轨号和内嵌封面都会丢失。您拿到的就是一个光秃秃的文件,配一个同样光秃秃的文件名。
文件大小取决于格式。WAV 照算术来:CD 采样率的立体声 PCM 每分钟约 10 MB,一首四分钟的歌接近 40 MB。192 kbps 的 MP3 和 AAC 每分钟约 1.4 MB,128 kbps 的 OGG 每分钟略低于 1 MB。长文件在转换期间还得以 32 位浮点数的形式存放在内存里,浏览器标签页正是从这里开始吃力。
它真正适合做什么
不用安装任何软件,就能把一个难搞的文件变成任何编辑器都能打开的形式。所有音频软件都认 PCM WAV。如果同事发来一个 OGG,您的编辑软件拒绝打开,或者您需要一段普通波形拖进视频时间线,在浏览器标签页里花三十秒,胜过花二十分钟找安装程序、再一路点击安装。
要把音频交给转录工具或降噪处理,这也是合适的形式。两者都需要未压缩的输入,给它们 MP3 的话,拿到后也只能再解码一遍。
反过来用同样方便:把 WAV 格式的语音备忘录或排练录音转成足够小、方便发送的 MP3,事先不用安装任何编码器。
什么时候桌面编码器更合适
需要 FLAC 时(本工具不生成 FLAC),以及需要本页面没有提供的控制选项时:可变比特率、特定采样率、24 位输出,或一次处理整个文件夹。ffmpeg 在命令行里就能完成这一切。foobar2000 等桌面播放器把同样的编码器包装成转换器,还能写入标签。如果文件是要放进音乐库而不是编辑器,这正是您需要的。
不会上传任何内容
您的音频永远不会到达服务器。解码和编码都在您打开的这个页面里完成,所以未发布的录音、客户项目和私人语音备忘录都留在您的电脑上。打开浏览器开发者工具中的“网络”面板,然后转换一个文件看看。第一次转换为 MP3 时会下载编码器库,但没有任何请求会携带您的文件。