Transkripte mit Mozilla DeepSpeech / Machine Learning

Die Texte sind bearbeitet da ist oft nicht die wörtliche Sprache als Text sondern oft der Sinn und das wichtige inhaltlich zusammen gefasst.

Das wäre für eine “dumme” automatische Transkription die nicht den Sinn des Textes versteht nicht zu gebrachen.

1 „Gefällt mir“

Mir ist das schon klar. Ich gehe davon aus, dass das Transkript wohl angepasst werden muss, aber der größte Teil ist bereits erstellt. Die erforderlichen Änderungen sollten entsprechend weniger zeitaufwändig sein.

1 „Gefällt mir“

gut ich sage es mal anders… es geht darum einen netzwer bei zubringen sprache in einen text zu übersätzen dabei ist es wichtig das die inhalte zum üben identisch sind.

beispiel:

dies ist ein text zum üben des neurolalen netzwerkes

es ist wingen erforderlich das beides jleich ist sonst kann das netzwerk keinen bezug herstellen zwischen sprochenden wort und dem text wort.

1 „Gefällt mir“

Hatte ich auch so verstanden. Trotzdem glaube ich, das es einfacher ist das vorhandene Transkript anzupassen, als von Null zu beginnen.
Natürlich muss alles gehört und bearbeitet werden, damit die „dumme“ Maschine damit umgehen kann.

1 „Gefällt mir“

Ich denke, man sollte das eine machen, ohne das andere zu lassen. Heißt:

  • ich habe vorhin einfach mal @timpritlove angehauen, ob er mir die Audiospuren vom Forschergeist getrennt nach Sprechern und entsprechende Transkripte zur Verfügung stellen kann.
  • Darüber hinaus habe ich einen Datensatz mit angeblich knapp 8Mio. deutschen Sätzen drin gefunden, den ich jetzt erstmal als Grundlage für das Bauen eines Language Models nutzen werde: https://www.inf.uni-hamburg.de/en/inst/ab/lt/resources/data/acoustic-models.html (siehe unter “Downloads” -> “German_sentences_8mil_filtered_maryfied.txt.gz”)

Die Transkripte sollte man auf jeden Fall nutzen können, um sie in das Language Model einfließen zu lassen. Direkt mit dem gesprochenen müssen sie nicht zwangsweise zusammenhängen.

1 „Gefällt mir“

Da verlangt du der intelligents echt was ab.

Naja - naiv würde ich sagen: “Mehr Daten = Mehr Besser” (oder so ähnlich) :smiley:

Dieses Datascience-Zeugs hat viel mit ausprobieren oder “iterativen Vorgehen” zu tun. Wenns besser wird, wars wohl gut, wenn nicht, dann eben nicht.

Ich habe auch mal einen Datansatz mit gesprochenen Wikipedia-Artikeln gefunden, den man auch noch nehmen könnte… dummerweise haben die jeden Satz einzeln in XML-Dateien gespeichert, von daher müsste man das erst einmal zusammenführen. Fällt mir ein: mag jemand von euch eigentlich mit Programmieren? :smiley:

1 „Gefällt mir“

wichtig ist auch das du viele sprecher hast.

1 „Gefällt mir“

DATT stimmt allerdings :slight_smile:

Habe gerade nicht viel Zeit, trotzdem hier ein lustiger Zwischenstand:

Update

  • Neues Language Model erzeugt
  • Neues DeepSpeech Model erzeugt

Aktuelle Erkennungsrate des Modells (basierend auf nur ca. 800 Audioclips):

Test - WER: 0.944711, CER: 25.562472, loss: 189.645233
--------------------------------------------------------------------------------
WER: 3.000000, CER: 8.000000, loss: 52.858353
 - src: "hinzufügen"
 - res: "en su fee"
--------------------------------------------------------------------------------
WER: 2.500000, CER: 13.000000, loss: 109.189522
 - src: "ventilator einschalten"
 - res: "um die aber reinschaut de"
--------------------------------------------------------------------------------
WER: 2.333333, CER: 20.000000, loss: 182.175934
 - src: "seid lieb zueinander"
 - res: "die ksa rendeler ire zen f der"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 9.000000, loss: 55.442699
 - src: "lesezeichen anzeigen"
 - res: "die reiche an eigenen"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 10.000000, loss: 56.983654
 - src: "programm öffnen"
 - res: "o kram er fern"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 10.000000, loss: 58.512329
 - src: "klimaanlage einschalten"
 - res: "die ma a nadler einschalten"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 10.000000, loss: 63.022354
 - src: "ein ausrufezeichen reicht"
 - res: "ein aus su e zehn e ich"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 10.000000, loss: 65.272552
 - src: "mit rindfleisch"
 - res: "we ren fern sh"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 10.000000, loss: 69.936279
 - src: "event erstellen"
 - res: "wie er der sten"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 12.000000, loss: 79.148705
 - src: "bitte wiederholen"
 - res: "wir wer die baule"
--------------------------------------------------------------------------------
1 „Gefällt mir“

