Wir haben 600 geprüfte Stunden erreicht, 50% des ersten Ziels

Das mag sein, aber eine Erklärung in der FQA ist besser als keine Erklärung in der FAQ.

1 Like

*Seufz* Das sind alles uralte Baustellen, die immer noch nicht behoben sind. Es wird nicht angezeigt, wie vorgelesen werden soll. Es wird nicht angezeigt, nach welchen Kriterien validiert werden soll. Erst-Vorleser werden nicht gezwungen, ihre eigenen Aufnahmen anzuhören. Notorische Satzzeichen-Vorleser werden nicht darauf hingewiesen, dass ihre Ablehnungsrate bei 100% liegt.

Zu all diesen Punkten (bis auf den letzten, glaube ich) gibt es auf Github entsprechende Issues, wahrscheinlich sogar aus dem ersten Jahr des Projekts. Ich bin relativ frustriert, dass sich da nichts getan hat. Ich weiß nicht, ob Mozilla zu wenige Entwickler hat oder einfach zu schlecht organisiert ist, aber es frustriert.

Und zu den 600 Stunden: Die sind extrem unausgewogen, so dass zum Training nur ein Bruchteil verwendet werden kann. In der Realität sind wir also weit von der Hälfte unseres Ziels entfernt.

Vor allem fehlen Frauen! Deshalb brauchen wir Kampagnen, um Frauen zu mobilisieren. Leider passiert in diese Richtung nicht wirklich etwas. Man könnte zum Beispiel Feministinnen-Magazine oder so anschreiben und sie darauf hinweisen, dass hier die nächste Benachteiligung für Frauen entsteht, aber jede Frau dazu beitragen kann, dies zu ändern. Oder halt einfach zielgerichtet Werbung in Social-Media-Kanälen schalten.

Bevor wir aber große Mengen an bisher nicht involvierten Menschen mobilisieren, sollten wir dafür sorgen, dass denen auch absolut klar ist, was auf Common Voice zu tun ist. Sonst ist hinterher wieder viel Arbeit für die Tonne.

1 Like

Meine Erfahrung aus anderen IT-Firmen ist die, dass eine einmal “fertig” entwickelte Webseite schwer zu ändern ist. Vermutlich erscheint das Problem nicht groß genug um es ändern zu müssen. Ich sage, wenn nicht jemand aus der Community diese Features implementiert, dann werden wir sie nicht von Mozilla bekommen.

Ja ich hoffe das es dazu mal bessere Zahlen gibt. Z.B. auf der Seite, wo man den Datensatz herunterladen kann wäre die Zahl der nur einmal aufgenommenen Stunden extrem interessant. Allerdings haben wir jetzt schon fast ein Jahr lang genug Sätze um keinen Satz mehr doppelt aufnehmen zu müssen. (der Wiki Import war Juli 2019) Ich denke, die Situation ist nicht mehr so schlimm wie vor einem Jahr und wird mit jedem Monat besser.

Oft bekommt man gar nicht mit, was so passiert. Zum Beispiel hat jemand auf Reddit auf r/Weibsvolk (den größten deutschsprachigen Sub für Frauen dort) vor einer Weile für Common Voice geworben und ich bin nur zufällig darüber gestolpert:

Wenn man ein bisschen sucht, gibt es viele Menschen, die in diesem kleinen Rahmen immer wieder Werbung für das Projekt machen. Offline und online. Ich denke es ist kein Zufall, dass Deutsch auf Platz 2 der größten Sprachen ist, Leute machen definitiv Werbung für das Projekt, nur eben nicht besonders koordiniert. Die Idee mit Feministen zusammenzuarbeiten, gefällt mir auch gut, ich schau mal was mir dazu so einfällt. Da gibt es ja einige Organisationen, die man ansprechen kann.

Was Satzwiederholungen angeht, wird es bestimmt besser. Ich meinte eigentlich vor allem die demografische Unausgewogenheit und die wird ja angegeben:

Alter
3% < 19
23% 19 - 29
17% 30 - 39
19% 40 - 49
11% 50 - 59
2% 60 - 69

Geschlecht
67% Männlich
9% Weiblich

