第10章 语音人格(Voice Personalities)
第10章:语音人格
## 概述 将人格附加到语音配置文件,生成符合角色的新台词,并按该角色的口吻改写输入文本——所有功能均由本地 LLM 驱动。
## 功能简介 人格是附加在语音配置文件上的可选自由文本描述——定义这个角色是谁、说话方式及关注重点。设置后,在“生成”按钮旁会新增两个控制项,均由本地运行的 Qwen3 LLM 支持:
- 撰写 (Compose) —— 在文本框中生成一句贴合角色的新台词。再次点击可获得不同版本。 - 角色发声 (Speak in character) —— 一个开关,在 TTS 前将输入文本改写为角色口吻,同时保留所有原意。
LLM 负责生成文本,语音配置文件负责发声。无需云端往返,也不依赖外部 API,整个流程在你本地硬件上运行。
语音人格功能自 0.5.0 版本引入。该本地 LLM 同时也充当听写(Dictation)的润色模型——应用内只有一个 LLM,而非两个,共享同一模型缓存和 GPU 内存占用。
## 设置人格 打开语音配置文件的编辑视图。人格字段为自由文本,上限 2,000 字符。你可以按对自己最有效的方式描述该声音——过往可能说过的话、语言习惯、语调、边界等。
好的描述通常包含: - 一句话身份(他是谁) - 语言习惯(节奏、用词、避免使用什么) - 代表性短语——示例台词比形容词更能让 LLM 捕捉到目标语调 - 角色不会做的事(例如:不解释、不道歉、拒绝出戏等)
任何类型的语音配置文件——克隆或预设——都可以设置人格。三种引擎的工作方式完全相同,与底层引擎无关。
## 两项操作 每项操作针对特定任务调优,LLM 温度也会相应调整。
### 撰写 无种子文本,生成一句贴合角色的新话语。点击洗牌按钮可将台词直接填入生成文本框;再次点击获得不同版本。
- 适用场景:原型测试、采样角色声音、在未经打稿的情况下头脑风暴台词 - 温度:高——多样性是核心目标 - 典型输出:简短有力、符合角色语域的句子
### 角色发声(改写) 打开角色开关后,你输入或听写的内容在 TTS 前会被改写为角色口吻——保留所有观点,仅改变措辞。高保真模式:内容不变,只有声音变了。
- 适用场景:将听写备忘录转化为角色语音;将普通英文脚本调整为特定角色的声音,无需手动编辑 - 温度:低——忠实度优先 - 典型输出:观点相同、顺序相同,措辞和节奏不同
## 仅限语音输出 两种模式均强制语音输出。提示词要求 LLM 生成人们会大声说出的内容——无旁白、无动作标签(如 *叹息*、[大笑])、无元评论、无 Markdown 格式、无舞台指示。
这是刻意设计:输出将直接送入 TTS,任何无法口述的内容都会被忽略或被字面朗读。仅限语音的输出框架还能让内容干净地融入对白,你可以直接将“回应”结果插入故事线中。
## 本地 LLM 随附的 LLM 是 Qwen3,提供三种尺寸:
| 模型 | 下载大小 | 适用场景 | | :--- | :--- | :--- | | Qwen3 0.6B | ~400 MB | 默认选项。速度极快,适合日常使用。 | | Qwen3 1.7B | ~1.1 GB | 角色人格的甜点区,能很好处理特定措辞。 | | Qwen3 4B | ~2.5 GB | 满血画质。速度最慢,适合对语调有极高要求的场景。 |
该模型通过 Voicebox 已为 TTS 使用的同一后端运行——Apple Silicon 上为 MLX(4-bit 社区量化版),其他平台为 PyTorch(transformers AutoModelForCausalLM)。下载流程复用 TTS 模型的缓存和管理界面。
在“设置 → 捕获 → 润色 → 润色模型”中选择尺寸——人格模式会复用该设置。若切换模型,润色和人格输出将在下一次调用时自动应用变更。
## 使用控件 当所选配置文件有人格设置时,两个控件会显示在悬浮生成框上。
点击洗牌按钮。LLM 运行后结果将填入生成文本框。可按需编辑,然后点击“生成”。输入(或听写)你想说的话。打开魔法棒开关。点击“生成”——Voicebox 先通过人格 LLM 处理文本,再由 TTS 朗读改写后的版本。若要普通 TTS,请关闭开关。
“撰写”每次点击都会生成不同结果。而“角色开关”则是一种模式——在关闭之前,它应用于每一次生成调用。
用例
- 拥有专属声音的智能体。将角色开关与内置 MCP 服务器结合,让 Claude Code、Cursor、Cline 或任何支持 MCP 的智能体通过带有人格的配置文件进行对话。智能体调用 `voicebox_speak({ text, profile, personality: true })`,Voicebox 会在朗读前将文本改写为角色口吻。 - 交互式角色。游戏、叙事工具、无障碍体验。带有人格描述和克隆声音的角色成为可复用的资产。 - 无障碍。无法使用原声说话的人可以保留一份人格描述,记录他们过去的声音风格,并利用改写开关将打字输入转化为角色语音。 - 创意草稿。编写简单大纲,打开角色开关,逐行生成角色语音,将音频插入故事线。
## API 接口 人格可通过 REST 访问:
| 方法 | 端点 | 请求体 | | :--- | :--- | :--- | | PUT | /profiles/{id} | 包含最多 2,000 字符的 personality 字段以设置。 | | POST | /profiles/{id}/compose | 无请求体。返回新的角色台词文本。 | | POST | /generate | 包含 `personality: true` 以在 TTS 前通过人格 LLM 处理输入文本。POST /speak 同理。 |
带 `personality: true` 的 `POST /generate` 与 MCP `voicebox_speak` 工具在传递 `personality: true` 时使用的原始调用相同。脚本和智能体可直接使用。
限制与注意事项
- 人格是提示词,非微调。LLM 有时会偏离角色,尤其在高温度的“撰写”模式下。再次点击以获取新尝试。 - 冗长的人格描述未必更好。2,000 字符是上限而非目标。一条锐利的 300 字符描述加两句示例台词,通常优于长篇大论。 - 仅限语音的输出框架强制实施,但并非无懈可击。超大提示词或特殊输入可能导致动作标签渗入。如果 TTS 输出中出现 [laughs],通常是模型在描述中锚定了该提示——请从描述中移除。 - “改写”比“回应”更严格。如果输出改变了你的原意,你可能需要“回应”(或在输入中提供上下文的“撰写”),而非“改写”。
## 下一步 - 听写:在机器上的任何位置为“改写”或“回应”输入听写文本。 - 捕获:捕获天然适合配合人格——听写备忘录,改写为角色语音,生成音频。 - 创建语音配置文件:为现有配置文件添加人格。 - GitHub 编辑 - 预设声音:使用内置预制声音,无需录制音频样本。 - MCP 服务器:让 Claude Code、Cursor、Cline 或任何支持 MCP 的智能体使用你的克隆声音进行本地对话,无需云端。