Yey! Endlich ist der komplette, aktuell verfügbare Datensatz veröffentlicht worden!

Jetzt kann ich wieder weiter rumschrauben…

3 „Gefällt mir“

Update

  • Okay, die ersten Ergebnisse waren ernüchternd (siehe unten). Das Training eines Modells auf meinem Rechner mit einer aktuellen Grafikkarte (Geforce RTX 2060 - extra zu diesem Zweck angeschafft), dauert ca. 24h. Hierbei habe ich den kompletten derzeit erhältlichen Common Voice Datensatz verwendet.
  • Ich habe mich noch einmal an Mozilla gewendet und nachgefragt, wie sie ihr Modell konfiguriert haben und warum. Warte hier noch auf konkrete Anwort.
  • Trainiere in der Zwischenzeit noch einmal mit einer anderen Konfiguration (größerer Hidden-Layer, weniger Epochen) ein neues Modell und schaue, wie’s läuft.

Ergebnisse - Modell 2019-02-28

I FINISHED Optimization - training time: 21:40:06
D Epochs - running: 0, done: 50
100% (25627 of 25627) |####################################################| 
Elapsed Time: 0:25:55 Time:  0:25:55
Computing acoustic model predictions...
100% (8542 of 8542) |######################################################| 
Elapsed Time: 0:45:02 Time:  0:45:02
Test - WER: 0.351997, CER: 7.856708, loss: 37.732666
--------------------------------------------------------------------------------
WER: 3.000000, CER: 4.000000, loss: 5.312325
 - src: "weitermachen"
 - res: "bei der machen"
--------------------------------------------------------------------------------
WER: 3.000000, CER: 4.000000, loss: 16.388323
 - src: "weitermachen"
 - res: "bei der machen"
--------------------------------------------------------------------------------
WER: 3.000000, CER: 13.000000, loss: 68.673531
 - src: "knallharter bodycheck"
 - res: "kanal hat hat es die scheck"
--------------------------------------------------------------------------------
WER: 2.500000, CER: 9.000000, loss: 20.223913
 - src: "ventilator einschalten"
 - res: "wenn die nato ein schalten"
--------------------------------------------------------------------------------
WER: 2.500000, CER: 11.000000, loss: 20.648293
 - src: "batterieladestand anzeigen"
 - res: "das rila stand an sein"
--------------------------------------------------------------------------------
WER: 2.500000, CER: 14.000000, loss: 56.810741
 - src: "dialogstatus zurücksetzen"
 - res: "dialog status ecksätzen in wien"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 3.000000, loss: 5.428734
 - src: "verstanden"
 - res: "so standen"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 4.000000, loss: 9.225818
 - src: "servus"
 - res: "sehr wu"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 6.000000, loss: 10.352249
 - src: "kikeriki"
 - res: "die terek"
--------------------------------------------------------------------------------
WER: 2.000000, CER: 4.000000, loss: 12.535884
 - src: "weitermachen"
 - res: "bei vormachen"
--------------------------------------------------------------------------------
D Done.

Verwendete Konfiguration

--train_batch_size 3
--dev_batch_size 3
--test_batch_size 3
--n_hidden 512
--learning_rate 0.0001
--epoch 50
3 „Gefällt mir“

Also vor der Subscribe werde ich wohl nicht mehr zu viel kommen, aber ich habe hier noch einmal ein kurzes

Update

Ich habe Forschergeist Folge FG60 Klimawandel anhand des von @timpritlove veröffentlichenten Transcripts und der entsprechenden Timecodes in viele kleine handliche wav Dateien zerschnipselt und einmal exemplarisch 5 davon gegen das Modell geworfen. Hier die derzeitigen Ergebnisse:

Input: Hallo und herzlich willkommen zu Forschergeist, dem Podcast des Stifterverbands für die deutsche Wissenschaft.
Output: alle unter sich wir kommen zu forschergeist fokas testit da verbands für die deutsche bissen schafft

Input: Da waren Sie dann auch unter anderem in Neuseeland glaube ich in der Ausbildung oder?
Output:die da man sie dann auch unter anderem binden wolle sie dank laubig

Input: Sind aber selber Ozeanograph und Paleoklimatologe, das sind natürlich tolle Namen.
Output: wer selber er ozeanograf und palkia tore das in das licht tolle name

Input: Deren Fläche schrumpft nicht oder nur sehr unwesentlich, weil diese Kontinentaleispanzer sind eben mehrere tausend Meter dick.
Output: deren fläche schrumpft nicht er wurde nur sehr unwesentlich weil diese kontinent hal eispanzer isen demen ehre tausend meter dick

Input: Was wird jetzt neu erforscht, was will man herausfinden, was ist noch unverstanden?
Output: wird jetzt neu erforschtes will was wir man heraus fin was es noch ohne verstanden

