摘要

  • RFC 978 提出用 18 字节文件头,让不同 ARPA Internet 系统交换语音文件;字段包括录音方法、约略速率、总时长和 16 位电话按键音掩码。
  • DTMF 掩码里的 1 保证对应的音不在录音里,0 则只表示未知。文件头能带走“确定缺席”这条证据。

录音顺利送到了。接收电脑对着字节发愣:这究竟该怎么播放?1986 年 2 月,J.K. Reynolds 等五位作者在 《Voice File Interchange Protocol》里给语音文件做了一张 18 字节的行李牌。最有意思的栏位并不描述听到了什么,反而敢给一个电话按键音开缺席证明。

当时的语音设备和录制方法各有脾气,多媒体邮件又想让声音在系统之间旅行。字节被搬过去,还需要告诉对方它们按什么方法录下。VFIP 的第一字节记录版本,第二字节记录文件头长度;首版长度为 18。两个 32 位字段分别给出每秒比特数的约略录制速率,以及以十分之一秒计的总时长。另有六个 ASCII 字节写录制或编码方法名,短名称在右侧补空格,比较时不区分大小写。拿到这张牌,接收方至少知道该从哪种格式入手。

两字节的 DTMF 掩码藏着全篇最容易读反的规则。它对应电话键盘的十个数字、星号、井号和 A 至 D,共十六种音。某位为 1,意思是对应音保证没有出现在语音文件里。某位为 0,意思是“可能有,也可能没有”。十六位全零,便是什么都不知道;全一,则十六种音都可排除。这里的 1 不是检测到声音的勾选,而是一张否定证明。

原文给了两张小考卷。一分钟、每秒 2400 比特的 NVP-2 语音,掩码是零:任何按键音都没有被排除。另一段 TI 语音长十秒、每秒 1200 比特,掩码为 1023。最低的十位全是 1,于是数字 0 到 9 的按键音确定缺席;星号、井号和 A 至 D 仍属未知。1023 看着像统计了许多声音,实际上是在列十项“不在场”。

作者还允许文件头不附在录音字节前面,而是作为独立的关联文件保存。这样一来,行李牌必须跟对行李。RFC 编辑部记录给出的出版时间是 1986 年 2 月。原文提出便于自动转换的格式,却没有提供一台万能转换机;它的锋芒在于要求接收者分清两件事:明确排除与尚无信息。18 字节不长,足够让一段声音在陌生电脑前把自己介绍清楚,也足够提醒电脑别把沉默听成证词。