ToRun的语音模式曾经像一台对讲机:你说话,它听;它说话时,你的麦克风是关闭的。人们说话不是这样的,几乎每个人都会在大约三十秒内发现这一点——那正是你想说「不,是另一个」,却不得不先等一句话说完的时刻。
gpt-live-1是一个全双工引擎。它说话时麦克风保持开启。你可以像打断一个人那样打断它,而它会在说话的同时听到你,而不是只在说完之后。
藏在同一份契约背后
这与我们已有的实时语音是不同的协议——不同的端点、不同的事件词汇表,没有轮次标识符,也没有轮次结束标记。所有这些都在一个边界处被翻译成我们的语音桥接层已经在使用的那套事件。在这层之下,一切都没有变化:同一个会话,通话期间的同一批工具,同样按分钟结算的方式,同样的两款应用。
在写下任何一行代码之前,一次探测就用开发密钥对着服务商跑通了整个流程,并记录下了所有数据帧。这些录制内容就是用来测试翻译层的固定样本——因此被测试的,是服务商实际发送的内容,而不是某份文档声称会发送的内容。
回声正是没人默认这样做的原因
播放期间保持开启的麦克风会听到助手自己的声音。如果没有抑制处理,它就会不停地回应自己。因此在iOS上,音频会话会切换到语音处理模式,也就是能消除回声、表现得像免提通话的那种模式;在Android上,捕获预设也会完成同样的工作。
这带来了真实的成本,也正因如此,这个决定是按模型逐一做出的,而不是全局统一决定。目录中的那一行带有一个标志位。带有该标志位的模型会保持麦克风开启并启用回声消除;平台上其他每一个语音都保留自己原有的开关和音量更大的音频模式,与之前完全一样。这个决定在会话开始时做出一次,随后又会根据服务器实际打开的内容重新确认一次,以防某个层级默认值最终解析成了别的模型。
在网页端没有任何变化:那里的麦克风从来就没有被锁定过,浏览器本来就会请求回声消除。
目前还不具备的能力
它还不在免费层级中开放。一分钟免费额度会在一次对话中就用光,而一份在句子说到一半时就耗尽的额度,比一份从未提供过的额度更糟糕。
而在移动端,第一个版本的表现更像是一次改进,而非一次彻底变革,因为两款应用都还保留了部分自身的锁定机制,直到设备端的回声抑制在真实硬件上得到验证为止。引擎本身是全双工的;手机端正在逐步跟上。