2 Punkte von GN⁺ 2024-09-20 | 1 Kommentare | Auf WhatsApp teilen
  • LLaMA-Omni ist ein auf Llama-3.1-8B-Instruct basierendes Sprach-Text-Modell, das gesprochene Anweisungen entgegennimmt und gleichzeitig Text- und Sprachantworten erzeugt
  • Zentrales Ziel ist latenzarme, hochwertige Sprachinteraktion; laut README kann die Latenz auf bis zu 226 ms sinken
  • Das Modell wurde mit nur 4 GPUs in weniger als 3 Tagen trainiert und läuft mit Llama-3.1-8B-Omni, Whisper-large-v3 und einem unit-basierten HiFi-GAN-Vocoder
  • Die Gradio-Demo ist so aufgebaut, dass controller, web server und model worker jeweils separat ausgeführt werden; wegen der instabilen Streaming-Audiowiedergabe in Gradio ist Autoplay nicht aktiviert
  • Der Code steht unter Apache-2.0, das Modell ist jedoch ausschließlich für akademische Forschungszwecke bestimmt; kommerzielle Nutzung ist untersagt und erfordert eine separate Anfrage für eine kommerzielle Lizenz

Was LLaMA-Omni macht

  • LLaMA-Omni ist ein auf Llama-3.1-8B-Instruct basierendes Sprach-Text-Modell
  • Es nimmt gesprochene Anweisungen als Eingabe entgegen und erzeugt gleichzeitig Textantworten und Sprachantworten
  • Ziel sind latenzarme Sprachinteraktion und hochwertige Antworten; laut den Highlights im README liegt die Latenz bei bis zu 226 ms
  • Das zugehörige Paper ist auf arXiv:2409.06666 veröffentlicht

Veröffentlichte Modelle und Datensätze

Aktuelle Updates

  • Im Mai 2025 wurde LLaMA-Omni 2 für die Hauptkonferenz der ACL 2025 angenommen
  • Im April 2025 wurde LLaMA-Omni2 veröffentlicht
    • Es handelt sich um eine Serie von Sprach-Text-Modellen mit 0,5B bis 32B Parametern
    • Die Antwortqualität und die Qualität der Spracherzeugung wurden verbessert
  • Im Januar 2025 wurde LLaMA-Omni bei der ICLR 2025 angenommen

Installation und Ausführungsablauf

  • Die Installation erfolgt, indem das Repository geklont und anschließend in einer Python-3.10-conda-Umgebung die Pakete installiert werden
    • Nach der Installation von pip==24.0 wird pip install -e . ausgeführt
  • Als zusätzliche Abhängigkeiten müssen fairseq und flash-attn installiert werden
  • Für den Schnellstart sind drei Komponenten erforderlich
    • Download des Modells Llama-3.1-8B-Omni
    • Download des Modells Whisper-large-v3
    • Download des unit-basierten HiFi-GAN-Vocoders und von config.json

Gradio-Demo und lokale Inferenz

  • Die Gradio-Demo besteht aus drei Prozessen
    • controller: omni_speech.serve.controller
    • Gradio web server: omni_speech.serve.gradio_web_server
    • model worker: omni_speech.serve.model_worker
  • Nach dem Start der Demo kann man unter localhost:8000 mit LLaMA-3.1-8B-Omni interagieren
  • Da die Streaming-Audiowiedergabe in Gradio instabil ist, ist nur Streaming-Audiosynthese implementiert; Autoplay ist nicht aktiviert
  • Lokale Inferenz wird ausgeführt, indem Dateien mit gesprochenen Anweisungen im Format omni_speech/infer/examples vorbereitet und anschließend mit bash omni_speech/infer/run.sh omni_speech/infer/examples gestartet werden

Lizenz und Nutzungsbeschränkungen

  • Der Code ist unter der Apache-2.0 License veröffentlicht
  • Das Modell darf nur für akademische Forschungszwecke genutzt werden; kommerzielle Nutzung ist untersagt
  • In akademischen Umgebungen sind Nutzung, Modifikation und Verbreitung möglich, das ursprüngliche Paper muss jedoch zitiert werden
  • Für Anfragen zur kommerziellen Nutzung oder zum Erwerb einer kommerziellen Lizenz ist fengyang@ict.ac.cn zu kontaktieren

