已被取代(2026-06-25),由 00-roadmap-elevenlabs-parity.md 及 01–03 号规范取代。保留以供历史参考。
ElevenLabs-Parity 计划——实现规范¶
日期: 2026-06-12 状态: 提案——源自 discussion #346 及 docs/competitive-analysis.md(PR #345)中的研究。 负责人: debpalash
目标¶
执行 #346 路线图——在质量和自由度上与 ElevenLabs 对齐,且完全本地化——以一系列小型 PR 推进。下面每个工作项都基于 docs/competitive-analysis.md 中的规范或研究章节(引用为 Spec N / §RN / Action N);本文档补充了排序、依赖和验收标准。按照章程持续合入 main:无 RC、无仪式、无版本噪音。
形态:依赖感知的独立 PR 波次¶
与稳定化清查采用相同的形态:每个工作项都是一个 PR,经自动化审查 + 安全门卫合入,可二分定位,且测试与 PR 同处一个变更中。波次的排序依据:(a) 前置依赖边,(b) 单位工作量带来的用户可见价值,(c) 舆情研究显示用户会以哪些方面来评判我们(安装可靠性、配音契合度、听写质量)。
在开展此项研究期间已交付(无需 PR):Smart Fit Phase A——规划器、指纹、生成路径(#347,即 Spec 1 前半部分);时间线片段编辑器(#348);/docs 中的 Scalar(#307)。
第 0 波——护栏与前置条件¶
| PR | 事项 | 来源 | 工作量 | 为何优先 |
|---|---|---|---|---|
| 0.1 | 文档漂移 CI:每日 inventory-vs-docs 任务,滚动维护单一 issue,绿色时自动关闭。仓库内 docs/features.yaml 从 README 功能矩阵 + 引擎表初始化;检查器自测遵循 tests/scripts/test_validate_install_docs.py 模式 |
Spec 9a | S | 本计划会新增大量文档;漂移保护必须先于这些文档落地 |
| 0.2 | 同意锁定的声音档案:档案上的 verified_own_voice 标志——通过录制同意话语的流程设置;增量 alembic 迁移;设置与档案 UI 展示 |
Action 22, §R1 guardrail 2 | M | agentic v2/v3(1.6,后续)与画廊共享(3.4)的硬性前置条件。也是对 voicebox「无同意锁定」新闻报道的反叙事 |
| 0.3 | 在 tests/evals/ 中新增 LLM-judge 评估层——移植 Patter(用例/运行器/断言),通过 llm_backend.py 进行判定,不构成门禁的定时任务,结论在本地重新计算 |
Spec 9b | M | 为第 1–2 波(听写优化、配音 QC)落地时提供语义回归网 |
第 1 波——速赢项(相互独立;可并行)¶
| PR | 事项 | 来源 | 工作量 | 验收标准 |
|---|---|---|---|---|
| 1.1 | 在新 backend/services/refinement.py 中实现 Whisper 循环坍缩预清理,应用于 capture_ws.py 中的 final 结果(绝不用于 partial) |
Spec 3 phase 1 (voicebox port, MIT) | S | 幻觉循环 fixtures 坍缩;修辞性重复 <6 的保留;未配置 LLM 时也可工作 |
| 1.2 | 分块长文 TTS:移植 backend/utils/chunked_tts.py;在请求模型中增加 max_chunk_chars/crossfade_ms;移植时修复已知的首块采样率 bug |
voicebox deep dive 1 (MIT) | S | 10k 字符输入可渲染且不触顶;分块接缝通过探针 DSP 判定(不削波、无不连续);单次合成路径不变 |
| 1.3 | pyvideotrans 桥接:提交他们的集成 bug,向上游提交一个 REST/OpenAI 风格的 _omnivoice.py PR;添加契约测试,固定他们所消费的接口面 |
Spec 11 (Option A) | S–M | 契约测试通过;上游 PR 已开启并关联 |
| 1.4 | 为 /ws/tts 增加 句子分块器:backend/services/sentence_chunker.py(移植自 Patter,MIT)+ 激进的首刷;将黄金对等场景作为 pytest fixtures |
Spec 8a | S | 多句输入下 TTFA 可测量地下降;意大利语逗号守卫用例通过 |
第 2 波——听写、智能体、远程(#346 的核心功能面)¶
| PR | 事项 | 来源 | 工作量 | 依赖 |
|---|---|---|---|---|
| 2.1 | 听写 LLM 优化 第 2 阶段:通过 llm_backend.py 实现提示词构建器 + 开关;原始与优化结果均持久化(alembic,增量);WS {type:"final", refined_text?};仅当 LLM 后端激活时自动优化才默认开启(其他情况下各处完全透传——对等规则) |
Spec 3 | M | 1.1 |
| 2.2 | MCP 服务器 v1:将现有 FastMCP 挂载到 /mcp(生命周期组合),提供带回环门禁的 transcribe 工具,X-VoiceStudio-Client-Id 中间件 + mcp_client_bindings 表(alembic),stdio 垫片,设置中的绑定 UI |
Spec 2 | M | — |
| 2.3 | 远程后端阶梯 1–3:后端 URL 设置 + /health 握手;所有非回环 HTTP+WS 上使用 OMNIVOICE_API_KEY bearer(扩展 NetworkAccessMiddleware;Tailscale Serve 之后仍需要 token);docs/remote-gpu.md Tailscale 页面(MagicDNS + Serve + headscale 说明 +「没有 key 绝不 Funnel」) |
§R2 rungs 1–3 | M | — |
| 2.4 | 远程 LLM 端点 UI:设置字段(base URL、模型、可选 API key)接入 llm_backend.py;验证可无缝替换 Ollama/vLLM/LM Studio |
§R2 rung 4 | S–M | — |
| 2.5 | Agentic v1:docs/agentic-voice.md(针对 :3900/v1 的 pipecat + LiveKit 配方)+ 在 CI 可选通道中增加 pipecat 冒烟测试;修复其暴露的参数/流式不匹配 |
Action 15, §R1 v1 | S–M | 2.3(文档中引用的远程认证方案) |
第 3 波——配音补全(配音用户评判我们的依据)¶
| PR | 事项 | 来源 | 工作量 | 依赖 |
|---|---|---|---|---|
| 3.1 | Smart Fit Phase B:导出侧视频重定时——通过 ffmpeg_utils.py 实现每片段剪切/减速(遵守信号量 + register_proc),在 dub_export.py 之前按实测时长重新生成字幕,最后一帧冻结;阈值(1.2× / 50-50)在配音设置中暴露,并加入 fit 指纹 |
Spec 1 剩余部分(Phase A 已在 #347 交付) | M–L | — |
| 3.2 | 逐片段克隆参考:在 speaker_clone.py 中实现 extract_segment_refs(),低于时长下限时按说话人回退;在 _GEN_INPUT_FIELDS 中提供模式 |
Spec 4 | S–M | — |
| 3.3 | 第二轮 ASR 质检:组装后阶段——根据识别出的边界重新对齐提示点,逐段漂移评分(通过 omnivoice/eval/wer/ 计算 WER),标记写入作业事件 + DubTab 标记,驱动增量重新配音;可选择退出,绝不致命 |
Spec 5 | M | 3.1(必须先存在最终时间线) |
Wave 4 — 平台稳健性(“真正可用的首次运行”红利)¶
| PR | 项目 | 来源 | 工作量 |
|---|---|---|---|
| 4.1 | 引擎预检兼容门:能力(torch)+ 驱动(NVML)检测 →(引擎 × wheel 变体)表 → 具体的预安装错误;醒目的持久 CPU 回退横幅——绝不静默。基于 engine_env.py 探测 + hardware_probe.py |
Action 19, §R4(b) | M |
| 4.2 | 崩溃隔离的 ASR:SubprocessBackend ASR 子类,具备死亡重启语义;转录中途 SIGKILL 测试 |
Spec 7 | M |
| 4.3 | 模型管理器 UI:基于 scan_cache_dir() 的页面——每个模型的磁盘占用、驱逐、hf cache verify、镜像(HF_ENDPOINT)设置;处理 Windows 降级符号链接模式以及删除/读取竞争 |
Action 20, §R4(c) | M |
| 4.4 | MLX 听写路由:在加固的 import mlx.core 探测之后,将听写/配音 ASR 路由到现有的 MLXWhisperBackend;注册表中加入后端感知的模型仓库映射 |
Spec 6 首个切片 | M |
| 4.5 | uv 去重 + 锁定策略:链接模式审计,Linux ext4 上使用 UV_LINK_MODE=hardlink,文档化的 sidecar torch 锁定对齐策略 |
§R4(a) | S |
Wave 5 — 新垂直领域(有声书、人设、人设机器人)¶
| PR | 项目 | 来源 | 工作量 | 依赖 |
|---|---|---|---|---|
| 5.1 | 有声书 A1:EPUB 导入(zipfile+lxml——不要使用 ebooklib,它是 AGPL)+ 目录分章 + 逐章可恢复的 TTS 队列 |
§R3 A1 | M | 1.2 |
| 5.2 | 有声书 A2+A3:分章 m4b(FFMETADATA1 + 封面)+ ACX 规范母带处理(两遍 loudnorm + astats 验证器;仅作“遵循 ACX 技术规范”的表述) | §R3 A2–A3 | S + S–M | 5.1 |
| 5.3 | .ovsvoice 导出/导入:zip 清单 + 设计参数 + consent.json + 许可证标签 + 带水印的预览 |
Action 18, §R3 G1 | S–M | — |
| 5.4 | 人设画廊:社区 gallery.json 索引仓库(PR 筛选)+ VoiceGallery “社区”标签页 + 通过预填 GitHub PR/issue 的应用内提交;门槛:仅限设计/自录音色、同意证明、打包时强制 AudioSeal 预览水印、下架模板 |
§R3 G2–G3 | M + M | 0.2, 5.3 |
| 5.5 | Agentic v2——Discord 人设机器人:构造上即选择加入(用户自己的 bot token);通过 LLM 适配器文本回复 + 通过 /v1/audio/speech 语音回复;人设绑定到受同意锁定的 profile;实时语音频道作为延伸目标(Pycord sinks / discord-ext-voice-recv,均为 MIT,维护风险已注明) |
§R1 v2 | M–L | 0.2, 2.2 |
| 5.6 | 用于播放叠加听写的 AEC:Patter NLMS 移植;远端信号从 /ws/tts 输入(重采样),带播放时间陈旧时钟;在所有三个平台通过探测验证前,设为设置中的选择加入项(对等规则) |
Spec 8b | M | 1.4 |
暂缓(明确暂缓,而非放弃)¶
- 电话功能(§R1 v3)——取决于:护栏 1–5 已上线(0.2 只是其中之一)、TTFA 验证实验对照约 600 ms p95 预算、AudioSeal 经 G.711 的验证实验。运营商凭据设计上为选择加入;绝不是默认项。
- Stories 多轨前端(voicebox 深度分析 5)——数据模型为 S,真正的成本是时间线 UI;#348 的分段编辑器是种子。待 5.1–5.2 证明长格式垂直场景后再重新评估。
- 加权声线混合(Action 12)、动态引擎生命周期(Action 13)、LM-Studio 风格运行时包(§R4 d)——有价值,但不是 #346 的关键路径。
- OpenAPI 卫生(Action 21)——增量后台工作;优先处理
/v1+ TTS 路由,不设专门 wave。 - 定位工具包(Action 14)——无代码工作;见机执行(对比页面与 3.1 的演示 GIF 配合良好;wave 1 落地后在 Show HN 发布)。
跨领域规则¶
- 基本准则:持续集成到主分支,不发布 RC,不做版本号宣传;向后兼容(无需重装引擎;每次 schema 变更均使用 alembic——0.2、2.1、2.2 都携带迁移;
omnivoice_data/保持不变)。 - 默认功能一致性:任何默认开启的功能在 macOS/Windows/Linux 上行为必须一致。尚无法实现的项目(5.6 AEC)以明确的选择加入方式发布。允许实现层面的差异(4.4 MLX)。
- 许可证纪律:MIT/Apache 移植必须携带署名头(voicebox、Patter、ebook2audiobook、Kokoro-FastAPI)。绝不复制 GPL(pyvideotrans、KrillinAI、voice-pro、ComfyUI、
mobi)或第三方 AGPL(alltalk_tts、StabilityMatrix、ebooklib、PyMuPDF)代码——依据 competitive-analysis.md 中的规格进行净室实现;实现者不得打开这些源代码。 - 本地优先:不强制调用云端;任何嵌入的 Patter 代码必须硬性禁用遥测;bug 报告器保持选择加入的预填 URL。
- i18n:所有新增 UI 字符串都通过
t('...');不硬编码 CJK(CI 门禁)。 - 每个 PR 都附带测试(单元测试 + 在生成音频处新增 probe-judge);合并前 CI 必须全绿。
- 监管时钟:欧盟 AI 法案第 50 条于 2026-08-02 生效——智能体输出标记(智能体路径上 AudioSeal 始终开启)和 AI 披露将与触发它们的特性(5.5)一同上线,而不是作为后续补充。
每项工作流程¶
每个 PR 使用 speckit(规格 → 规划 → 任务 → 实现),以 docs/competitive-analysis.md 中该条目的 Spec/§R 部分为种子——这些部分已包含集成点、设计差异、常量与测试计划。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 om/VoiceStudio