开源llama.cpp Releases·原文 2026年10月23日

llama.cpp b11828修改实时API:按已提交音频解码完成度触发完成信号

该版本把实时API的“完成”触发条件从流是否暂时无数据,改为按已提交音频对应的行号是否全部解码来决定;发布说明称旧做法会让后续追加的音频混入已提交条目。

AI解读:llama.cpp发布b11828,主要变更是server的realtime API:在每个提交音频的末尾行全部解码后再发送complete。

发布说明称,旧实现以“流暂时没有数据”作为完成的计时代理,会产生三类问题:尾部排空时追加的音频泄漏进已提交条目、排空前的最后一次提交与前一提交合并、连续提交被合并成一个。

新做法由mtmd_audio_stream_flush() 记录本次刷新音频结束处的行数(mtmd_audio_stream_get_n_rows_flushed),同时对照已产出的行数(mtmd_audio_stream_get_n_rows);slot维护这些结束行的FIFO,逐行解码到该行后才完成对应提交。

该PR编号为 #30994,发布说明标注共同作者为Pascal;改动范围限于server实时API的提交完成判定。

同一发布页列出macOS、Linux、Windows、Android等平台的预编译包,其中macOS Apple Silicon的KleidiAI版本和openEuler相关构建标注为DISABLED。

llama.cpp发布b11828版本,其server组件的实时API改为在“已提交音频对应的行全部解码完成”之后才发送complete,替代此前以流暂时无数据来判断完成的计时做法。相关改动对应PR #30994,发布说明标注共同作者为Pascal。

完成信号不再依赖“流跑空”

发布说明描述旧逻辑的问题:完成由stream runs dry触发,而这是一个计时代理。由此产生的三种情况是:尾部排空期间追加的音频会泄漏进已提交条目;排空前的最后一次提交会把两个条目合并;连续提交会塌缩成一个。

新逻辑在刷新音频时记录结束行号,并按行号顺序完成提交。

  • mtmd_audio_stream_flush() 记录本次刷新音频结束处的行数,接口为mtmd_audio_stream_get_n_rows_flushed;同时对照当前已产出的行数mtmd_audio_stream_get_n_rows。
  • slot维护一个由这些结束行组成的FIFO。
  • 每个提交要等到它结束行之前的所有行都解码完毕才被完成。

同批发布的平台构建

发布页面同时列出b11828的多平台预编译产物,覆盖macOS、iOS、Linux、Android和Windows,并包含CPU、Vulkan、CUDA 12/13、ROCm 10.0、OpenVINO、SYCL以及Snapdragon的CPU/Adreno GPU/Hexagon NPU等变体。发布说明中标注为DISABLED的项目包括macOS Apple Silicon的KleidiAI版本与openEuler构建。

信息来源

llama.cpp Releases原始来源

更多

新闻专题
外观