Neues Modul: Text2Speech

Begonnen von Tobias, 07 Januar 2014, 12:57:23

Vorheriges Thema - Nächstes Thema

Tobias

ich habe es übernommen, ein paar Anpassungen gemacht und Beta-Users MaryTTS noch manuell eingebaut. Leider fehlen noch die Anpassungen der Hilfe von Beta-User. Ich arbeite mit VSCode, da habe ich nicht rausfinden können wie ich den patch anwende. Ggf könnt ihr das noch auf die aktuelle Version machen?

https://github.com/tobiasfaust/MyFHEM/tree/master/FHEM

Bitte testet mal...

Bei änderungen: im Idealfall über einen PR an mein Github, notfalls gehts hier aber auch über Attachment
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Ellert

#1216
Es hat sich ein Fehler eingeschlichen:

982   } else  if ( $TTS_Ressource eq 'maryTTS' ) {
Mein Teil funktioniert, MaryTTS kann ich nicht testen.

Berichtigung im Anhang, als Grundlage die Datei aus GitHub.

Tobias

Bitte nochmal testen, ich habe jetzt die Dokumentationsanpassungen von Beta-User mit eingegarbeitet
@Beta-User: Bitte teste auch noch deine MaryTTS Anpassung

Wenn alles fehlerfrei funktioniert checke ich es im FHEM Repo ein
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Ellert

@Tobias:
Mein Teil funktioniert immer noch.

Allerdings ist mir auf gefallen, dass die Hilfe (DE/EN)für mein Attribut TTS_RemotePlayerCall nicht aktiviert ist.

Das habe ich in der Anlage nachgeholt. Grundlage ist die Datei aus dem GitHub.

Beta-User

Hallo zusammen,

kann grade leider nicht selbst testen, habe daher mal in https://forum.fhem.de/index.php?msg=1306523 einen call gestartet und hoffe mal, dass (mind.) einer der User sich bereit findet, kurzfristig eine Rückmeldung zu geben.

@Ellert: Für den Test müsste MaryTTS übrigens nicht auf demselben System laufen wie FHEM, ich hatte das auch eine Zeitlang auf eine andere (potentere) Hardware ausgelagert. Falls du also irgendwo überhaupt eine Instanz am Laufen hast (? es klang so), sollte das ohne größeren Aufwand gehen. (Jetzt läuft FHEM, Rhasspy und Mimic3 wieder auf einem System, das allerdings deutlich mehr "Wumms" hat wie mein bisheriger Hauptserver. Da hat die Mimic3-Installation übrigens nur wenige Minuten gedauert).

Ansonsten Danke an euch beide für die Zusammenarbeit (und Erklärungen) hier!
Server: HP-elitedesk@Debian 12, 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

Ellert

Zitat von: Beta-User am 10 März 2024, 16:13:50Falls du also irgendwo überhaupt eine Instanz am Laufen hast (? es klang so), sollte das ohne größeren Aufwand gehen.

Wenn ich eine MaryTTS Instanz laufen hätte, dann hätte ich auch schon getestet. Ich habe nicht die Muße mich damit zu beschäftigen. Ich nutze ausschließlich Google als TTS_Ressource und bin damit zufrieden. Meinem Anzeigegerät habe ich den Internetzugang verboten, sonnst könnte ich TTS auf Fully direkt nutzen. Deshalb nutze ich den Umweg über playSound und der URL auf die letzte Audiodatei.

JensS

Bei mir läuft eine mimic3-Testinstanz auf http://192.168.100.1:59125
Wie trage ich das in T2S ein? Als Ressource gibt's ja jetzt maryTTS.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Beta-User

#1222
Zitat von: JensS am 11 März 2024, 19:09:32Bei mir läuft eine mimic3-Testinstanz auf http://192.168.100.1:59125
Wie trage ich das in T2S ein? Als Ressource gibt's ja jetzt maryTTS.

Gruß Jens
Vorab mal vielen Dank für's Aufgreifen der Bitte!!!

In "define" ist es eine Server-resource, also "none", dann "maryTTS" in "TTS_Ressource" (da kompatibel), und dann eben noch die Angabe, wie genau das parametriert werden soll. Die de-commandref ist da anscheinend etwas aussagekräftiger, was die defaults (und die Notation) angeht. Da ist die Variante vercodet, die ich im großen und ganzen beim Testen genutzt hatte), siehe auch die Rückmeldungen von the ratman im Mimic-Thread, der damit auch etwas erwetert rumgespielt hatte.

(Aus dem Kopf: man kann die defaults halt entweder auf der Mimic3-Seite festlegen (Stimme etc.), oder man macht es eben (auh) von FHEM aus und gibt diese Parameter beim Aufruf mit. (?))
Server: HP-elitedesk@Debian 12, 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

JensS

define T2S Text2Speech default
attr T2S TTS_Language Deutsch
attr T2S TTS_MplayerCall /usr/bin/mplayer
attr T2S TTS_Ressource maryTTS
attr T2S TTS_UseMP3Wrap 1
attr T2S TTS_User host=192.168.100.1 port=59125 lang=de_DE voice=de_DE/thorsten_low
Hab's mit SIP getestet und Thorsten sagt, was er soll.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

JensS

Gibt's eine Möglichkeit, frei definierbare Argumente und HTML-Tags zu übergeben?
Dann kann man die Mehrsprachigkeit von mimic3 nutzen https://community.rhasspy.org/t/mimic-3-tts-preview/3651/28?u=jens-schiffke

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Beta-User

