科学工具
科学工具让世界更美好
让世界更美好

Orpheus TTS 基于Llama-3b的开源文本转语音系统Orpheus TTS 基于Llama-3b的开源文本转语音系统

Orpheus TTS是基于Llama-3b的开源TTS系统,具备语音克隆、情感控制和低延迟等能力,TTS能力超越了 ElevenLabs 和 OpenAI 等开源和闭源模型,利用大型语言模型 (LLM) 的能力进行语音合成。

核心能力

语音自然度:自然的语调、情感和节奏,在语音合成领域独树一帜。

零样本语音克隆:无需预先微调,就能实现语音克隆,极大地降低了使用门槛。

可控的情感和语调:通过简单的标签,用户可以轻松控制语音的情感和语调特征。

低延迟:约200毫秒的流式延迟,适用于实时应用,且通过输入流式处理可进一步降低至约100毫秒。

模型介绍

1、微调生产模型:专为日常语音合成应用而微调的模型。

2、预训练模型:在10万小时以上的英语语音数据上训练的基础模型。

推理与应用

Colab环境下的简单设置

1、微调模型的Colab设置(非流式处理,实时流式处理的设置见下文):适用于日常语音合成应用的微调模型。

2、预训练模型的Colab设置:该笔记本设置为条件生成,但可以扩展到多种任务。

流式推理示例

1、克隆此仓库:

git clone https://github.com/canopyai/Orpheus-TTS.git

2、进入目录并安装包:

cd Orpheus-TTS && pip install orpheus-speech

3、运行以下示例代码:

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:
         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")

提示词的使用

1、微调生产模型:对于主模型,文本提示的格式为{name}: I went to the ...。可供选择的名字按会话真实度排序(主观基准)依次为"tara"、"leah"、"jess"、"leo"、"dan"、"mia"、"zac"、"zoe"。此外,还可以添加以下情感标签:<laugh><chuckle><sigh><cough><sniffle><groan><yawn><gasp>

2、预训练模型:可以仅根据文本生成语音,或者在提示中加入一个或多个现有的文本-语音对来生成语音。由于该模型未明确在零样本语音克隆目标上进行训练,在提示中加入的文本-语音对越多,生成的语音就越可靠。

还可以使用常规的LLM生成参数,如temperaturetop_p等,repetition_penalty>=1.1是稳定生成所必需的,增加repetition_penaltytemperature会使模型说话速度加快。

微调模型

以下是微调模型的概述,可在任意文本和语音数据上进行微调,其过程类似于使用Trainer和Transformers微调LLM。

1、数据集应为Hugging Face数据集。

2、使用此笔记本准备数据,会将中间数据集推送到您的Hugging Face账户,然后可以将其输入到微调脚本finetune/train.py中,预处理每千行数据耗时不到1分钟。

3、修改finetune/config.yaml文件,包含您的数据集和训练属性,然后运行训练脚本,还可以运行任何与Hugging Face兼容的过程,如LoRA来微调模型。

pip install transformers datasets wandb trl flash_attn torch
huggingface-cli login <输入您的HF令牌>
wandb login <wandb令牌>
accelerate launch train.py