Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

Ellert

Nach meiner teilweisen Umstallung auf VoiceRSS habe ich eine holperige Datumsansage.

Google hat bei dem Text "21-12-2015" das Datum flüssig gelesen. VioceRSS liest dieses Format nicht, sondern die normale deutsche Schreibung "21.12.2015" und das sogar abhängig vom Satzbau. Also "Am 21.12.2015" als "Am einundzwanzigsten zwölften ..." und "Heute ist der 21.12.2015" als "... einundzwanzigste zwölfte ...".

Leider splittet Text2Speech den Text beim Punkt in Sätze auf. Die Wiedergabe ist dann "einundzwanzigster" pause "zwölfter"...

Bevor ich anfange das Datum über hashes in Worte zu fassen, würde ich gern wissen ob schon jemand eine einfachere Lösung hat?


Tobias

Zitat von: berrnd am 13 Oktober 2015, 20:32:40
Es lief bei mir damit erst mal besser, nach testweise sehr vielen Aufrufen in sehr kurzer Zeit gabs aber auch damit die gleiche Fehlerseite...

Deswegen auch die caches bei immer wiederkehrenden gleichbleibenden Sätzen...
zb, Status Alarmanlage, Müllabfuhr, Status Fenster/Türen etc

Ok, bei Wettervorhersagen bringt das nix
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

berrnd

#527
@Hollo
Klar hab ich das gelesen - und gesehen, dass eben noch nicht alles ausprobiert wurde, was in verlinktem Beitrag stand.

Aber ja, auch meine Änderungen haben im Endeffekt nicht wirklich was gebracht, auch bei mir blieb heute morgen wieder alles stumm.
Ich hab nun einen neue (offline) Engine eingebaut (SVOX-PICO, die aus Android), Installation (auf dem Raspberry Pi) siehe z. B. hier oder auch in der "Device specific help".

Anbei das geänderte Modul sowie auch "Sprachproben".
Attribut "TTS_Ressource" dann auf "pico" setzen.
Caching, etc. läuft wie mit den anderen Engines.

Ich finde die hört sich ganz gut an - auch dass alles offline passiert gefällt mir besser, alles zu Google zu schicken was ich mir so erzählen lasse wir mir schon länger ein Dorn im Auge...

Edit 15.10.2015 14:12
Im Anhang war die falsche 98_Text2Speech.pm, jetzt korrigiert

chunter1

#528
@berrnd
Danke für das Update!
Werds gleich heute Abend ausprobieren.
Die online-Methode über Google war mir auch schon immer ein Dorn im Auge!
Primär wegen der Tatsache, dass Google, NSA, BND, GCHQ etc. eh schon genug über uns wissen... und zweitens weil be fehlender Internetverbindung sonst keine wichtigen Sprachausgaben möglich sind.


Ellert

Zur Zeit ist mit dem Modul 98_Text2Speech.pm nicht eindeutig zu erkennen, wann das Abspielen eines Textes beendet ist.

Man kann das mit dem sich aktualisierenden Reading "duration" nicht eindeutig feststellen, da beim Aktualisieren nicht bekannt ist, ob es die letzte Aktualisierung ist.

Mein Vorschlag ist, dem Modul ein Reading "playing" hinzuzufügen. Dieses Reading wird 1, wenn Text abgespielt wird. Es wird 0, wenn das Abspielen beendet wird.

Dieses Reading kann z.B. dazu dienen, dass
- spontane Ansagen blockiert werden, solange Text abgespielt wird
- eine nachfolgende Ansage gestartet wird
- Musik- oder Videowiedergabe pausiert, solange Text abgespielt wird.

Die offizielle Version wäre durch folgende Zeilen zu ergänzen:
nach Zeile 417
readingsSingleUpdate($hash, "playing", "1", 1);

