Squeezebox Modul - erste Version

Begonnen von bugster_de, 17 Dezember 2013, 22:12:10

Vorheriges Thema - Nächstes Thema

felix.steinbeis

#900
Hallo zusammen,

leider funktioniert bei mir TTS auch nicht mehr so richtig. Ein oder zwei Google-TTS-Nachrichten kann ich durchsagen lassen. Dann nichts mehr.

Danach kommt ein 503 auf der Squezzebox (im Browser nicht) oder es geht auf der SB alles viel zu schnell.

Auch ist danach das Senderbild verschwunden.

Verwendet habe ich die aktuelle 97_SB... und die 98_SB von weiter oben.
Die 98_Text2Speech.pm ist auch die aktuell aus dem letzten Update.

Ich hoffe es gibt bald wieder eine Lösung.

Danke und Gruß
Felix

Tobias

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

Rince

Zitat@Rince: Es wäre sinnvoll die TTS-Erzeugung und Ausgabe zu trennen. Ich muss mir aber noch Gedanken machen wie das praktisch gelöst werden soll. Ein Möglichkeit wäre ein zentrales TTS-Modul zu erstellen welches sich um das Organisieren und Verwalten der MP3s kümmert (mit diversen Queues). Sollte das Modul feststellen dass für einen Text kein MP3 vorliegt könnte es auf Provider-spezifische Module zurückgreifen, eventuell mit Fallback falls ein Dienst nicht verfügbar ist. Das Player-Modul würde seine Anfrage an das TTS-Modul senden und dieses sich um den Rest kümmern.

Das wäre letztlich ein dreistufiges Modell.

Hatte ich auch überlegt, aber Angst, dass sofort ein "NEIN viel zu komplex" käme :)


Das würde beuten:
1. Ein oder mehrere Module Sprachsynthese
die bekommen den Text den der User vorgelesen haben möchte in kleinen Häppchen portioniert (z.B. als ganze Sätze)
Das kann gehen über espeak, Ivona, Google TTS => für jeden Anbieter ein Modul
20_GoogleTTS
20_IvonaTTS
20_espeakTTS

2. Ein zentrales Modul "99_MP3Assembling"
Dieses fügt nun die einzelnen MP3s (also 1 für jeden Satz, oder  aber auch zusätzlich einzubindene MP3 Files ( |Donnergrollen.mp| ) zu einer fertigen MP3 Datei zusammen.
Dabei sollte es sich auch um eine eventuell notwendige Formatkonvertierung kümmern (MP3 stereo / mono, 128kbit, 320 kbit)
Es wird für das fertige Teil eine Prüfsumme aufgebaut (PrüfsummeKompletteAudioausgabe.mp3)
Es wird für die Einzelsätze eine Prüfsumme aufgebaut

3. Entweder kleine Winzig-Module oder auch gleich in anderen Modulen integriert (bei der Squeezebox also z.B. den Befehl Talk),
welches dafür zuständig ist, 1. den Text entgegen zu nehmen, und die dann empfangene PrüfsummeKompletteAudioausgabe.mp3 physikalisch hörbar zu machen
Diese Teile kontrollieren also die Audioausgabe und fragen den User, Welchen Text er will

Im Fall von Squeezebox also: Playlist saven, Neues MP3 abspielen, Playlist restaurieren

Könnte aber auch ein mPlayer-Modul sein:
mPlayer mit passendem File öffnen



Der strukturelle Ablauf wäre dann möglicherweise folgender:

Modul3:
20_mplayerModul

set mplayerModul Google_TTS |2_sec_Pause| |Fanfare| Hallo lieber Gebieter, schön, dass du wieder zu Hause bist |Fanfare|


Jetzt wird das ganze an 99_MP3Assembling weitergegeben:
Part1: 2_sec_Pause.mp3
Part2: Fanfare.mp3
Part3: Hallo lieber Gebieter,
Part4: schön
Part5: dass du wieder zu Hause bist
Part6: Fanfare.mp3
gewünschtes TTS: 20_GoogleTTS

99_MP3Assebling prüft jetzt:
2_sec_Pause.mp3 vorhanden?
Fanfare.mp3 vorhanden?
Hallo lieber Gebieter, (Prüfsumme vorhanden? GoogleTTS_081512345.mp3) => wenn nein, Anweisung an 20_GoogleTTS: von Google "Hallo lieber Gebieter," vorlesen lassen und als GoogleTTS_081512345.mp3 speichern)
schön  (Prüfsumme vorhanden? GoogleTTS_081512345.mp3) => wenn nein, Anweisung an 20_GoogleTTS: von Google "schön" vorlesen lassen und als GoogleTTS_08154321.mp3 speichern)
....
Fanfare.mp3 vorhanden?

Jetzt bastelt 99_MP3Assembling
2_sec_Pause.mp3+Fanfare.mp3+GoogleTTS_081512345.mp3+GoogleTTS_081512345.mp3+Part5.mp3+Fanfare.mp3 = <Google_TTS_Prüfsumme aus |2_sec_Pause| |Fanfare| Hallo lieber Gebieter, schön, dass du wieder zu Hause bist |Fanfare|>.mp3


Meldet dem aufrufenden Modul zurück:
Dateiname lautet:  <Google_TTS_Prüfsumme aus |2_sec_Pause| |Fanfare| Hallo lieber Gebieter, schön, dass du wieder zu Hause bist |Fanfare|>.mp3


Somit könnten wir: alle Satzteile mit der verwendeten TTS Engine cachen

Hätten oft wiederholende ganze Sätze auf der Platte

Könnten easy neue TTS Systeme einpflegen

Könnten easy neue Audiowiedergabegeräte anbinden...
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

felix.steinbeis

#903
Hallo zusammen,

also mit dem Senderbild bzw. Cover habe ich anbei mal die Internals aufgelistet.
Sobald ich die TTS-Funktion nutze, egal ob TTS funktioniert oder nicht, habe ich nach Rückkehr zur vorherigen Playlist kein Cover mehr.

Vor TTS mit Cover (Sender über LMS ausgewählt):

   ARTWORKURL http%3A%2F%2Fcdn-radiotime-logos.tunein.com%2Fs96752q.png
   CANPOWEROFF 1
   COVERARTLINK none
   COVERARTURL http://www.mysqueezebox.com/public/imageproxy?u=http%3A%2F%2Fcdn-radiotime-logos.tunein.com%2Fs96752q.png&h=50&w=50
   COVERID    -106624392


Nach TTS ohne Cover:

   ARTWORKURL ?
   CANPOWEROFF 1
   COVERARTLINK none
   COVERARTURL http://192.168.12.6:9002/music/-106624392/cover_50x50.jpg
   COVERID    -106624392


In meiner alten, bisherigen Version von 98_SB_PLAYER.pm (# $Id: 98_SB_PLAYER.pm 8397 2015-04-07 19:48:18Z chrisd70 $) funktioniert das mit dem Cover noch.

TTS über Google habe ich inzwischen mit "client=tw-ob" hinbekommen. Ich nehme an, hier kommt die 98_Text2Speech.pm nicht zum Einsatz, oder?

Viele Grüße
Felix

ChrisD

Hallo,

@Felix:
Das Text2Speech-Modul wird nicht für die TTS-Funktion benötigt. Der LMS hat alles um dies selbst zu machen. Das Text2Speech-Modul kann aber optional eingesetzt werden um die Cache-Funktion zu verwenden. Es gibt dabei allerdings einige Einschränkungen die man beachten muss.

Das Problem mit dem Cover muss mich mir noch ansehen.

Im Moment funktioniert TTS über Google mit dem von dir angegebenen client=tw-ob. Wie lange das gut geht weiß ich aber nicht.
Das aktuell funktionierende Attribut kann man mit:
attr meinPlayer ttslink http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob
setzen.

@Rince:
So ungefähr habe ich mir das vorgestellt.

Grüße,

ChrisD

ChrisD

Hallo,

@Felix: Ich habe versucht das Problem mit den Covern zu beheben, kannst du testen ob es mit der Version 0048 funktioniert ?

Geändert wurden:
- path statt url bei Remote-Streams speichern (Problem coverart)
- Dokumentation überarbeitet (heppel)
- Google TTS-Link angepasst
- Text2Speech(SB)-Anbindung für SVOX-pico und VoiceRSS geändert

Update wie üblich mit
update all https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/sb/controls_squeezebox.txt

Ich möchte mich bei heppel bedanken für seine Arbeit an der Dokumentation. Dank seiner Hilfe ist die Dokumentation des Player-Modules jetzt komplett.

Grüße,

ChrisD

kvo1

Hi ChrisD,
Danke, habe das gleich mal "upgedatet"  ;)

ZitatIm Moment funktioniert TTS über Google mit dem von dir angegebenen client=tw-ob. Wie lange das gut geht weiß ich aber nicht.
Das aktuell funktionierende Attribut kann man mit:
Code: [Auswählen]

attr meinPlayer ttslink http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob

setzen.

Was genau bewirkt client=tw-ob ??

Bei mir läuft das mit dem TTS über Google so ..... (hat ich mal von Dir )
attr meinPlayer ttslink http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=t&prev=input

wobei mir auch prev=input nicht klar ist , steht aber sicher irgendwo !

Gruss
kvo1
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

felix.steinbeis

Zitat von: ChrisD am 31 Oktober 2015, 10:39:28
Hallo,

@Felix: Ich habe versucht das Problem mit den Covern zu beheben, kannst du testen ob es mit der Version 0048 funktioniert ?

Hallo ChrisD,

funktioniert alles wieder mit den Covern. Vielen Dank für das schnelle Fixing.

Viele Grüße
Felix


@kvo1
Mit client=tw-ob kommt derzeit auch nach mehreren TTS-Ansagen keine "503 Service unavailable" Fehlermeldung. Warum das so ist, weiß ich auch nicht.
Siehe dazu auch hier: http://forum.fhem.de/index.php/topic,18481.msg352166.html#msg352166

FHEm2005

#908
Hallo ichbrauche mal eure Hilfe, weil ich seit einem Monat nicht weiterkomme.

Ich will den Text "Hallo" mir über die Squeezebox ansagen lassen. Zuerst habe ich es mit dem Google-link versucht. Ergebnis: Fehlanzeige. Heute habe ich versucht, den Link von Voicerss zu benutzen. Ergebnis: Fehlanzeige. Der Link wird mir zwar richtig in der SBT angezeigt, aber sie gibt keinen Ton ab. Außerdem schaltet sie nicht zum Internetsender zurück, aber der Link bleibt in der Anzeige.

Es ist unerheblich, ob ich eine SB-Touch oder eine SB-Classic nehme, die Auswirkung ist identisch: Keine Ansage.

Fehlermeldungen im Log sind keine vorhabnden, auch nicht bei verbose 5.

Hier das Listing:

Internals:
   AMPLIFIER  none
   ARTWORKURL ?
   CANPOWEROFF 1
   COVERARTLINK none
   COVERARTURL http://192.168.2.14:9002/music/current/cover_50x50.jpg?player=00:15:af:b8:ac:25&x=10129
   COVERID    ?
   DEF        00:15:af:b8:ac:25
   DISPLAYTYPE none
   FAVREF
   FAVSELECT  -
   FAVSET     favorites
   FAVSTR     WDR3_-_Aus_Lust_am_Hoeren_Bonn,1LIVE_-_Das_junge_Radio_des_WDR,Titelinformationen_1FM_-_50s_and_60s,Antenne_Bayern_Oldies_but_Goldies,1LIVE_-_Das_junge_Radio_des_WDR_Bonn,Bear_Family_Radio,WDR4_-_Melodien_fuer_ein_gutes_Gefuehl_Bonn,Heart_Beat_Radio_Memory_Hits,WDR2_Aachen_und_Region_Koeln
   FHEMUID    0015afb8ac25
   HAL_MSGCNT 1826
   HAL_TIME   2015-11-08 17:38:22
   IODev      HAL
   ISREMOTESTREAM 0
   LASTALARM  1
   LASTANSWER mode stop
   LASTInputDev HAL
   MODEL      squeezeplay
   MSGCNT     1826
   NAME       SBT.Buero
   NR         1131
   NTFY_ORDER 50-SBT.Buero
   PLAYERIP   192.168.2.5:55064
   PLAYERMAC  00:15:af:b8:ac:25
   PLAYERNAME SBT.Buero
   SBSERVER   192.168.2.14:9002
   SERVERPLAYLISTS
   STATE      on
   SYNCED     no
   SYNCGROUP  none
   SYNCGROUPPN none
   SYNCMASTER none
   SYNCMASTERPN none
   SYNCMASTERS 00:04:20:23:72:16
   SYNCVOLUME 0
   TYPE       SB_PLAYER
   WILLSLEEPIN ?
   Readings:
     2015-11-08 17:38:22   alarmsDefaultVolume 56
     2015-11-08 17:38:22   alarmsEnabled   on
     2015-11-08 17:38:22   alarmsFadeIn    on
     2015-11-08 17:38:22   alarmsSnooze    12
     2015-11-08 17:38:22   alarmsTimeout   58
     2015-11-08 17:38:22   connected       1
     2015-11-08 17:38:22   coverarturl     http://192.168.2.14:9002/music/current/cover_50x50.jpg?player=00:15:af:b8:ac:25&x=10129
     2015-11-08 17:38:22   currentAlbum
     2015-11-08 17:38:22   currentArtist
     2015-11-08 17:33:22   currentMedia    http://api.voicerss.org/?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&src=Hallo.&hl=de-de
     2015-11-08 17:38:22   currentPlaylistName -
     2015-11-08 17:38:22   currentPlaylistUrl
     2015-11-08 17:38:22   currentTitle
     2015-11-08 17:38:22   currentTrackPosition 0
     2015-11-08 17:33:23   duration        0
     2015-11-08 17:34:15   favorites       -
     2015-11-08 16:24:05   lastir          ?
     2015-11-08 17:33:23   lastunkowncmd   displaynotify showbriefly HASH(0x10e46604) HASH(0x13bd4508)
     2015-11-08 17:38:22   playStatus      stopped
     2015-11-08 17:33:33   playlistCurrentTrack 1
     2015-11-08 17:38:22   playlistTracks  0
     2015-11-08 17:38:22   playlists       -
     2015-11-08 17:38:22   power           on
     2015-11-08 17:38:22   presence        present
     2015-11-08 17:38:22   repeat          off
     2015-11-08 17:38:22   sb_name         SBT.Buero
     2015-11-08 17:38:22   shuffle         off
     2015-11-08 17:38:22   signalstrength  wired
     2015-11-08 17:38:22   state           on
     2015-11-08 17:38:22   synced          none
     2015-11-08 17:33:55   talkStatus      idle
     2015-11-08 17:38:22   volume          100
     2015-11-08 17:38:22   volumeStraight  100
   Helper:
     ALARMSCOUNT 0
     CoverOk    1
     amplifierDelayOffPause 0
     amplifierDelayOffPower 0
     amplifierDelayOffStop 0
     lastGetStatus 1447000702.34952
     lastModeQuery 1447000702.38859
     lastTimeQuery 1447000702.37135
     path       0
     playerStatusOK 1
     playerStatusOKCounter 0
     playlistIds -329076580
     ttsExtstate 0
     ttsVolume  100
     ttsstate   0
     Sb_player_favs:
     .......
     .......
     Sb_player_playlists:
     Sb_player_syncmasters:
       00:04:20:23:72:16:
         MAC        000420237216
     Alarmplaylists:
       Aktuelle_wiedergabeliste_verwenden:
         category   Aktuelle Wiedergabeliste
         title      Aktuelle Wiedergabeliste verwenden
         url        Aktuelle Wiedergabeliste verwenden
       Http1fm50sand60sradiodeplaylistm3u:
         category   Favoriten
         title      Titelinformationen (1.FM - 50s and 60s)
         url        http://1fm50sand60s.radio.de/playlist.m3u
       Httpopmlradiotimecomtuneashxid=s102887formats=aacoggmp3wmprowmawmvoicerealpartnerid=16serial=xxxxxxxxxxxxxxxxxxxxxxx:
       ......
       ......
       Loopcontentmysqueezeboxcomstaticsoundseffectsambulancemp3:
         category   Soundeffekte
         title      Martinshorn
         url        loop://content.mysqueezebox.com/static/sounds/effects/ambulance.mp3
       ......
       ......
       Randomplayalbum:
         category   Zufallsmix
         title      Albummix
         url        randomplay://album
       Randomplaycontributor:
         category   Zufallsmix
         title      Interpretenmix
         url        randomplay://contributor
       Randomplaytrack:
         category   Zufallsmix
         title      Titelmix
         url        randomplay://track
       Randomplayyear:
         category   Zufallsmix
         title      Jahrgangsmix
         url        randomplay://year
     Elapsedtime:
       TS         1447000702.44308
       VAL        0
     Myplaylists:
     Savedplayerstate:
       Xxttsxx:
         SYNCGROUP  none
         SYNCMASTER none
         elapsedTime
         favorite   Heart_Beat_Radio_Memory_Hits
         path       http://opml.radiotime.com/Tune.ashx?id=s102887&formats=aac,ogg,mp3,wmpro,wma,wmvoice,real&partnerId=16&serial=xxxxxxxxxxxxx
         playStatus playing
         playlist   Heart_Beat_Radio_Memory_Hits
         playlistCurrentTrack 0
         playlistIds -329820468
         power      on
         repeat     off
         volumeStraight 100
         Playlisturls:
           -329820468 http://s8.pop-stream.de:8590/
     Text2speech:
     Ttsoptions:
       debug      1
