开源llama.cpp Releases·原文 2026年11月3日

llama.cpp b12061支持无声音克隆的Pocket TTS预置音色

该版本把kyutai/pocket-tts-without-voice-cloning的预置音色转成提示嵌入存入mmproj,/tts接口和 --tts-voice可按名选择;无声音编码器的模型会拒绝说话人参考音频,未指定音色时默认使用第一个预置音色。

AI解读:llama.cpp发布b12061版本,合并了mtmd对Pocket TTS无声音克隆权重的支持(#31429),并同步提供macOS、Linux、Windows、Android等多平台预编译包。

Pocket TTS的预置音色以骨干模型在音色提示后的KV状态形式随权重发布。转换器把这些状态还原成提示嵌入,存入mmproj的voice.* 条目;被置零的声音编码器不参与转换,/tts的voice字段和 --tts-voice用于选择其中一个音色。

当模型不带声音编码器时,说话人参考会被拒绝。转换过程不会因音色问题失败,而是记录每个音色状态与重新提示骨干所得状态之间的距离,超过 5% 时告警;完全不属于该权重的状态会被跳过,因此kyutai/pocket-tts的权重包也能转换。按发布说明,意大利语、德语、西班牙语在bf16舍入误差内,english_2026-04偏差 2%,法语偏差 20%(其第 0 层状态来自其他权重)。

mtmd_gen_audio_info新增n_voices与mtmd_gen_audio_voice_name(),服务端在GET /props的voices字段列出模型自带的音色。向有预置音色的模型请求未知音色时返回 400 并指出音色名,而不是 500;没有预置音色的模型忽略voice字段并告警。

不提供音色或说话人参考时,llama-tts与服务端默认取第一个预置音色并在日志中说明,原因是这样模型在无音色提示时输出近乎静音;LFM3-Audio的音色名匹配改为不区分大小写。

llama.cpp发布b12061版本,其中mtmd部分加入对kyutai/pocket-tts-without-voice-cloning权重的支持,使不带声音克隆能力的Pocket TTS模型可以通过预置音色发声。发布说明由仓库机器人github-actions[bot] 发布,提交说明列出Xuan Son Nguyen与Pascal为共同作者。

预置音色如何进入推理

按提交说明,这些权重把预置音色以骨干模型在音色提示之后的KV状态形式随包发布。转换器把每个状态还原为提示嵌入,存进mmproj的voice.* 条目,被置零的声音编码器不纳入;推理时由 /tts的voice字段或 --tts-voice参数指定其中一个音色。

  • 模型没有声音编码器时,提交说明称说话人参考会被拒绝。
  • mtmd_gen_audio_info新增n_voices和mtmd_gen_audio_voice_name() 用于列出音色名,GET /props在模型自带音色时于voices字段返回。

转换与请求的边界

提交说明承认,Kyutai随包发布的音色状态并不总是与权重重新提示得到的状态一致:意大利语、德语、西班牙语在bf16舍入误差内,english_2026-04偏差 2%,法语偏差 20%(其第 0 层状态来自其他权重),而参考实现直接按原样加载,听起来仍是同一音色。转换器因此重新提示骨干并比较整个状态,逐音色记录距离,超过 5% 时告警;完全不属于该权重的状态被跳过,使kyutai/pocket-tts的权重包也能转换,转换不会因音色而失败。

  • 向有预置音色的模型请求未知音色返回 400 并点名该音色,取代此前的 500 “failed to process TTS prompt”。
  • 没有预置音色的模型忽略voice字段并给出警告,与其他音频生成模型行为一致。
  • 既未给音色也未给说话人参考时,llama-tts和服务端取第一个预置音色并在日志中说明,因为无音色提示时模型输出近乎静音。
  • LFM3-Audio的音色名查找改为不区分大小写,tts聊天模板会把音色名转小写。

信息来源

llama.cpp Releases原始来源