llama.cpp服务器新增实时转写API,WebSocket握手纳入API key校验
llama.cpp发布b11780版本,其server组件加入实时转写API。提交说明称,新接口按GA Realtime规范定义会话结构,并修补了实时槽位占用、会话创建时序和WebSocket鉴权等问题。
AI解读:llama.cpp在b11780版本中由server组件加入实时转写API,对应PR #30636;发布页同时列出macOS、Linux、Windows、Android等平台的可下载构建。
提交说明称,会话对象采用GA Realtime schema:type为transcription,输入格式、转写模型、轮次检测和降噪放在audio.input下;速率保持模型采样率,客户端目前须按该采样率发送音频。
API key中间件现在覆盖WebSocket握手:由于httplib在升级前先跑预路由处理器,鉴权失败会在握手阶段返回 401,与普通路由一致;接受Bearer、原始key和X-Api-Key三种形式。
提交说明还列出三项修复:实时槽位不再进入prompt循环,避免占用slot_batched导致其他请求饿死;会话在槽位就绪后启动,session.created等待音频流传开始;读取端停止时关闭socket,使会话随之结束。
input_audio_buffer.committed事件现在按Realtime规范命名条目:item_id指向由已提交音频生成的条目,previous_item_id指向前一个条目,首个为null;committed先于补全该条目的转为文字事件发出。
llama.cpp发布b11780版本,server组件新增实时转写API(PR #30636)。发布说明同时提供macOS、Linux、Windows、Android等平台的多份预编译包。
实时转写会话按GA规范定义
提交说明称session对象遵循GA Realtime schema:type为transcription,输入格式、转写模型、轮次检测和噪声降低放在audio.input下。速率保持为模型采样率,提交说明写明这是客户端“目前”必须发送的速率。
- 该PR描述中先加入实时转写API,随后删除了transcription_sessions。
- 文档随此次改动一并加入。
WebSocket鉴权与会话生命周期修复
提交说明称,API key中间件现在能在WebSocket握手阶段拦截请求:httplib在升级前执行预路由处理器,因此鉴权失败会像其他路由一样返回 401。这一拦截覆盖router proxy,其子进程不带key运行;接受的key形式与HTTP相同,包括Bearer、原始key和X-Api-Key。
提交说明还记录了几处时序与槽位问题。等待音频的实时槽位处于GENERATING但没有内容可解码,原先会落入prompt循环并占用slot_batched,导致更高槽位上的请求因任务类型无法can_batch_with而在整个会话中饿死。提交说明称实时槽位没有prompt,循环只设置一次并始终跳过。
- 音频流原在prompt循环中创建,会跳过无法与正在生成槽位批处理的槽位;session.created又在任务提交前发出,导致早期追加失败、读取端退出,socket保持打开且槽位被占至HTTP超时。
- 现在槽位在启动时建立自己的流,并用begin结果发出信号;session.created等待该信号;读取端停止会关闭socket,会话随之结束。
input_audio_buffer.committed的条目命名
提交说明称,按Realtime规范,committed事件的item_id是由已提交音频生成的条目,previous_item_id是在它之前提交的条目,首个为null。committed现在先于补全该条目的转为文字事件发出,两者连同条目切换在同一把锁下发出,避免增量事件落在中间。