Autor Thema: Mimic3 - Text-to-Speech offline  (Gelesen 1334 mal)

Offline dkreutz

  • Sr. Member
  • ****
  • Beiträge: 503
  • Home, Smart Home!
    • fhem-skill für Mycroft.ai
Mimic3 - Text-to-Speech offline
« am: 30 Juni 2022, 19:32:42 »
Mycroft AI hat Mimic3 veröffentlicht: https://mycroft.ai/mimic-3/

Damit ist Sprachausgabe offline/lokal erzeugt möglich. Mit einem Raspberry Pi4 erreicht man bereits annehmbare Synthesegeschwindigkeit (real-time-factor 0.5, d.h. eine Sekunde Audio benötigt ca. eine halbe Sekunde zur Synthese). Wer geduldig ist, kann Mimic3 auch auf einem RPI3 laufen lassen (RTF ca. 1.5x). CUDA GPUs werden auch unterstützt. Es sind über 100 verschiedene Stimmen in aktuell 25 Sprachen verfügbar.

Dokumentation: https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/mimic-3
Github: https://github.com/MycroftAI/mimic3


p.s.: Bei der Erstellung des Datasets für die deutsche "Thorsten"-Stimme habe ich mitgearbeitet - weitere Details siehe https://www.thorsten-voice.de
Ein TTS-Modell auf Basis des Thorsten-Voice Datasets in höherer Qualität wurde von coqui.ai dem mit dem Coqui-TTS Release 0.7.1 veröffentlicht: https://github.com/coqui-ai/TTS
« Letzte Änderung: 30 Juni 2022, 19:35:41 von dkreutz »
Raspberry Pi3B+ (Stretch) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18935
Antw:Mimic3 - Text-to-Speech offline
« Antwort #1 am: 04 Juli 2022, 15:20:03 »
Vorab mal Danke für die (vermutet sehr) viele Arbeit an der "Thorsten"-Stimme!

Habe das ganze jetzt mit "thorsten_low" in Rhasspy eingebunden (grob: die "Remote HTTP"-Methode wie von @synesthesiam hier gepostet), und der natürliche Klang dieser Variante ist erst mal sehr angenehm.

Fix ist es auch, auf dem dafür eingesetzten i3 ist der RTF bei etwas mehr als 0.10. Leider kommt dieses "low"-Modell nicht an die Demos auf thorsten-voice.de ran, was die Sprachmelodie angeht.
Wo wäre denn der richtige Ort, um Rückfragen zu diesem Themenkreis zu stellen bzw. feedback zu geben? Oder gibt es einen "schnellen Tipp", wie man das verbessern kann?
EDIT: Anscheinend gibt es signifikante Unterschiede zwischen dem "alten" und dem "neuen" Modell, und mimic3 scheint noch das "alte" Modell zu verwenden => vermutlich reicht etwas Geduld, oder man wechselt auf Coqui-TTS...

Weiter würde mich interessieren, ob/wie man das ggf. direkt in FHEM für TTS via "regulärer Audio-Hardware" einbinden könnte (Stichworte "OpenMultiroom" bzw. vorläufig mein Thread "Yamaha, DLNA und MPD"). Soweit ich das bis dato überblicke, müßte man idealerweise das Text2Speech-Modul erweitern, dass es den mimic3-server als weitere Quelle akzeptiert?
« Letzte Änderung: 04 Juli 2022, 16:39:10 von Beta-User »
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline dkreutz

  • Sr. Member
  • ****
  • Beiträge: 503
  • Home, Smart Home!
    • fhem-skill für Mycroft.ai
Antw:Mimic3 - Text-to-Speech offline
« Antwort #2 am: 04 Juli 2022, 21:50:15 »
Vorab mal Danke für die (vermutet sehr) viele Arbeit an der "Thorsten"-Stimme!
Danke für das Feedback. Ja, das war vor allem für Thorsten viel Arbeit, er hat über 30h Texte "eingesprochen".

Zitat
Habe das ganze jetzt mit "thorsten_low" in Rhasspy eingebunden (grob: die "Remote HTTP"-Methode wie von @synesthesiam hier gepostet), und der natürliche Klang dieser Variante ist erst mal sehr angenehm.