Und das ist ja noch nicht alles. Es gibt einige wenige, die allein locker eine zweistellige Zahl von Stunden vorgelesen haben. Spitzenreiter dürfte ein rauchender Mann mittleren Alters aus Nordrhein-Westfalen sein (ich denke, ihr wisst, welche Stimme ich meine). Ich finde es toll, dass sich einige so intensiv engagieren, aber für einen ausgewogenen Datensatz kann man davon vielleicht eine Stunde verwenden.

Das stimmt alles und daran müssen wir arbeiten. Trotzdem gibt es keinen anderen freien Datensatz, der so groß und so divers ist wie Common Voice. Andere großen Datensätze sind schlimmer. Der LibriVox Corpus basiert z.B. auf Hörbüchern, was dazu führt, dass man nur sehr große Blöcke mit der gleichen Stimme hat.

Lass uns darauf fokussieren was wir tun können. Über die Probleme sind wir uns glaube ich einig. Das wichtigste ist Common Voice innerhalb und außerhalb der IT-Blase bekannt zu machen. Ich habe für andere Sprachen schon mal Promo-Material erstellt, wenn ich die Zeit finde werde ich da mal etwas davon übersetzen.

Es gibt jetzt zu einigen der Themen ein paar Updates:

Hier z.B. über die Qualität der Sätze. Im vorletzen Absatz klingt das so als würde es bald (“zweites Quartal”) Richtlinien zum Validieren geben:

1 Like

Ich würde da gerne helfen - hab im Riot Chat von Mozilla CV schon angefragt… aber anscheinend - trotz Open Source! - haben sie kein Konzept und/oder keine Lust, dass externe Leute anpacken :frowning:

100% Zustimmung! Kannst du kurz sagen, wieso die 600h bisher voraussichtlich auch für die Tonne sind? Würde gerne perspektivisch mii den Daten arbeiten…

Das stimmt so nicht, es machen regelmäßig Leute von außerhalb Pull-Requests und verbessern Dinge. Das wird dann aber eher direkt auf GitHub im entsprechenden Issue ausdiskutiert, der Chat ist noch relativ jung und dort sind nicht gar nicht alle beteiligten dabei. Such dir einfach ein Issue auf Github aus und frage dort nach, ob Du das nicht übernehmen kannst.

Das sehe ich nicht ganz so kritisch, die Arbeit bis jetzt ist nicht komplett für die Tonne. Grundsätzlich gibt es drei Probleme:

  1. Ein großes Problem bei vielen Sprachen ist, dass es zu wenig Sätze gibt. Doppelt aufgenommene Sätze sind angeblich nutzlos für das Training (das Problem heißt Overfitting) , deswegen braucht man für jede Aufnahme einen eigenen Satz. Seit letzten Sommer gibt es für Deutsch genug Sätze, d.h es sind höchstens die ersten 200 (?) Stunden teilweise unbrauchbar. Doppelte Aufnahmen kann man aber immer noch z.B. gut für Tests verwenden. Möglicherweise gibt es auch in Zukunft neuronale Netze, die mit doppelten Aufnahmen gut umgehen können.

  2. Die Diversität der Aufnahmen. Da sind wir nicht so gut, aber immer noch besser als andere Datenbanken. Vor allem verschiedene Akzente gibt es sonst kaum. Das Ziel ist am Ende 10 000 Stunden zu haben, deswegen finde ich es nicht so schlimm, wenn die ersten 600 Stunden nicht so divers sind. Wir werden später sicher eigene Kampagnen für einzelne Gruppen brauchen und auch ganz andere Arten von Sätzen sammeln müssen (viel mehr Umgangssprache!).

  3. Die Genauigkeit des Datensatzes. Scheinbar landen auch manchmal Aufnahmen, die nicht genau dem Satz entsprechen im Datensatz. Wie groß dieses Problem ist, kann ich nicht sagen. Auch Rechtschreib- und Grammatikfehler in den Sätzen sind ein Problem, an dem man permanent arbeiten muss.

Für mich ist das größte Problem, das unbedingt, mal gelöst werden muss die Tatsache, dass ein gemeldeter Satz nicht automatisch aus dem Datensatz ausgeschlossen wird. Die gemeldeten Sätze landen in einer Liste, die irgendjemand manuell abarbeiten muss. Und ich habe noch nicht herausgefunden, ob das für Deutsch überhaupt schon mal gemacht wurde.

