处理一个音频文件
语音备忘、采访、课程录音等包含人声和室内噪音的文件都可以处理。 这一页介绍支持的文件、处理流程、输出格式, 以及这一步在你其余的工作流程里该放在哪。
什么文件能进去
mp3、wav、m4a、aac、flac 和 ogg,以及大多数视频文件的音轨。 把这当成参考而不是保证:我们是靠读文件本身的开头来判断的,不是信任它的扩展名, 所以一个被改过名的文件会按它的实际内容来处理。
如果你的浏览器压根解不开某个文件,你会看到一条说明这件事的错误,而先转成 mp3 或 wav 基本都能解决。那是一条真的退路,不是打发你 —— 那种情况下缺的是一个容器解包器, 不是降噪本身。
我们读什么,跳过什么
对 mp4、m4a 以及裸的 aac 或 mp3,我们只解开真正需要的那一段:顺着文件自己的索引找过去, 只读那些字节。长录音不必整个装进内存 —— 在一个大文件上,这样实测比整个解码少用约 103 倍内存。
无损和开放格式 —— wav、flac、ogg、webm —— 目前还没有这条捷径,所以会被整个解码。 正常长度没问题,而这是唯一一种「非常长的文件可能把浏览器内存撑爆」的情况。 真遇上了,同一段录音的 mp3 或 m4a 走的是省事的那条路。
每个文件在模型看到它之前都会经历两件事,两件都值得知道:
- **一切都会被并成 48 kHz 的单声道。**模型是单通道的,所以这不是一个偏好设置。 如果你的录音是立体声、或者两支话筒分别在两个声道上,它们会先被混到一起 —— 什么时候这件事要紧、以及那时该怎么做,见播客那一页。
- **我们挑的是最响的 30 秒,不是开头的 30 秒。**录音的开头通常是椅子响、清嗓子、 和一句「这个开了吗」—— 拿那一段去判断效果,会让它显得比实际差。 结果卡片上会告诉你用的是哪一段。
输出格式
一个 48 kHz 的 16 位单声道 WAV,30 秒大约 2.9 MB。用 WAV 是因为浏览器没有通用的 音频编码器 —— 要给你一个 mp3,就得在 9 MB 的引擎之外再塞一个编码器给你, 一个下载按钮不值这个代价。
**我们不对两个版本做响度匹配。**在我们首页那条样例上,原版测得 −11.6 LUFS, 处理后是 −13.7,大约低 2 LU。这不是 bug:去掉噪音就是去掉能量,你的文件也会这样。 把两者电平拉齐会让对比显得好看,也会藏起一件你在调电平之前就该知道的事。
这一步在你的流程里放哪
- **先降噪,再调电平,最后做母带。**因为我们不做归一化,输出音量会比输入更低 —— 所以任何跟响度有关的决定都该在这一步之后,不是之前。先给一个有噪音的文件调电平, 等于是对着一个即将移动的底噪做了所有判断。
- **在铺音乐和音效之前做。**模型保留它认得出是语音的部分,把其余压下去, 所以垫在人声底下的音乐床正是它要去动的那类东西。先处理人声,再铺音乐。
- **它不是均衡器。**不做齿音处理、不做音色调整、不修削波或失真的音频。只干一件事。