FireRedTTS-2 ist ein Text-to-Speech (TTS)-System, das für die Erstellung langer Dialoge mit mehreren Sprechern entwickelt wurde. Es nutzt die Streaming-Technologie, um eine Sprachausgabe mit niedriger Latenzzeit zu ermöglichen, was den Prozess der Dialoggenerierung sowohl schnell als auch natürlich macht. Der Hauptvorteil des Systems liegt in seiner Fähigkeit, Gespräche von bis zu mehreren Minuten Länge zu bewältigen und einen reibungslosen Wechsel zwischen mehreren virtuellen Sprechern zu unterstützen, während der kontextuelle Rhythmus und die emotionale Kohärenz beibehalten werden. fireRedTTS-2 unterstützt mehrere Sprachen, darunter Chinesisch, Englisch und Japanisch, und ist mit Zero-Shot Sound Cloning ausgestattet, das es dem Benutzer ermöglicht, die Töne jeder Sprache, auch zwischen verschiedenen Sprachen, einfach zu klonen. Das System unterstützt mehrere Sprachen, darunter Chinesisch, Englisch und Japanisch, und ist mit einer Zero-Shot-Sound-Cloning-Funktion ausgestattet, die es dem Benutzer ermöglicht, den Ton einer beliebigen Sprache zu klonen und sogar zwischen den Sprachen zu wechseln. Darüber hinaus bietet das System eine Funktion zur Erzeugung von Zufallstönen, mit der eine große Anzahl unterschiedlicher Sprachdaten erzeugt werden kann. Für die Benutzerfreundlichkeit bietet das Projekt eine einfache Web-UI, die es auch Benutzern, die mit der Programmierung nicht vertraut sind, ermöglicht, schnell loszulegen.
Funktionsliste
- Lange DialogerstellungUnterstützung für die Erstellung von Dialogen von bis zu 3 Minuten mit 4 verschiedenen Sprechern, mit der Möglichkeit, die Trainingsdaten zu erweitern, um längere Dialoge und mehr Sprecher zu unterstützen.
- Unterstützung mehrerer SprachenUnterstützung für Sprachsynthese in Englisch, Chinesisch, Japanisch, Koreanisch, Französisch, Deutsch und Russisch.
- Klonen von Null-SamplesKlonen von bestimmten Klängen ohne Training, unterstützt das Klonen von Klängen für sprachübergreifende und gemischtsprachige Szenarien.
- ultraniedrige LatenzzeitErmöglicht satzübergreifende Streaming-Erzeugung mit einer Erstansprechlatenz von nur 140 ms, basierend auf einem neuen 12,5-Hz-Streaming-Sprachdisambiguator und einer dualen Transformer-Architektur.
- hohe StabilitätHohe Stimmähnlichkeit und niedrige Fehlerquoten sowohl bei Tests mit einem Monolog als auch bei Dialogen mit mehreren Personen.
- Zufällige TonerzeugungKann verwendet werden, um schnell verschiedene Sprachdaten zu erzeugen, die für das Training von Spracherkennungsmodellen (ASR) oder Sprachinteraktionssystemen geeignet sind.
- Bereitstellung einer Web-BenutzeroberflächeEine benutzerfreundliche Weboberfläche ist integriert und unterstützt sowohl das Klonen von Tönen als auch den Zufallstonmodus, was die Bedienung vereinfacht.
Hilfe verwenden
Der Prozess der Installation und Verwendung von FireRedTTS-2 ist relativ einfach und gliedert sich in drei Hauptschritte: Konfiguration der Umgebung, Download des Modells und Ausführung der Generierungsaufgaben. Im Folgenden finden Sie eine detaillierte Bedienungsanleitung.
1. umweltfreundliche Installation
Zunächst müssen Sie die Codebasis des Projekts klonen und eine separate Conda-Umgebung erstellen, um die erforderlichen Abhängigkeiten des Projekts zu verwalten und Konflikte mit anderen Python-Projekten auf Ihrem System zu vermeiden.
Schritt 1: Klonen der Codebasis
Öffnen Sie Terminal, gehen Sie zu dem Ordner, in dem Sie Ihr Projekt speichern möchten, und führen Sie den folgenden git-Befehl aus:
git clone https://github.com/FireRedTeam/FireRedTTS2.git
cd FireRedTTS2
Schritt 2: Erstellen und Aktivieren der Conda-Umgebung
Es wird die Python-Version 3.11 empfohlen. Führen Sie den folgenden Befehl aus, um eine neue Conda-Umgebung zu erstellen:
conda create --name fireredtts2 python=3.11
conda activate fireredtts2
Schritt 3: PyTorch installieren
Das Projekt basiert auf einer bestimmten Version von PyTorch und muss an Ihre CUDA-Version angepasst werden. Wenn Ihr Gerät CUDA 12.6 unterstützt, können Sie es direkt mit dem folgenden Befehl installieren:
pip install torch==2.7.1 torchvision==0.22.1 torchaudio==2.7.1 --index-url https://download.pytorch.org/whl/cu126
Wenn Sie eine andere Version von CUDA haben, besuchen Sie die PyTorch-Website, um den entsprechenden Installationsbefehl zu finden.
Schritt 4: Andere Abhängigkeiten installieren
Installieren Sie schließlich die anderen vom Projekt definierten Python-Bibliotheken:
pip install -e .
pip install -r requirements.txt```
### 2. 模型下载
FireRedTTS-2 的预训练模型存放在 Hugging Face 上,需要使用 `git lfs` 工具来下载。
首先确保你已经安装了 `git lfs`,然后执行以下命令:
```bash
git lfs install
git clone https://huggingface.co/FireRedTeam/FireRedTTS2 pretrained_models/FireRedTTS2
Dieser Befehl lädt die Modelldateien in das Stammverzeichnis des Projekts im Verzeichnis pretrained_models/FireRedTTS2
Im Inneren der Mappe.
3. funktionelle Operationen
FireRedTTS-2 bietet zwei Möglichkeiten der Nutzung: über die Web-Benutzeroberfläche (Web UI) oder durch das Schreiben von Python-Skripten.
Option 1: Verwendung einer Web-UI
Es ist der einfachste und intuitivste Weg, um schnell Erfahrungen zu sammeln und einen Dialog zu führen.
Vergewissern Sie sich im Terminal, dass Sie sich im Bereich fireredtts2
Conda-Umgebung und im Stammverzeichnis des Projekts befindet, führen Sie den folgenden Befehl aus:
python gradio_demo.py --pretrained-dir "./pretrained_models/FireRedTTS2"
Nachdem das Programm erfolgreich ausgeführt wurde, zeigt das Terminal eine lokale URL an (normalerweise die http://127.0.0.1:7860
). Öffnen Sie diese URL in Ihrem Browser, um die Benutzeroberfläche zu sehen. In der Benutzeroberfläche können Sie den Text verschiedener Sprecher eingeben, Audio-Samples für das Klonen von Stimmen hochladen oder sich dafür entscheiden, Stimmen nach dem Zufallsprinzip zu generieren, und auf die Schaltfläche Generieren klicken, um den synthetisierten Dialogton zu erhalten.
Weg 2: Verwendung von Python-Skripten
Dieser Ansatz ist flexibler und eignet sich für die Integration in andere Projekte.
1. die Erstellung von Dialogen mit mehreren Personen
Im Folgenden finden Sie einen Beispielcode für die Erstellung eines Dialogs zwischen zwei Personen. Sie müssen den Text für jeden Sprecher vorbereiten sowie eine Audiodatei zum Klonen des Tons und den entsprechenden Text.
import torch
import torchaudio
from fireredtts2.fireredtts2 import FireRedTTS2
# 设置运行设备
device = "cuda"
# 初始化模型
fireredtts2 = FireRedTTS2(
pretrained_dir="./pretrained_models/FireRedTTS2",
gen_type="dialogue",
device=device,
)
# 定义对话文本列表,[S1] 和 [S2] 代表不同的说话人
text_list = [
"[S1]那可能说对对,没有去过美国来说去去看到美国线下。巴斯曼也好,沃尔玛也好,他们线下不管说,因为深圳出去的还是电子周边的会表达,会发现哇对这个价格真的是很高呀。",
"[S2]对,没错,我每次都觉得不不可思议。我什么人会买三五十美金的手机壳?但是其实在在那个target啊,就塔吉特这种超级市场,大家都是这样的,定价也很多人买。",
"[S1]对对,那这样我们再去看说亚马逊上面卖卖卖手机壳也好啊,贴膜也好,还包括说车窗也好,各种线材也好,大概就是七块九九或者说啊八块九九,这个价格才是卖的最多的啊。",
"[S2]那比如说呃除了这个可能去到海外这个调查,然后这个调研考察那肯定是最直接的了。那平时我知道你是刚才建立了一个这个叫做呃rean的这样的一个一个播客,它是一个英文的。",
]
# 提供用于克隆声音的音频文件路径
prompt_wav_list = [
"examples/chat_prompt/zh/S1.flac",
"examples/chat_prompt/zh/S2.flac",
]
# 提供克隆音频对应的文本
prompt_text_list = [
"[S1]啊,可能说更适合美国市场应该是什么样子。那这这个可能说当然如果说有有机会能亲身的去考察去了解一下,那当然是有更好的帮助。",
"[S2]比如具体一点的,他觉得最大的一个跟他预想的不一样的是在什么地方。",
]
# 生成音频
all_audio = fireredtts2.generate_dialogue(
text_list=text_list,
prompt_wav_list=prompt_wav_list,
prompt_text_list=prompt_text_list,
temperature=0.9,
topk=30,
)
# 保存生成的音频文件
torchaudio.save("chat_clone.wav", all_audio, 24000)
2. die Erstellung der Monologe
Sie können damit auch Monologe aus einzelnen Sätzen oder Absätzen mit Unterstützung für zufällige Klangfarben oder das Klonen von Stimmen erstellen.
import torch
import torchaudio
from fireredtts2.fireredtts2 import FireRedTTS2
device = "cuda"
# 待合成的文本列表(支持多语言)
lines = [
"Hello everyone, welcome to our newly launched FireRedTTS2.",
"如果你厌倦了千篇一律的AI音色,那么本项目将会成为你绝佳的工具。",
"ランダムな話者と言語を選択して合成できます",
]
# 初始化模型
fireredtts2 = FireRedTTS2(
pretrained_dir="./pretrained_models/FireRedTTS2",
gen_type="monologue",
device=device,
)
# 使用随机音色生成
for i, text in enumerate(lines):
audio = fireredtts2.generate_monologue(text=text.strip())
torchaudio.save(f"random_speaker_{i}.wav", audio.cpu(), 24000)
# 使用声音克隆生成(需要提供 prompt_wav 和 prompt_text)
# for i, text in enumerate(lines):
# audio = fireredtts2.generate_monologue(
# text=text.strip(),
# prompt_wav="<path_to_your_wav>",
# prompt_text="<text_of_your_wav>",
# )
# torchaudio.save(f"cloned_voice_{i}.wav", audio.cpu(), 24000)
Anwendungsszenario
- Produktion von Podcasts und Hörbüchern
Konversations-Podcasts oder Hörbücher mit mehreren Charakteren können schnell erstellt werden, und mit der Funktion zum Klonen von Stimmen ist es auch möglich, die Stimme eines bestimmten Charakters für kreative Zwecke zu imitieren. - Intelligente Kundenbetreuung und virtuelle Assistenten
Indem Chatbots oder virtuelle Assistenten eine natürlichere und menschlichere Stimme erhalten, wird durch die Erzeugung von Streaming mit geringer Latenz eine Sprachinteraktion in Echtzeit ermöglicht. - Synchronisation von Spielen und Animationen
Erzeugen Sie schnell Sprachaufnahmen für eine große Anzahl von Charakteren in der Spieleentwicklung oder Animation oder erstellen Sie temporäre Platzhalterspuren für Entwickler und Designer zum Debuggen. - Sprachdatenerweiterung
Mit der Funktion der zufälligen Tonerzeugung können vielfältige Sprachdaten in großem Umfang für das Training und die Verbesserung von Modellen der automatischen Spracherkennung (ASR) hergestellt werden.
QA
- Welche Sprachen werden von FireRedTTS-2 unterstützt?
Derzeit werden Englisch, Chinesisch, Japanisch, Koreanisch, Französisch, Deutsch und Russisch unterstützt. - Kann ich meine eigene Stimme zur Audiogenerierung verwenden?
Kann. Das System unterstützt das Klonen von Null-Sample-Stimmen. Sie müssen nur ein kleines Sample Ihrer Stimme (Audiodatei) und den entsprechenden Text bereitstellen, und dann können Sie Ihre Klangfarbe klonen, um eine neue Stimme zu erzeugen. - Ist die Latenzzeit der Spracherzeugung hoch?
Das FireRedTTS-2 wurde für Szenarien mit geringer Latenz entwickelt und hat eine Erstansprechlatenz von nur 140 Millisekunden, was es ideal für Anwendungen macht, die ein Sprachfeedback in Echtzeit erfordern. - Ist das Projekt kommerziell und kostenlos erhältlich?
Das Projekt basiert auf der Apache-2.0-Lizenz, aber in der offiziellen Erklärung wird ausdrücklich darauf hingewiesen, dass die Funktion zum Klonen von Klängen nur für akademische Forschungszwecke verwendet werden darf und dass es strengstens verboten ist, sie für illegale Aktivitäten zu nutzen. Der Entwickler ist nicht verantwortlich für einen Missbrauch des Modells.