Zitat von: JensS am 12 März 2024, 05:23:31define T2S Text2Speech default
attr T2S TTS_Language Deutsch
attr T2S TTS_MplayerCall /usr/bin/mplayer
attr T2S TTS_Ressource maryTTS
attr T2S TTS_UseMP3Wrap 1
attr T2S TTS_User host=192.168.100.1 port=59125 lang=de_DE voice=de_DE/thorsten_low
Hab's mit SIP getestet und Thorsten sagt, was er soll.

Gruß Jens
Hmm, vermutlich ist das "mehr als notwendig", meine alte Einstellung war die (define mit "none"):
Attributes: TTS_Ressource maryTTS
TTS_User host=192.168.2.64
Zitat von: JensS am 12 März 2024, 07:14:53Gibt's eine Möglichkeit, frei definierbare Argumente und HTML-Tags zu übergeben?
Dann kann man die Mehrsprachigkeit von mimic3 nutzen https://community.rhasspy.org/t/mimic-3-tts-preview/3651/28?u=jens-schiffke

Gruß Jens
Also: das TTS_User-Attribut nutzt parseParams, so dass man darüber im Prinzip beliebige key-value-Paare an den HTTP-Aufruf übergeben kann. Da das aber ein Attribut ist, möchte man das (in der Regel) ja nicht dauernd ändern.

Aber das Beispiel mit der Mehrsprachigkeit ist ja nochmal anders: Da stehen die Codier-Anweisungen ja im übergebenen Text drin, und das sollte ohne weiteres auch direkt funktionieren. Die Übergabe des Textes ist ja 1:1 dasselbe wie unter Rhasspy, nur dass hier halt die Rückgabe noch durch einen mp3-Codierer gehauen wird (wenn ich mich recht enstinne).

Habe mal die commandref noch etwas angepaßt, dann wird der mögliche Inhalt von TTS_User vielleicht etwas klarer (so richtig zufrieden bin ich noch nicht):
  <a id="Text2Speech-attr-TTS_User"></a><li>TTS_User<br>
    Actual only used for maryTTS (and Mimic 3, but might be appropriate for any TTS enginge to be addressed via http-GET request). Needed in case if a TTS Engine needs a username and an APIKey for a request. You may hand over any key-value-pair necessary for your enginge, so also Mimic 3 successor Piper should work as well.<br>
    <p>(Full) example for maryTTS (values are defaults and may be left out):</p>
        <p><code>attr t2s TTS_User host=127.0.0.1 port=59125 lang=de_DE voice=de_DE/thorsten_low</code></p>
  </li>
 
 
  <a id="Text2Speech-attr-TTS_User"></a><li>TTS_User<br>
    Derzeit nur für maryTTS (bzw. kompatible Dienste wie Mimic 3) genutzt, sollte aber auch für andere TTS-Dienste funktionieren, die mit http-GET-Aufrufen angesprochen werden können, falls eine Sprachengine zusätzlich zum APIKey einen Usernamen oder sonstige Parametrierungen im Request verlangt. Es können beliebige key-value-Paare übergeben werden<br>
    <p>(Vollständiges) Beispiel für maryTTS (die angegebenen Werte entsprechen den defaults):</p>
        <p><code>attr t2s TTS_User host=127.0.0.1 port=59125 lang=de_DE voice=de_DE/thorsten_low</code></p>
  </li>
Server: HP-elitedesk@Debian 12, 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

Tobias

Die SSML Tags können direkt in den tts text integriert werden. Steht auch so in der Doku. Zumindest funktioniert es für AWS-Polly so.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

JensS

Zitat von: Tobias am 12 März 2024, 10:57:17Die SSML Tags können direkt in den tts text integriert werden. Steht auch so in der Doku. Zumindest funktioniert es für AWS-Polly so.
Klar - SSML-Tags. Folgende Variante funktioniert zweisprachig:
define T2S Text2Speech default
attr T2S TTS_MplayerCall /usr/bin/mplayer
attr T2S TTS_Ressource maryTTS
attr T2S TTS_User host=192.168.100.1 port=59125 lang=de_DE voice=de_DE/thorsten_low ssml=1
set T2S tts '<voice name="de_DE/m-ailabs_low#rebecca_braunert_plunkett">Das ist ein Test in deutsch </voice><voice name="en_US/vctk_low#p236">and this is an test in english.</voice>'
Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Ellert

#1228
@Tobias:
Anliegend gibt es eine Aktualisierung.

Eine lange bestehende falsche Logmeldung wurde bereinigt, siehe https://forum.fhem.de/index.php?topic=100556.0
Eine Warnung beim Neustart von FHEM wurde beseitigt.
Auch im Servermode wird das Reading 'duration' gesetzt.
Der Zeitpunkt, an dem der Remoteplayer aufgerufen wird, wurde optimiert.
Basis ist die Datei aus #1219

Tobias

Vielen Dank, ich habe es eingecheckt. Bitte nochmal soviel von so vielen wie möglich testen. Wenn alles i.O. ist checke ich es im fhem repo ein.
https://github.com/tobiasfaust/MyFHEM

@Ellert, es wäre super wenn du als Basis immer den aktuellen Stand aus dem Git nimmst, wie du das Git in Fhem einbindest steht auch im Readme :)
Ansonsten einfach von dort herunterladen :) (Datei auswählen -> Download Raw File)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter