实际走一遍

一个浏览器标签页里的三个音频工具

人声分离、降噪、文字转语音,全都跑在你自己的机器上,什么都不上传。下面是完整过程、每个工具启动前必须下载的东西,以及怎么在十秒左右自己验证「不上传」这句话。

约 9 分钟

完整过程

视频把三个工具从头到尾跑了一遍:一首歌拆成阿卡贝拉和伴奏,一段人声录音把声音背后的房间抽掉,还有一行打出来的文字被读出来。一次跑完,一台机器 — 而这正是重点,因为那台机器是你的,不是我们的。

视频静帧:Audiofilter 的分离器,已载入一条音轨并显示两条音轨波形。
在你按下播放之前,不会从 YouTube 取任何东西 — 上面那张图是这个站点提供的静态图片,所以打开这一页不会启动任何第三方播放器,也不会留下 YouTube 的任何 Cookie。如果嵌入的播放器加载不出来,视频也在 youtube.com/watch?v=Wy8Qcp1mw8c.

录屏证明不了的那部分

一段工具能用的视频,只说明工具能用。它没法告诉你文件去了哪里,而那恰恰是唯一值得怀疑的那句话 — 每个免费音频网站都会说些关于隐私的安慰话,而其中大多数仍然先把你的录音放到服务器上。

