返回博客列表

k2-fsa 开源 OmniVoice:覆盖 646 种语言的语音克隆 TTS,1.28 万星登 Trending

2026-09-13T11:00:00+08:00
OmniVoicek2-fsaTTS语音克隆语音合成开源

语音团队 k2-fsa(Daniel Povey 创立的"next-gen Kaldi"社区,小米系)的 OmniVoice 近日登上 GitHub Trending,日增约 570 星,累计已达 1.28 万星。仓库地址:https://github.com/k2-fsa/OmniVoice

它是目前语言覆盖最广的零样本语音克隆 TTS:官方文档列出了 646 种语言(ISO 639-3 编码),用 58.1 万小时完全开源的数据训练。模型约 6 亿参数,纯 Python 实现,支持 NVIDIA CUDA、Apple Silicon(MPS)、Intel Arc(XPU)本地部署。

这篇文章拆解它的技术方案、三种使用模式、与同类 TTS 的对比,以及语音克隆绕不开的合规问题。

本文 outline

  1. 基本盘:一个模型,646 种语言
  2. 技术方案:Diffusion LM + HuBERT/DAC 音频 tokenizer
  3. 三种生成模式:克隆、设计、自动
  4. 上手:5 行代码克隆一个声音
  5. 与 Coqui XTTS / OpenVoice / F5-TTS 对比
  6. 合规:语音克隆的法律边界

1. 基本盘:一个模型,646 种语言

先说硬数字:

指标
GitHub 星 12,816(2026-09-13)
许可证 Apache-2.0
主语言 Python
创建时间 2026-03-31
最新版本 v0.2.1
支持语言 646 种(ISO 639-3)
训练数据 58.1 万小时,全部开源
模型权重 ~2.45 GB(fp32,约 6 亿参数)
HF 下载 122 万+

"646 种语言"是它的核心卖点。对比一下:Coqui XTTS 约 17 种,OpenVoice 几十种,F5-TTS 主攻中英。OmniVoice 用一个模型覆盖从英语、中文到各类小语种,这对多语言产品和无障碍场景是直接价值——不用为每种语言部署一套 TTS。

k2-fsa 的背景值得一提:这是 Kaldi 语音识别框架作者 Daniel Povey 离开 Kaldi 后创建的社区,挂在小米旗下。旗下旗舰是 sherpa-onnx(1.47 万星,离线 ASR/TTS 全栈)、icefall、lhotse、k2 等。OmniVoice 是这个"next-gen Kaldi"生态在生成式语音方向的最新落子。

2. 技术方案:Diffusion LM + HuBERT/DAC 音频 tokenizer

OmniVoice 没有走 VITS 或 HiFi-GAN 的老路,而是采用了离散非自回归的 Diffusion LM 架构

  • 单阶段生成:文本直接映射到多码本(multi-codebook)声学 token,跳过了 VALL-E 系常用的"文本→语义→声学"两阶段管线
  • LLM 预热初始化:骨干网络从预训练 LLM 热启动——配置和 Qwen3 一致(1024 hidden、28 层、16 头),约 6 亿参数。这是论文强调的两个创新点之一:用 LLM 初始化大幅提升可懂度
  • 音频 tokenizer:自定义 higgs_audio_v2_tokenizer = HuBERT 语义模型 + DAC(Descript Audio Codec)声学模型,9 个码本、码本大小 1024、24 kHz 采样率
  • 另一个创新点:全码本随机掩码训练,提升训练效率
  • 生成速度:RTF 低至 0.025(比实时快 40 倍),默认 32 步扩散(可用 16 步加速),FlashInfer kernel 额外带来 2-2.6 倍无损加速

语音克隆的机制是:参考音频 → 编码成音频 token + 文本(形成"voice clone prompt")→ 扩散模型以这些 token 为条件生成。你可以把克隆的声纹保存成 VoiceClonePrompt 对象,跨会话复用,不用每次重新编码参考音频。如果没提供参考音频的转写文本,内置的 Whisper ASR 会自动转写。

3. 三种生成模式:克隆、设计、自动

