Open Source Spracherkennung

Mo, 24. August 2020, Ralf Hersel

Ein Speech-to-Text (STT)-System ist ein Verfahren, um gesprochene Worte in Textdateien umzuwandeln. Diese Technologie ist äusserst nützlich und kann für eine Vielzahl von Anwendungen eingesetzt werden, z.B. für die Automatisierung von Transkriptionen, für das Schreiben von Büchern und Texten, bei denen nur die eigene Stimme verwendet wird, für komplizierte Analysen von Informationen mit Hilfe der erzeugten Textdateien und für viele andere Dinge.


In der Vergangenheit wurde die Sprache-zu-Text-Technologie durch proprietäre Software und Bibliotheken dominiert; Open-Source-Alternativen gab es nicht oder nur mit grossen Einschränkungen und ohne nennenswerte Unterstützung durch die Community. Das hat sich geändert, heute gibt es eine Menge Open-Source-Sprache-zu-Text-Werkzeuge und Bibliotheken:

Open-Source-Bibliotheken für Spracherkennung

DeepSpeech: Bei diesem Projekt von Mozilla, handelt sich um eine 100% freie und quelloffene Sprache-zu-Text-Bibliothek, die maschinelles Lernens unter Verwendung des TensorFlow-Frameworks beinhaltet. Damit ist es möglich, eigene Trainingsmodelle zu erstellen, um bessere Ergebnisse zu erzielen, oder sogar, um sie auf andere Sprachen zu übertragen. Bisher unterstützt das Projekt nur Englisch. Nach der kürzlichen Umstrukturierung von Mozilla ist die Zukunft des Projekts jedoch ungewiss.

Kaldi: Ist eine in C++ geschriebene Open-Source-Spracherkennungssoftware und wird unter der Apache-Lizenz veröffentlicht. Sie funktioniert unter Windows, MacOS und Linux. Seine Entwicklung begann bereits 2009. Die Hauptmerkmale von Kaldi im Vergleich zu anderen Spracherkennungsprogrammen sind seine Erweiterbarkeit und Modularität. Die Community stellt eine Vielzahl von Modulen von Drittanbietern zur Verfügung. Kaldi unterstützt Deep Neuronal Networks und bietet eine ausgezeichnete Dokumentation auf seiner Website. Während der Code hauptsächlich in C++ geschrieben ist, wird er von Bash- und Python-Skripten eingebettet.

