自然人声合成Orpheus-TTS
项目简介
终于有研究中文的音色、自然度、拟人度的 TTS 了。Orpheus TTS 是基于 Llama-3b 骨干网络的 SOTA 开源文本到语音系统。Orpheus 展示了使用 LLMs 进行语音合成的涌现能力。
能力
- 类人语音:自然语调、情感和节奏,优于 SOTA 闭源模型
- 零样本语音克隆:无需预先微调即可克隆声音
- 指导情感和语调:通过简单的标签控制语音和情感特征
- 低延迟:实时应用中约为 200 毫秒的流延迟,通过输入流可降低至约 100 毫秒
模型
我们提供 2 个英语模型,此外我们还提供数据处理脚本和样本数据集,以便您轻松创建自己的微调版本。
- 微调产品 – 适用于日常 TTS 应用的微调模型
- 预训练 – 我们的基础模型在超过 10 万小时的英语语音数据上训练
我们还提供了一组多语言模型的研究版
- 多语言系列 – 7 对预训练和微调模型。
推理
在 colab 上的简单设置
我们提供跨语言的标准化提示格式,这些笔记本展示了如何用英语使用我们的模型。
- Colab For Tuned Model(非流式,见下文实时流式)- 适用于日常 TTS 应用的微调模型。
- Colab 预训练模型 – 此笔记本已设置用于条件生成,但可以扩展到一系列任务。
流式推理示例
克隆此仓库
git clone https://github.com/canopyai/Orpheus-TTS.git
导航并安装包
cd Orpheus-TTS && pip install orpheus-speech # uses vllm under the hood for fast inference
- vllm 于 3 月 18 日推送了一个略微有问题的版本,因此一些问题正在通过回滚到
pip install vllm==0.7.3之后pip install orpheus-speech来解决 - Run the example below:
运行以下示例:
from orpheus_tts import OrpheusModel import wave import time model = OrpheusModel(model_name ="canopylabs/orpheus-tts-0.1-finetune-prod") prompt = '''Man, the way social media has, um, completely changed how we interact is just wild, right? Like, we're all connected 24/7 but somehow people feel more alone than ever. And don't even get me started on how it's messing with kids' self-esteem and mental health and whatnot.''' start_time = time.monotonic() syn_tokens = model.generate_speech( prompt=prompt, voice="tara", ) with wave.open("output.wav", "wb") as wf: wf.setnchannels(1) wf.setsampwidth(2) wf.setframerate(24000) total_frames = 0 chunk_counter = 0 for audio_chunk in syn_tokens: # output streaming chunk_counter += 1 frame_count = len(audio_chunk) // (wf.getsampwidth() * wf.getnchannels()) total_frames += frame_count wf.writeframes(audio_chunk) duration = total_frames / wf.getframerate() end_time = time.monotonic() print(f"It took {end_time - start_time} seconds to generate {duration:.2f} seconds of audio")
预训练模型
这是一个非常简单的过程,类似于使用 Trainer 和 Transformers 训练LLM。
提供的基模型训练了 10 万小时。我建议不要使用合成数据进行训练,因为当您尝试微调特定声音时,它会产生更差的结果,这可能是由于合成声音缺乏多样性,并且在分词时映射到相同的令牌集(即导致代码簿利用率低)。
我们在长度为 8192 的序列上训练 3b 模型,我们使用相同的数据集格式进行 TTS 微调的预训练。我们将输入_ids 序列连接起来以提高训练效率。所需的文本数据集格式如本问题#37 所述。
如果您要进行扩展训练此模型,即用于其他语言或风格,我们建议仅从微调开始(没有文本数据集)。文本数据集背后的主要思想在博客文章中有讨论。(总结;不要忘记太多语义/推理能力,这样它才能更好地理解如何发音/表达短语,然而大部分的遗忘会在训练初期发生,即<100000 行),除非您进行非常扩展的微调,否则可能不会有太大的影响。
项目链接
扫码加入技术交流群,备注「开发语言-城市-昵称」
(文:GitHubStore)
自然人声合成Orpheus-TTS最先出现在每时AI。