OmniVoice 提供三种生成模式,覆盖面比纯克隆更宽:

模式一:语音克隆(Voice Cloning)。给一段 3-10 秒参考音频,克隆出这个声音。这是最常用的模式,也是它登上 Trending 的核心原因——小语种 + 高保真克隆的组合之前没有开源方案做到。

模式二:语音设计(Voice Design)。不用参考音频,直接用属性描述来"设计"声音:性别、年龄、音高、耳语、英语口音、中文方言。注意:这个模式目前只在中英文上训练,其他语言"可能产生不稳定结果"。

模式三:自动(Auto Voice)。模型自己选一个声音。适合批量生成、对音色无要求的场景。

输出是 24 kHz 单声道音频,直接以 numpy 数组返回,soundfile 一行写盘。

4. 上手:5 行代码克隆一个声音

from omnivoice import OmniVoice
import soundfile as sf
import torch

model = OmniVoice.from_pretrained("k2-fsa/OmniVoice",
                                  device_map="cuda:0",   # 或 "mps" / "xpu"
                                  dtype=torch.float16)

audio = model.generate(
    text="Hello, this is a test of zero-shot voice cloning.",
    ref_audio="ref.wav",          # 3-10 秒参考音频
    ref_text="Transcription of the reference audio.",  # 可省略,自动转写
)

sf.write("out.wav", audio[0], 24000)

安装:pip install torch torchaudio && pip install omnivoice(torch 按平台选 CUDA/MPS/XPU 版本)。本地部署还有 Gradio Web UI(omnivoice-demo)、单条推理 CLI、多 GPU 批量 CLI,以及 HF Space 在线 Demo。

一个国内友好的细节:如果 Hugging Face 直连不了,export HF_ENDPOINT="https://hf-mirror.com" 即可走镜像。

5. 与 Coqui XTTS / OpenVoice / F5-TTS 对比

方案 语言覆盖 架构 定位
OmniVoice 646 种 Diffusion LM(离散声学 token) 单模型多语言,克隆/设计/自动
Coqui XTTS ~17 种 GPT + 扩散 vocoder 多语言克隆,社区老牌
OpenVoice 几十种 多对多音色 音色克隆 + 风格控制
F5-TTS 中英为主 Flow Matching(DiT) 零样本 TTS,概念最接近

OmniVoice 和 F5-TTS 概念上最接近(都是扩散/DiT 系零样本 TTS),但实现路线不同:F5-TTS 用连续 flow matching,OmniVoice 用离散声学 token 的扩散 LM。OmniVoice 的核心差异化就是语言覆盖——646 种 vs 十几二十种,这是数量级的差距。

质量声明方面要打个折:README 说"state-of-the-art 克隆质量""最广语言覆盖",论文声称中英和多语基准 SOTA,但这些是自报数据,没有独立第三方复测。实际体验建议在 HF Space 或本地先试,尤其小语种要实测。

6. 合规:语音克隆的法律边界

这是语音克隆绕不开的一节。代码是 Apache-2.0 宽松许可,但 README 里有明确 Disclaimer:

用户严格禁止将模型用于未授权的语音克隆、冒充、欺诈、诈骗或任何其他非法/不道德行为,必须遵守当地法律法规。

换句话说:项目不提供任何"声音授权核验"机制,合规责任完全在用户身上。合法场景(本人声音、有授权、研究用途)没问题;但如果要商用,务必确认:

  1. 声音授权:克隆的声音是否有原主人的明确授权?书面协议优先
  2. 当地法律:中国《民法典》第 1023 条将声音权益参照肖像权保护;欧盟、美国一些州有专门的 voice biometrics 法规
  3. 平台政策:音频平台、社交平台对 AI 合成声音的标注要求

在端侧语音 Agent、混合语音交互成为标配的当下,覆盖小语种的开源 TTS 对多语言产品和无障碍场景有直接价值——但用起来之前,先把授权问题想清楚。

参考


作者: itech001 来源: 公众号:AI人工智能时代(the-ai-era) 网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top

关注公众号,获取更多 AI 技术干货!

分享给朋友