Übersetzung koreanischer Brood-War-Kommentare
(blog.sourcedive.net)- Der strategische Diskurs auf hohem Niveau zu StarCraft: Brood War konzentrierte sich lange auf koreanische Videos und Streams, wodurch es für nicht koreanischsprachige Communities schwierig war, beim Strategiewissen mitzuhalten
- Bisherige Übersetzungen waren auf Handarbeit von Koreanischkundigen oder auf Google Translate angewiesen, wobei Build Orders und Community-Slang wörtlich übersetzt wurden und der Kontext oft verloren ging
- Der neue Ansatz kombiniert
yt-dlp, Whisper, Google Colab, ein LLM und ein TeamLiquid-Glossar, um koreanische Sprache zu transkribieren und in englische Untertitel zu verwandeln, die Brood-War-Spieler verstehen - Die Auslieferung der Untertitel läuft über den BWKT Client, der TamperMonkey UserScript, Pastebin, Google Sheets und Apps Script verbindet, damit man nicht an den YouTube-Besitzerrechten für Untertitel scheitert
- Es ist zwar ein in etwa zwei Wochen zusammengehacktes Projekt, konnte aber mit nur rund 30 USD und einer Kombination kostenloser Tools etwa 7 Videos pro Tag übersetzen und lässt Raum für Erweiterungen wie mehrsprachige Unterstützung
Warum koreanisches Brood-War-Wissen schwer zugänglich ist
- StarCraft: Brood War ist ein kompetitives RTS, das 1998 erschienen ist und bis heute eine aktive Community hat
- Das Brood-War-Ökosystem auf hohem Niveau wird de facto von Korea geprägt
- Die meisten Profispieler, Teams und Turniere haben ihre Basis in Korea
- Auch ein großer Teil der engagierten Zuschauer und der Community sitzt in Korea
- Nichtkoreanische Community-Mitglieder nennen sich selbst „foreigners“
- In Brood War sind wie im Schach langfristig angesammelte Match-Historien und Strategieforschung wichtig
- Auf hohem Niveau ist Lernen fast so wichtig wie das eigentliche Spielen
- Ein großer Teil des heutigen Diskurses findet in Videos und Livestreams von professionellen Brood-War-Spielern statt
- Wie Schach mit „Sicilian defense“ oder „Najdorf variation“ hat auch Brood War eine von der Community geschaffene domänenspezifische Sprache
- Diese Begriffe stammen nicht aus einem Regelbuch, sondern verdichten langjährige Forschung und Analyse
Das Problem des Foreigner Knowledge
- In nicht koreanischsprachigen Communities gibt es nur sehr wenige Menschen, die fließend Koreanisch sprechen
- Wer fließend Koreanisch spricht, hat wenig Grund, bei eingeschränkteren und qualitativ schwächeren nichtkoreanischen Materialien zu bleiben
- Die Community hat Geld gesammelt, um Koreanischkundige für YouTube-Untertitel zu bezahlen
- Die Übersetzungsarbeit ist mühsam und langsam
- Die Bezahlung ist objektiv nicht besonders gut
- Trotzdem wurden auf diesem Weg jedes Jahr einige Dutzend Videos übersetzt
- Maschinelle Übersetzung wie Google Translate ist für Alltagssätze nützlich, passt aber schlecht zu der Fachsprache von Brood War
- Es gibt viel Slang und viele Build-Begriffe, auf die solche Tools nicht trainiert sind
- Wörtliche Übersetzungen zerstören den Kontext eher, als dass sie helfen
Wo wörtliche Übersetzung scheitert
- In koreanischen Tutorials tauchen Brood-War-Build-Begriffe wie
12 앞마당,11 스포닝풀,10가스,투해처리,3해처리,안 3해처리auf - Google Translate macht daraus Formulierungen wie
12 courtyard,two-processingoder3-point processing, die im Spielkontext nicht passen- In Brood War gibt es kein „courtyard“
- „starting off the most affluently“ ist eine unbeholfene, umständliche Wiedergabe von „economic opener/build“
- „3-point processing“ bedeutet selbst für Brood-War-Spieler nichts
- Einige Wörter lassen sich erkennen
Toss,build,fast gas,moderately fast tech-tree,Terranbleiben erhalten- Aber der Rest besteht größtenteils aus wörtlich übersetztem Rauschen, das selbst den Kontext der erkennbaren Wörter verwischt
- Das Zusammenspiel aus schlechten automatischen Untertiteln und wörtlich übersetzter Fachsprache habe dazu geführt, dass nicht koreanischsprachige Communities der koreanischen Community um Jahrzehnte hinterherhinken
Der neue Übersetzungsprozess
- Der neue Prozess übersetzt dieselben Untertitel in Ausdrücke wie
12 Natural,economic opener,Protoss,two-Hatchery build,11 Spawning Pool,10 Gas,third Hatchery, die Brood-War-Spieler verstehen - Die Übersetzungen sind nicht perfekt, aber das Signal-Rausch-Verhältnis ist deutlich besser, sodass das Thema eines Videos sofort erkennbar wird
- Während bisher nur einige Dutzend Videoübersetzungen pro Jahr machbar waren, kann eine einzelne Person mit der neuen Methode in der Freizeit rund 7 Videos pro Tag übersetzen
Pipeline zur Untertitel-Erstellung
-
yt-dlp und Whisper
- Zunächst war geplant, mit
yt-dlpautomatisch generierte koreanische YouTube-Untertitel herunterzuladen und zu übersetzen, aber deren Qualität war nicht brauchbar - Stattdessen wird mit
yt-dlpdie Audiospur eines Videos heruntergeladen und mit Whisper direkt transkribiert - Das Ergebnis war sauberer und vollständiger als YouTube-Untertitel und schien auch Spielgeräusche und Mausklicks besser zu ignorieren
- Anfangs lief Whisper lokal und nutzte etwa 10 GB VRAM
- Da man unter Windows Python, venv, CUDA, git und mehr installieren musste, war das für andere Mitwirkende unpraktisch
- Zunächst war geplant, mit
-
Google Colab
- Whisper lässt sich per Python-
pipinstallieren, und Google Colab bietet kostenlose Jupyter-Notebooks sowie kostenlose GPUs - Die Colab-GPU hat genug VRAM, um Whisper auszuführen
- Das Teilen eines parametrisierten, schreibgeschützten Notebooks erwies sich als gutes Distributionsmodell
- Auch nichttechnische Nutzer können es unabhängig von ihrer Hardware ausführen und erhalten über Notebook-Updates automatisch die neuesten Funktionen
git cloneoder wiederholte Downloads sind nicht nötig- Das Notebook nimmt einfach eine YouTube-URL entgegen, erzeugt eine koreanische SRT-Datei und bietet sie zum Download an
- Whisper lässt sich per Python-
-
LLM und koreanisches Slang-Glossar
- TeamLiquid ist eine langjährige nichtkoreanische Brood-War-Community
- Vor rund 15 Jahren erstellte das TeamLiquid-Mitglied konadora den Forenbeitrag „The Korean Terminology Thread“
- Dieser Beitrag wurde als Markdown-Datei namens
KoreanSlang.txtkopiert und dem LLM bereitgestellt - Im Prompt steht, dass die koreanischen Untertitel ins Englische übersetzt werden sollen, unter Berücksichtigung von
KoreanSlang.txtund des StarCraft: Brood-War-Kontexts - Klarheit soll gegenüber wörtlicher Übersetzung priorisiert werden, Zeitstempel und Dateiformat müssen erhalten bleiben
- Doppelte Untertitel oder offensichtliche Fehler dürfen korrigiert werden, und bei Bedarf dürfen kurze Übersetzerhinweise in die Untertitel eingefügt werden
- Nicht verständliche Stellen werden durch
(unintelligible)ersetzt, und die Ausgabe erfolgt in einem Codeblock, damit sie leicht kopiert werden kann - Praktisch wurde dafür ChatGPT mit Pro-Abo genutzt, indem die von Whisper erzeugten koreanischen Untertitel eingegeben und um Übersetzung gebeten wurden
Pipeline zur Nutzung der Untertitel
-
YouTube-Beschränkungen bei Untertiteln und der BWKT Client
- Die Untertitelfunktion von YouTube erlaubt nur den Videoeigentümern, Untertitel zu setzen oder zu aktualisieren
- Um den Weg zu vermeiden, Videos herunterzuladen, neu hochzuladen und dann Untertitel einzustellen, wurde ein eigener Client gebaut
- Das UserScript fügt YouTube-Videos einen Button hinzu und lädt passende übersetzte Untertitel herunter, wenn vorhanden
- Es parst SRT- und VTT-Dateien und zeigt die Untertitel in einem kleinen Container unter dem YouTube-Player an
- Dieser Client heißt BWKT Client
-
Pastebin, Google Sheets, Apps Script
- Da Untertitel Textdateien sind, wurde Pastebin als schneller Speicherort zum Teilen verwendet
- Es ist einfach, ein Premium-Konto war bereits vorhanden, und es wurde nicht mit problematischem Traffic gerechnet
- Für die Zuordnungsdaten werden nur zwei Spalten benötigt:
YouTube URLundSubtitle URL - Später könnte eine Spalte
Languagehinzukommen - Google Sheets als eine Art Datenbank zu verwenden, erleichtert manuelle Prüfungen und Aktualisierungen und ist leicht mit anderen zu teilen
- Apps Script ist eine JavaScript-Laufzeit mit Zugriff auf Google Workspace und bringt auch einen eingebauten Webserver mit
- In der Form
function doGet(req) { /* ... */ }nimmt es eine YouTube-Video-ID entgegen und liefert die passende Pastebin-URL zurück - Die öffentliche schreibgeschützte Datenbank wird über eine Google-Sites-Seite bereitgestellt
Verbesserungspotenzial und Tests
- Das Projekt ist ein in rund zwei Wochen gebautes, improvisiertes Konstrukt mit einem Budget von etwa 30 USD
- Bezahlt wurde für ChatGPT und zusätzliche GPU-Zeit in Colab
- Beides war nicht strikt notwendig, aber praktisch
- Ein möglicher Ausbau ist mehrsprachige Unterstützung
- Zur nichtkoreanischen Community gehören nicht nur Spieler aus den USA, sondern auch aus Mexiko, Polen, Rumänien, China und Taiwan
- Übersetzungen in Dutzende Sprachen erscheinen machbar, ohne dass der Arbeitsaufwand explodiert
- Auch technisch gibt es noch Verbesserungsmöglichkeiten
- Der BWKT Client zeigt derzeit auch bei YouTube-Videos ohne Untertitel einen Button an
- Mit einem zusätzlichen Endpunkt im Apps-Script-Webserver, der einen Index übersetzter Videos zurückgibt, ließe sich steuern, ob der Button angezeigt wird
- Zusammen mit einigen Brood-War-Nutzern wurde ein 13-minütiges Video mit den Untertiteln getestet
- Nach etwa fünf Minuten hatten sie vergessen, die Untertitelqualität zu bewerten, und diskutierten stattdessen das Video, spulten kurze Clips zurück und pausierten zum Sprechen
- Die Untertitel haben den Test bestanden
Charakter des Projekts
- Performance, Skalierbarkeit und Latenz waren nicht die Kernprobleme dieses Projekts
- Der Großteil bestand aus Glue Code, der bereits existierende Tools verbindet
- Das Python im Userscript und im Colab-Notebook ist kurz und leicht wartbar
- Der Webserver ähnelt eher einem einfachen produktionsreifen CRUD-System und hat wenig Anlass, unnötig komplex zu werden
- Der Entwickler hält es für das jankyste Projekt, das er je veröffentlicht hat, mag es aber trotzdem sehr
1 Kommentare
Kommentare auf Hacker News
Als koreanischer Brood-War-Spieler und Forscher im Bereich Spracherkennung habe ich das mit Interesse gelesen.
Schon die ursprüngliche koreanische Transkription enthält ziemlich viele Fehler, und es sieht so aus, als hätte das Large Language Model sie im Nachgang recht beeindruckend korrigiert. Zum Beispiel war
12 안마당 빌드sehr wahrscheinlich eigentlich12 앞마당 빌드, was für Brood-War-Spieler deutlich verständlicher gewesen wäre. Ebenso ergibt투에처리 빌드keinen Sinn; es hätte als투해처리 빌드, also 2-Hatchery-Build, transkribiert werden müssen.Deshalb könnte auch Contextual Biasing, bei dem ein Slang-Wörterbuch direkt in die Whisper-Inferenz eingebracht wird, helfen. Es gibt viele Methoden, aber am einfachsten wäre es, in Whispers finaler Vorhersageschicht die Wahrscheinlichkeit von Slang-Tokens aus dem Wörterbuch um einen konstanten Faktor zu erhöhen. Mit der HuggingFace-Bibliothek lässt sich das relativ leicht umsetzen: https://huggingface.co/docs/transformers/en/internal/generat...
courtyardoderfrontyardgemeint sein soll. Im englischsprachigen Raum ist es allerdings üblich, Namen von Gebäuden, Einheiten, Technologien und Strategien stark abzukürzen. Bei Koreanisch kann ich mir das ebenfalls gut vorstellen.Einen 12-Barracks-Build nennt man meist
12 rax, einen 2-Hatchery-Mutalisk-Build2 hatch muta, und einen Timing-Angriff/All-in mit 3-Hatchery-Hydralisken etwa3 hatch hydra bust.Es gibt einen PR, der diese Funktion in ctranslate2 implementiert; darüber könnte sie auch in faster-whisper verfügbar werden: https://github.com/OpenNMT/CTranslate2/pull/1789
Meiner Erinnerung nach sorgte dieses Gebäude dafür, dass man in Hatcheries Zerglinge und andere Einheiten produzieren und Upgrades erforschen konnte. Ein einziges reichte, um die jeweilige Einheit in allen Hatcheries freizuschalten, und da es selbst keine Einheiten produziert, erhöhten mehrere davon auch nicht die Produktionsmenge.
Theoretisch könnte man mehrere bauen, um Upgrades parallel zu erforschen, aber es gibt nur etwa drei mögliche Upgrades, daher sehe ich keinen Grund, 12 davon zu bauen. Außer vielleicht als Reserve, um weiter Zerglinge produzieren zu können, falls der Gegner ein paar zerstört; aber selbst dann wären 12 übertrieben.
Daher frage ich mich, was genau die Motivation war. Es ist lange her, also kann es auch Unsinn sein.
Lasst euch nicht vom Titel täuschen. Dieser Beitrag ist ein sehr gründlicher und kreativer Ansatz, StarCraft-Kommentare zu übersetzen und zugänglicher zu machen.
Wie der Autor richtig feststellt, ist die Spielkommentierung in 27 Jahren nicht mehr einfach Koreanisch oder Englisch, sondern zu einer domänenspezifischen Sprache geworden. Die Methode, mithilfe automatischer Skripte und KI grob zu erfassen, worum es geht, und daraus konsistente Sätze zu machen, ist wirklich großartig.
Als Nicht-Muttersprachler des Englischen kam mir dieser Beitrag genau wie die Probleme vor, die man bei Übersetzungen in vielen Bereichen hat, insbesondere bei Computertexten und Softwareentwicklung.
Es gibt unglaublich viele schwer zu übersetzende Begriffe. Wörter wie sharding oder hash gehören dazu, und die einzige realistische Lösung besteht darin, sie mit der Zeit in gewissem Maß an die jeweilige Sprache angepasst zu übernehmen. Dafür braucht es aber eine Community, die die Kluft zwischen beiden Sprachen einigermaßen überbrücken kann, und in diesem Fall gehört dazu auch, Englisch zu lernen.
Spanisch ist meine Muttersprache, und wenn man auf Spanisch über Softwareentwicklung spricht, reiht sich ein aus dem Englischen übernommener Begriff an den nächsten. Es scheint keinen wirklich guten Weg zu geben, damit umzugehen, und ich finde interessant, wie maschinelle Übersetzung damit umgeht. Am Ende muss man sozial den Prozess durchlaufen, in dem sich zwei Sprachen vermischen, und sehen, welche Begriffe dabei überleben.
Nach den im Artikel genannten Maßstäben braucht man jemanden, der Koreanisch zumindest einigermaßen kennt, auch wenn er es nicht fließend spricht, und natürlich jemanden, der das Spiel selbst kennt.
debugdas bestehende spanische Wortdepurargelernt, das ziemlich gut passt, aber viele Spanischsprachige übernehmen einfach das Englische und sagendebuguear.Wenn es um die Leistung eines Computers oder von Software geht, habe ich in Mexiko
desempeñogelernt, während ich in Argentinien in derselben Bedeutungel performancegehört habe. Am häufigsten scheint es zu sein, englische Lehnwörter direkt zu verwenden, statt nach bestehenden spanischen Wörtern zu suchen.sharding.Wirklich fast unübersetzbar ist Alltagssprache. Das deutsche
Brothat ganz andere Konnotationen als das schreckliche Zeug, das Briten bread nennen, aber es gibt kein besseres Wort, und es direkt zu übernehmen, würde in den meisten Kontexten ziemlich seltsam klingen. Viel seltsamer, als in einem technischen Kontextshardingzu leihen.Ein gutes Beispiel dafür, wie Lehnwörter mit der Zeit an eine Sprache angepasst werden, findet man in der deutschen Eisenbahnterminologie. Anfangs war alles Englisch, weil die Technik aus Großbritannien kam, aber mit der Zeit wurden die meisten Begriffe durch Wörter ersetzt, die deutsch wirken. Manche, wie
Lokomotive, wurden aus denselben griechischen/lateinischen Lehnwurzeln wie im Englischen neu gebildet, aberstationheißt heuteBahnhof,trainheißtZug.In einem Artikel über Übersetzung ist es schon etwas lustig, dass der Autor das Signal-Rausch-Verhältnis komplett falsch herum verwendet. Ein hohes Signal-Rausch-Verhältnis, zum Beispiel über 9000, ist etwas sehr Gutes.
Es bedeutet, dass es viel Signal und sehr wenig Rauschen gibt; wenn das Signal-Rausch-Verhältnis sinkt, heißt das also, dass es mehr Rauschen gibt.
jargonhätte sagen sollen.Die Google-Translate-Version konnte ich ebenfalls gut verstehen, aber nur, weil ich Brood War und die Details des Zerg-12-Hatchery-Openings sehr gut kenne.
ChatGPT und Claude haben den koreanischen Text erstaunlich gut übersetzt:
Today I'll teach you about the 12 Hatchery build. I'll explain the types of 12 Hatchery builds, their advantages and disadvantages, and the build orders in a simple but detailed way. Against Protoss, this is the build you use when you want to start with the most economic advantage. Against Terran, there are several builds you can do with 12 Hatchery, so I'll explain some of the most commonly used builds. The first is the two-hatchery build that starts with 12 Hatchery: 12 Hatchery 11 Spawning Pool 10 Gas This build uses early gas, and it's often used when you want to quickly transition into a three-hatchery build with three gas bases. The second build is: 12 Hatchery 12 Pool 12 Gas This build allows for moderately fast tech tree and moderately fast three-hatchery expansion. This build is commonly known as the "safe three-hatchery" build, and you can think of it as a build that enables both quick Mutalisks and quick third base.Falls der Autor das liest: Mit yt-dlp kann man eine Version des Videos in niedrigerer Qualität herunterladen, um Bandbreite zu sparen.
yt-dlp -f "bv[height<=720]"Wenn man hier die URL oder die Video-ID angibt, wird es mit maximal 720p Qualität heruntergeladen.
Dumme Frage von jemandem, der als Kind nur Geld-Maps gespielt hat: Was bedeuten die Zahlen vor den Gebäuden?
12 Hatcheries würde theoretisch bedeuten können, 12 Hatcheries zu bauen, aber das wirkt unrealistisch. 12 Spawning Pools sind natürlich nutzlos. Deshalb dachte ich, es sei vielleicht die Position in der Build-Order-Liste.
Dann tauchen aber auch Builds wie
12 Hatch, 12 Pool, 12 Gasauf, und damit ergibt diese Interpretation nicht wirklich Sinn. Eine einfache Liste scheint es nicht zu sein; vielleicht ist es ein Baum und die 12 ist die Tiefe dieses Gebäudes, aber vor Gas 11 Gebäude zu bauen, kann ich mir kaum vorstellen und es wirkt viel zu spät. Ich frage mich, ob Einheiten mitgezählt werden oder ob nur Drohnen/Overlords zählen.4-pooling. Dabei baut man als Zerg einen Spawning Pool, wenn man nur 4 Arbeiter hat, baut den vierten Arbeiter erneut und produziert dann Zerglinge für einen frühen Angriff, also einen Rush.Daraufhin beschimpft einen der Gegner aufs Übelste und stellt sogar die sexuelle Orientierung infrage.
12 Spawning Pools sind natürlich nutzloserinnere ich mich vage an ein Husky-Video, in dem tatsächlich 9 Spawning Pools gebaut wurden, um 9 pool zu machen.Die Zahl bedeutet die Versorgungszahl, die man erreicht haben sollte, wenn man die Struktur baut.
12 hatch 12 pool 12 gasbedeutet also: bis 12 Arbeiter gehen und dann diese drei Gebäude der Reihe nach bauen, sobald die Ressourcen verfügbar sind.Bei Zerg verwandeln sich Arbeiter tatsächlich in Gebäude; daher dürfte der Ablauf so sein: auf 12 kommen und die Hatchery bauen, dann einen weiteren Arbeiter bauen und den Spawning Pool errichten, dann wieder einen Arbeiter bauen und die Gas-Raffinerie errichten.
Selbst als Google Translate schon ziemlich gut geworden war, waren chinesische und japanische Texte über Go schwer effektiv zu übersetzen. Es gab ähnliche Probleme wie die in diesem Artikel beschriebenen.
Viele Wörter im Chinesischen und Japanischen haben im Go-Kontext eine sehr spezifische Bedeutung, im allgemeinen Kontext aber auch eine gewöhnliche. Zum Beispiel ist
koim Go eine bestimmte Regelsituation, bedeutet allgemein aber so etwas wierobbery, sodass Google Translate es allgemein übersetzte und der gesamte Text unverständlich wurde.Bei modernen großen Sprachmodellen kann man jetzt Anweisungen voranstellen wie
Ich werde chinesische Erläuterungen zu Go-Diagrammen übersetzen. Die Übersetzung soll natürlich klingen und Go-Fachbegriffe nicht vermeiden. Zum Beispiel 拆 = extension, 夹 = pincer, 刺 und 觑 = peep, und die Ergebnisse sind hervorragend. Praktisch so gut, dass ich fast alle gewünschten Materialien lesen kann. Ich hatte Glück, dass offenbar genug Go-Material in den Trainingsdaten war und keine speziellere Arbeit nötig wurde.Falls der Autor das zum Thema Schach liest: Es gibt ein paar Korrekturen. Frühe Züge im Schach heißen auf Englisch nicht
openers, sondern openings. Es gibt auch keine getrennten Eröffnungen nur für Weiß und nur für Schwarz, auch wenn einzelne Spieler eine bestimmte Eröffnung natürlich aus der Perspektive einer Seite studieren können. Eröffnungsstudium gilt bis auf höchstem Niveau eher als noch grundlegender. Und die betreffende Sizilianisch-Variante heißt nichtNajdork, sondern Najdorf.Mir gefiel dieser Beitrag. Früher habe ich ein paarmal versucht, bei den US-Regionalqualifikationen der World Cyber Games mitzuspielen, und war immer erstaunt, wie schnell die anderen waren.
Später sah ich mir eine Live-Übertragung aus Korea an und war von der Spielgeschwindigkeit völlig überwältigt. Aus strategischer Sicht wurde mir klar, welch grundlegenden Teil des Spiels ich übersehen hatte, als ein Blog die Mathematik dahinter erklärte, warum ein Protoss-Zealot einen Zergling mit 2 statt mit 3 Schlägen tötet. Da verstand ich, dass es ein schachähnliches Spiel ist, und war gefesselt.
Ich weiß, dass es eine falsche Übersetzung ist, aber mir gefällt die Wiedergabe von
natural expansionals courtyard ziemlich gut.front yardgefällt mir. In SC2 ergibt das Sinn, wo einige neuere Karten eine Hinterhof-Basis haben.Solche Hinterhof-Basen kommen auch auf Team-Maps häufig vor, und es wird zu einer strategischen Entscheidung, welcher Spieler den vorderen Bereich übernimmt. Protoss und Terraner können Schildbatterien und Bunker zusammen bauen, während Zerg auf Kriecher einen Buff erhalten und sich deutlich schneller nach vorne ausbreiten können.