Attributes:
   IODev      HAL
   amplifier  play
   coverartheight 50
   coverartwidth 50
   donotnotify true
   fadeinsecs 10
   idismac    true
   room       SB_PLAYER
   serverautoon true
   ttsAPIKey  xxxxxxxxxxxxxxxxxxxxxxxxxxxx (hier steht bei mir der richtige Key)
   ttsOptions debug,
   ttsVolume  100
   ttslanguage de-de
   ttslink    http://api.voicerss.org/?key=<APIKEY>&src=<TEXT>&hl=<LANG>
   userReadings sb_name {"SBT.Buero"}
   verbose    5
   volumeLimit 100
   volumeStep 10


ich habe keine Idee mehr, wo ich ansetzen kann/sollte.
Viel Grüße
Eberhard


Edit: Wenn ich den produzierten Link in eine url-leiste eintrage und abschicke, bekomme ich den Text angesagt. Also: Am Link kann es m.E. nicht liegen
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

ChrisD

Hallo,

Kannst du mit
set SBT.Buero playlist play http://api.voicerss.org/?key=xxx&src=Hallo.&hl=de-de
testen ob der Player den Stream überhaupt abspielen kann ?

Grüße,

ChrisD

Belei

Moin,
werden eigentlich inzwischen die Player  die nur mit mysqueezebox.com verbunden sind unterstützt?

Fhem auf RaspberryPi 2 RFXTRX433
Homematic Usb Stick Diverse 433Mhz Dosen
Yodaa Rolladen Fritzpowerline 3xHM-LC-Sw1PBU-FM
1xHM-SEC-SC-2

FHEm2005

Zitat von: ChrisD am 09 November 2015, 21:11:46
Kannst du mit
set SBT.Buero playlist play http://api.voicerss.org/?key=xxx&src=Hallo.&hl=de-de
testen ob der Player den Stream überhaupt abspielen kann ?

Hallo Chris,
eine sehr gute Frage und leider eine negative Antwort: Es geht nicht. Der Link alleine in Firefox, also ohne "set SBT.Buero play playlist", läuft tadellos.

... und jetzt? :-)

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

ChrisD

Hallo,

Kannst du probieren ob
set SBT.Buero playlist play http://api.voicerss.org/?key=xxx&src=Hallo.&hl=de-de&f=44khz_16bit_monofunktioniert ?

Grüße,

ChrisD



FHEm2005

Zitat von: ChrisD am 10 November 2015, 13:17:34
Kannst du probieren ob
set SBT.Buero playlist play http://api.voicerss.org/?key=xxx&src=Hallo.&hl=de-de&f=44khz_16bit_monofunktioniert ?

Ich sehe Licht am Ende des Tunnels. Jetzt kann ich zwar den Text hören, er bleibt aber in dem Status stehen und schaltet nicht mehr auf den ursprünglichen Sender zurück. Bei meiner SBT geht das Senderlogo weg, der Link wird angezeigt, der Text wird ausgegeben  -  und das wars. Alles bliebt so wie es ist. Im Displaykopf steht "Angehalten". Da meine Radiostationen alle als "favorites" gesoeichert sind, weckt der Befehl

set SBT.Buero favorites <radionamen>
die SBT wieder auf. Der Puffer muss neu gefüllt werden, danach spielt sie wieder und "Aktueller Titel" wird angezeigt.

Immerhin schon die halbe Miete.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

ChrisD

Hallo,

Dass bei dem Befehl nicht auf den ursprünglichen Sender zurückgesprungen wird ist völlig normal. Der Befehl weist den LMS nur an einen Netzwerkstream abzuspielen.

Es sieht danach aus als ob deine Player mit dem Standardformat von VoiceRSS und Google (8kHz) nicht klarkommen. Zumindest für VoiceRSS kannst du das Problem aber umgehen. Du kannst versuchen ttslink auf
attr SBT.Buero ttslink http://api.voicerss.org/?key=<APIKEY>&src=<TEXT>&hl=<LANG>&f=44khz_16bit_mono
zu setzen und mit
set SBT.Buero talk Testeinen Text vorlesen zu lassen.

Grüße,

ChrisD