Transkripte mit Mozilla DeepSpeech / Machine Learning


#21

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.


#22

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.


#23

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.


#24

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.


#25

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.


#26

Da verlangt du der intelligents echt was ab.


#27

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:


#28

wichtig ist auch das du viele sprecher hast.


#29

DATT stimmt allerdings :slight_smile:


#30

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"
--------------------------------------------------------------------------------

#31

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

Jetzt kann ich wieder weiter rumschrauben…


#32

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

#33

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!