Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

Toto1973

Und noch eine Frage zum mpv:
Wie bekomme ich denn eine laufende instanz (Webstream) beendet?
Ich suche jetzt schon stunden und bekomme den Webstream, den ich über fhem mit {system "mpv http://sunshinelive.hoerradar.de/sunshinelive-live-mp3-hq"} gestartet habe, nicht mehr abgeschaltet.
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000


Toto1973

#872
Danke für die Antwort!
Manchmal sitzt man einfach auf dem Schlauch!
killall mpv hat den gewünschten Erfolg gebracht!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

riker1

Hallo

we bekomme ich denn am einfachsten Text2 Speack über LMS Squeezebox server und player zum Laufen?

Gibt es da eine Anleitung?

also remote ausgabe über squeezelite - player .
ansonsten natürlich LMS server

Danke

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

duke-f

SB_Server, und dann auch eine SB_Player, der dann auf dem Raspie (vermute ich) über Squeezelite auch Musik ausgibt? Gibt es da nicht eigenständig die Funktion, gesprochenen Text auszugeben?
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

riker1

Hallo,

denke schon, aber klappt eben nicht.

wenn ich es versuche, kommt das im Log.

2018.10.15 14:59:48.620 5 : SB_PLAYER_Set: called with sayText
2018.10.15 14:59:48.638 5 : SB_PLAYER_Set: called with ?
2018-10-15 14:59:48.639 SB_PLAYER SB_PLAYER_000001010089 sayText Hallo
2018.10.15 14:59:48.663 5 : SB_PLAYER_Set: called with ?
2018.10.15 14:59:48.664 5 : SB_PLAYER_Set: called with ?
2018.10.15 14:59:48.665 4 : SB_PLAYER_Get: called with SB_PLAYER_000001010089 ?
2018.10.15 14:59:49.208 5 : SB_PLAYER_Set: called with ?


weiss dann auch nicht weiter.

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

RomanticBoy83

#876
Ich hatte mal ein großes update gefahren und alle Module aktualisiert. Dabei rannte ich in einen bereits vergessenen Fehler, welcher auch hier noch keine Anwendung fand.
Ich nutze im LogDb keine Tabelle "current". Leider wird dies hier vorausgesetzt, weshalb das Modul nach der ersten Ausgabe immer durcheinander kommt (LogDb wirf einen Fehler, welcher einem %hash zugewiesen werden soll). Wird das nicht berücksichtigt, dann taucht in der sub Text2Speech_PrepareSpeech($$) im @text ein ARRAY an position 0 auf und die $hash->{helper}{RUNNING_PID} existiert weiterhin (delete wird nicht mehr aufgerufen).
Abhilfe hatte ich bereits in #834 gepostet:
Zitatreturn undef if(AttrVal($defs{$DbLogDev}, "DbLogType", "History") !~ /Current/); # muss die Tabelle Current nutzen

Einen eventuellen Patch habe ich angehangen.
Wird das zukünftigt berücksichtigt, oder mache ich etwas utopisches indem ich die Tabelle nicht nutze?

RomanticBoy83

Ich habe mal nach einer Lösung für die von euch bezeichnete "MickeyMouseStimme" gesucht.
Ich hatte das Problem nur in verbindung mit meinen Templates und habe mich auf die Suche begeben. Wie von euch bereits vermutet, ist der Fehler im Schritt zur Benutzung von mp3wrap zu suchen.
Meine Templates hatten im vergleich zu den von google geladenen Tönen

  • eine höhere Abtastrate
  • eine höhere bitrate
  • eine variable bitrate
wenn ich diese bei allem meinen Templates nun anpasse und diese angleiche auf die empfangenen aus dem Internet, dann funktioniert auch die Zusammenführung mit mp3wrap.

Mein Script dafür (benennt das Original um wenn dieses nicht 24kHz hat und erzeugt ein Neues unter dem Namen[mono,32kbit,24kHz]):
#!/bin/bash

for curr_song in $( ls *mp3 ); do
    curr_song_base_name=${curr_song%.*}
    rate=$(ffprobe -hide_banner "$curr_song" 2>&1 | grep -oE "([0-9]*) Hz" | rev | cut -c 4- | rev)

    if [[ ${curr_song} =~ "_original.mp3" ]]; then
        # ignore this file
        echo "step over ${curr_song_base_name}"
    elif [ ${rate} -eq 24000 ]; then
        echo "-->${curr_song_base_name}"
        echo "-->${rate}"
    else
        echo "-->${curr_song_base_name}"
        echo "-->${rate} -->24000"
        mv ${curr_song} ${curr_song_base_name}_original.mp3
        ffmpeg -i ${curr_song_base_name}_original.mp3 -ac 1 -ab 32k -ar 24000 -f mp3 - >${curr_song}
    fi