这一条你可以从自己这边验证,不必听任何人的保证:

  1. 打开三个工具中的任意一个,按 F12 (⌥⌘I (Mac 上),然后选 网络 面板。
  2. 勾上 禁用缓存,这样模型下载会出现在列表里,而不是直接从磁盘读走。
  3. 把文件拖进去,让它跑完。
  4. 看那份列表。每一条请求都会是 GET,而且每一条要的都是这个站点上的模型或脚本。

你要看的是「缺了什么」:没有 POST,没有任何把你的音频放在请求体里的请求,完全没有上传进度。流量是单向的。是模型被取到你文件所在的地方,而不是你的文件被送到模型所在的地方——这个先后顺序就是全部的架构差别 — 它不是一条下个季度可能悄悄改掉的留存政策。

模型缓存好之后把网线拔了,工具照样能用。这是同一个事实,从另一头看过去。

这要你付出什么

在本地跑模型不是免费的 — 只是计费方式不同。你付出的不是我们的服务器时间,而是首次访问的一次下载,加上处理过程中你自己的处理器:

工具首次访问下载量上限
人声分离 约 52 MB — 12 MB 的运行时,加上两个 20 MB 的模型文件,每条音轨一个 5 分钟,300 MB
降噪 约 16 MB 5 分钟,300 MB
文字转语音 传输量约 64 MB 每次生成 500 字符

每个工具只下载一次,之后由浏览器缓存,所以第二次访问立刻就能开始,也不需要联网。长度上限和下载是同一个原因:一段 5 分钟的立体声音频展开成浮点数之后,已经是单个浏览器标签页里很大的一块东西,而整首歌会直接终结这个会话,而不是排在付费墙后面等着。先用任意编辑器把你要的那段切出来,再送进去。

把文字转语音的模型弄上静态托管,最后成了这个项目里更难的那一半。那段经历 — 每文件 25 MiB 的墙、跨源隔离,以及一个你问它压缩情况时会给出与事实相反答案的托管平台 — 另写了一篇.

按流量计费的话,动手之前先选好工具

上面那些首次访问的数字是实打实的兆字节,用移动数据的手机会有感觉。降噪是轻的那个,约 16 MB。文字转语音那个,留到连上 Wi-Fi 再说。

把一首歌拆成两条音轨

人声分离接收一段混音,返回两个文件:单独取出的人声,和剩下的伴奏。它靠的是识别而不是相减,而这个区别决定了它在你的曲子上能不能行。

大家熟悉的那个免费方法 — Audacity 内置的那个 — 是相位抵消。它把左右声道共有的部分减掉,前提假设是主唱在正中间。有时候确实是。但底鼓、贝斯和军鼓通常也在正中间,而且贝斯在大约 120 Hz 以下常常是有意合成单声道的,于是它们一起被带走。单声道文件根本没有可相减的对象;人声浸在立体声混响里时,混响活了下来而干声消失了,听起来比不处理还糟。我们写过 在 Audacity 里怎么做,以及什么时候行不通,还附了一个用你自己文件做的 30 秒测试。

分离模型学过歌唱的人声在时间和频率上长什么样,所以它是把每一部分重建出来,而不是拿一个去抵消另一个。这就是它能应付单声道录音、偏离中心的人声和重混响的原因,也是伴奏能保住低频的原因。它做不到的是凭空造出混音里本来就没有的细节:当人声和吉他在同一瞬间占据同一条窄频带时,总得把它判给其中之一,而这个判断,就是分离伪影的来源。

把房间从录音里拿掉

降噪是给语音用的,不是给音乐用的。它按短帧看录音,对每个频带估计有多少是人声、多少是房间,再据此给每个频带施加增益。稳定、重复的噪声 — 风扇嗡鸣、空调、电源交流声、麦克风嘶声 — 是这类模型读得最可靠的,因为它的模式是静止的,而语音一直在动。

值得理解的那个控件是 微调,它设置的是以分贝为单位的衰减上限:模型最多被允许去掉多少。它之所以存在,是因为降噪的坏结果不是残留的嘶声,而是一个被嚼成水糊糊、金属味的声音。给削减量设上限,声音保住了,噪声留下一点——对任何需要一个人连听半小时的素材来说,这通常是更划算的取舍。

有一段 9 秒的室内录音放在 降噪页面 上,播放过程中可以在处理前和处理后之间来回切。在句与句之间 — 9 秒里有 27 处间隙,那正是噪声最容易听出来的地方 — 底噪下降约 17 dB。而语音本身回来时,比进去时只低了 0.5 dB。第二个数字才是你在任何降噪工具上都该核对的,包括这一个:把整段录音调小,底噪看上去总会更好,但 0.5 dB 不是靠调小换来的。

它治不了的是混响。回声是人声的副本,而不是坐在人声背后的东西,所以模型没有可分离的对象。那个问题靠把麦克风挪近解决,不是事后解决。

把打出来的文字读出来

第三个工具方向相反:进去的是文字,出来的是音频。有 19 个音色,分属 14 个口音族,每次生成上限 500 字符 — 大约 80 个词,或者约 30 秒的语音。那是一句旁白或一条字幕,也正是多数人真正需要的形态;而且一行一行改稿子,比重新剪一个长文件容易。

它也能从一小段样本里克隆音色,而这段样本遵守和这里其他一切相同的规则:在标签页里读取,不发往任何地方。找个安静的地方录。克隆会连同音色一起复现房间和说话方式,所以背景里有风扇的样本,做出来的声音里就带着风扇。

哪些情况下浏览器是错的地方

常见问题

这些音频工具会上传我的文件吗?

不会。每个工具都是把模型下载到浏览器标签页里、在那里运行,所以音频留在你自己的机器上。这句话你不必照单全收:处理任何东西之前打开浏览器的网络面板,看看会发生什么。所有请求都是从 audiofilter.net 下载 — 没有任何一条上传带着你的文件。

首次下载有多大,每次都要下吗?

人声分离约 52 MB,降噪 16 MB,文字转语音 64 MB。每个工具只发生一次:浏览器会缓存模型,所以之后的访问立刻开始,断网也能用。

音频工具为什么有 5 分钟的限制?

因为分离和清理跑在你自己的处理器上、跑在单个浏览器标签页的内存里。整首歌会把这个标签页耗尽,而不是排在付费墙后面等着。用任意编辑器把你需要的那段切出来处理就行。

用它们需要装什么东西吗?

不需要。没有插件、没有扩展、没有账号。较新版本的 Chrome、Edge、Firefox 或 Safari 都能跑人声分离和降噪。文字转语音对浏览器要求更高,并不是每个移动端 WebView 都能跑。

录下来的访谈该用哪个工具?

降噪。人声分离是为音乐做的 — 它把混音拆成阿卡贝拉和伴奏,那不是一段口述录音需要的东西。对付人声背后的风扇嗡鸣、空调或街道噪声,降噪才是对的那个。