1 Punkte von GN⁺ 2024-09-20 | 1 Kommentare | Auf WhatsApp teilen

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

 
GN⁺ 2024-09-20
Hacker-News-Kommentare
  • Erster Kommentar

    • Die Latenz ist extrem niedrig, was für ein Open-Source-Modell eine große Leistung ist.
    • Im Vergleich zu den zuletzt sehr guten LLMs ist die Antwortqualität schwächer.
    • Es erinnert an LLMs aus dem Jahr 2019.
    • Audioseitig wurde genug erreicht, aber der Fokus sollte stärker auf der Antwortqualität liegen.
  • Zweiter Kommentar

    • Auf YouTube wurde eine interessante Demo von vor einigen Monaten gefunden.
    • Es ist sicher, dass sie inzwischen verbessert wurde.
  • Dritter Kommentar

    • Es wird an einer Echtzeitlösung für Sprache -> LLM -> Sprachausgabe gearbeitet.
    • Ein Streaming-Neural-Audio-Codec ist am spannendsten.
    • Aus Produktsicht ist eher eine Tool-/Function-Calling-Stufe nötig, statt direkt an ein LLM anzubinden.
    • Die Entwicklung von tincans wurde eingestellt, aber in diese Richtung gibt es viel Potenzial.
  • Vierter Kommentar

    • Moshi steht unter der CC-BY-Lizenz.
    • Kürzlich wurde ein ähnliches 7b-Modell unter Apache v2 veröffentlicht.
  • Fünfter Kommentar

    • Es wird gefragt, ob es eine praktische Möglichkeit gibt, im a-shell-Terminal auf dem iPad eine TTS-Schnittstelle bereitzustellen.
  • Sechster Kommentar

    • Im Bereich sprachunterstützter LMs gab es zuletzt viele Fortschritte.
    • Verwandte Projekte sind LLaMA-Omni und mini-omni.
  • Siebter Kommentar

    • Der Inferenzserver wurde in Rust geschrieben und verwendet das Candle-Crate von huggingface.
    • Einer der Moshi-Autoren ist ein Hauptautor von Candle.
    • Es wird ein auf Candle basierender Inferenz-Stack aufgebaut.
  • Achter Kommentar

    • Beim Ausprobieren reagiert es sofort, liefert die eigentliche Antwort auf die Frage aber später.
    • Manchmal kann es in einer Schleife hängen bleiben.
  • Neunter Kommentar

    • Die Latenz ist mit etwa 200 ms sehr niedrig.
    • Mit einem 7B-Transformer-Modell ist es nicht besonders intelligent.
    • Bei einem größeren Modell könnte die Latenz steigen.
    • In der Systemarchitektur wird ein Weg benötigt, Antworten in Zwischenstufen bereitzustellen.
  • Zehnter Kommentar

    • Die Reaktionsgeschwindigkeit ist beeindruckend, die Qualität der Antworten jedoch nicht.
    • Es wird ein Gesprächsbeispiel mit Moshi gezeigt.
    • Es gibt die falsche Antwort „2019“.
    • Es liefert falsche Informationen zu COVID-19.