Fix ist es auch, auf dem dafür eingesetzten i3 ist der RTF bei etwas mehr als 0.10. Leider kommt dieses "low"-Modell nicht an die Demos auf thorsten-voice.de ran, was die Sprachmelodie angeht.
...
Das Mimic3-CLI unterstützt SSML, damit kann man Sprechgeschwindigkeit, Betonung, etc. beeinflussen

Zitat
EDIT: Anscheinend gibt es signifikante Unterschiede zwischen dem "alten" und dem "neuen" Modell, und mimic3 scheint noch das "alte" Modell zu verwenden => vermutlich reicht etwas Geduld, oder man wechselt auf Coqui-TTS...
Die Beispiele auf thorsten-voice.de wurden mit dem VITS-Modell von Coqui-TTS erzeugt. Beide Modelle basieren auf VITS und dem neuen Dataset (das haben wir Michael Hansen/Synthesiam vorab zur Verfügung gestellt), aber für Mimic3 "thorsten_low" wurde die Samplingrate reduziert und weitere Optimierungen vorgenommen, damit der RTF <1 auf dem RPI4 erreicht werden konnte.

Zitat
Wo wäre denn der richtige Ort, um Rückfragen zu diesem Themenkreis zu stellen bzw. feedback zu geben? Oder gibt es einen "schnellen Tipp", wie man das verbessern kann?
Mimic3-spezifische Fragen am Besten bei der Mycroft-Community oder im Mattermost-Chat, da antwortet dann ggfs. auch Michael/Synthesiam. Bei Fragen zu Coqui-TTS in den Github-Discussions oder im Matrix/Gitter-Kanal.
Natürlich versuche ich auch gerne hier Fragen zu beantworten.

Zitat
Weiter würde mich interessieren, ob/wie man das ggf. direkt in FHEM für TTS via "regulärer Audio-Hardware" einbinden könnte (Stichworte "OpenMultiroom" bzw. vorläufig mein Thread "Yamaha, DLNA und MPD"). Soweit ich das bis dato überblicke, müßte man idealerweise das Text2Speech-Modul erweitern, dass es den mimic3-server als weitere Quelle akzeptiert?
Ich weiß nicht ob das weiter hilft, aber der Mimic3-Webserver ist kompatibel zu MaryTTS.
Raspberry Pi3B+ (Stretch) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18935
Antw:Mimic3 - Text-to-Speech offline
« Antwort #3 am: 05 Juli 2022, 10:14:52 »
Danke für das Feedback. Ja, das war vor allem für Thorsten viel Arbeit, er hat über 30h Texte "eingesprochen".
Na ja, die "30h Texte" sind ja "nur" das Audio-Endergebnis, insgesamt würde ich davon ausgehen, dass der Gesamtaufwand um ein vielfaches darüber liegt (auch bei den Supportern...).

Zitat
Ich weiß nicht ob das weiter hilft, aber der Mimic3-Webserver ist kompatibel zu MaryTTS.
Hatte dann gestern auch noch gesehen, dass Michael vor ein paar Tagen auch einen entsprechenden Patch eingecheckt hatte - für Rhasspy macht das die Sache sehr viel leichter, weil man dann direkt auch die zur Verfügung stehenden Sprachen per dropdown-Liste auswählen kann. (War nur bei mir kaputtgespielt gewesen, weil ich mit der nicht funktionierenden preview-Version einen anderen endpoint konfiguriert gehabt hatte).
Habe dann damit noch ein wenig rumgespielt und uU. auch thorsten-emptional_low ausgetestet.

Zitat
Das Mimic3-CLI unterstützt SSML, damit kann man Sprechgeschwindigkeit, Betonung, etc. beeinflussen
Was ich mit "Sprachmelodie" gemeint hatte, läßt sich aber m.E. weder hierdurch (auf einfache Art und Weise) beeinflussen, und auch nicht durch die "emotional"-Variante.