und nach Zeile 865
  } else {
    readingsSingleUpdate($hash, "playing", "0", 1);



@Tobias: Würdest Du, falls nichts dagegen spricht, die Änderung auf den Weg bringen?

Ich habe die geänderte Datei mal angehängt.

Tobias

Hi berrnd,

leider enthält das angehängte Modul bei dir keine "pico" Ressource. Hast du die falsche angehangen?

" TTS_Ressource:ESpeak,". join(",", sort keys %ttsHost).
Ich hätte soetwas erwartet:
" TTS_Ressource:ESpeak,SVOX-PICO,". join(",", sort keys %ttsHost).

Werde ich natürlich ins Repo übernehmen wenn es funktioniert. Wärst du so nett und würdest den Wiki Artikel überarbeiten mit den Installtionsmaßnahmen zu Pico?
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

berrnd

Hi Tobias, sorry, da hab ich wohl tatsächlich die falsche Datei erwischt, dort ist ja gar nichts von meinen Änderungen drin - hier nochmal im Anhang und ich habs auch in meinem Beitrag oben korrigiert um Verwirrung zu vermeiden.

Wiki kann ich gerne ergänzen, wobei ich mir zuerst noch einen Account geben lassen muss - und man müsste das dann mal noch auf einem "normalen" Linux-System ausprobieren, ich habs bisher nur wie in verlinktem Beitrag beschrieben mit dem vorkompilierten ARM-Paket auf einem Raspberry Pi probiert, sonst sollten theoretisch die "libttspico-utils" reichen...

Sobald ich das getestet hab ergänz ich das Wiki und auch die Commandref im Modul.

Tobias

Ich habe mal ein paar texteinrückungen vorgenommen, pico geändert auf SVOX-pico und den Änderungswunsch (Reading: playing) eingebaut. Bitte mit diesem Modul hier weitertesten.

Hast du auch berücksichtigt das direkte mp3 Dateien angegeben werden können bzw Filemappings angegeben sein können? Funktioniert das auch mit SVOX-pico?
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

berrnd

Direkte Dateien sowie auch Mappings funktionieren mit SVOX-pico nicht, mit Espeak übrigens auch nicht.

Sicher wäre es gut wenn man jetzt nicht alles aus dem Google-/VoiceRSS-Teil kopiert sondern ein wenig umbaut - leider bin ich in Perl noch nicht wirklich Zuhause (komme eher aus der .Net-Welt) sodass ich das wenn dann mal nur mit viel Zeit hinbekomme ... falls zwischenzeitlich niemand will...  :D

Zwischenzeitlich hab ich das ganze mal auf einem Debian x64 System ausprobiert, dort reichen die libttspico-utils.
Das vorkompilierte ARM-Paket wollte ich jetzt nicht ungefragt in die Hilfe bzw. ins Wiki übernehmen, deswegen hab ich beim Autor mal angefragt, sobalds da eine Antwort gibt ergänze ich dann dort noch die Infos.

harway2007

bei mir steht nach dem Download der letzten Text2Speech
"SVOX-picoGoogle" in der TTS_Ressource
und es findet keine Sprachausgabe statt..
wenn ich es mit der hand auf "SVOX-pico" setzte
folgender Logfile Fehler:
2015.10.15 19:15:59 4: MyTTS_pico: Auflistung der Textbausteine nach Aufbereitung:
2015.10.15 19:15:59 4: MyTTS_pico: 0 => Hallo 1,;
2015.10.15 19:15:59 4: Verwende TTS Spracheinstellung: Deutsch
2015.10.15 19:15:59 4: Text2Speech:pico2wave --lang=de-DE --wave="cache/4d0104e7dbee96bfa09bf7554bc8b39b.wav" "Hallo 1,;"
2015.10.15 19:15:59 4: Text2Speech:lame "cache/4d0104e7dbee96bfa09bf7554bc8b39b.wav" "cache/4d0104e7dbee96bfa09bf7554bc8b39b.mp3"
sh: 1: lame: not found

auf Betriebsystemebenen mit :
pico2wave --lang=de-DE --wave=/tmp/test.wav "Hallo 1 "; play /tmp/test.wav;rm /tmp/test.wav
höre ich die Ausgabe..

berrnd

Du müsstest lame noch installieren, steht auch schon in der im Modul integrierten Commandref:
ZitatInstallation of the engine and lame is required [...]:
sudo apt-get install libpopt-dev lame

Mit lame werden die wav-Dateien in mp3 umgewandelt, das Modul ermittelt die Länge der Wiedergabe bzw. Datei, und das ist aktuell nur für mp3 implementiert...

harway2007

 ;D ;D ;D ;D ;D tausend mal entschuldigung ... stimmt !!!!!

daschauher

Hallo,  bei mir funktioniert es leider auch nicht.
Habe das hier im log gefunden. Hat du ne Ahnung was ich da machen kann?
2015.10.15 20:05:26 4: Text2Speech: Verwende SVOX-picoGoogle OnlineResource zum Download
2015.10.15 20:05:26 4: Text2Speech: Hole URL: http://&Die%20Entscheidung%20ob%20gel%C3%BCftet%20wird%20liegt%20bei%20dir.%2C%3B
2015.10.15 20:05:26 3: Text2Speech: Fehler beim abrufen der Daten von SVOX-picoGoogle Translator

berrnd

Auch bei dir steht im Attribut "TTS_Ressource" fälschlicherweise "SVOX-picoGoogle" statt nur "SVOX-pico", bitte manuell anpassen, ansonsten hab ich das auch schon korrgiert, meinen aktuellen stand findet ihr hier.

chunter1

Funktioniert das neue Update eigentlich auch wie bisher mit der Squeezebox oder geht die Sprachausgabe nur via soundcard?