<> 5. Juli 2024: Neuester AR-Checkpoint veröffentlicht: höhere Stabilität der Ausgabe. Sehr großes Update kommt bald!
Dies ist das Repo für das MARS5 English Speech Model (TTS) von CAMB.AI.
Das Modell folgt einer zweistufigen AR-NAR-Pipeline mit einer deutlich neuartigen NAR-Komponente (weitere Informationen finden Sie in der Architektur).
Mit nur 5 Sekunden Audio und einem Textausschnitt kann MARS5 Sprache selbst für prosodisch schwierige und vielfältige Szenarien wie Sportkommentare, Anime und mehr erzeugen. Schauen Sie sich unsere Demo an:
Sehen Sie sich hier das vollständige Video an:
Abbildung : Der High-Level-Architekturfluss von MARS5. Ausgehend von Text und Referenzaudio werden mithilfe eines autoregressiven Transformationsmodells grobe (L0) Codierungs-Sprachmerkmale erhalten. Anschließend werden die Text-, Referenz- und Grobmerkmale in einem multinomialen DDPM-Modell verfeinert, um die verbleibenden Codebuchwerte des Encodecs zu erzeugen. Die Ausgabe des DDPM wird dann vocodiert, um das endgültige Audio zu erzeugen.
Da das Modell auf Rohaudio zusammen mit bytepaarcodiertem Text trainiert wird, kann es mit Dingen wie Interpunktion und Groß-/Kleinschreibung gesteuert werden. Um beispielsweise eine Pause einzufügen, fügen Sie an dieser Stelle im Transkript ein Komma ein. Oder um ein Wort hervorzuheben, schreiben Sie es im Transkript in Großbuchstaben. Dies ermöglicht eine recht natürliche Steuerung der Prosodie der erzeugten Ausgabe.
Die Sprecheridentität wird anhand einer Audio-Referenzdatei mit einer Länge zwischen 2 und 12 Sekunden angegeben, wobei Längen um die 6 Sekunden optimale Ergebnisse liefern. Darüber hinaus ermöglicht MARS5 durch die Bereitstellung des Transkripts der Referenz die Durchführung eines „ Deep Clone “, der die Qualität des Klonens und der Ausgabe verbessert, allerdings auf Kosten der etwas längeren Audioproduktion. Weitere Einzelheiten zu diesem und anderen Leistungs- und Modelldetails finden Sie im Ordner „Dokumente“.
Wir verwenden torch.hub
, um das Laden des Modells zu vereinfachen – kein Klonen des Repositorys erforderlich. Die Schritte zum Durchführen einer Inferenz sind einfach:
Installation mit pip :
Anforderungen:
pip install --upgrade torch torchaudio librosa vocos encodec safetensors regex
import torch , librosa
mars5 , config_class = torch . hub . load ( 'Camb-ai/mars5-tts' , 'mars5_english' , trust_repo = True )
# The `mars5` contains the AR and NAR model, as well as inference code.
# The `config_class` contains tunable inference config settings like temperature.
(Optional) Modell von Huggingface laden (stellen Sie sicher, dass das Repository geklont ist)
from inference import Mars5TTS , InferenceConfig as config_class
import torch , librosa
mars5 = Mars5TTS . from_pretrained ( "CAMB-AI/MARS5-TTS" )
# Load reference audio between 1-12 seconds.
wav , sr = librosa . load ( '<path to arbitrary 24kHz waveform>.wav' ,
sr = mars5 . sr , mono = True )
wav = torch . from_numpy ( wav )
ref_transcript = "<transcript of the reference audio>"
Hinweis: Das Referenztranskript ist optional. Übergeben Sie es, wenn Sie einen tiefen Klon durchführen möchten.
MARS5 unterstützt zwei Arten der Inferenz: eine flache, schnelle Inferenz, bei der Sie das Transkript der Referenz nicht benötigen (wir nennen dies einen flachen Klon ), und eine zweite, langsamere, aber typischerweise qualitativ hochwertigere Methode, die wir einen tiefen Klon nennen. Um den Deep Clone nutzen zu können, benötigen Sie das Prompt-Transkript. Weitere Informationen hierzu finden Sie in der Modellarchitektur.
# Pick whether you want a deep or shallow clone. Set to False if you don't know prompt transcript or want fast inference. Set to True if you know transcript and want highest quality.
deep_clone = True
# Below you can tune other inference settings, like top_k, temperature, top_p, etc...
cfg = config_class ( deep_clone = deep_clone , rep_penalty_window = 100 ,
top_k = 100 , temperature = 0.7 , freq_penalty = 3 )
ar_codes , output_audio = mars5 . tts ( "The quick brown rat." , wav ,
ref_transcript ,
cfg = cfg )
# output_audio is (T,) shape float tensor corresponding to the 24kHz output audio.
Das ist es! Diese Standardeinstellungen liefern ziemlich gute Ergebnisse, aber Sie können die Inferenzeinstellungen jederzeit anpassen, um die Ausgabe für Ihren speziellen Anwendungsfall zu optimieren. Informationen und Dokumente zu den verschiedenen Inferenzeinstellungen finden Sie im InferenceConfig
-Code oder im Demo-Notizbuch.
Einige Tipps für beste Qualität:
Von DockerHub ziehen
Sie können das Docker-Image direkt von unserer DockerHub-Seite abrufen.
Bauen Sie selbst auf
Sie können ein benutzerdefiniertes Image aus der bereitgestellten Docker-Datei in diesem Repo erstellen, indem Sie den folgenden Befehl ausführen.
cd MARS5-TTS
docker build -t mars5ttsimage ./docker
Hinweis: Dieses Image sollte als Basisimage verwendet werden, auf dem Sie Ihr benutzerdefiniertes Inferenzskript in einem Dockerfile oder Docker-Compose hinzufügen können. Bilder, die direkt eine Ausgabe generieren, werden in Kürze zum Docker Hub und als Dockerfiles in diesem Repo hinzugefügt
Kontrollpunkte
Die Prüfpunkte für MARS5 werden auf der Registerkarte „Releases“ dieses Github-Repos bereitgestellt. Wir stellen zwei Kontrollpunkte zur Verfügung:
'vocab'
eingebettet und folgt ungefähr dem gleichen Format wie ein gespeicherter Minbpe-Tokenizer. Die Prüfpunkte werden sowohl als pytorch .pt
Prüfpunkte als auch als Safetensors .safetensors
Prüfpunkte bereitgestellt. Standardmäßig lädt torch.hub.load()
die Safetensors-Version, Sie können jedoch mit dem Argument ckpt_format='safetensors'
oder ckpt_format='pt'
im Aufruf von torch.hub.load()
angeben, welche Version des Prüfpunkts Sie bevorzugen . Um beispielsweise das Safetensors-Format zu erzwingen:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='safetensors')
Oder um das Pytorch .pt
-Format beim Laden der Prüfpunkte zu erzwingen:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='pt')
Hardwareanforderungen :
Sie müssen in der Lage sein, mindestens 750 Mio. + 450 Mio. Parameter auf der GPU zu speichern und Rückschlüsse mit 750 Mio. aktiven Parametern zu ziehen.
Wenn Sie nicht über die nötigen Hardware-Voraussetzungen verfügen und MARS5 lediglich in Ihren Anwendungen nutzen möchten, können Sie es über unsere API nutzen. Wenn Sie zusätzliche Credits benötigen, um es für Ihren Anwendungsfall zu testen, wenden Sie sich bitte an [email protected]
.
MARS5 ist derzeit nicht perfekt und wir arbeiten daran, seine Qualität, Stabilität und Leistung zu verbessern. Grobe Bereiche, die wir verbessern möchten, und freuen uns über jeden Beitrag in:
Spezifische Aufgaben
site-packages/torch/nn/functional.py:4840: UserWarning: The operator 'aten::col2im' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications
. Wenn Sie zu einer Verbesserung von MARS5 beitragen möchten, können Sie gerne einen Beitrag leisten (Richtlinien unten).
Wir freuen uns über jeden Beitrag zur Verbesserung des Modells. Wie Sie beim Experimentieren vielleicht feststellen werden, kann es wirklich großartige Ergebnisse liefern, es kann jedoch noch weiter verbessert werden, um konsistent hervorragende Ergebnisse zu erzielen. Wir würden auch gerne sehen, wie Sie MARS5 in verschiedenen Szenarien verwendet haben. Bitte verwenden Sie das ? Zeigen Sie die Kategorie in den Diskussionen an und teilen Sie sie mit, um Ihre Beispiele zu teilen.
Beitragsformat :
Der bevorzugte Weg, zu unserem Repo beizutragen, besteht darin, das Master-Repository auf GitHub zu teilen:
git remote add upstream [email protected]:Camb-ai/mars5-tts.git
git push --set-upstream origin <NAME-NEW-BRANCH>
Wir bieten MARS5 als Open-Sourcing-Lösung auf Englisch unter GNU AGPL 3.0 an. Für kommerzielle Anfragen oder zur Lizenzierung der Closed-Source-Version von MARS senden Sie bitte eine E-Mail an [email protected]
Wir sind ein ehrgeiziges, weltweit verteiltes Team mit dem einzigen Ziel, dass die Stimme jedes Einzelnen zählt. Bei CAMB.AI sind wir ein Forschungsteam aus ehemaligen Siri-Ingenieuren, die bei Interspeech veröffentlicht wurden, Carnegie Mellon und suchen Sie zur Verstärkung unseres Teams.
Wir stellen aktiv neue Mitarbeiter ein; Bei Interesse senden Sie uns bitte eine E-Mail an [email protected]. Weitere Informationen finden Sie auf unserer Karriereseite.
Treten Sie der CAMB.AI-Community im Forum und auf Discord bei, um Vorschläge, Feedback oder Fragen mit unserem Team zu teilen.
Teile des Codes für dieses Projekt stammen aus den folgenden Repositories – bitte schauen Sie sich diese unbedingt an! Vielen Dank an die Autoren von:
.trim()
-Code: https://librosa.org/doc/main/generated/librosa.effects.trim.html