综合介绍
Orpheus-TTS 是一个开源的文本转语音(TTS)系统,基于 Llama-3b 架构开发,目标是生成接近人类自然语音的音频。它由 Canopy AI 团队推出,支持英语、西班牙语、法语、德语、意大利语、葡萄牙语和汉语等多种语言。系统能通过文本输入生成具有语调、情感和节奏的语音,支持笑声、叹息等非语言表达,适用于实时对话、有声书制作和智能助手开发。Orpheus-TTS 提供预训练和微调模型,开发者可根据需求定制语音或语言。
功能列表
- 生成接近人类语音:将文本转为具有自然语调、情感和节奏的音频,优于部分闭源模型。
- 零样本语音克隆:无需额外训练即可模仿目标语音的音色。
- 情感与语调控制:通过标签(如
<laugh>
、<sigh>
)调整语音表达,增强真实感。 - 低延迟流式输出:实时语音生成延迟约 200ms,优化后可降至 100ms。
- 多语言支持:支持英语、西班牙语、法语、德语、意大利语、葡萄牙语、汉语等多种语言。
- 模型微调:提供数据处理脚本和示例数据集,支持开发者定制语音风格或语言。
- 本地与云端运行:支持通过 LM Studio、llama.cpp 或 vLLM 在本地或云端运行。
- 音频水印:通过 Silent Cipher 技术为生成的音频添加水印,保护版权。
使用帮助
安装流程
Orpheus-TTS 需要 Python 环境和基本的硬件支持(推荐 GPU)。以下是详细安装步骤:
- 克隆代码库
使用 Git 下载 Orpheus-TTS 项目:git clone https://github.com/canopyai/Orpheus-TTS.git cd Orpheus-TTS
- 安装依赖
安装核心包orpheus-speech
,它依赖 vLLM 进行快速推理:pip install orpheus-speech
注意:2025 年 3 月 18 日的 vLLM 版本可能存在 bug,建议安装稳定版本:
pip install vllm==0.7.3
其他依赖包括
transformers
、datasets
和torch
,可根据需求安装:pip install transformers datasets torch
- 检查硬件要求
- Python 版本:3.8-3.11(3.12 不支持)。
- GPU:推荐 NVIDIA CUDA 驱动,显存 12GB 以上以确保流畅运行。
- CPU:支持通过
orpheus-cpp
运行,但性能较低,适合轻量测试。 - 网络:首次运行需下载模型,建议稳定网络连接。
- 下载模型
Orpheus-TTS 提供以下模型,托管在 Hugging Face:- 微调模型(
canopylabs/orpheus-tts-0.1-finetune-prod
):适合日常语音生成任务。 - 预训练模型(
canopylabs/orpheus-tts-0.1-pretrained
):基于 10 万小时英语语音数据训练,适合语音克隆等高级任务。 - 多语言模型(
canopylabs/orpheus-multilingual-research-release
):包含 7 组预训练和微调模型,支持多语言研究。
下载方式:
huggingface-cli download canopylabs/orpheus-tts-0.1-finetune-prod
- 微调模型(
- 测试安装
运行以下 Python 脚本验证安装是否成功:from orpheus_tts import OrpheusModel model = OrpheusModel(model_name="canopylabs/orpheus-tts-0.1-finetune-prod") prompt = "tara: 你好,这是一个测试!" audio = model.generate_speech(prompt) with wave.open("test_output.wav", "wb") as file: file.setnchannels(1) file.setsampwidth(2) file.setframerate(24000) file.writeframes(audio)
成功运行后,将生成一个 WAV 文件,包含输入文本的语音。
主要功能操作
1. 生成接近人类语音
Orpheus-TTS 的核心功能是将文本转为接近人类自然语音的音频。系统支持多种语音角色,英语模型中 tara
的语感最自然,其他角色包括 leah
、jess
、leo
、dan
、mia
、zac
和 zoe
。多语言模型的角色需参考官方文档。操作步骤:
- 准备文本提示,格式为
{角色名}: {文本}
,例如tara: 你好,今天天气很好!
。 - 调用生成函数:
audio = model.generate_speech(prompt="tara: 你好,今天天气很好!")
- 输出为 WAV 格式音频,采样率 24000 Hz,单声道。
2. 情感与语调控制
用户可通过标签控制语音的情感表达,增强语音真实感。支持的标签包括:
<laugh>
:笑声。<sigh>
:叹息。<cough>
:咳嗽。<sniffle>
:抽鼻子。<groan>
:呻吟。<yawn>
:打哈欠。<gasp>
:惊讶。
示例:
prompt = "tara: 这个消息太震撼了!<gasp> 你听说了吗?"
audio = model.generate_speech(prompt)
生成音频将在适当位置加入惊讶效果。多语言模型的标签支持需参考 Hugging Face 文档。
3. 零样本语音克隆
Orpheus-TTS 支持零样本语音克隆,可直接模仿目标语音,无需预训练。操作步骤:
- 准备目标语音的 WAV 文件,建议时长 10-30 秒,采样率 24000 Hz。
- 使用以下脚本:
audio_ref = "path/to/reference.wav" prompt = "tara: 这段话会模仿你的声音!" audio = model.generate_with_voice_clone(prompt, audio_ref)
- 输出音频将接近参考语音的音色。预训练模型在克隆任务中表现更佳。
4. 低延迟流式输出
Orpheus-TTS 提供流式语音生成,适合实时对话场景,延迟约 200ms,优化后可降至 100ms。操作示例:
from flask import Flask, Response
from orpheus_tts import OrpheusModel
app = Flask(__name__)
[1]
model = OrpheusModel(model_name="canopylabs/orpheus-tts-0.1-finetune-prod")
@app.route("/stream")
def stream_audio():
def generate():
prompt = "tara: 这是实时语音测试!"
for chunk in model.stream_generate(prompt):
yield chunk
return Response(generate(), mimetype="audio/wav")
运行 Flask 服务后,访问 http://localhost:5000/stream
可听到实时语音。优化延迟需启用 KV 缓存和输入流式处理。
5. 模型微调
开发者可微调模型以支持新语言或语音风格。步骤如下:
- 准备数据集:格式参考 Hugging Face 示例数据集(
canopylabs/zac-sample-dataset
)。建议包含 50-300 个样本/角色,300 个样本可获得最佳效果。 - 预处理数据:使用官方提供的 Colab 笔记本(
1wg_CPCA-MzsWtsujwy-1Ovhv-tn8Q1nD
)处理数据,耗时约 1 分钟/千条。 - 配置训练:修改
finetune/config.yaml
,设置数据集路径和参数。 - 运行训练:
huggingface-cli login wandb login accelerate launch train.py
- 微调后模型可用于特定任务,如中文语音优化。
6. 音频水印
Orpheus-TTS 支持通过 Silent Cipher 技术为音频添加水印,保护版权。操作方法:
- 参考官方实现脚本(
additional_inference_options/watermark_audio
)。 - 示例:
from orpheus_tts import add_watermark audio = model.generate_speech(prompt) watermarked_audio = add_watermark(audio, watermark_id="user123")
7. 无 GPU 推理
无 GPU 用户可通过 orpheus-cpp
在 CPU 上运行,步骤:
- 安装 llama.cpp 环境。
- 参考官方文档(
additional_inference_options/no_gpu/README.md
)。 - 性能较 GPU 低,适合轻量任务。
注意事项
- 模型选择:微调模型适合日常任务,预训练模型适合高级任务如语音克隆。
- 硬件限制:低于 12GB 显存可能导致内存不足,建议检查硬件配置。
- 多语言支持:非英语语言需参考多语言模型文档,部分语言可能需要微调。
- 调试:若 vLLM 报错(如
vllm._C
),尝试更换版本或检查 CUDA 兼容性。
补充功能:社区扩展
Orpheus-TTS 的开源性质吸引了社区贡献,官方推荐以下实现(未经完全验证):
- LM Studio 本地客户端:通过 LM Studio API 运行 Orpheus-TTS(
isaiahbjork/orpheus-tts-local
)。 - FastAPI 兼容 Open AI:提供 Open AI 风格的 API 接口(
Lex-au/Orpheus-FastAPI
)。 - Gradio WebUI:支持 WSL 和 CUDA 的网页界面(
Saganaki22/OrpheusTTS-WebUI
)。 - Hugging Face Space:由社区用户 MohamedRashad 搭建的在线体验(
MohamedRashad/Orpheus-TTS
)。
应用场景
- 智能客服机器人
Orpheus-TTS 可为客服系统生成自然语音,支持实时对话和情感表达,提升用户体验。
例如,电商平台可集成 Orpheus-TTS,回复客户咨询时加入友好语调。 - 有声书与播客制作
出版商可将小说或文章转为有声书,支持多种角色和情感标签,降低配音成本。
播客创作者可生成动态开场白,增加节目吸引力。 - 语言学习工具
教育应用可生成标准发音的语音,帮助学生练习听力和口语。
例如,汉语学习者可使用中文模型练习普通话发音。 - 游戏角色配音
游戏开发者可为 NPC 生成动态对话,支持多语言和情感表达,增强沉浸感。
例如,RPG 游戏可为不同角色生成独特音色。 - 无障碍辅助工具
Orpheus-TTS 可为视障用户将文本转为语音,提供实时阅读支持。
例如,集成到电子书阅读器,朗读长篇文章。
QA
- Orpheus-TTS 支持哪些语言?
支持英语、西班牙语、法语、德语、意大利语、葡萄牙语和汉语。多语言模型覆盖更多语言,具体参考 Hugging Face 文档。 - 如何优化实时语音延迟?
启用 KV 缓存和输入流式处理,延迟可从 200ms 降至 100ms。确保 GPU 性能充足,显存至少 12GB。 - 零样本语音克隆需要什么准备?
提供 10-30 秒的 WAV 格式参考音频,采样率 24000 Hz。预训练模型效果更佳。 - CPU 能否运行 Orpheus-TTS?
可以,使用orpheus-cpp
,但性能低于 GPU,适合测试或轻量任务。 - 如何为音频添加水印?
使用 Silent Cipher 技术,调用add_watermark
函数,需参考官方脚本实现。 - 微调需要多少数据?
50 个样本可获得初步效果,300 个样本/角色可达最佳质量。数据需符合 Hugging Face 格式。