Erkenntnisse

  1. Interessanterweise wurden Worte, die garantiert NICHT vorher Trainiert worden oder im verwendeten Language Model enthalten sind, relativ gut erkannt. Beispiele sind “Ozeanograf” oder “Eispanzer”. Phrasen, die garantiert vorher schon mal Trainiert und im Language Model enthalten sind wie “unter anderem” oder “nur sehr unwesentlich” werden bereits sehr gut erkannt. Beides könnte darauf hinweisen, dass das erzeugte Modell derzeit “overfitted” ist (siehe hierzu https://en.wikipedia.org/wiki/Overfitting)
  2. Ein von DeepSpeech erzeugtes Modell lässt sich derzeit nicht “einfach so” verwenden. Es gibt sehr viele Abhängigkeiten zu Bibliotheken, die auf dem verwendenden System installiert sein müssen, bevor man damit Audio in Text umwandeln kann. @rstockm Den ursprünglichen Plan, das Modell “einfach so” in Reaper/Ultraschall zu integrieren (siehe Post GANZ OBEN), halte ich derzeit für nicht möglich. Nach allem, was ich von Mozilla aber gelesen/herausgefunden habe, wird derzeit daran gearbeitet, dies zu ändern und ein ein “praktikableres Modellformat” zu erzeugen.
  3. Der spaßige Teil ist vorüber, nun wird es ARBEIT. :slight_smile: Aber ich plane, trotzdem weiter am Ball zu bleiben. Dass wir aber DeepSpeech als Tool zur automatisierten Erstellung von Transkripten in naher Zukunft einsetzen können werden, davon ist nicht auszugehen.

Vielen Dank aber schon mal an alle, die den Thread hier bisher gelesen haben und für euer gezeigtes Interesse! Hoffe, man sieht sich auf der Subscribe!

8 „Gefällt mir“

Hallo zusammen,

ich finde die Bemühungen hier sehr lobenswert. Ich habe diesbezüglich auch schon einige Recherchen angestellt und bin dabei auf etwas gestoßen, was auch noch interessant sein könnte, falls es nicht von jemandem hier ist:

Insbesondere das Sprachmodell und die Audiodaten sind vielleicht interessant…

Language model
For the language model a text corpus is used, also provided by the people of the " German speech data corpus" (https://www.inf.uni-hamburg.de/en/inst/ab/lt/resources/data/acoustic-models.html).

Speech data
http://www.repository.voxforge1.org/downloads/de/Trunk/Audio/Main/16kHz_16bit/ (~50h)
https://nats.gitlab.io/swc/ (~150h)

Darüber hinaus bin ich mit https://vorleser.net in Kontakt getreten und habe nachgefragt, ob die kostenlosen Hörbücher dort in Kombination mit den PDF-Dateien im Download irgendwie als Trainingsdaten vorliegen können…

Falls die Idee nicht zu abgefahren ist, könnte man auch die Hörproben von Audible “Transkribieren” und als Trainingsdaten verwenden. Hörbücher sind meistens sehr korrekt und deutlich gesprochen.

Was meint ihr?

1 „Gefällt mir“

Ein weiteres Projekt mit sehr vielen “freien” Sprachdaten in deutsch:

Übrigens: Falls jemand dabei helfen möchte, den deutschen Sprachkorpus von Mozilla zu erweitern, ich bemühe mich, hin und wieder mal ein paar Sprachdatensätze zu verifizieren:

Man muss gar nicht viel machen, nur lesen und hören, ob das gesprochene dem Text entspricht. Man dabei eigentlich nur aufpassen, dass keine Wörter vergessen wurden oder Nebengeräusche Wörter überlagern.

1 „Gefällt mir“

Na vielleicht komme ich auch etwas spät aber ich hatte mich mal vor Monaten mit alldem beschäftigt und auch einen Dataset Combiner/Cleaner/Downloader erstellt mit dem ich auch in deutsch ganz gute Ergebnisse erzielt habe.

Ich benutze das deutsch trainnierte Modell privat schon seit paar Monaten.
Ich hatte dann allerding viel zutun und es sind da noch lange nicht alle neuen Trainingsdaten dabei.

Die Ergebnisse sollten jetzt eigentlich viel besser werden. Ich werde mich mal dran setzen und die Links mit einbinden und dann mal wieder ein Training starten.

Für Deutsch sind derzeit folgende Datasets vorhanden :

-SpokenWiki
-Librivox
-Tatoeba
-Voxforge
-zamia
-forschergeist
-CommonVoice

Falls ihr noch andere habt dann ruhig her damit und ich binde die mit in den Downloader ein.

3 „Gefällt mir“

@silenter @sandreas @DerSimon @Mustamie @rstockm @others
Wenn Sie nach DeepSpeech-Ergebnissen in deutscher Sprache suchen. Überprüfen Sie Papier und Aufbewahrungsort. Es könnte nützlich sein.

https://www.researchgate.net/publication/336532830_German_End-to-end_Speech_Recognition_based_on_DeepSpeech

Here is our lastest Swiss-German DeepSpeech results:

https://www.researchgate.net/publication/342338332_LTL-UDE_at_Low-Resource_Speech-to-Text_Shared_Task_Investigating_Mozilla_DeepSpeech_in_a_low-resource_setting/stats

1 „Gefällt mir“