Julius: Wahrscheinlich eine der ältesten Spracherkennungssoftware überhaupt; ihre Entwicklung begann 1991 an der Universität Kyoto, und wurde 2005 als unabhängiges Projekt in den Besitz der Universität überführt. Viele Open-Source-Anwendungen verwenden es als STT-Engine (z.B. KDE Simon). Zu den Hauptmerkmalen von Julius gehören seine Fähigkeit, STT-Prozesse in Echtzeit durchzuführen, geringer Speicherverbrauch (weniger als 64 MB für 20'000 Wörter), die Fähigkeit, N-Best Wort-Graphen zu erzeugen, sowie als Server-Einheit arbeiten zu können. Diese Software wurde hauptsächlich für akademische und Forschungszwecke entwickelt. Sie ist in C geschrieben und funktioniert unter Linux, Windows, MacOS und sogar unter Android. Gegenwärtig unterstützt sie nur die englische und japanische Sprache.

Wav2Letter++ ist eine Open-Source-Spracherkennungssoftware, die vor nur 2 Monaten vom KI-Forschungsteam von Facebook unter der BSD-Lizenz veröffentlicht wurde. Facebook beschreibt seine Bibliothek als "das schnellste Spracherkennungssystem auf dem neuesten Stand der Technik". Für Wav2Letter++ muss zunächst selbst ein Trainingsmodell für die gewünschte Sprache erstellt werden, um die Algorithmen darauf zu trainieren. Es gibt keine vorgefertigte Unterstützung für irgendeine Sprache (auch kein Englisch); es handelt sich lediglich um ein Werkzeug zur Umwandlung von Sprache in Text, ohne mitgeliefertes Sprachmodell.

DeepSpeech2: Hierbei handelt es sich um eine End-to-End-Open-Source-Engine, die das "PaddlePaddle"-Lernframework für die Umwandlung von englischer und mandarinchinesischer Sprache in Text verwendet. Der Code wird unter der BSD-Lizenz veröffentlicht und von der chinesischen Firma Baidu entwickelt. Die Engine kann auf jedem Modell und für jede gewünschte Sprache trainiert werden. Die Modelle werden nicht mit dem Code veröffentlicht, sondern müssen selbst gebaut werden; auch die Software muss selbst kompiliert werden. Der Quellcode von DeepSpeech2 ist in Python geschrieben.

OpenSeq2Seq: wurde von NVIDIA für das Training von Sequenz-zu-Sequenz-Modellen entwickelt. Obwohl es für weit mehr als nur Spracherkennung eingesetzt werden kann, ist es dennoch eine gute Engine für diesen Anwendungsfall. Man kann damit entweder eigene Trainingsmodelle erstellen oder die standardmässig mitgelieferten Modelle Jasper, Wave2Letter+ und DeepSpeech2 verwenden. Es unterstützt die parallele Verarbeitung mit mehreren GPUs/Mehrfach-CPUs, neben einer starken Unterstützung für einige NVIDIA-Technologien wie CUDA und seine starken Grafikkarten.

Fairseq: Ein weiteres Sequenz-zu-Sequenz-Toolkit wird von Facebook entwickelt, ist in Python geschrieben und verwendet das PyTorch-Framework. Das Werkzeug unterstützt auch paralleles Training und kann sogar für Übersetzungen und kompliziertere Sprachverarbeitungsaufgaben verwendet werden.

Vosk ist eines der neuesten Open-Source-Spracherkennungssysteme, da seine Entwicklung erst im Jahr 2020 begann. Im Gegensatz zu anderen Systemen ist Vosk nach der Installation sofort einsatzbereit, da es 10 Sprachen unterstützt (Englisch, Deutsch, Französisch, Türkisch...), wobei den Benutzern bereits relativ kleine Modelle in der Grösse von 50 MB zur Verfügung stehen (es gibt andere grössere Modelle mit bis zu 1,4 GB). Vosk funktioniert auch auf Raspberry Pi, iOS und Android-Geräten und bietet eine Streaming-API, um Spracherkennungsaufgaben online zu erledigen. Vosk hat Bindings für Java, Python, JavaScript, C# und NodeJS.

Athena: Eine End-to-End-Spracherkennungsengine, die ASR (Automatische Spracherkennung) implementiert. Geschrieben in Python und lizenziert unter der Apache 2.0-Lizenz, unterstützt sie unbeaufsichtigtes Pre-Training und die Verarbeitung auf Multi-GPUs. Das Programm verwendet TensorFlow.

ESPnet: Geschrieben in Python und basierend auf PyTorch, unterstützt dieses System auch End-to-End-ASR. Für die Datenverarbeitung folgt es dem Kaldi-Stil, so dass es einfacher wäre, von ihm zu ESPnet zu migrieren. Der wichtigste Marketingpunkt für ESPnet ist die hochmoderne Leistung, die es in vielen Benchmarks bietet, und seine Unterstützung für andere Sprachverarbeitungsaufgaben wie Text-zu-Sprache (STT), maschinelle Übersetzung (MT) und Sprachübersetzung (ST). Das Werkzeug steht unter der Apache 2.0-Lizenz.

Welches System ist die beste Wahl für welchen Zweck?

Will man eine kleine Anwendung erstellen, die portabel sein soll, dann ist Vosk die beste Wahl, da es in Python geschrieben ist und auf iOS, Android und Raspberry Pi funktioniert und bis zu 10 Sprachen unterstützt. Falls benötigt, bietet es einen riesigen Schulungsdatensatz, oder einen kleineren für portable Anwendungen. Wer eigene Modelle für sehr komplexe Aufgaben trainieren und bauen möchte, sollte zu Fairseq, OpenSeq2Seq, Athena und ESPnet greifen, da dies die modernsten und leistungsfähigen Werkzeuge sind. Was Mozillas DeepSpeech betrifft, so fehlen ihm im Vergleich zu seinen anderen Konkurrenten viele Funktionen. In der akademischen Forschung zur Spracherkennung wird DeepSpeech kaum erwähnt. Ausserdem steht seine Zukunft - nach der jüngsten Umstrukturierung von Mozilla - in den Sternen.

Quelle: https://fosspost.org/open-source-speech-recognition-2020/