Danke für den Tipp - werde ich mal ausprobieren!

Ich weiß, was overfitting ist. Deine Aussage muss ich mindestens mal relativieren, stimmt leider nicht so: overfitting könnte ein Problem sein, wenn bestimmte Sätze x-fach eingesprochen werden (“redundant”, d.h. schon immer andere Sprecher aber), andere Sätze aber z.B. nur 1x - was aber definitiv GUT ist, ist, wenn der gleiche Satz jeweils von x Sprechern gesprochen wird! Dies hilft, die Varianz der Aufnahmen zu erhöhen, was in gewissem Umfang gut für die Generalisierung ist.

Dieses Problem scheint zentral zu sein. Es gibt im Machine Learning den Spruch “Garbage In, Garbage Out”, was soviel bedeutet wie, wenn du fehlerhaften Kram en masse als Input hast, darfst du nicht erwarten, dass was sinnvolles rauskommt beim Training. Gerade beim Deep Learning kann geschickte Vorverarbeitung (“cleaning”) den Unterschied machen, ob das Model schnell(er) trainiert werden kann und ob die Qualität (z.B. Precision, Recall) ein bestimmten Niveau erreichen kann.

Äh… wird das nicht mal gelabelt als “dismissed”??? Wie soll man dann sinnvoll trainieren?

Interessant da mal eine Gegenmeinung zu hören. Irgendjemand (ich glaube mit einem französischen Modell) hat hier auf Discord auch geschrieben, dass die WER besser wird, wenn er mit den Duplikaten trainiert. Ich könnte mir vorstellen, dass es einen Unterschied macht, ob ein Datensatz nur die initialen 5000 Sätze tausendmal aufnimmt, oder ob hunderttausende Sätze doppelt oder dreifach aufgenommen werden.

Im Anouncement steht aber das sie für einige Sprachen doppelte Aufnahmen ganz unmöglich machen möchten:

Es liegt irgendwo eine CSV Datei und die gemeldeten Sätze werden dann manuell aus dem Datensatz entfernt. Es soll ja jetzt im Juni oder Juli einen neuen Datensatz geben. @mkohler weißt Du, ob jemand für dieses Release den deutschen Datensatz von den gemeldeten Sätzen bereinigt? Wurde das überhaupt schon mal gemacht?

Nein, denn das habe ich nicht geschrieben. Die 600 Stunden sind mit Sicherheit nicht komplett für die Tonne. Mir geht es darum, dass neue Sprecher nicht wissen, wie sie vorzulesen und zu validieren haben. Folglich werden bei der nächsten Kampagne wieder einige fleißige Flüsterer und Satzzeichenvorleser dabei sein, deren stundenlange Arbeit man leider durch konsequentes “Nein” klicken aussortieren muss (deren Arbeit also für die Tonne wäre).

Abgesehen davon kann ein großer Ansturm von Erstbeitragenden dazu führen, dass es viele Validierer vielleicht nicht so genau nehmen oder nach falschen Kriterien entscheiden, weil ihnen ja nicht klar gesagt wird, was die Kriterien sind. In dem Fall hätte die gewonnene Quantität einen direkten negativen Einfluss auf die Qualität der Daten.

In der Tat! Die sprachliche Bandbreite ist bei 100’000enden von Sätzen vermutlich deutlich höher! Und das ist wichtig. Die Antwort von Mozilla ist natürlich (leider) sehr untechnisch, insofern kann ich nur spekulieren, was gemeint ist: Ich kann mir vorstellen, dass sie eben keine “class imbalance” haben wollen, also bestimmte Sätze sind deutlich überrepräsentiert. Das könnte in der Tat das Lernen erschweren oder eben die Qualität verringern, weil das Modell sich dann auf Dinge fokussiert, die nicht der “echten Repräsentation” der (Input-)Daten entsprechen.

Anders ausgedrückt: Wir haben hier ja statistische Verfahren, die möglichst nah an die “echte Verteilung” und damit Repräsentation von Spracheingabedaten kommen sollen. Wenn die Eingabedaten grob verzerrt sind, gelingt dies nicht (eine vereinfachte Formel wäre im Extrem besagtes “garbage in, garbage out”).

