OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Outetts — 开源文本转语音项目,适合可控语音生成实验

Outetts — 开源文本转语音项目,适合可控语音生成实验

 
  chapel ·  2026-03-20 11:00:27 · 3 次点击  · 0 条评论  

OuteTTS

🌐 官网 (outeai.com) | 🤗 Hugging Face | 💬 Discord | 𝕏 X (Twitter) | 📰 博客

HuggingFace
HuggingFace
PyPI
npm

兼容性

OuteTTS 支持以下后端:

后端 语言 安装方式 支持的模型版本
Llama.cpp Python 绑定 Python ✅ 默认安装 所有
Llama.cpp 服务器 Python ✅ 默认安装 所有
Llama.cpp 异步服务器 (批处理) Python ✅ 默认安装 1.0
Hugging Face Transformers Python ✅ 默认安装 所有
ExLlamaV2 Python ❌ 需手动安装 所有
ExLlamaV2 异步 (批处理) Python ❌ 需手动安装 1.0
VLLM (批处理) 实验性支持 Python ❌ 需手动安装 1.0
Transformers.js JavaScript NPM 包 0.2

批处理 RTF 基准测试

测试环境:NVIDIA L40S GPU

rtf

安装

OuteTTS 安装指南

OuteTTS 现在默认安装 llama.cpp Python 绑定。因此,您必须根据您的硬件指定安装方式。有关构建 llama.cpp 的更详细说明,请参考以下资源:llama.cpp 构建指南llama.cpp Python

Pip 安装:

Transformers + llama.cpp CPU
pip install outetts --upgrade
Transformers + llama.cpp CUDA (NVIDIA GPU) 适用于已安装 NVIDIA GPU 和 CUDA 的系统:
CMAKE_ARGS="-DGGML_CUDA=on" pip install outetts --upgrade
Transformers + llama.cpp ROCm/HIP (AMD GPU) 适用于已安装 AMD GPU 和 ROCm (需指定您的 DAMDGPU_TARGETS) 的系统:
CMAKE_ARGS="-DGGML_HIPBLAS=on" pip install outetts --upgrade
Transformers + llama.cpp Vulkan (跨平台 GPU) 适用于支持 Vulkan 的系统:
CMAKE_ARGS="-DGGML_VULKAN=on" pip install outetts --upgrade
Transformers + llama.cpp Metal (Apple Silicon/Mac) 适用于配备 Apple Silicon 或兼容 GPU 的 macOS 系统:
CMAKE_ARGS="-DGGML_METAL=on" pip install outetts --upgrade

使用

📚 文档

完整的用法指南,请参阅接口文档:

文档

基础用法

[!TIP]
目前,仅提供一个默认的英语女声用于测试。

您可以按照以下指南,仅用几行代码轻松创建自己的说话人配置文件:

👉 创建自定义说话人配置文件

import outetts

# 初始化接口
interface = outetts.Interface(
    config=outetts.ModelConfig.auto_config(
        model=outetts.Models.VERSION_1_0_SIZE_1B,
        # 对于 llama.cpp 后端
        backend=outetts.Backend.LLAMACPP,
        quantization=outetts.LlamaCppQuantization.FP16
        # 对于 transformers 后端
        # backend=outetts.Backend.HF,
    )
)

# 加载默认的说话人配置文件
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL")

# 或者,您可以在几秒钟内创建自己的说话人配置文件并立即复用
# speaker = interface.create_speaker("path/to/audio.wav")
# interface.save_speaker(speaker, "speaker.json")
# speaker = interface.load_speaker("speaker.json")

# 生成语音
output = interface.generate(
    config=outetts.GenerationConfig(
        text="Hello, how are you doing?",
        speaker=speaker,
    )
)

# 保存到文件
output.save("output.wav")

支持 OuteTTS 模型的第三方库

以下是支持运行 OuteTTS 模型的第三方工具。

语言 支持的模型版本
Llama.cpp TTS 示例 C++ 0.2
KoboldCPP C++ 0.2, 0.3
MLX-Audio Python (MLX) 1.0
ChatLLM.cpp C++ 1.0

OuteTTS 1.0 版本使用建议

[!IMPORTANT]
重要采样注意事项

使用 OuteTTS 1.0 版本时,必须使用 采样配置 部分指定的设置。
重复惩罚的实现尤为重要——此模型需要对最近 64 个令牌的窗口应用惩罚,而不是在整个上下文窗口上。惩罚整个上下文将导致模型产生损坏或低质量的输出

为了解决这个限制,outetts 库已为所有后端自动设置了必要的采样器和补丁。
如果使用自定义实现,请确保正确实现这些要求。

说话人参考

该模型设计为使用说话人参考。没有参考时,它会生成随机的声学特征,通常导致输出质量较低。
模型会继承参考说话人的情感、风格和口音。
因此,当使用同一说话人转录到其他语言时,您可能会观察到模型保留了原始口音。
例如,如果您使用一个日语说话人并用英语继续说话,模型可能会倾向于使用日语口音。

多语言应用

建议为您打算使用的语言创建一个说话人配置文件。这有助于在该特定语言(包括语调、口音和语言特征)中获得最佳效果。

虽然模型支持跨语言语音,但它仍然依赖于参考说话人。如果说话人有明显的口音——例如英式英语——其他语言也可能带有这种口音。

最佳音频长度

  • 最佳性能: 单次运行生成约 42 秒 的音频(约 8,192 个令牌)。建议在生成时不要接近此窗口限制。通常,最佳结果可达 7,000 个令牌。
  • 带说话人参考的上下文缩减: 如果说话人参考长度为 10 秒,有效上下文将减少到约 32 秒。

温度设置建议

测试表明,温度为 0.4 是保证准确性的理想起点(配合以下采样设置)。然而,某些声音参考可能受益于更高的温度以增强表现力,或稍低的温度以实现更精确的声音复制。

验证说话人编码

如果克隆的声音质量不佳,请检查编码后的说话人样本。

interface.decode_and_save_speaker(speaker=your_speaker, path="speaker.wav")

DAC 音频重建模型是有损的,带有削波、音量过大或不寻常声音特征的样本可能会引入影响输出质量的编码问题。

采样配置

为了在此 TTS 模型上获得最佳结果,请使用以下采样设置。

参数
温度 0.4
重复惩罚 1.1
重复惩罚范围 64
Top-k 40
Top-p 0.9
Min-p 0.05

致谢

DAC (Descript Audio Codec)

WavTokenizer

CTC 强制对齐

Uroman "本项目使用了由 Ulf Hermjakob, USC Information Sciences Institute (2015-2020) 编写的通用罗马化软件 'uroman'"

mecab-python3

3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私政策 ·  服务条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 71 ms
Developed with Cursor