done

Tobias

super,
kannst du das gleich als FAQ o.ä. im Wiki Artikel zu Text2Speech eintragen??
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

fstefan1960

Hallo,

seit Tagen plage ich mich jetzt, suche lese, teste ..
Ich bekomme TTS nicht ans Laufen.

Habe das ganz normal definiert:

Internals:
   ALSADEVICE hw=0.0
   DEF        hw=0.0
   MODE       DIRECT
   NAME       MyTTS
   NR         27
   STATE      Initialized
   TYPE       Text2Speech
   READINGS:
     2018-12-28 15:00:52   duration        1
     2018-12-28 15:00:52   endTime         00:00:00
     2018-12-28 15:00:52   lastFilename    /opt/fhem/www/sounds/S1.mp3
     2018-12-28 15:00:52   playing         0
   helper:
     Text2Speech:
Attributes:
   TTS_FileTemplateDir /opt/fhem/www/sounds
   TTS_MplayerCall /usr/bin/mplayer
   TTS_UseMP3Wrap 1
   verbose    5


mplayer hat auch die richtigen Rechte.

im Log steht:

2018.12.28 15:01:52 4: Text2Speech:/usr/bin/mplayer -ao alsa:device=hw=0.0  -nolirc -noconsolecontrols /opt/fhem/www/sounds/S1.mp3
MPlayer 1.3.0 (Debian), built with gcc-7 (C) 2000-2016 MPlayer Team
Terminal type `unknown' is not defined.

Playing /opt/fhem/www/sounds/S1.mp3.
libavformat version 57.83.100 (external)
Audio only file format detected.
Load subtitles in /opt/fhem/www/sounds/
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 320.0 kbit/22.68% (ratio: 40000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
[AO_ALSA] alsa-lib: pcm_hw.c:1713:(_snd_pcm_hw_open) Invalid value for card
[AO_ALSA] Playback open error: No such file or directory
Failed to initialize audio driver 'alsa:device=hw=0.0'
Could not open/initialize audio device -> no sound.


Nehme ich den Befehl aus dem Log:
/usr/bin/mplayer -ao alsa:device=hw=0.0  -nolirc -noconsolecontrols /opt/fhem/www/sounds/S1.mp3

und gebe den im Terminal ein, läuft alles bestens ....

Was mach ich da falsch?
user fhem ist in der Gruppe audio!

Vielen Dank für Tips
FHEM auf PC: CUL868, CUL 443, HM_LAN, JeeLink
FHEM auf Raspi: CUL868
div. LaCrosse Temp/Hum-Sensoren, HM-Heizkörperventile, Schaltaktoren, etc.

Otto123

Hi,

geht denn überhaupt Sound aus FHEM? Das hier in der FHEM Kommmandozeile"speaker-test -t sine -f 440 -c 2 -s 1"
Rechte Problem am Pfad /opt/fhem/www/sounds ? Eigentümer sollte fhem sein!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Tueftler1983

Hallo ich würde TTS gerne an meinem RPI 3b+ mit Bluetooth Lautsprecher nutzen.
Habe das neueste Stretch installiert und der PI startet im Desktop modus und verbindet sich auch automatisch mit dem Lautsprecher. Wenn ich über vlc player eine Datei wiedergebe kommt der sound auch über den BT Lautsprecher.
Aber wie bekomme ich es hin das von FHEM die TTS Wiedergabe auch über Bluetooth kommt?

Otto123

Hi tueftler1983,

obwohl es im Wiki mehrere Beschreibungen gibt, würde ich Dir raten: bau Dir für vlc (da es ja damit geht) eine Gehhilfe - ähnlich hier.

Einfach ist es nicht  :-X

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

RomanticBoy83

#883
Ich habe mich mal an eine Fehlerbeseitigung gemacht!

Problem:

  • DBLog-Device mit unerwarteten Einstellungen führt zum Absturz des Moduls.
    Diesen Fehler hatte ich hier schon einmal beschrieben und auch einen Patch angehangen, dennoch hier noch einmal der Vollständigkeit halber.
    Bei mir läuft DBLog nicht mit der Tabelle Current. In diese möchte jedoch das Modul selbständig reinschreiben.
    Eine Prüfung schaut nun, ob es überhaupt möglich ist und überspringt diesen Punkt wenn die Tabelle nicht vorhanden ist.
  • Array in der Ansage
    Manchmal tauchte ein Array in der Ansage auf, welches von Google mit seiner Adresse Übersetzt worden ist!
    Im Modul war ein wenig etwas durcheinander sobald mehr als nur ein Satz gesprochen werden sollte. Unter Umständen konnte sich so ein ungewolltes Array als einzelnes Wort unterschmugeln. Korigiert wurde dies in dem jeder eingehende Satz nun als eigenes Array abgearbeitet wird und auch nur jene komplett entfernt werden nach der Wiedergabe.
    Konstrukt wie das nachfolgende, welches hintereinander mehrmals eine Sprachausgabe erwünscht, sollten nun problemfrei möglich sein.
set sprachausgabe tts mein erster text; set sprachausgabe tts mein zweiter text; set sprachausgabe tts mein dritter text;
  • mehrere Templates in einem Satz
    Mehr als eine Angabe eines Templates war nicht möglich. Eine falsche Regex löste das Problem. Beispielsweise sind nun folgende Satz ebenfalls möglich:
set sprachausgabe tts :template01.mp3::template02.mp3:
set sprachausgabe tts :template01.mp3:ein Beispieltext:template02.mp3:

  • Log-Ausgaben unordentlich
    Beim Fehlersuchen fiel mir die unordentliche Log-Ausgabe auf, welche ich ebenfalls verschönert habe. Das Modul zeigt nun durchweg überall seinen Namen in der Zeile.

und nun der Patch
Nachtrag: Der nachfolgend aufgezeigte Fehler "#system($cmd)" wurde bereits nachträglich hier entfernt.

bofax

Zitat von: RomanticBoy83 am 04 Januar 2019, 21:29:17
Ich habe mich mal an eine Fehlerbeseitigung gemacht!

Problem:

  • DBLog-Device mit unerwarteten Einstellungen führt zum Absturz des Moduls.
    Diesen Fehler hatte ich hier schon einmal beschrieben und auch einen Patch angehangen, dennoch hier noch einmal der Vollständigkeit halber.
    Bei mir läuft DBLog nicht mit der Tabelle Current. In diese möchte jedoch das Modul selbständig reinschreiben.
    Eine Prüfung schaut nun, ob es überhaupt möglich ist und überspringt diesen Punkt wenn die Tabelle nicht vorhanden ist.
  • Array in der Ansage
    Manchmal tauchte ein Array in der Ansage auf, welches von Google mit seiner Adresse Übersetzt worden ist!
    Im Modul war ein wenig etwas durcheinander sobald mehr als nur ein Satz gesprochen werden sollte. Unter Umständen konnte sich so ein ungewolltes Array als einzelnes Wort unterschmugeln. Korigiert wurde dies in dem jeder eingehende Satz nun als eigenes Array abgearbeitet wird und auch nur jene komplett entfernt werden nach der Wiedergabe.
    Konstrukt wie das nachfolgende, welches hintereinander mehrmals eine Sprachausgabe erwünscht, sollten nun problemfrei möglich sein.

Diese Problem scheint nun behoben.

[/list]set sprachausgabe tts mein erster text; set sprachausgabe tts mein zweiter text; set sprachausgabe tts mein dritter text;
  • mehrere Templates in einem Satz
    Mehr als eine Angabe eines Templates war nicht möglich. Eine falsche Regex löste das Problem. Beispielsweise sind nun folgende Satz ebenfalls möglich:
set sprachausgabe tts :template01.mp3::template02.mp3:
set sprachausgabe tts :template01.mp3:ein Beispieltext:template02.mp3:

  • Log-Ausgaben unordentlich
    Beim Fehlersuchen fiel mir die unordentliche Log-Ausgabe auf, welche ich ebenfalls verschönert habe. Das Modul zeigt nun durchweg überall seinen Namen in der Zeile.

und nun der Patch

Vielen Dank für den Patch. Danach ging bei mir erstmal gar nichts mehr. Das Logging war sauber, auf CLI konnte ich mit dem erzeugten cmd auch Dateien abspielen. Dann bin ich auf folgendes gestossen:

-    Log3 $hash->{NAME}, 4, "Text2Speech:" .$cmd;
-    system($cmd);
+    Log3 $hash->{NAME}, 4, $hash->{NAME}.":" .$cmd;
+    #system($cmd);


System ist auskommentiert. Damit geht dann natürlich nichts mehr. Nach entfernen der Raute lief es dann.

Dennoch habe ich weiterhin Probleme, die ganz klar der mp3wrap verursacht. Er erzeugt mp3-Files, die mplayer in eine Endlosschleife schicken.
Ich habe mich damit beholfen, mp3wrap abzuschalten und templates / erzeugten Text nacheinander über zwei Kommandos abzuspielen.

Viele Grüße

bofax
diverse RPi 2/3, RaspBee-Funkmodul, Philips Hue+Ikea Tradfri Devices, Netatmo Presence, Yamaha ISX-18D, Fritzboxen 7590