1 Like

Ok, sorry - dann bin ich ja beruhigt. Ansonsten bin ich quasi voll deiner Meinung :slight_smile: Wie können wir das Problem lösen? Github issues einstellen?

Ich könnte mir vorstellen, dass es hier auch auf die Architektur des Netzes ankommt. Ich stecke nicht tief in der Materie, aber bei DeepSpeech z. B. gibt es ja einen Teil, der die Fourier-Transformierte des Audios in “Laute” übersetzt und einen Teil, der diese Laute nimmt und daraus Worte/Zeichenketten formt. Der erste Teil braucht zum Training vor allem viele verschiedene Stimmen, Dialekte und Stimmungslagen. Der zweite braucht viele einzigartige Sätze. Wenn man beide unabhängig voneinander trainieren könnte, müsste man Satzwiederholungen nur für den zweiten Teil skippen, was unseren bisherigen Datensatz aufwerten würde.

1 Like

Eine Idee, die ich schon eine Weile habe, ist die bereits angenommenen Sätze in der Datenbank mit 1x Nein und 2x Ja noch mal prüfen zu lassen. (und vielleicht auch die abgelehnten Sätze mit 2x Nein und 1x Ja). Damit könnte man viele von den Wackelkandidaten besser einschätzen. Das würde natürlich den Validierungsprozess deutlich verlangsamen, aber die Qualität sicher erhöhen.

EDIT: Die Anzahl der Jas und Neins sind ja auch im Datensatz, d.h. man kann, wenn man will auch ohne die Sätze trainieren, zu denen irgendwann mal jemand Nein gesagt hat.

Das wird viele kleinere Sprachen freuen. Wenn man nur eine Wikipedia mit einigen zehntausend oder hunderttausend Artikeln hat, ist es sehr schwer genug Sätze mit dem extractor Script zu bekommen. Einige hunderttausend Sätze kann man manuell aus gemeinfreien Quellen sammeln, Millionen sind dagegen extrem schwer.

Ich glaube nicht, das das je jemand bereinigt hat. Soweit ich weiss ist zwar die Meldeoption implmentiert, aber niemand schaut sich diese Sätze an und es gibt keinen Prozess dafür.

hallo @mkohler. das heißt aber, dass man anhand der mitgespeicherten “JAs” und “NEINs” schon selber gewichten oder filtern kann, welches Recording man nutzen möchte – oder?

Naja, ob WP immer die richtige Wahl ist… Umgangssprache (wie Reddit für Alexa) wäre vermutlich ziemlich wichtig. WP ist akademisch und m.E. auch daher nicht das nonplusultra.

Da hast du einen Punkt - das Acoustic Model zum einen und das Language Model zum anderen. Ob es vorteilhaft wäre, diese unabhängig zu trainieren, kann ich dir nicht sagen – vermutlich aber nicht bzw. hätte den gegenteiligen Effekt. Deep Learning kann von end-2-end oft profitieren (d.h. wenige Zwischenschritte oder “Encodings”) und zum anderen sind diese ja auch korreliert, was es schwierig machen dürfte.

Ich kann allen Interessierten (technisch) aber diesen Talk eines der Autoren des “Ur-DeepSpeech” empfehlen, da wird einiges erklärt: https://www.youtube.com/watch?v=g-sndkf7mCs

1 Like

Die 600 Stunden Marke und das Release im Juni/Juli ist vielleicht ein guter Zeitpunkt das mal zu machen. Ich erinnere mich entfernt, dass Jenny Zhang das schon mal für eine Sprache bereitgestellt hat, ich frage sie einfach mal, ob man das machen kann.

Das ist eine ganz eigene, große Diskussion. Es ist sehr schwer gute Sätze zu bekommen. Auch die 370 000 Sätze aus dem Europaparlament, die wir zuletzt importiert haben, sind nicht ideal. Aber auf Deutsch kann man aufgrund der Rechtschreibreform 96 nur sehr schwer gemeinfreie Texte finden, die man ohne viel Handarbeit einfach importieren kann. Zurzeit experimentiert @benekuehn mit einem WhatsApp Scrapper mit dem man seine privaten Chats spenden kann. Wenn da viele mitmachen, könnte das eine Chance sein.