Moshi: Ein sprach-textbasiertes Modell für Echtzeitgespräche
Einführung in Moshi
- Moshi ist ein sprach-textbasiertes Modell für Echtzeitgespräche und zugleich ein bidirektionales Sprachdialog-Framework
- Es verwendet Mimi, einen hochmodernen Streaming-Neural-Audio-Codec
- Mimi wandelt 24-kHz-Audio in 12,5 Hz um und verarbeitet es als Stream mit einer Latenz von 80 ms, während die Bandbreite bei 1,1 kbps bleibt
- Es bietet eine bessere Leistung als bestehende nicht-streamende Codecs wie SpeechTokenizer (50 Hz, 4 kbps) oder SemantiCodec (50 Hz, 1,3 kbps)
Funktionsweise von Moshi
- Moshi modelliert zwei Audio-Streams: einen für Moshi selbst und einen für den Nutzer
- Während der Inferenz stammt der Stream des Nutzers aus der Audioeingabe, während der Stream von Moshi aus der Ausgabe des Modells gesampelt wird
- Zusammen mit diesen beiden Audio-Streams sagt Moshi die Text-Token voraus, die seiner eigenen Sprache entsprechen
- Ein kleiner Depth Transformer modelliert die Abhängigkeiten zwischen den Codebooks auf einem gegebenen Zeitschritt, und ein großer Temporal Transformer mit 7B Parametern modelliert die zeitlichen Abhängigkeiten
- Moshi erreicht theoretisch eine Latenz von 160 ms und liegt in der Praxis auf einer L4-GPU bei unter 200 ms
Eigenschaften von Mimi
- Mimi basiert auf früheren Neural-Audio-Codecs wie SoundStream und EnCodec und ergänzt Encoder und Decoder um Transformer
- Mimi passt den Stride an, um näher an die durchschnittliche Framerate von Text-Token (~3–4 Hz) heranzukommen
- Mimi verwendet einen Distillation Loss, der das erste Codebook-Token so ausrichtet, dass es mit den selbstüberwachten Repräsentationen von WavLM übereinstimmt
- Mimi zeigt selbst bei niedriger Bitrate große Verbesserungen bei der subjektiven Qualität, indem nur adversarial training loss und Feature Matching verwendet werden
Aufbau des Repositories
- Dieses Repository enthält drei Versionen des Moshi-Inferenz-Stacks
- Die Python-Version mit PyTorch befindet sich im Verzeichnis
moshi/
- Die Python-Version mit MLX für Macs der M-Serie befindet sich im Verzeichnis
moshi_mlx/
- Die in der Produktion verwendete Rust-Version befindet sich im Verzeichnis
rust/
- Code für eine Live-Demo ist im Verzeichnis
client/ enthalten
Modelle
- Es werden drei Modelle veröffentlicht
- der Sprach-Codec Mimi
- Moshi, feinabgestimmt auf eine synthetische Männerstimme (Moshiko)
- Moshi, feinabgestimmt auf eine synthetische Frauenstimme (Moshika)
- Jedes Modell wird über ein HuggingFace-Repository bereitgestellt
- Alle Modelle werden unter der Lizenz CC-BY 4.0 veröffentlicht
Anforderungen
- Mindestens Python 3.10 ist erforderlich, empfohlen wird Python 3.12
- Spezifische Anforderungen finden sich in den jeweiligen Backend-Verzeichnissen
- Installationsbefehle für PyTorch- und MLX-Clients werden bereitgestellt
Python (PyTorch)
- Die PyTorch-basierte API befindet sich im Verzeichnis
moshi
- Sie stellt einen Streaming-Audio-Tokenizer (mimi) und ein Sprachmodell (moshi) bereit
- Für die Ausführung im interaktiven Modus muss ein Server gestartet werden
Python (MLX) für macOS
- Nach der Installation von
moshi_mlx kann lokale Inferenz ausgeführt werden
- Die Kommandozeilenschnittstelle ist grundlegend und bietet keine Echo-Unterdrückung
Rust
- Um den Rust-Inferenzserver auszuführen, verwenden Sie die Befehle im Verzeichnis
rust
- Unter macOS kann statt
--features cuda auch --features metal verwendet werden
Client
- Die Verwendung der Web-UI wird empfohlen, da sie zusätzliche Echo-Unterdrückung bietet
- Es steht auch eine Kommandozeilenschnittstelle zur Verfügung
Entwicklung
- Das Repository kann geklont, installiert und für die Entwicklung genutzt werden
FAQ
- Prüfen Sie vor dem Erstellen eines Issues den Abschnitt mit häufig gestellten Fragen
Lizenz
- Der Python-Teil steht unter der MIT-Lizenz, das Rust-Backend unter der Apache-Lizenz
- Der Web-Client-Code steht unter der MIT-Lizenz
- Die Modellgewichte stehen unter der Lizenz CC-BY 4.0
Zitat
- Wenn Mimi oder Moshi verwendet wird, sollte das Paper zitiert werden
Zusammenfassung von GN⁺
- Moshi ist ein innovatives Sprach-Text-Modell für Echtzeitgespräche mit niedriger Latenz und hoher Qualität
- Der Mimi-Codec ist effizienter als bestehende Codecs und maximiert die Leistung durch Transformer
- Es ist auf verschiedenen Plattformen nutzbar und bietet mehrere Versionen, darunter PyTorch, MLX und Rust
- Es ist besonders nützlich für Entwickler von Echtzeit-Gesprächsanwendungen, vor allem wenn niedrige Latenz entscheidend ist
- Ähnliche Projekte mit vergleichbaren Funktionen sind unter anderem Googles WaveNet und OpenAIs Jukebox
1 Kommentare
Hacker-News-Kommentare
Erster Kommentar
Zweiter Kommentar
Dritter Kommentar
Vierter Kommentar
Fünfter Kommentar
Sechster Kommentar
Siebter Kommentar
Achter Kommentar
Neunter Kommentar
Zehnter Kommentar