消掉一段
一个受访者的名字。一个被念出来的门牌号。一个谁没多想就说了的电话号码。 这一页讲的是怎么用哔声盖掉录音里的一段 —— 具体被换掉的是什么、什么一动不动, 以及为什么决定位置的人是你。
是你来标,我们不猜
做这件事的其他工具,卖点都是自动识别:把你的录音转写出来,找到那些词, 然后帮你消掉。我们没有这个功能,而不做的理由值得你在挑工具之前先看一眼。
自动识别需要词级的时间戳。要在不消掉整句的前提下消掉一个词,就得有东西
知道那个词从哪一刻开始、到哪一刻结束,精度要到百分之几秒。英语上转写模型给得出来。
英语之外常常给不出 —— 我们拿 whisper-base 在中文上实测过,它给的时间戳是
句级的:一句 3.8 秒的话回来是 0.78 到 4.62 一整段。在那样一段里你没法只消掉
一个名字,只能把整句都消掉。
这是关于我们测过的那一个模型的说法,不是关于所有模型。但它足以改变设计: 一个在某种语言上悄悄好用、在另一种语言上悄悄不好用的自动功能,比没有这个功能更糟 —— 因为你看着结果分辨不出自己落在哪一边。
所以由你来标。这更花时间,换来的是不漏、不误报,也没有哪种语言比另一种差 —— 这件事里压根没有"语言"这一步,因为没有转写那一步。
换进去的是什么
一个 1 kHz 的哔声 —— 电视上干这件事用的就是这个声音。不是静音。
选它是为了语义,不是音质。一段静音是含混的:听的人分不清那是被人有意盖掉的, 还是文件坏了、剪废了、话筒掉了。哔声只表达一件事,而且表达得毫不含糊。
它的电平定在大约你录音的一半。同样的测量电平下,纯音比语音刺耳得多, 所以不能直接取齐;具体要压多少只能靠耳朵判断,现在这个值就是这么定下来的。
两个接缝,以及它们为什么要紧
哔声和你的音频交接的地方,两边必须接得上,波形上不能有台阶。接不上就是一声"嗒" —— 而两头各一声"嗒"本身就是个信号:它把"这里被动过"的确切时刻告诉了每一个听的人, 那正好和你来这儿的目的相反。
所以哔声从零起、到零止,两侧各 4 毫秒的音频渐变着并进去。4 毫秒短到听不出是渐变, 又长到接缝处没有东西可听:接缝上的跳变比同一个文件里本来就有的最大样本跳变 低一到两个数量级。
渐变吃掉的是你要留下那一侧的一点点音频,绝不是被盖住那一段的。反过来把渐变 放进被盖的那段里,会让它开头几毫秒以低音量漏出去。几毫秒的一个音素听不出内容 —— 但这不是一个可以"差不多对"的地方。
长度不变
输出的样本数和输入分毫不差。这里没有"把那段剪掉"这个选项,而且是刻意没有: 音频一旦变短,那个时间点之后的每一帧画面都会和声音错位。
正因为长度不变,视频照样能用。画面逐字节直通不动,音频还是原来那个时长, 口型仍然落在原来的位置。画面和声音怎么处理,见处理视频里的音频。
整个文件,都在你的浏览器里
哔声是在文件流过的时候就地加上的 —— 读一块、清一块、写一块。所以这里没有一个 "片段最长多少"的限制要绕:一段四十分钟的访谈和一段两分钟的走同一条路, 而你的文件不会被送到任何地方。降噪本身是怎么工作的、以及它做不到什么, 见去除背景噪音。
这个形状有一个后果值得知道:标记发生在开跑之前,你听的是自己那个原始文件。 这里没有"听完成品再从里面挑一段"这一步 —— 到那时候,输出已经写完了。
这一页不承诺的事
- **它不替你找任何东西。**上面说过了。如果你要的是自动识别脏话、而素材是英语, 专门做那件事的工具会比这个更合适。
- **它作用于整文件那一步,不作用于 30 秒预览。**预览的用处是让你判断降噪效果, 不去动它,那个判断才干净。
- **标记需要你的浏览器能播放你的文件。**我们自己的清洗路径能解开一些普通播放器 解不开的容器,所以存在"我们能清洗、但播不出来给你标"的文件。遇上了, 标记控件会消失并说明原因 —— 清洗照样能跑。
- **Firefox 上整文件这一步压根用不了。**它编不了输出需要的 AAC,所以那里没有地方 给哔声落脚。30 秒预览仍然可用。这是在 Firefox 142 上实测的。