CosyVoice ist ein quelloffenes, mehrsprachiges Spracherzeugungsmodell, das sich auf hochwertige Text-to-Speech-Technologie (TTS) konzentriert. Es unterstützt die Sprachsynthese in mehreren Sprachen und bietet Funktionen wie die Erzeugung von Null-Sample-Sprache, sprachübergreifendes Klonen von Sprache und feinkörnige Emotionskontrolle.
yVoice 2.0 reduziert die Aussprachefehler im Vergleich zur Vorgängerversion signifikant von 30% auf 50%, mit einer signifikanten Verbesserung der Klangqualität und der rhythmischen Natürlichkeit und einer Steigerung des MOS-Scores von 5,4 auf 5,53. yVoice 2.0 erreicht durch eine vereinfachte Modellarchitektur und optimierte Algorithmen eine latenzarme Streaming- und Non-Streaming-Sprachsynthese für Echtzeit-Interaktionsszenarien. Das Projekt bietet vollständige Unterstützung für Inferenz, Training und Einsatz, und Entwickler können leicht damit beginnen, was es für Anwendungen wie Sprachassistenten, Synchronisation und die Erstellung mehrsprachiger Inhalte geeignet macht.
Offene Dienste:CosyVoice: Open-Source-Projekt zum Klonen von 3-Sekunden-Stimmen von Ali mit Unterstützung für gefühlsgesteuerte Tags
Funktionsliste
- Zero-Sample-Sprachgenerierung: Erzeugt Sprache, die der Zielstimme ähnlich ist, basierend auf kurzen Audio-Samples ohne zusätzliches Training.
- Sprachübergreifende Sprachsynthese: Unterstützt mehrsprachige Spracherzeugung, wahrt die Konsistenz der Klangfarbe und ist für die Erstellung globaler Inhalte geeignet.
- Feinkörnige Emotionskontrolle: unterstützt das Hinzufügen von Lachen, Pausen und anderen emotionalen Ausdrücken, um eine natürlichere Sprache zu erzeugen.
- Dialekt- und Akzentanpassung: Generieren Sie Sprache in bestimmten Dialekten (z. B. Sichuan) oder Akzenten, um das Lokalisierungserlebnis zu verbessern.
- Streaming-Speech-Synthese: Unterstützt Streaming-Ausgabe mit niedriger Latenzzeit mit einer Latenzzeit des ersten Pakets von nur 150 ms, geeignet für Echtzeitanwendungen.
- Modellschulungsunterstützung: Bietet einen vollständigen Prozess für die Vorschulung von Modellen und die Schulung von Grund auf, um die Anforderungen der Entwickler zu erfüllen.
- Hochwertige Klangausgabe: optimierte Klangqualität und Rhythmus, mit einer MOS-Bewertung von 5,53, die nahe am kommerziellen Niveau liegt.
Hilfe verwenden
Einbauverfahren
Um CosyVoice zu verwenden, müssen Sie zunächst die erforderliche Umgebung und die Abhängigkeiten installieren. Nachfolgend finden Sie detaillierte Installationsschritte, die sicherstellen, dass Benutzer das Projekt schnell konfigurieren und ausführen können.
- Installation von Conda
CosyVoice empfiehlt die Verwendung von Conda zur Verwaltung Ihrer Umgebung. Bitte besuchen Siehttps://docs.conda.io/en/latest/miniconda.html
Laden Sie Miniconda herunter und installieren Sie es. Erstellen und aktivieren Sie dann eine virtuelle Umgebung:conda create -n cosyvoice python=3.10 conda activate cosyvoice
- Installation von Abhängigkeiten
Verwenden Sie pip, um die für das Projekt benötigten Python-Pakete zu installieren. Aus Netzwerkgründen wird empfohlen, eine inländische Spiegelquelle zu verwenden (z. B. Aliyun):pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
Montage
pynini
(für die Textverarbeitung):conda install -y -c conda-forge pynini==2.1.5
- Lösung von Sox-Kompatibilitätsproblemen
Wenn Sie Probleme mit Sox haben, installieren Sie Sox entsprechend Ihrem Betriebssystem:- Ubuntu::
sudo apt-get install sox libsox-dev
- CentOS::
sudo yum install sox sox-devel
- Ubuntu::
- Herunterladen des vortrainierten Modells
CosyVoice bietet mehrere vortrainierte Modelle (z. B.CosyVoice2-0.5B
undCosyVoice-300M
undCosyVoice-300M-SFT
im Gesang antwortenCosyVoice-300M-Instruct
). Die Benutzer können diese Modelle aus dem GitHub-Repository herunterladen und sie in derpretrained_models
Verzeichnis. Auch herunterladenCosyVoice-ttsfrd
Ressourcen zur Unterstützung der Text-Front-End-Verarbeitung. - Projektcode klonen
Klonen Sie das CosyVoice-Repository mit Git und stellen Sie sicher, dass die Submodule korrekt geladen sind:git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git cd CosyVoice git submodule update --init --recursive
Verwendung
CosyVoice bietet eine Reihe von Funktionsmodulen, darunter die Erzeugung von Null-Sample-Sprache, sprachübergreifende Synthese und imperative Spracherzeugung. So funktioniert es.
Zero-Sample-Sprachgenerierung
Die Null-Sample-Spracherzeugung ermöglicht es dem Benutzer, auf der Grundlage kurzer Audio-Samples Sprache mit einer bestimmten Klangfarbe zu erzeugen. Zum Beispiel, um eine Sprache mit einer bestimmten Klangfarbe zu erzeugen:
from cosyvoice import CosyVoice2
import torchaudio
cosyvoice = CosyVoice2('pretrained_models/CosyVoice2-0.5B', load_jit=False, load_trt=False, fp16=False)
prompt_speech_16k = torchaudio.load('./asset/zero_shot_prompt.wav')[0]
for i, j in enumerate(cosyvoice.inference_zero_shot(
'收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。',
'希望你以后能够做的比我还好呦。',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'zero_shot_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- Verfahren::
- Bereiten Sie einen 16kHz-Cue-Ton vor (z. B.
zero_shot_prompt.wav
). - Aufforderungen
inference_zero_shot
Methode und übergibt den Zieltext, den Hinweistext und den Ton. - Speichern Sie die erzeugte Sprachdatei.
- Bereiten Sie einen 16kHz-Cue-Ton vor (z. B.
- zur Kenntnis nehmenUm die Ergebnisse der offiziellen Website zu reproduzieren, setzen Sie bitte die
text_frontend=False
.
sprachübergreifende Sprachsynthese
Die sprachenübergreifende Synthese unterstützt die Erzeugung mehrsprachiger Sprache mit einheitlicher Klangfarbe. Zum Beispiel die Erzeugung von Sprache mit Lachen:
for i, j in enumerate(cosyvoice.inference_cross_lingual(
'在他讲述那个荒诞故事的过程中,他突然[laughter]停下来,因为他自己也被逗笑了[laughter]。',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'fine_grained_control_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- Verfahren::
- Bereiten Sie den Cue-Ton vor.
- Fügen Sie dem Text Sentiment-Tags hinzu (z. B.
[laughter]
), für spezifische unterstützte Labels siehecosyvoice/tokenizer/tokenizer.py#L248
. - Speichern Sie die erzeugte Sprachdatei.
Befehlsbasierte Spracherzeugung
Die Befehlsgenerierung unterstützt die Angabe von Dialekten oder Stilen. Zum Beispiel die Erzeugung von Sprache im Sichuan-Dialekt:
for i, j in enumerate(cosyvoice.inference_instruct2(
'收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。',
'用四川话说这句话',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'instruct_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- Verfahren::
- Geben Sie einen Zieltext und Anweisungen (z. B. "Sprechen Sie in Sichuan").
- Erzeugen Sie Sprache mit Hilfe von Audioaufforderungen.
- Speichern Sie die Ausgabedatei.
Streaming-Synthese
Die Streaming-Synthese ist für Echtzeitanwendungen geeignet, mit einer Latenzzeit des ersten Pakets von nur 150 ms. stream=True
Sie können die Streaming-Ausgabe aktivieren, siehe das obige Beispiel für den spezifischen Code.
Andere Überlegungen
- Auswahl des Modells: Empfohlene Verwendung
CosyVoice2-0.5B
Modelle für optimale Klangqualität und Leistung. - Umgebung KonfigurationVergewissern Sie sich, dass die Python-Version 3.10 ist und dass die Abhängigkeiten korrekt installiert sind.
- Komponenten während der Prüfung anpassenWenn das Klonen des Submoduls fehlschlägt, führen Sie es mehrmals aus
git submodule update --init --recursive
Bis es funktioniert. - Hinweis auf die DokumentationFür weitere Informationen siehe
cosyvoice/tokenizer/tokenizer.py
und offizielle Unterlagenhttps://funaudiollm.github.io/cosyvoice2
.
Anwendungsszenario
- Entwicklung von Sprachassistenten
Die Streaming-Synthese mit niedriger Latenz und die Unterstützung mehrerer Sprachen von CosyVoice sind ideal für die Entwicklung intelligenter Sprachassistenten. Entwickler können schnell personalisierte Töne mit Null-Sample-Generierung anpassen und natürliche, sanfte Sprachantworten generieren, um die Benutzerinteraktion zu verbessern. - Erstellung mehrsprachiger Inhalte
Ersteller von Inhalten können die sprachübergreifende Synthese nutzen, um schnell mehrsprachige Voiceovers zu erstellen. Generieren Sie zum Beispiel Stimmen für Videos oder Podcasts in Englisch, Chinesisch oder anderen Sprachen, um einen einheitlichen Ton zu erhalten und die Produktionskosten zu senken. - Bildung und Sprachenlernen
CosyVoice unterstützt Dialekt- und Emotionskontrolle und kann in Sprachlernanwendungen eingesetzt werden, um Sprache mit einem bestimmten Akzent oder einer bestimmten Emotion zu erzeugen, damit die Lernenden das Hören und die Aussprache üben können. - Film-, TV- und Spielesynchronisation
Film-, Fernseh- und Spieleentwickler können eine fein abgestufte Emotionskontrolle nutzen, um Sprache mit Effekten wie Lachen und Pausen zu erzeugen, um den Ausdruck der Charaktere zu verbessern und die Immersion ihrer Arbeit zu erhöhen.
QA
- Welche Sprachen werden von CosyVoice unterstützt?
CosyVoice unterstützt die Sprachsynthese in mehreren Sprachen, eine Liste der Sprachen finden Sie in der offiziellen Dokumentation oder in dercosyvoice/tokenizer/tokenizer.py
Ansicht in, die gängige Sprachen und einige Dialekte abdeckt. - Wie lässt sich die Latenzzeit bei der Spracherzeugung verringern?
Die Verwendung des Streaming-Synthese-Modus (stream=True
) kann die Latenzzeit für das erste Paket auf 150 ms reduzieren. stellen Sie sicher, dass die Verwendung von Hochleistungshardware und optimierten Modellen (wie demCosyVoice2-0.5B
). - Ist es notwendig, das Modell zu trainieren?
Nein. CosyVoice bietet bereits trainierte Modelle, die heruntergeladen und direkt verwendet werden können. Wenn Sie sie anpassen müssen, können Sie in der offiziellen Dokumentation nachschlagen, um sie von Grund auf zu trainieren. - Wie kann ich einen benutzerdefinierten Ton hinzufügen?
ausnutzeninference_zero_shot
Methode das Ziel-Audio-Sample und den Cue-Text ein, um einen benutzerdefinierten Ton zu erzeugen. Das Speichern der Toninformationen kann durch den Aufruf der Methodecosyvoice.add_zero_shot_spk
.