Basisprojekte und Zitierung

  • Die Codebasis basiert auf LLaVA
  • Teile des Codes zum Speech Encoder und Speech Adapter wurden aus SLAM-LLM übernommen
  • Wenn es für die Forschung nützlich ist, sollte das Paper LLaMA-Omni: Seamless Speech Interaction with Large Language Models zitiert werden
  • Anfragen können über GitHub Issues oder an fangqingkai21b@ict.ac.cn gestellt werden

1 Kommentare

 
GN⁺ 2024-09-20
Meinungen auf Hacker News
  • Kann dieses Modell auch Geräusche erzeugen, die sich nicht als Text ausdrücken lassen? Zum Beispiel bei einer Aufforderung wie „Mach mal das Geräusch, das ein Huhn macht“

    • Wenn es Geräusche erzeugen kann, die mit nichtsprachlichen Wortschreibungen verknüpft sind, sehe ich keinen besonderen Grund, warum es bei Onomatopoesie scheitern sollte
    • Kann es solche Geräusche auch verstehen? Ich frage mich, ob es auch unterscheiden kann, ob die Aussprache oder Intonation eines Wortes richtig oder falsch ist
    • Mit ziemlicher Sicherheit eher nicht. Es klingt wie ein altmodischer Vocoder, der nur darauf ausgelegt ist, menschliche Sprache zu erzeugen
    • Meinst du so etwas wie „kikeriki“?
      Aber könnte es sowohl das Wort „kikeriki“ aussprechen als auch tatsächlich ein gackerndes/klackerndes Geräusch machen?
  • Ich bin mir nicht sicher, welchen Vorteil oder welches Potenzial so ein Modell gegenüber einem reinen Textmodell hat, an das Spracherkennung/Sprachsynthese angeflanscht wurde
    Geht es im Kern darum, dass ein ausgereifteres Modell Dinge wie Intonation, Rhythmus und Emotion, die bei der Sprachsynthese verloren gehen, richtig interpretieren oder erzeugen kann?

    • Bei Spracherkennung/Sprachsynthese gibt es viel Informationsverlust und viele Annahmen
      Ein Spracherkennungsmodell kann Wörter falsch verstehen, während ein Audio-LLM dank des breiteren Kontexts möglicherweise die tatsächlichen Wörter versteht. Ein Sprachsynthesemodell muss die Intonation erraten und kann damit völlig danebenliegen, während ein Audio-LLM auf natürliche Weise lernen kann, in welchem Ton etwas gesagt werden sollte. Bei einer Unterbrechung könnte es zum Beispiel einen höheren Ton verwenden
      Schon beim Dazwischenreden verlassen sich Spracherkennungs-/Synthesesysteme normalerweise auf Sprachaktivitätserkennung und Heuristiken, um zu entscheiden, wann sie sprechen sollen; deshalb gibt es oft die Regel, erst zu sprechen, nachdem der Nutzer aufgehört hat. Ein Audio-LLM kann natürliche Gespräche lernen, wie man nicht zu viel Gesprächszeit beansprucht und wie man mit mehreren Personen gleichzeitig spricht
      Ein Audio-LLM kann Musik oder Geräusche erzeugen oder dir sagen, welches Lied du summst. Es gibt viele neue Möglichkeiten
      Ich sage allerdings „kann lernen“, weil dafür gute Trainingsdaten nötig sind. Soweit ich weiß, werden die meisten dieser Modelle derzeit mit normalen Textdatensätzen trainiert, die per Sprachsynthese in Audio umgewandelt wurden; damit sind sie im Grunde nicht besser als normale Spracherkennungs-/Synthesesysteme. Das ist gut, um die Architektur zu belegen, zeigt aber nicht die gesamte Leistungsfähigkeit
    • Persönlich freue ich mich sehr darauf, Sprachmodelle wie OpenAIs advanced voice mode fürs Sprachenlernen zu nutzen
      Schon die Möglichkeit, schneller oder langsamer zu sprechen, war etwas, was traditionelle Sprachsynthesesysteme nicht konnten. Theoretisch könnte es mir auch sagen, ob meine Aussprache korrekt ist, meine falsche Aussprache wiederholen und mir dann zur Korrektur die richtige vorspielen
      Ich weiß nicht, wie gut OpenAIs advanced voice mode das in der Praxis kann, weil ich noch keinen ordentlichen Test dazu gesehen habe, aber ich würde es gern selbst ausprobieren. Wenn andere Sprachmodelle dieses Niveau erreichen, könnten sie als Tools zum Sprachenlernen enorm sein
    • Dieses Thema wurde schon ausführlich behandelt; man kann sich zum Beispiel OpenAIs -O-Paper ansehen
      Ein großer Faktor ist die Latenz durch Batching. Es ist schwierig, einem Agenten richtig ins Wort zu fallen, wodurch echte Gespräche holpriger wirken. Und ja, multimodal versteht besser. Allerdings habe ich keine Analyse zur Emotionserkennung gesehen; mich würde interessieren, ob jemand eine Analyse dieser Fähigkeit von GPT-O gesehen hat
    • Im Kern entsteht bei der Audio-zu-Text-Umwandlung Informationsverlust. Manchmal ist das nicht wichtig, manchmal kann es die Ausgabequalität aber spürbar verbessern
      Daneben kann es weitere Vorteile geben, etwa geringere Antwortlatenz, bessere Sprechertrennung oder eine bessere Reaktion auf Pausen im Gespräch
    • Wenn man nur „Really“ hinschreibt, weiß niemand, welche Intonation gemeint ist
      Selbst wenn man „Really?“ oder „Really!“ schreibt, bleibt immer noch Interpretationsspielraum. Damit Sprachinterfaces wirklich erfolgreich werden, braucht es einen Moment wie beim Übergang von der schlechten Suche vor Google zu Google; wenn der Kern davon ist, Intonation, Rhythmus und Emotion zu interpretieren und zu erzeugen, dann ist es ziemlich plausibel, solche Modelle zu bauen
  • Gibt es unter Modell-Ausführungstools wie Ollama, LM Studio oder llama.cpp irgendetwas, das das unterstützt?

  • Heißt das also, es ist keine Architektur Spracherkennung → LLM → Sprachsynthese? Wenn ich als Eingabe Chewbacca-Geräusche brülle, erkennt das Modell das als unsinnige Eingabe, oder interpretiert es wie eine schlechte Spracherkennung einfach irgendwelche Wörter hinein?

    • Von der Architektur her ist es das nicht, aber wahrscheinlich wird es unsinnige Eingaben trotzdem nicht als solche erkennen. Laut Paper

      we construct a dataset named InstructS2S-200K by rewriting existing text instruction data and performing speech synthesis
      Es wurde nur mit per Sprachsynthese vorgelesenen Fragen trainiert und hat unsinnige Geräusche weder gesehen noch gehört. Wahrscheinlich halluziniert es eher, dass du irgendeine Frage gestellt hast, und erfindet eine Antwort, statt zu fragen: „Geht es Ihnen gut?“ Es gibt nicht viele Datensätze mit echten Sprachaufnahmen und auch keine Audio-Version von StackOverflow, die man scrapen könnte

    • Früher habe ich mit so etwas herumgespielt. Ich habe Google Translate auf eine Sprache eingestellt, die ich nicht kenne, etwa Chinesisch, und dann irgendwelche Geräusche gemacht; heraus kamen konsistente, aber völlig verrückte englische Sätze
      Bei tonalen Sprachen schien das besonders gut zu funktionieren
  • Die synthetische Stimme im Demo-Clip klingt Ellen McLain, also der Valve-Sprecherin, erstaunlich ähnlich
    https://en.m.wikipedia.org/wiki/Ellen_McLain

    • Klingt, als wäre es mit dem LJ-Speech-Datensatz trainiert worden. Er ist einer der besten Datensätze und wird sehr häufig verwendet
  • Die Geschwindigkeit sieht ziemlich gut aus. Ich habe vor Kurzem mit LMStudio + AnythingLLM einen lokalen Sprachchat ausprobiert; das war noch etwas langsamer, als ich es gerne hätte, und die PiperTTS-Stimme war besser als diese hier

  • Für 3 Tage Training ist das nicht schlecht. Die Qualität der Sprachausgabe muss noch weiter verfeinert werden, aber es ist interessant zu sehen, was mit mehr Training passieren würde

  • Ich wünschte, es gäbe Code fürs Training oder Fine-Tuning. Für kommerzielle Nutzung scheint Stimmen-Fine-Tuning eine zentrale Anforderung zu sein

  • Bin ich der Einzige, der ein GitHub-Repository deutlich weniger vertrauenswürdig findet, wenn im README dieses dumme Sterne-Trenddiagramm steht?

    • Das ist schon etwas seltsam. Leute dürfen schließlich stolz auf ihre Arbeit sein
  • Gibt es eine Demo, die die Leistung zeigt?