Zitat
Die Beispiele auf thorsten-voice.de wurden mit dem VITS-Modell von Coqui-TTS erzeugt. Beide Modelle basieren auf VITS und dem neuen Dataset (das haben wir Michael Hansen/Synthesiam vorab zur Verfügung gestellt), aber für Mimic3 "thorsten_low" wurde die Samplingrate reduziert und weitere Optimierungen vorgenommen, damit der RTF <1 auf dem RPI4 erreicht werden konnte.
Für meine Ohren klingt das so, als würden die beiden "Thorsten"-Varianten die derzeit mit Miminc3 heruntergeladen werden können, auf "Thorsten-21.02-neutral" (=> "thorsten_low") bzw. "Thorsten-21.06-emotional" basieren, jedenfalls wäre das (neben der Namensgebung) meine Folgerung auch aus den Hörproben unter https://www.thorsten-voice.de/2022/03/20/vergleich-thorsten-aktuell-mit-dem-neuen-modell/.
EDIT: als Versionsangabe findet sich für "thorsten_low" in https://github.com/MycroftAI/mimic3-voices/blob/master/voices/de_DE/thorsten_low/config.json:
"audio_dir": "/media/12tb/de-de/Thorsten-Voice-Neutral-Dec2021-22kHz/wavs"Vielleicht habe ich auch zu schnell auf die emotional-Variante gewechselt?!?
Habe das erst mal auch im Rhasspy-Forum nachgefragt, vielleicht kann man ja einfach die erforderlichen files manuell nachrüsten (https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/mimic-3#downloading-voices)?

Bzgl. maryTTS-Kompabilität und dem Text2Speech-Modul: Bisher war maryTTS nach meinen Recherchen nicht als Synthetisierungsweg vorgesehen und irgendwie könnte man den Eindruck haben, dass für das Modul häufig vorgefertigte mp3-files bereitgehalten werden. Die könnte man auch mit Coqui-TTS erzeugen, da kommt es ja nicht unbedingt auf Geschwindigkeit an. Da das auch eine "HTTP-Server"-Schnittstelle (aber nur für localhost) anbietet, könnte man das evtl. auch für ad-hoc-Ausgaben anzapfen, was aber wiederum voraussetzen würde, dass Text2Speech so eine Schnittstelle hätte... In meinem momentanen Setup wäre das nicht/nur über Umwege zu machen, von daher würde mir insgesamt der Mimic3-Weg mehr zusagen.

Na ja, ein weites Feld ;D .
« Letzte Änderung: 05 Juli 2022, 10:31:59 von Beta-User »
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline dkreutz

  • Sr. Member
  • ****
  • Beiträge: 503
  • Home, Smart Home!
    • fhem-skill für Mycroft.ai
Antw:Mimic3 - Text-to-Speech offline
« Antwort #4 am: 05 Juli 2022, 21:02:37 »
Na ja, die "30h Texte" sind ja "nur" das Audio-Endergebnis, insgesamt würde ich davon ausgehen, dass der Gesamtaufwand um ein vielfaches darüber liegt (auch bei den Supportern...).
Das ist richtig, der erste Kontakt zu Thorsten ist zweieinhalb Jahre her, neben den eigentlichen Aufnahmen gab es diverse Experimente zur Optimierung der Audioaufnahmen, Konfiguration der TTS-Modelle, viel ausprobieren, und immer wieder warten auf Trainingsergebnisse.

Für meine Ohren klingt das so, als würden die beiden "Thorsten"-Varianten die derzeit mit Miminc3 heruntergeladen werden können, auf "Thorsten-21.02-neutral" (=> "thorsten_low") bzw. "Thorsten-21.06-emotional" basieren,
Sowohl Mimic3-thorsten_low als auch das VITS-Modell von Coqui-TTS (v0.7.1) basieren auf dem Dataset "Thorsten-Voice-Neutral-Dec2021". Beides sind VITS-Modelle, aber Michael Hansen benutzt für Mimic3 eine andere Implementierung als Coqui-TTS.

Bzgl. maryTTS-Kompabilität und dem Text2Speech-Modul: Bisher war maryTTS nach meinen Recherchen nicht als Synthetisierungsweg vorgesehen und irgendwie könnte man den Eindruck haben, dass für das Modul häufig vorgefertigte mp3-files bereitgehalten werden. Die könnte man auch mit Coqui-TTS erzeugen, da kommt es ja nicht unbedingt auf Geschwindigkeit an. Da das auch eine "HTTP-Server"-Schnittstelle (aber nur für localhost) anbietet, könnte man das evtl. auch für ad-hoc-Ausgaben anzapfen, was aber wiederum voraussetzen würde, dass Text2Speech so eine Schnittstelle hätte... In meinem momentanen Setup wäre das nicht/nur über Umwege zu machen, von daher würde mir insgesamt der Mimic3-Weg mehr zusagen.
Ist etwas gebastelt, aber man könnte über einen Shell-Aufruf mit wget/curl gegen den Coqui- oder Mimic3-Server die Synthese anstossen und das Ergebnis lokal als WAV-Datei schreiben (oder per Shell-Aufruf mit Mycroft-CLI) und dann das Text2Speech-Modul diese Datei abspielen lassen.
Raspberry Pi3B+ (Stretch) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18935
Antw:Mimic3 - Text-to-Speech offline
« Antwort #5 am: 06 Juli 2022, 13:24:56 »
Sowohl Mimic3-thorsten_low als auch das VITS-Modell von Coqui-TTS (v0.7.1) basieren auf dem Dataset "Thorsten-Voice-Neutral-Dec2021". Beides sind VITS-Modelle, aber Michael Hansen benutzt für Mimic3 eine andere Implementierung als Coqui-TTS.
Muss nochmal mit "thorsten_low" experimentieren, evtl. bin ich verfrüht davon ausgegangen, dass das mehr oder weniger dasselbe ist wie die "emotional"-Variante.

Zitat
Ist etwas gebastelt, aber man könnte über einen Shell-Aufruf mit wget/curl gegen den Coqui- oder Mimic3-Server die Synthese anstossen und das Ergebnis lokal als WAV-Datei schreiben (oder per Shell-Aufruf mit Mycroft-CLI) und dann das Text2Speech-Modul diese Datei abspielen lassen.
Habe mich mal etwas in dem Modul umgesehen, und evtl. zumindest für maryTTS-kompatible (HTTP-) Server versucht, das direkt ins Modul einzupflegen, Test steht noch aus (es lädt...). Dafür braucht es soweit erkennbar nur die Zulassung als mögliche Quelle und eine passende Auswertung. Coqui habe ich nicht am laufen, und wenn, dann das Problem, dass es auf der falschen Hardware wäre. Aber es sollte ggf. kein größeres Problem sein, das nach dem Muster "espeak" iVm. der parseParams-Auswertung aus dem TTS_user-Attribut (analog maryTTS) zu machen.
Falls du Coqui am laufen hast, kannst du ja gerne versuchen, das entsprechend aufzubohren, ich häng' meine maryTTS-Fassung hier mal an, feedback folgt, wenn ich Zeit zum "in Ruhe" testen habe... (Vielleicht hat ja auch jemand Lust, das zu testen, bei dem Text2Speech bereits läuft, dann muss ich mich nicht mit eventuellen Untiefen "drumrum" beschäftigen).

EDITS:
- "thorsten_low" klingt wirklich deutlich besser als ich das in Erinnerung hatte :) .
- Die aktualisierte Modul-Version bringt zumindest schon mal Dateien in das cache-Verzeichnis (im SERVER-Modus). Die sind aber im RIFF-wave-Format (Beispiel anbei) und brauchen in irgendeiner Form eine Nachbearbeitung. Mal sehen, vielleicht hat ja einer eine Idee, wie das gehen könnte...?
« Letzte Änderung: 07 Juli 2022, 19:52:27 von Beta-User »
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18935
Antw:Mimic3 - Text-to-Speech offline
« Antwort #6 am: 07 Juli 2022, 19:55:23 »
Anbei aktualisierter Versuch für das Text2Speech-Modul.

Es werden Dateien nach ./cache geschrieben, und die wav sieht auch nach RIFF-Format aus, aber  abspielbar scheint es nicht zu sein, und lame erzeugt daraus auch keine brauchbare mp3...

Vielleicht kann sich das ja jemand mal ansehen, der mehr von audio-Dateien versteht?
« Letzte Änderung: 10 Juli 2022, 09:59:22 von Beta-User »
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18935
Antw:Mimic3 - Text-to-Speech offline
« Antwort #7 am: 10 Juli 2022, 10:08:19 »
Anbei aktualisierter Versuch für das Text2Speech-Modul.
...und nochmal einer 8) ...

Wobei "Versuch" es nicht mehr trifft: Es läuft ;D ;D ;D ;D

Zu ändern waren eigentlich nur ein paar "Kleinigkeiten".

PS: patch ist in https://forum.fhem.de/index.php/topic,128346.0.html zu finden.
« Letzte Änderung: 10 Juli 2022, 10:36:43 von Beta-User »
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files
Gefällt mir Gefällt mir x 1 Liste anzeigen