In previous GGUF versions, the mandatory [DENGLISH] anchor token and the system prompt were ignored due to a missing Jinja2 format.
Solution: All GGUF files have been completely re-quantized. The system prompt and anchor token are now permanently baked into the binary files. Please redownload your files if you pulled them before May 31!
💬 Correct Prompt Format (Auto-applied by GGUF)
When using this model in LM Studio, Ollama, or via Inference Providers (like FeatherlessAI), the internal chat template will automatically structure your input like this:
text
1<|start_header_id|>system<|end_header_id|>
23You are a phonetic transcriber. Transpose only English and Denglish words into German phonetics.<|eot_id|><|start_header_id|>user<|end_header_id|>
45[DENGLISH]Your text here<|eot_id|><|start_header_id|>assistant<|end_header_id|>
Note: You do NOT need to type the headers or the [DENGLISH] token manually in modern UIs anymore—the GGUF file injects them automatically behind the scenes!
⚠️ Wichtiger Hinweis: Dies ist KEIN Chatbot! Dieses Modell wurde strikt als Text-Transformator (phonetischer Präprozessor) trainiert. Es beantwortet keine Fragen, führt keine Gespräche und reagiert nicht auf Anweisungen. Wenn du das Modell fragst: „Wie geht es dir?“, wird es nicht antworten, sondern den Satz stur in Lautschrift ausgeben, bzw. einen deutschen Text einfach unverändert zurückgeben: Wie geht es dir?. Für die normale Chat-Interaktion ist dieses Modell nicht geeignet.
Dieses Modell fungiert als phonetischer Präprozessor für deutsche Text-to-Speech (TTS) Systeme. Es ist besonders für End-to-End-Architekturen wie Piper unter Verwendung der Thorsten-Stimme optimiert, sollte jedoch grundsätzlich auch für andere deutsche TTS Stimmen funktionieren. In die Demo auf Hugging Face wurde deshalb auch die Stimme Kerstin integriert, sodass man beispielhaft eine männliche und eine weibliche Stimme hören kann.
In modernen "denglischen" Texten führen englische Wörter, Abkürzungen und Zahlen oft zu Fehlern in der deutschen Sprachsynthese und erzeugen eine unverständliche Aussprache. Dieses Modell wurde entwickelt, um dieses Problem zu lösen.
✨ Hauptfunktionen
Intelligentes Code-Switching: Standardmäßiger deutscher Text wird nicht verändert. Die Grammatik, Struktur und originalen Ziffern bleiben unangetastet.
Denglisch-Phonetisierung: Übersetzt englische Begriffe innerhalb von deutschem Text in eine flüssige deutsche Lautschrift (zum Beispiel wird download zu daunlohd ).
Kontextbasierte Behandlung von Zahlen und Einheiten: Erweitert Abkürzungen und Symbole nativ. Die Angabe 12,5cm wird in englischen Kontexten zu Twällw-Päunt-Feihw ßänti Mieters, im deutschen Kontext jedoch zu 12 Komma 5 Zenti Meter.
⚙️ Erforderliche Prompt-Struktur & Formatierung
Um die phonetischen Transkriptionsfähigkeiten korrekt auszulösen, muss der exakte System-Prompt und der User-Anker-Token verwendet werden, auf den das Modell trainiert wurde:
1. System Prompt
You are a phonetic transcriber. Transpose only English and Denglish words into German phonetics.
2. User Anchor Token
Jede Eingabe des Nutzers muss unmittelbar vor dem Textblock mit dem Anker-Token [DENGLISH] versehen werden.
Beispiel für das exakte Format (Llama-3.1 Chat Template)
text
1<|begin_of_text|><|start_header_id|>system<|end_header_id|>
23You are a phonetic transcriber. Transpose only English and Denglish words into German phonetics.<|eot_id|><|start_header_id|>user<|end_header_id|>
45[DENGLISH] Dearest creature in creation
6Studying English pronunciation
7I will teach you in my verse
8Sounds like corpse, corps, horse and worse.<|eot_id|><|start_header_id|>assistant<|end_header_id|>Dierest Krietscher in Krieäischen,
9Staddiing Inglisch Pronanßiäischen,
10Ei will tietsch juh in mei Wöhrß,
11ßaunds leik Kohrs, Kohr, Hoahrs änd uöhrß.<|eot_id|>
📦 Verfügbare GGUF-Quantisierungsdateien
Empfohlen: ...Q5_K_M.gguf (Größe: circa 5.1 GB). Bietet die perfekte Balance aus Geschwindigkeit und annehmbarer Präzision für die meisten Denglisch-Texte.
Maximale Präzision: ...Q8_0.gguf (Größe: circa 8.5 GB). Empfohlen für High-End-GPUs (zum Beispiel RTX 4090), um jeglichen Quantisierungsverlust zu eliminieren.
Leichtgewicht: ...Q4_K_M.gguf (Größe: circa 4.8 GB). Schnell und ressourcenschonend. Ideal für Umgebungen mit wenig VRAM oder den mobilen Einsatz.
Unquantisiert: ...BF16.gguf (Größe: circa 16.0 GB). Die unquantisierte Master-Datei zur Archivierung oder für spezialisierte, eigene Quantisierungen.
⚡ Showcase & Beispiele
Hier sind die wichtigsten Anwendungsfälle, die zeigen, wie das Modell Texte für die TTS-Engine aufbereitet:
1. Deutscher Text bleibt unverändert
Standardmäßiger deutscher Text wird unverändert zurückgegeben. Lediglich Einheiten und einige Zeichen und Symbole werden phonetisch ausgeschrieben:
Eingabe:[DENGLISH] Ein deutscher Text sollte grundsätzlich so stehen bleiben wie er ist. Etwa ein Pferd frisst keinen Gurkensalat und ein Auto fährt mit 50 km/h auf der 10km langen Straße. Lediglich einige Einheiten werden ausgeschrieben, etwa die Fläche beträgt 25m² oder das Gefäß fasst ein Volumen von 2,5l, was 2500ml entspricht oder 2500cm³ und im Falle von Wasser einem Gewicht von 2,5kg oder 2500g gleich kommt.
Ausgabe:Ein deutscher Text sollte grundsätzlich so stehen bleiben wie er ist. Etwa ein Pferd frisst keinen Gurkensalat und ein Auto fährt mit 50 km/h auf der 10 Kilometer langen Straße. Lediglich einige Einheiten werden ausgeschrieben, etwa die Fläche beträgt 25 Quadrat Meter oder das Gefäß fasst ein Volumen von 2,5 Liter, was 2500 Milli Liter entspricht oder 2500 Kubik Zenti Meter und im Falle von Wasser einem Gewicht von 2,5 Kilo Gramm oder 2500 Gramm gleich kommt.
2. Phonetische Aufbereitung von "Denglisch"
Englische Begriffe und eingedeutschte Verben werden in deutsche Phonetik übertragen:
Eingabe:[DENGLISH] Weil der Download laggy war wurde er asap gecancelt und vom project leader rescheduled. Wir haben den ganzen Tag gegrinded und abends mit der Community gechillt. Bei der Percussion Performance auf der Open Air Stage waren echt coole Vibes, obwohl die Location echt cringe war.
Ausgabe:Weil der Daunlohd läggi war wurde er äißap gekäntselt und vom Proddschäkt Lieder riskäddiuhlt. Wir haben den ganzen Tag gegreindet und abends mit der Kommjuhniti getschillt. Bei der Pörkaschen Pörfohamänns auf der Ohpen Ähr Stäidsch waren echt kuhle Weihbs, obwohl die Lokäischen echt krindsch war.
Man beachte: Im obigen Beispiel ist etwa das Wort "Percussion" definitiv nicht Teil meiner Trainingsdaten. Das Llama spuckt diese passende Phonetik ganz von allein aus...
3. Physikalische Einheiten nach Kontext
Die meisten Einheiten werden je nach sprachlichem Kontext phonetisch ausgeschrieben.
Deutscher Kontext:
Eingabe:[DENGLISH] Das Update wurde mit 10MB/s übertragen, während wir mit 50km/h fuhren. Das 100GB große Firmware-Upgrade wurde mit 10Gbps über eine High-Speed Connection bei einer Außentemperatur von 20°C gedownloadet, wobei die Latenz 10ms betrug. Der Blutdruck ist auf 160/90mmHg gestiegen, während wir uns mit 20m/s auf einem Areal von 200 km² fortbewegten. Der Lautsprecher hat eine Impedanz von 8Ω. Die Batteriekapazität unseres E-Autos betrug 120kWh bei einer Spannung von 800V und einem maximalen Ladestrom von 450A.
Ausgabe:Das Apdät wurde mit 10 Mega Bait pro Sekunde übertragen, während wir mit 50 Kilometer pro Stunde fuhren. Das 100 Giga Bait große Förmwär-Apgrähd wurde mit 10 Gigabits pro Sekunde über eine Hei Spied Konnäkschn bei einer Außentemperatur von 20 Grad Celsius gedaunlohdet, wobei die Latenz 10 Milli Sekunden betrug. Der Blutdruck ist auf 160 zu 90 Milli Meter Quecksilber gestiegen, während wir uns mit 20 Meter pro Sekunde auf einem Areal von 200 Quadrat Kilometer fortbewegten. Der Lautsprecher hat eine Impedanz von 8 Ohm. Die Batteriekapazität unseres E-Autos betrug 120 Kilo Watt Stunden bei einer Spannung von 800 Volt und einem maximalen Ladestrom von 450 Ampähr.
Englischer Kontext:
Eingabe:[DENGLISH] The update was downloaded with 10MB/s while we were driving with 50km/h. The 100GB sized firmware upgrade was downloaded at a speed of 1.5Gbps via a high-speed connection at an ambient temperature of 68°F with a latency of 10ms. The speaker has an impedance of 8Ω. The blood pressure rose to about 160/90mmHg while we were moving at an average speed of 45mph, covering an area of almost 200 km². The battery capacity of our EV measured 120kWh at 800V and a maximum charging current of 450A.
Ausgabe:Se Apdät woss daunlohdet wiss Tänn Mega Bait pör ßäckend weil wi wöhr dreiwing wiss Fifti Kilommieters pör Auer. Se Wonn-Handred Giga Bait ßeist Förmwär Apgrähd woss daunlohdet ätt ä Spied off Wonn-Päunt-Feihw Gigabits pör ßäckend via ä hei Spied Konnäckschen ätt än ämbiänt Tämprättscher off ßixti-Äit Digries Fahrenheit wiss ä Läitänßi off Tänn Milli ßäckends. Se Spieker häss än Impiehdens off Äit Ohm. Se Bladd Präscher rohs tu äbaut Wonn-Handred-ßixti tu Neihnti Milli Mieters off Mörkiuhri wail wi wöhr muhwing ätt än äwwridsch Spied off Fohrti-Feihw Meils pör Auer, kawwering än Ärria off orlmohst Tuh-Handred Squähr Kilommieters. Se Bätteri Käppässiti off auer Ie Wie mäschert Wonn-Handred-Twännti Kilo Wott Auers ätt Äit-Handred Wollts änd ä mäximum tschardsching Körrent off Fohr-Handred-Fifti Ämps.
Diese Beispiele sind 1:1 reale Ausgaben des BF16-Modells. Wie man sieht, macht das Llama nicht immer „Kilometer pro Stunde“ aus km/h, sondern lässt eine Einheit auch hin und wieder unverändert stehen. Bitte siehe dazu den Punkt Bekannte Einschränkungen und known Issues.
4. Intelligente Trennung von Nachkommastellen
Nachkommastellen werden durch Leerzeichen getrennt, damit die TTS die Ziffern einzeln und verständlich ausspricht:
Deutscher Kontext:
Eingabe:[DENGLISH] Der Durchschnitt betrug 17,12345
Ausgabe:Der Durchschnitt betrug 17 Komma 1 2 3 4 5.
Englischer Kontext:
Eingabe:[DENGLISH] The average is 17.12345
Ausgabe:Se Äwwridsch iss ßäwwentien-Päunt-Wonn-Tuh-Trie-Fohr-Feihw.
5. Das denglische phonetische Zahlenschema
Für englische Zahlen nutzt das Modell folgende Lautschrift-Struktur:Siero, Wonn, Tuh, Trie, Fohr, Feihw, ßix, ßäwwen, Äit, Neihn, Tänn, Iläwwen, Twällw, ßöhrtien, Twännti-Wonn, Neihnti-Neihn, Handred, ßausänd und so weiter.
6. GPS-Koordinaten (Dezimal- und DMS-Format)
Das Modell übersetzt Koordinaten in flüssig sprechbare Sätze:
DMS-Format (Deutsch):
Eingabe:[DENGLISH] Der Eiffelturm in Paris befindet sich bei 48° 51' 29.6" N und 2° 17' 40.2" O.
Ausgabe:Der Eiffelturm in Paris befindet sich bei 48 Grad 51 Minuten 29 Komma 6 Sekunden nördlicher Breite und 2 Grad 17 Minuten 40 Komma 2 Sekunden östlicher Länge.
Hinweis zu Einschränkungen: Je nach Kontext kürzt das Modell hier manchmal auch selbstständig auf „Grad Nord“ oder „Grad Ost“ ab.
Dezimal-Format (Deutsch):
Eingabe:[DENGLISH] Der Eiffelturm in Paris befindet sich bei 48.858222N und 2.294500E.
Ausgabe:Der Eiffelturm in Paris befindet sich bei 48 Komma 8 5 8 2 2 2 Grad Nord und 2 Komma 2 9 4 5 0 0 Grad Ost.
Dezimal-Format (Englisch):
Eingabe:[DENGLISH] The Eiffel tower in Paris is located at 48.858222N, 2.294500E.
Ausgabe:Se Eiffel Tauer in Pärris iss lokätet ätt Fohrti-Äit-Päunt-Äit-Feihw-Äit-Tuh-Tuh-Tuh Digries Norß änd Tuh-Päunt-Tuh-Neihn-Fohr-Feihw-Siero-Siero Digries Iest.
7. Spezialfall: IP-Adressen (Sicherheitsnetz, damit das Llama sich nicht aufhängt)
Damit sich das Modell bei komplexen Netzwerkdaten nicht verschluckt oder in Endlosschleifen verfällt, werden IPv4- und IPv6-Adressen exakt eins zu eins durchgeschleift und im englischen Kontext nicht transkribiert:
Eingabe:[DENGLISH] Die Adresse lautet 127.0.0.1
Ausgabe:Die Adresse lautet 127.0.0.1.
Bei IPs findet also keine phonetische Umsetzung statt.
8. Preise, Währungen und Währungssymbole
Eingabe:[DENGLISH] The purchased item was sold for $1234.99.
Wichtige Empfehlung: Da die Trennschärfe bei Zahlen bei den kleineren 4-Bit- und 5-Bit-Modellen abnimmt, wird für Texte mit vielen Zahlen und Einheiten dringend die Nutzung des unquantisierten 16-Bit-Modells (BF16) empfohlen.
9. Vollständig englische Texte (inkl. BBC / CNN News-Talk)
Das Modell kann grundsätzlich auch komplette englische Textabschnitte flüssig für die deutsche TTS aufbereiten:
Eingabe:[DENGLISH] The horse doesn't eat no cucumber salad and 2+2=4.
Ausgabe:Se Hoahrs dasn't iet noh Kiuhkamber Säläd änd Tuh plass Tuh iquäls Fohr.
Beispiel eines Textes aus den englischsprachigen Nachrichten (CNN)
Eingabe:[DENGLISH] The Iran war’s oil price shock lifted the Federal Reserve’s preferred inflation gauge to 3.8% in April from 3.5% the month before, according to Commerce Department data. The Personal Consumption Expenditures price index rose 0.4% on a monthly basis, slowing from a 0.7% increase in March. Consumer spending, which powers about two-thirds of the economy, rose 0.5% in April – a seemingly resilient but slower pace than the 1% jump in March.
Ausgabe:Se Iran Woahr's Eul Preiß Schock liftet se Fädderäl Riesörw's prieföhrt Infläischen Gäidsch tu Trie-Päunt-Äit Pörßent in Äpril fromm Trie-Päunt-Feihw Pörßent se Monns biefohr, äckording tu Kommerß Dipahrtment Däta. Se Pörßenäll Konßampschen Äxpänditschers Preiß Index rohs Siero-Päunt-Fohr Pörßent onn ä monnßli Bäsis, slohing fromm ä Siero-Päunt-ßäwwen Pörßent Inkries in Martsch. Konnßiuhmer Spännding, witsch pauers äbaut tuh-ßöhrds off se Ikonnemi, rohs Siero-Päunt-Feihw Pörßent in Äpril - ä ßiemingli risiliännt batt sloher Päiß sänn se Wonn Pörßent Dschamp in Martsch.
🛠️ Implementierung & Workflow
Das Modell kann mit jedem Standard-Runner für llama.cpp, mit Ollama oder lokalen Inferenz-Frontends (wie LM Studio oder KoboldCPP) betrieben werden. Es lässt sich als Text-transformierende Middleware direkt in deine Code-Pipeline integrieren. Erfordert llama.cpp Version b3389 oder höher (wegen Llama 3.1 Support).
🦙 Lokale Nutzung mit Ollama
Dieses Modell kann direkt in Ollama geladen werden. Da es als spezialisierte Middleware trainiert wurde, benötigt es exakte Stop-Parameter und eine spezifische Prompt-Struktur, die über ein Modelfile gesteuert werden.
1. Modelfile erstellen
Erstelle eine Datei namens Modelfile (ohne Dateiendung) im selben Verzeichnis wie deine heruntergeladene .gguf-Datei und füge dein originales Setup ein:
dockerfile
1# Pfad zu deiner lokalen GGUF-Datei (ggf. Dateinamen anpassen!)2FROM ./TTS-Phonetic-Denglish-Llama-3.1-8B-instruct.Q5_K_M.gguf34PARAMETER temperature 0.01
5PARAMETER stop "<|start_header_id|>"
6PARAMETER stop "<|end_header_id|>"
7PARAMETER stop "<|eot_id|>"
89# Automatische Ergänzung der Llama-3.1-Instruct Struktur inkl. [DENGLISH] Anker10TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
1112{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
1314[DENGLISH] {{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
1516{{ .Response }}<|eot_id|>"""
1718# System-Prompt19SYSTEM """You are a phonetic transcriber. Transpose only English and Denglish words into German phonetics."""
2. In Ollama registrieren & ausführen
Führe anschließend folgende Befehle im Terminal aus:
bash
1# Modell erstellen2ollama create llama-tts-phonetic -f ./Modelfile
34# Modell lokal testen5ollama run llama-tts-phonetic "Das neue Update steht zum Download bereit."
Der Ablauf der Pipeline ist wie folgt aufgebaut:
Schritt 1: Roher, gemischter Text-Input
Schritt 2: Verarbeitung durch die Llama Phonetic Engine
Schritt 3: Ausgabe des phonetisch optimierten Textes
Schritt 4: Sprachausgabe über Piper-TTS (z.B. TTS-Stimmen Thorsten oder Kerstin)
Gelegentliche Versprecher:
Das Modell neigt momentan noch dazu, gelegentlich manche Wörter, die es grundsätzlich beherrscht, dennoch hin und wieder falsch auszusprechen.
Es kann 99 Mal ein Wort korrekt aussprechen, doch beim 100. Mal verbuchselt es einige Wechstaben. Dies geschieht vor Allem, wenn der Eingabetext etwas länger ist.
Als Lösung empfehle ich, die Eingabe längerer Texte durch eine geeignete Vorverarbeitung in kleinere Happen zu zerlegen - etwa durch Auftrennung längerer Texte in einzelne Sätze oder kürzere Textabschnitte.
Scharfes 'S', bzw. "ß" am Wortanfang, wenn als zweiter Buchstabe ein Konsonant folgt:
Eigentlich hat das Llama gelernt, dass deutsche TTS-Systeme, wie piper/Thorsten oder Kerstin, ein scharfes S, bzw. ein "ß" am Anfang eines Wortes nur aussprechen können, wenn der zweite Buchstabe ein Vokal ist, also etwa engl. 'soul'->'ßohl' funktioniert super, aber bei 'stone'->'ßtohn' fällt die TTS zurück in den Buchstabiermodus und sagt "Esszett tohn". Normalerweise umschifft das Llama diese Limitation der deutschen Stimmen, indem es dann eben 'stone'->'Stohn' schreibt. Dennoch passiert es hin und wieder, dass es ein "ß" auch bei folgendem Konsonanten an den Wortanfang setzt. Besonders die komprimierten 4-bit und 5-bit Modelle sind hierfür anfällig.
Das leidige "TH":
Der Deutsche an sich hat bekanntlich seine Schwierigkeiten mit dem englischen Lispel-Laut "TH". Da geht es Kerstin und Thorsten nicht anders. Ein weiches "TH", wie in "this or that" wird entsprechend einfach durch ein "S" wiedergegeben, also "Siss or Sätt". Ein scharfes "TH", wie etwa in "thin" or "thief" wird durch ein 'ß" wiedergegeben, also "Se ßinn ßief stohl se Stohn." Doch der zuvor erwähnte Punkt 2) - "Kein ß am Wortanfang, wenn ein Konsonant folgt" macht es unmöglich, etwa "three" oder "thrust" oder "throttle" als "ßrie, ßrast oder ßrottel" zu schreiben. Zum Glück fallen nur recht wenige und eher seltene Wörter in diese Kategorie. In der Regel verwende ich hier ein "F" - also quasi "TOGA Pauer = Frottel auf full Frasst." Nicht schön - aber selten.
Eine Ausnahme von dieser Regel bildet die 3, also 'three'. Hier nutze ich das "T", also "Trie" - analog zur ICAO/Aviation Phonetik - da sich diese Aussprache tmo immer noch besser anhört als "Frie" - und eine Verwechslung mit dem phonetisch dann gleich lautenden Baum="tree" eher unwahrscheinlich ist. Also "One, Two, Three => Wonn, Tuh, Trie".
Heteronyme - also Wörter, die trotz identischer Schreibweise unterschiedlich ausgesprochen werden - kann das Llama i.d.R. noch nicht unterscheiden.
"I read a book every day. Yesterday, I read a book." oder "lead":="führen"=>"lied" oder "Blei"=>"lädd", oder auch "reading a book" vs. die Stadt "Reading" kennt es einfach noch nicht gut genug. Dazu bedarf es offenbar noch mehr Trainingsdaten, weil diese Unterschiede lediglich durch den Kontext ersichtlich sind. Das Beherrschen von Heteronymen hat für diese erste Version einfach noch keine Priorität.
Gelegentliche Verwechslung von Einheiten:
Dies ist ein Spezialfall von 'Punkt 1)Gelegentliche Versprecher'. Genau wie bei gewöhnlichen Wörtern auch, verbaselt das Llama manchmal auch die Einheiten. Es kann also vorkommen, dass es z.B, obwohl es grundsätzlich etwa GB=Gigabyte und Gb=Gigabit kennt, manchmal die Bits und Bytes durcheinanderbekommt. Da ein kleines "m", je nachdem wo es steht, entweder "Milli" oder auch "Meter" bedeuten kann, macht es hier manchmal Fehler. Auch hier bedarf es noch weiterer Trainingsbeispiele, damit es hier sicherer wird. Diese Unschärfen treten in den komprimierten 4-bit und 5-bit Modellen naturgemäß häufiger auf. Falls Du also Wert auf die korrekte Aussprache von Einheiten legst, sei auch hier die Verwendung des 16-bit Modells (BF16) empfohlen.
Unbekannte Einheiten:
Manche Einheiten kennt das Llama einfach (noch) gar nicht. Etwa mit 'fb⁻¹', was "inversen Femto Barns" entspricht, kann das Llama - ebenso wie die meisten Menschen wohl auch - schlicht nichts anfangen und halluziniert dann einfach wild vor sich hin. Etwa in diesem Fall (einer subjektiv unbekannten Einheit) könnte es wohl zumindest sowas wie "F B hoch Minus 1" generieren, doch scheitert diese erste Alpha-Version meist noch daran. Auf der anderen Seite wundere ich mich manchmal selbst darüber, dass es überraschenderweise manche Einheiten aus dem Hut zaubert, die es zumindest nicht von mir gelernt hat. So macht es etwa (meistens, s. Punkt 1) aus "mSv/h" tatsächlich "Milli Sievert pro Stunde" - obwohl ich ihm diese Einheit nie beigebracht habe. Man könnte wohl sagen, dass es weniger verbreitete Einheiten zwar "künstlerisch kreativ, aber dennoch häufig falsch" umsetzt. Es ist auch nicht das Ziel dieser ersten Alpha-Version, komplexe physikalische Einheiten auszusprechen, sondern das Training mancher dieser Einheiten als "Edge Cases" dient lediglich dazu, das Llama zumindest mit den häufigsten Einheiten vertraut zu machen, sodass es wenigstens Spannung von Stromstärke, Leistung von Drehmoment oder Quadratmeter von Kubikzentimetern unterscheiden kann. Mit alltäglich verwendeten "Allerweltseinheiten" sollte es so zumindest schon einigermassen umgehen können.
Programmcode:
Dieses Llama beherrscht noch keine Programmiersprachen. Es ist schlicht noch nicht darauf trainiert, die Syntax von Programmcode auszusprechen. Falls in dieser Hinsicht Nachfrage besteht, lässt sich dies natürlich in zukünftigen Versionen einbauen. Für diese erste Alpha-Version ist Programmcode jedoch noch out of scope.
Mathematische Formeln:
Dieses "Denglisch-Llama" ist auch noch kein Mathematik-Llama. Gibt man dem Llama etwa so etwas wie: Summe(n) = (n * (n + 1)) / 2, dann wird es den Text im Zweifel einfach unverändert wieder ausgeben. Ich habe ihm beigebracht, "kryptisches Zeug", unaussprechliche Namen, IP Adressen etc. möglichst einfach so stehen zu lassen und unverändert wieder auszugeben. Eine sinnvolle Interpretation mathematischer Formeln jenseits von a²+b²=c² hat das Llama, ebenso wie das Programmieren, einfach noch nicht gelernt. Doch immerhin "seinen Pythagoras" kennt es bereits ;-)
Französische Lehnwörter:
Da dieses Llama mit dem klaren Ziel als "Denglisch-Llama" entwickelt wurde, sind seine Kenntnisse der französischen Sprache (noch) ziemlich begrenzt. Zwar beherrscht es bereits einige häufiger genutzte französische Ausdrücke (lasst Euch überraschen), aber grundsätzlich ist die französische Sprache für diese Version nicht im Scope.* Honi soit qui mal y pense.*
👤 Autor & Kontakt
Sven Rein (RudraChakrin)
Ich habe dieses Modell mit dem Fokus auf digitale Barrierefreiheit und die Verbesserung der deutschen Sprachsynthese entwickelt. Mein Ziel ist es, die Qualität und die Nutzbarkeit deutscher Sprachausgabe zu verbessern und die Brücke zwischen komplexem "Denglisch" und natürlichem Klang zu schlagen.
Danksagung: Dieses Projekt ist eine dedizierte Erweiterung für die Open-Source-Sprachsynthese. Ein besonderer Dank geht an die Thorsten-Voice-Community, deren Arbeit diesen Ansatz inspiriert hat.
💬 Feedback & Mitwirken
Da es sich um eine frühe Alpha-Version handelt, lebt dieses Projekt vom Feedback der Community.
Fehler gefunden? Falls Euch Wörter auffallen, die falsch transkribiert werden oder die TTS-Stimme ins Stolpern bringen, lasst es mich wissen. Ich freue mich über Euer Feedback, um die Qualität in kommenden Versionen weiter zu verbessern.
Erweiterungen gewünscht? Wenn bestimmte Fachbegriffe, Abkürzungen oder Redewendungen in deinem Workflow fehlen, nehme ich diese gerne für zukünftige Trainingsläufe auf. Bitte nutze für Feedback, Kritik und Anregungen einfach den Community-Reiter (Community Tab) hier auf der Hugging Face Modellseite und erstelle eine neue Diskussion.
⚠️ Important Note: This is NOT a Chatbot! This model has been strictly trained as a text transformer (phonetic preprocessor). It does not answer questions, engage in conversations, or follow conversational instructions. If you ask the model: “How are you?”, it will not reply, but instead stubbornly output the phonetic transcription: Hau ahr juh?. This model is entirely unsuited for standard chat interactions.
This model acts as a highly specialized phonetic preprocessor for German Text-to-Speech (TTS) systems. It is specifically optimized for end-to-end architectures like Piper using the Thorsten-Voice.
In modern technical text or daily communication, English words, abbreviations, and numbers frequently corrupt German speech synthesis, forcing the TTS into spelling mode or resulting in heavy pronunciation glitches. This model fixes these issues.
✨ Key Capabilities
Intelligent Code-Switching: Keeps standard German text untouched, leaving the grammar, structure, and original digits intact.
Denglisch Phonetic Transcription: Translates English terms inside German text into German phonetics (for example, downloaded becomes daunlohdet).
Deterministic Unit Expansion: Expands abbreviations and symbols natively. For example, 12,5cm becomes Twällw-Päunt-Feihw ßänti Mieters in English contexts, but 12 Zenti Meter in German contexts.
Zero-Shot Resilience: Safely routes heavy alphanumeric strings like IPv4 or IPv6 addresses directly through without entering infinite loop hallucinations.
⚙️ Required Prompt Structure & Formatting
To successfully trigger the phonetic transcription capabilities, you must use the exact system prompt and user anchor token the model was trained on:
1. System Prompt
You are a phonetic transcriber. Transpose only English and Denglish words into German phonetics.
2. User Anchor Token
Every user query input must be prefixed with the [DENGLISH] anchor token immediately before the text block.
Exact Format Example (Llama-3.1 Chat Template)
text
1<|begin_of_text|><|start_header_id|>system<|end_header_id|>
23You are a phonetic transcriber. Transpose only English and Denglish words into German phonetics.<|eot_id|><|start_header_id|>user<|end_header_id|>
4[DENGLISH] Dearest creature in creation
5Studying English pronunciation
6I will teach you in my verse
7Sounds like corpse, corps, horse and worse.<|eot_id|><|start_header_id|>assistant<|end_header_id|>Dierest Krietscher in Krieäischen,
8Staddiing Inglisch Pronanßiäischen,
9Ei will tietsch juh in mei Wöhrß,
10ßaunds leik Kohrs, Kohr, Hoahrs änd uöhrß.<|eot_id|>
📦 Provided GGUF Quantization Files
Recommended for most cases: ...Q5_K_M.gguf (Size: around 5.1 GB). Perfect balance of speed and character-level spelling precision.
Higher Precision: ...Q8_0.gguf (Size: around 8.5 GB). Recommended for high-end GPUs (e.g., RTX 4090) to eliminate any quantization loss.
Lightweight: ...Q4_K_M.gguf (Size: around 4.8 GB). Fast and memory-efficient. Ideal for lower VRAM environments or mobile deployment.
Master File, maximum precision: ...BF16.gguf (Size: around 16.0 GB). Unquantized master file for archiving or specialized custom quantizations.
⚡ Showcase & Verification Examples
Here are the primary use cases demonstrating how the model pre-processes text for the German TTS engine:
1. German text remains untouched
Standard German text is kept entirely intact, with only physical units and some abbreviations or symbols getting spelled out phonetically:
Input:[DENGLISH] Ein deutscher Text sollte grundsätzlich so stehen bleiben wie er ist. Etwa ein Pferd frisst keinen Gurkensalat und ein Auto fährt mit 50 km/h auf der 10km langen Straße. Lediglich einige Einheiten werden ausgeschrieben, etwa die Fläche beträgt 25m² oder das Gefäß fasst ein Volumen von 2,5l, was 2500ml entspricht oder 2500cm³ und im Falle von Wasser einem Gewicht von 2,5kg oder 2500g gleich kommt.
Output:Ein deutscher Text sollte grundsätzlich so stehen bleiben wie er ist. Etwa ein Pferd frisst keinen Gurkensalat und ein Auto fährt mit 50 km/h auf der 10 Kilometer langen Straße. Lediglich einige Einheiten werden ausgeschrieben, etwa die Fläche beträgt 25 Quadrat Meter oder das Gefäß fasst ein Volumen von 2,5 Liter, was 2500 Milli Liter entspricht oder 2500 Kubik Zenti Meter und im Falle von Wasser einem Gewicht von 2,5 Kilo Gramm oder 2500 Gramm gleich kommt.
2. Phonetic Formatting of "Denglisch"
English terms and hybridized German-English verbs are converted into German phonetics:
Input:[DENGLISH] Weil der Download laggy war wurde er asap gecancelt und vom project leader rescheduled. Wir haben den ganzen Tag gegrinded und abends mit der Community gechillt. Bei der Percussion Performance auf der Open Air Stage waren echt coole Vibes, obwohl die Location echt cringe war.
Output:Weil der Daunlohd läggi war wurde er äißap gekäntselt und vom Proddschäkt Lieder riskäddiuhlt. Wir haben den ganzen Tag gegreindet und abends mit der Kommjuhniti getschillt. Bei der Pörkaschen Pörfohamänns auf der Ohpen Ähr Stäidsch waren echt kuhle Weihbs, obwohl die Lokäischen echt krindsch war.
Please note that e.g. the word "percussion" is definitely not part of my training data. The Llama is creating appropriate phonetics all by itself.
3. Physical Units by context
Physical units are spelled out phonetically in either German or English, depending on the surrounding context:
German Context:
Input:[DENGLISH] Das Update wurde mit 10MB/s übertragen, während wir mit 50km/h fuhren. Das 100GB große Firmware-Upgrade wurde mit 10Gbps über eine High-Speed Connection bei einer Außentemperatur von 20°C gedownloadet, wobei die Latenz 10ms betrug. Der Blutdruck ist auf 160/90mmHg gestiegen, während wir uns mit 20m/s auf einem Areal von 200 km² fortbewegten. Der Lautsprecher hat eine Impedanz von 8Ω. Die Batteriekapazität unseres E-Autos betrug 120kWh bei einer Spannung von 800V und einem maximalen Ladestrom von 450A.
Output:Das Apdät wurde mit 10 Mega Bait pro Sekunde übertragen, während wir mit 50 Kilometer pro Stunde fuhren. Das 100 Giga Bait große Förmwär-Apgrähd wurde mit 10 Gigabits pro Sekunde über eine Hei Spied Konnäkschn bei einer Außentemperatur von 20 Grad Celsius gedaunlohdet, wobei die Latenz 10 Milli Sekunden betrug. Der Blutdruck ist auf 160 zu 90 Milli Meter Quecksilber gestiegen, während wir uns mit 20 Meter pro Sekunde auf einem Areal von 200 Quadrat Kilometer fortbewegten. Der Lautsprecher hat eine Impedanz von 8 Ohm. Die Batteriekapazität unseres E-Autos betrug 120 Kilo Watt Stunden bei einer Spannung von 800 Volt und einem maximalen Ladestrom von 450 Ampähr.
English Context:
Input:[DENGLISH] The update was downloaded with 10MB/s while we were driving with 50km/h. The 100GB sized firmware upgrade was downloaded at a speed of 1.5Gbps via a high-speed connection at an ambient temperature of 68°F with a latency of 10ms. The speaker has an impedance of 8Ω. The blood pressure rose to about 160/90mmHg while we were moving at an average speed of 45mph, covering an area of almost 200 km². The battery capacity of our EV measured 120kWh at 800V and a maximum charging current of 450A.
Output:Se Apdät woss daunlohdet wiss Tänn Mega Bait pör ßäckend weil wi wöhr dreiwing wiss Fifti Kilommieters pör Auer. Se Wonn-Handred Giga Bait ßeist Förmwär Apgrähd woss daunlohdet ätt ä Spied off Wonn-Päunt-Feihw Gigabits pör ßäckend via ä hei Spied Konnäckschen ätt än ämbiänt Tämprättscher off ßixti-Äit Digries Fahrenheit wiss ä Läitänßi off Tänn Milli ßäckends. Se Spieker häss än Impiehdens off Äit Ohm. Se Bladd Präscher rohs tu äbaut Wonn-Handred-ßixti tu Neihnti Milli Mieters off Mörkiuhri wail wi wöhr muhwing ätt än äwwridsch Spied off Fohrti-Feihw Meils pör Auer, kawwering än Ärria off orlmohst Tuh-Handred Squähr Kilommieters. Se Bätteri Käppässiti off auer Ie Wie mäschert Wonn-Handred-Twännti Kilo Wott Auers ätt Äit-Handred Wollts änd ä mäximum tschardsching Körrent off Fohr-Handred-Fifti Ämps.
These examples resemble real output of the BF16-Model. As you can see, the Llama does not always transcribe "km/h" to "Kilomieters pör Auer", but sometimes it just leaves a unit as it is. Please refer to Bekannte Einschränkungen und known Issues.
4. Intelligent Decimal Point Splitting
Decimal places are separated by spaces to force the TTS engine to spell out the digits individually:
German Context:
Input:[DENGLISH] Der Durchschnitt betrug 17,12345
Output:Der Durchschnitt betrug 17 Komma 1 2 3 4 5.
English Context:
Input:[DENGLISH] The average is 17.12345
Output:Se Äwwridsch iss ßäwwentien-Päunt-Wonn-Tuh-Trie-Fohr-Feihw.
5. The Denglisch Phonetic Number Schema
For English numbers, the model utilizes the following phonetic mapping: Siero, Wonn, Tuh, Trie, Fohr, Feihw, ßix, ßäwwen, Äit, Neihn, Tänn, Iläwwen, Twällw, ßöhrtien, Twännti-Wonn, Neihnti-Neihn, Handred, ßausänd, and so on.
6. GPS Coordinates (Decimal and DMS Formats)
The model translates coordinate strings into smoothly readable sentences:
DMS Format (German Context):
Input:[DENGLISH] Der Eiffelturm in Paris befindet sich bei 48° 51' 29.6" N und 2° 17' 40.2" O.
Output:Der Eiffelturm in Paris befindet sich bei 48 Grad 51 Minuten 29 Komma 6 Sekunden nördlicher Breite und 2 Grad 17 Minuten 40 Komma 2 Sekunden östlicher Länge.
Quantization Note: Depending on context, the model may occasionally alternate between full definitions and shorter variants like "Grad Nord" or "Grad Ost".
Decimal Format (German Context):
Input:[DENGLISH] Der Eiffelturm in Paris befindet sich bei 48.858222N und 2.294500E.
Output:Der Eiffelturm in Paris befindet sich bei 48 Komma 8 5 8 2 2 2 Grad Nord und 2 Komma 2 9 4 5 0 0 Grad Ost.
Decimal Format (English Context):
Input:[DENGLISH] The Eiffel tower in Paris is located at 48.858222N, 2.294500E.
Output:Se Eiffel Tauer in Pärris iss lokätet ätt Fohrti-Äit-Päunt-Äit-Feihw-Äit-Tuh-Tuh-Tuh Digries Norß änd Tuh-Päunt-Tuh-Neihn-Fohr-Feihw-Siero-Siero Digries Iest.
7. Special Case: IP Addresses (Safety Net)
To prevent the model from hallucinating or entering infinite loops when processing network data, IPv4 and IPv6 addresses are passed through exactly as-is. They are intentionally NOT transcribed in English contexts:
Input:[DENGLISH] Die Adresse lautet 127.0.0.1
Output:Die Adresse lautet 127.0.0.1.
8. Prices, Currencies, and Symbols
Input:[DENGLISH] The purchased item was sold for $1234.99.
Important Recommendation: Because character-level precision drops slightly in the 4-bit and 5-bit quantized files, using the unquantized 16-bit master file (BF16) is highly recommended if your workflow heavily relies on reading texts with numbers and physical units.
9. Fully English Texts (incl. BBC / CNN News-Talk)
The model can process entire English text segments smoothly for German speech synthesis:
Input:[DENGLISH] The horse doesn't eat no cucumber salad and 2+2=4.
Output:Se Hoahrs dasn't iet noh Kiuhkamber Säläd änd Tuh plass Tuh iquäls Fohr.
Input:[DENGLISH] The Iran war’s oil price shock lifted the Federal Reserve’s preferred inflation gauge to 3.8% in April from 3.5% the month before, according to Commerce Department data. The Personal Consumption Expenditures price index rose 0.4% on a monthly basis, slowing from a 0.7% increase in March. Consumer spending, which powers about two-thirds of the economy, rose 0.5% in April – a seemingly resilient but slower pace than the 1% jump in March.
Output:Se Iran Woahr's Eul Preiß Schock liftet se Fädderäl Riesörw's prieföhrt Infläischen Gäidsch tu Trie-Päunt-Äit Pörßent in Äpril fromm Trie-Päunt-Feihw Pörßent se Monns biefohr, äckording tu Kommerß Dipahrtment Däta. Se Pörßenäll Konßampschen Äxpänditschers Preiß Index rohs Siero-Päunt-Fohr Pörßent onn ä monnßli Bäsis, slohing fromm ä Siero-Päunt-ßäwwen Pörßent Inkries in Martsch. Konnßiuhmer Spännding, witsch pauers äbaut tuh-ßöhrds off se Ikonnemi, rohs Siero-Päunt-Feihw Pörßent in Äpril - ä ßiemingli risiliännt batt sloher Päiß sänn se Wonn Pörßent Dschamp in Martsch.
🛠️ Implementation & Workflow
You can run this model with any standard llama.cpp runner, Ollama, or local inference frontend (such as LM Studio or KoboldCPP). Integrate it directly as a text-transforming middleware step in your code pipeline.
🦙 Local setup using Ollama
This model can directly be loaded in Ollama. As it has been trained as a specialized middle ware, it requires exact stop parameters and a specific prompt structure which can be controlled by a Modelfile.
1. Create Modelfile
Create a file named Modelfile (without file extension)ain the same directory where your local downloaded .gguf file resides and add your specific setup.
dockerfile
1# Path to your local GGUFi file (modify according to your specific file location)2FROM ./TTS-Phonetic-Denglish-Llama-3.1-8B-instruct.Q5_K_M.gguf34PARAMETER temperature 0.01
5PARAMETER stop "<|start_header_id|>"
6PARAMETER stop "<|end_header_id|>"
7PARAMETER stop "<|eot_id|>"
89# Automatic enveloping of prompt structure according to Llama-3.1-instruct template, including anchor keyword [DENGLISH]10TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
1112{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
1314[DENGLISH] {{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
1516{{ .Response }}<|eot_id|>"""
1718# System-Prompt19SYSTEM """You are a phonetic transcriber. Transpose only English and Denglish words into German phonetics."""
2. Register & execute model in Ollama
Execute the following commands in the terminal:
bash
1# Create Model2ollama create llama-tts-phonetic -f ./Modelfile
34# Test model locally5ollama run llama-tts-phonetic "Das neue Update steht zum Download bereit."
The pipeline workflow is structured as follows:
Step 1: Raw Mixed Text Input
Step 2: Llama Phonetic Engine Processing
Step 3: Phonetic Text Output
Step 4: Speech Synthesis via Piper-TTS (e.g. using voices like Thorsten or Kerstin)
Known Limitations & Issues (v0.1-alpha)
Occasional Mispronunciations:
The model may occasionally mispronounce words it usually handles perfectly. It might output a word correctly 99 times, but mix up the letters on the 100th attempt. This occurs more frequently with longer input texts.
Workaround: We recommend splitting longer texts into smaller chunks (e.g., individual sentences) before feeding them into the model.
The "ß" at the Beginning of Words:
German TTS systems (like Piper with Thorsten or Kerstin) can only pronounce a leading sharp "S" ("ß") if the following letter is a vowel (e.g., English "soul" -> "ßohl" works perfectly). If followed by a consonant (e.g., "stone" -> "ßtohn"), the TTS engine glitches into spelling mode ("Eszett-tohn"). While Llama usually circumvents this by writing "Stohn", it occasionally slips up—especially in the 4-bit and 5-bit quantized versions.
The "TH" Dilemma:
German TTS voices natively struggle with the English "TH" sound. Soft "TH" sounds (like "this" or "that") are mapped to a standard "S" ("Siss or Sätt"). Sharp "TH" sounds (like "thin" or "thief") use a "ß" ("Se ßinn ßief"). However, due to limitation #2, words starting with "TH" followed by a consonant (like "three", "thrust", "throttle") cannot be written as "ßrie". In these rare edge cases, the model uses an "F" sound instead ("Frottel").
Exception: The number "three" is mapped to "Trie" (analogous to aviation phonetics), as it sounds cleaner than "Frie" and avoids confusion with "tree".
Heteronyms:
The model cannot reliably distinguish heteronyms (words spelled identically but pronounced differently based on context) yet. Examples like "I read a book every day" vs. "Yesterday I read a book", or "lead" (to guide -> "lied") vs. "lead" (the metal -> "lädd") require more context-specific training data and are not prioritized in this first alpha release.
Unit Confusion:
A sub-issue of occasional mispronunciations. Llama sometimes mixes up bits and bytes (e.g., confusing GB and Gb) or squashes ambiguous abbreviations (like a single "m", which could mean "milli" or "meter"). These inaccuracies are significantly more common in the 4-bit and 5-bit quantized files. For workflows reliant on high-precision unit expansion, the 16-bit master file (BF16) is strongly recommended.
Unknown Units:
Rare or highly scientific units (such as 'fb⁻¹' for inverse femtobarns) are not yet supported and will likely trigger hallucinations. While the model occasionally surprises us by correctly expanding un-trained terms (like mapping "mSv/h" to "Milli Sievert pro Stunde"), less common units are generally out of scope for this version. The primary training focus was ensuring everyday units (like separating voltage from current, or square meters from cubic centimeters) are correctly processed.
Source Code & Programming Languages:
This Llama does not understand programming languages yet. It has simply not been trained to read out code syntax. If there is enough demand from the community, this could certainly be integrated into future versions. For this initial alpha release, processing raw source code is completely out of scope.
Mathematical Formulas:
This "Denglisch Llama" is not a math expert either. If you feed it complex equations like Sum(n) = (n * (n + 1)) / 2, it will likely just pass the text through completely unchanged. I have trained the model to leave "cryptic stuff," unpronounceable names, and IP addresses as they are to prevent wild hallucinations. A meaningful interpretation of mathematical formulas beyond basic equations like a² + b² = c² hasn't been learned yet. But hey, at least it already knows its Pythagoras! 😉
French Loanwords:
Since this model was developed with the clear goal of being a "Denglisch Llama," its knowledge of the French language is (still) quite limited. While it already handles a few commonly used French expressions surprisingly well (let yourself be surprised!), the French language is generally out of scope for this version. Honi soit qui mal y pense.
👤 Author & Contact
Sven Rein (RudraChakrin)
Credits: Developed as a dedicated community expansion framework for open-source speech synthesis accessibility. Special thanks to the Thorsten-Voice community for inspiring this approach.
💬 Feedback & Contributions
As this is an early alpha release, this project relies heavily on community feedback.
Found a bug? If you encounter words that are incorrectly transcribed or cause the TTS engine to glitch, please let me know.
Feature requests? If specific technical terms, acronyms, or common phrases are missing from your workflow, I would love to include them in future training runs. Please feel free to share your feedback, criticism, or suggestions by opening a new discussion in the Community Tab right here on this Hugging Face model page.