export function queueSteps(chunkMs, computeMs, count = 8) { if ( !Number.isFinite(chunkMs) || !Number.isFinite(computeMs) || chunkMs <= 0 || computeMs <= 0 ) { throw new RangeError("Time values must be finite and positive."); } let previousEnd = 0; return Array.from({ length: count }, (_, index) => { const arrival = (index + 1) * chunkMs; const start = Math.max(arrival, previousEnd); const end = start + computeMs; previousEnd = end; return { index: index + 1, arrival, start, end, wait: start - arrival }; }); } export const architectures = { cascade: { nodes: [ ["用户语音", "声音输入", "input"], ["ASR", "识别成文本"], ["文本 LLM", "生成回答"], ["TTS", "合成声音"], ["系统语音", "播放输出", "output"], ], detail: "

两个独立的文本接口。ASR 把用户语音交给文本模型,TTS 再把回答读出。模块可以独立替换。仅传文字时,输入声学信息会在接口处被压缩。

持续双工需要在这些模块之间保持新输入、话轮状态、取消与播放进度的一致。

", }, two: { nodes: [ ["用户语音", "声音输入", "input"], ["语音理解 LLM", "直接读取音频特征"], ["回答文本", "内容接口"], ["TTS", "合成声音"], ["系统语音", "播放输出", "output"], ], detail: "

输入端直接理解声音。模型接收音频特征并生成回答文字,之后由独立 TTS 合成。输入端可以保留语气等线索,输出端仍通过文本接口组织。

本页以 Ultravox 核心加外接 TTS 作为这一工作定义的例子。

", }, native: { nodes: [ ["用户语音", "声音输入", "input"], ["语音表示", "编码或特征"], ["联合交互模型", "声音与内容建模"], ["语音解码", "还原波形"], ["系统语音", "播放输出", "output"], ], detail: "

语音直接参与内容与声学生成。编码器、音频 token、文字辅助流和波形解码器可以共同存在,具体组织依模型而异。

持续听说依赖输入更新方式、因果训练与实时服务。原生语音接口与全双工行为分别核验。

", }, }; export const benchmarks = [ { name: "级联管线", first: 8.78, answer: 10.12 }, { name: "Ultravox 0.7", first: 3.88, answer: 8.4 }, { name: "GPT-Realtime 1.5", first: 6.36, answer: 6.89 }, { name: "Gemini Live 3.1", first: 3.95, answer: 4.25 }, ];