Hauptmenü

Modul 96_SIP

Begonnen von Wzut, 19 Februar 2017, 19:10:09

Vorheriges Thema - Nächstes Thema

Wzut

#495
Zitat von: Rewe2000 am 06 Dezember 2017, 19:54:43
Das Fehlverhalten tritt nur auf
Works as designed , siehe Wiki :
ZitatWICHTIG: wählt die maxtime groß genug damit das Audiofile auch wirklich komplett abgespielt werden kann, bzw. hört's euch auch bis zum Ende an! Wenn ein priorisierter Anruf vorzeitig endet (quasi NOK) wird er nach 1 Minute wiederholt, und zwar so lange bis er erfolgreich war
Einzig über die 1 Minute kann man jetzt diskutieren da es inzwischen eine Variable ist.
In dem Zusammenhang würde ich auch den Satz etwas darüber beachten mit der neagtiven Wiederholzahl :
ZitatWird als Wiederholungsfaktor ein negativer Wert angegeben (z.B. *-2), passiert folgendes: Die Nachricht wird zwar genau wie bei *2 dreimal abgespielt, allerdings erlaubt das - vor der 2 das die Nachricht nur einmal vollständig übertragen werden muß.

zum Thema des Abbruchs bei Text2Speech :
Ich bin kein T2S Guru, meine aber irgendwo gelesen zu haben das es die Möglichkeit gibt das T2S entweder mehere kleine mp3 Datein erzeugt oder eine große.
Ich vermute bei dem Abbruch handelt es sich um den ersten Fall und die anderen Datein fallen schlichtweg unter den Tisch. Bitte hier mal direkt mit T2S alleine testen bzw  ggf. Logs mit höherem verbose Level beim T2S Device beobachten. Bzw. im Sip Log steht ja immer der Filename der mp3 Datei, diese mal runerladen und sich in einem entsprechenden Player extra anhöhren, ist sie da vollständig ?

Edit , aus der T2S command.ref :
ZitatTTS_Delemiter
optional: By using the google engine, its not possible to convert more than 100 characters in a single audio brick. With a delemiter the audio brick will be split at this character. A delemiter must be a single character.!
By default, ech audio brick will be split at sentence end. Is a single sentence longer than 100 characters, the sentence will be split additionally at comma, semicolon and the word and.
Notice: Only available in locally instances with Google engine!

und
ZitatTTS_UseMP3Wrap
Optional: Für eine flüssige Sprachausgabe ist es zu empfehlen, die einzelnen vorher per Google geladenen Sprachbausteine zu einem einzelnen Sprachbaustein zusammenfassen zu lassen bevor dieses per Mplayer ausgegeben werden. Dazu muss Mp3Wrap installiert werden.
apt-get install mp3wrap
Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Wzut

Hier mal mein T2S Log zu dem Thema :
2017.12.07 07:41:27 4: myT2S: Auflistung der Textbausteine nach Aufbereitung:
2017.12.07 07:41:27 4: myT2S: 0 => Hallo hier spricht deine Waschmaschine mit dir
2017.12.07 07:41:27 4: myT2S: 1 => und will dir etwas sagen was dir wahrscheinlich nicht gefallen wird,;
2017.12.07 07:41:27 4: Verwende TTS Spracheinstellung: Deutsch
2017.12.07 07:41:27 4: Text2Speech: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: f622fd00af305c1d0179bde7f06ad90b.mp3
2017.12.07 07:41:27 4: Text2Speech: Verwende Google OnlineResource zum Download
2017.12.07 07:41:27 4: Text2Speech: Hole URL: http://translate.google.com/translate_tts?tl=de&client=tw-ob&q=Hallo%20hier%20spricht%20deine%20Waschmaschine%20mit%20dir
2017.12.07 07:41:27 4: Text2Speech: Schreibe mp3 in die Datei cache/f622fd00af305c1d0179bde7f06ad90b.mp3 mit 14496 Bytes
2017.12.07 07:41:27 4: Text2Speech: Bearbeite jetzt den Text: Hallo hier spricht deine Waschmaschine mit dir
2017.12.07 07:41:27 4: Text2Speech: cache/f622fd00af305c1d0179bde7f06ad90b.mp3 gefunden, kein Download
2017.12.07 07:41:27 4: Verwende TTS Spracheinstellung: Deutsch
2017.12.07 07:41:27 4: Text2Speech: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: 09c65b7ea15d06edb704eac2127b20ff.mp3
2017.12.07 07:41:27 4: Text2Speech: Verwende Google OnlineResource zum Download
2017.12.07 07:41:27 4: Text2Speech: Hole URL: http://translate.google.com/translate_tts?tl=de&client=tw-ob&q=und%20will%20dir%20etwas%20sagen%20was%20dir%20wahrscheinlich%20nicht%20gefallen%20wird%2C%3B
2017.12.07 07:41:27 4: Text2Speech: Schreibe mp3 in die Datei cache/09c65b7ea15d06edb704eac2127b20ff.mp3 mit 17856 Bytes
2017.12.07 07:41:27 4: Text2Speech: Bearbeite jetzt den Text: und will dir etwas sagen was dir wahrscheinlich nicht gefallen wird,;
2017.12.07 07:41:27 4: Text2Speech: cache/09c65b7ea15d06edb704eac2127b20ff.mp3 gefunden, kein Download
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Elektrolurch

Hallo Reinhard und Liste,
danke für die Info.
etwas stimmt noch nicht:
Der Befehl
set sip call **611 30 !Hallo dies ist ein Test ich spreche dir hier etwas vor nur um Zeit
liefert
external sox or ffmpeg programm not found, please install sox or ffmpeg first and set attr audio_converter
obwohl ich
sudo apt-get install sox
mp3 Unterstützung für SoX installieren
sudo apt-get install libsox-fmt-mp3

installiert habe.

gesetzt ist bei sip:
T2S_Device tts
audio_converter sox
sip_call_audio_delay 1.75
sip_dtmf_loop once
sip_dtmf_send audio
sip_dtmf_size 2
sip_elbc yes
sip_force_interval 300
sip_from sip:fhemfhem@fritz.box
sip_ip Speicherknecht
sip_listen none
sip_registrar fritz.box
sip_ringtime 3
sip_user fhemfhem

tts:
TTS_CacheFileDir /hdd/sda4/Sonos/speak
TTS_Language Deutsch
TTS_UseMP3Wrap 1

Internals:
   ALSADEVICE
   DEF        none
   MODE       SERVER
   NAME       tts
   NR         949
   STATE      Initialized
   TYPE       Text2Speech

Das Verzeichnis: /hdd/sda4/Sonos/speak kann (wird schon für Sonos) von fhem geschrieben werden.

Was könnte da noch fehlen?

Elektrolurch
configDB und Windows befreite Zone!

Wzut

Zitat von: Elektrolurch am 07 Dezember 2017, 11:06:42
external sox or ffmpeg programm not found, please install sox or ffmpeg first and set attr audio_converter
da must du ansetzen , das SIP Modul findet sox nicht. Ich lese bei dir zwischen den Zeilen das du offensichtlich keinen Raspi benutzt, daher könnte sox in einem anderen Verzeichnis liegen als erwartet.
Was gibt denn dein System auf der Konsole bei
which sox
aus ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Elektrolurch

Einen Cubie mit jessie. Ich habe jetzt mal einen reboot gemacht - und sie da: Jetzt geht es. Habe ich eigentlich von debian nicht erwartet....
Danke.
Elektrolurch
configDB und Windows befreite Zone!

Wzut

an der Stelle noch einen Tipp für alle T2S User der nicht im Wiki steht :
wenn ihr eh immer den gleichen Text benutzt ( z.B. via notify) dann werft mal einen Blick ins T2S cache dir ( normal im FHEM Dir /cache) Dort findet ihr zum einen die mp3 Datei von Google als auch die von sox konvertierte .alaw Version.
Kopiert euch die .alaw unter einem griffigen Namen z.B. in einen anderen Ordner (/opt/fhem/sounds/Fenster.alaw)
und verwendet dann beim Call Aufruf statt der !Blabla direkt Pfad/Datei. So spart man sich den ganzen T2S Umweg.

Der Tipp geht auch gut in Verbindung mit dem Thema von heute Morgen und den langen Texten. Einfach von T2S und Mp3Warp die vollständige mp3 Datei erstellen lassen, diese mittels sox in .alaw von Hand wandeln und abspeichern.
sox <mp3 File> -t raw -r 8000 -c 1 -e a-law <alaw File> 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

plin

Zitat von: plin am 03 Dezember 2017, 19:11:17
Das erste schnelle Feedback (vor dem Abendessen):

  • sip_port gelöscht
  • sip_force_interval und sip_force_max gesetzt, CALL mit & abgesetzt, klingeln lassen -> ok, Intervall und Anzahl passen
  • sip_force_interval und sip_force_max gelöscht, CALL mit &10,5,0 abgesetzt, klingeln lassen -> ok, Intervall und Anzahl passen
  • sip_force_interval und sip_force_max gelöscht, CALL mit &10,5,0 abgesetzt, beim ersten Klingeln abgehoben -> nok
Bei der Rufannahme wurde mir krächzend die DTMF-Folge vorgespielt. Sah also gut aus. Aber call_success stand immer noch auf 0. Und nach dem Intervall gings weiter. Noch ein Anruf. Nimmt man ihn an, wird kein DTMF mehr vorgespielt. Der Anruf dauert bis man ihn aktiv beendet. Das beendet aber nicht den Telefonterror, nach dem nächsten Intervall kommt der nächste Anruf.
Habe heute Abend einen Retest durchgeführt: alle drei Fälle wurden diesmal korrekt behandelt. Bis auf Weiteres ziehe ich also meine "Probleme" zurück.
Call it electorinic data processing mysteries ...

@wzut: aus meiner Sicht kann die 1.70er Version eingecheckt werden
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

Rewe2000

#502
Hallo plin, hallo Wzut,

wer lesen kann ist klar im Vorteil!
Viele Module in Fhem sind mittlerweile schon so komplex, dass ein "normaler User" (wie ich), Mühe hat die Erklärungstexte zu verstehen und zu begreifen. Da müssen schon einige Schwierigkeiten im laufenden Betrieb entstehen, damit ein User sich so intensiv mit der Doku beschäftigt. Und das SIP-Device ist in der WIKI wirklich sehr gut beschrieben.
Jetz hab ich auch endlich das mit der "maxtime" begriffen.

Den Abschnitt im WIKI habe ich gelesen, mich hat aber das Wort Anruf in die Irre geleitet.
Kann es sein, dass sich hier in der Beschreibung ein Fehler eingeschlichen hat?
ZitatWir ein Wiederholunsfaktor in der Form *nn angegeben, wird der Anruf einmal ausgeführt die Nachricht einmal abgespielt und dann nn mal wiederholt.
    Wird als Wiederholungsfaktor ein negativer Wert angegeben (z.B. *-2), passiert folgendes: Die Nachricht wird zwar genau wie bei *2 dreimal abgespielt, allerdings erlaubt das - vor der 2 das die Nachricht nur einmal vollständig übertragen werden muß. Der call_state nach dem Call hätte dann z.B. den Wert "ok peer hangup".


Eine Frage drängt sich mir aber dennoch auf.
Ist es technisch nicht möglich den Anruf (mit Ansagetext) bereits nach der Gesprächsannahme durch den Angerufenen als "zugestellt/angenommen" zu behandeln, auch wenn die Ansage nicht bis zum Ende angehört wird, oder gibt es dafür von euch andere Gründe, an welche ich bisher nicht gedacht habe?

Wegen der Probleme bei der Textausgabe mit Text2Speach kann ich damit leben, denn das Verhalten tritt nur bei genau dieser Wortwahl im Satz auf:
set TelefonClient call **52 30 !Hallo hier spricht deine Waschmaschine mit dir und will dir etwas sagen was dir wahrscheinlich nicht gefallen wird *3 &300,5

Ändere ich dagegen das "und" gegen "and" wird der Satz in einem Teil übersetzt und korrekt vorgelesen. Kommt mir fast so wie ein unerkannter Bug in der Textwandlung zu MP3 vor. Verwende ich in dieser Buchstabenanreihung "und" wird der Satz immer geteilt in MP3 gewandelt, dabei aber immer nur der erste Teil vorgelesen. Mit der von Wzut beschriebenen Vorgehensweise (mp3wrap) würde ich auch dieses Verhalten in den Griff bekommen, aber da stelle ich lieber einen Buchstaben um [OT] (Instandhalter sind faul) [/OT] ;).
Das ist aber definitiv kein SIP Fehler!

@plin bei dir scheint sich ja auch über Nacht alles zum positiven gewandelt zu haben (draussen wird es wieder kälter ;D )

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

plin

Zitat von: Rewe2000 am 07 Dezember 2017, 20:49:53
Ist es technisch nicht möglich den Anruf (mit Ansagetext) bereits nach der Gesprächsannahme durch den Angerufenen als "zugestellt/angenommen" zu behandeln, auch wenn die Ansage nicht bis zum Ende angehört wird, oder gibt es dafür von euch andere Gründe, an welche ich bisher nicht gedacht habe?
Quittieren im Sinne von "ich drücke dann mal die Sterntaste" geht (nach meinem Kenntnisstand) im Net::SIP nicht.

@wzut: Können wir entgegen genommene Anrufe erkennen, auch wenn die Nachricht nicht komplett abgespielt wurde? Dann könnte man zum *-2 noch ein *+2 erfinden??? Oder ein neues Attribut?
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

Wzut

Zitat von: plin am 07 Dezember 2017, 21:54:17
Können wir entgegen genommene Anrufe erkennen, auch wenn die Nachricht nicht komplett abgespielt wurde?
Ja, denn ich setze wenn - (Minus) verwendet wurde eine Hilfsvariable nachdem das erste echte Audiofile erfolgreich übertragen wurde.
Bricht der User danach ab übergehe ich einfach die Fehlermeldungen von Net::SIP weil die andern Dateien ( für Net::SIP sind die Wiederholungen einfach auch nur Files) nicht erfolgreich übertragen wurden. Es gibt heute schon einen internen Merker der gesetzt wird sobald das Ereignis "abgenommen" erkannt wird ($cb_callestablished)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Wzut

Zitat von: Rewe2000 am 07 Dezember 2017, 20:49:53
Mit der von Wzut beschriebenen Vorgehensweise (mp3wrap) würde ich auch dieses Verhalten in den Griff bekommen
habe das gerade getestet :
apt-get install mp3wrap
attribut TTS_UseMP3Wrap auf 1
den langen Satz mit dem und benutzt
und siehe da : T2S meldet unter lastFilename : cache/6508f014e73f90aa5338447c3a7b4b70_MP3WRAP.mp3
Man sieht schon am Namen das es die zusammengebaute Nachricht ist und gnau die bekommt man bei einemCall auch zu hören :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Rewe2000

Hallo,

jetzt klappt es auch mit dem "komischen" Ansagetext von mir und Text2Speech "verschluckt", dank "mp3wrap" nichts mehr.

Danke an euch allen, für die geduldige Hilfe.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Elektrolurch

Hallo, habe mal zwei Fragen:
1. Da die Ansage direkt nach dem Abheben kommt, wollte ich zuerst noch einen Ton abspielen mit

set sip call **611 30 /hdd/sda4/Sonos/speak/sounds/Gong.alaw !Das ist eine Mitteilung, die Dir vom Speicherknecht vorgelesen wird.

Der Ton wird abgespielt, jedoch nicht der Text. Was mache ich da falsch?
Der Text alleine ohne Ton kommt.

2. Ich habe alle mp3-Dateien, die ich auch für Sonos als presound verwende, mit
socx  $file  -t raw -r 8000 -c 1 -e a-law  $outfile
umgewandelt. Allerdings bleiben einige Dateien dabei stumm, d.h. die Verbindung wird zwar so lange von sip-client gehalten, so lange wie die Datei sein sollte, man hört aber nichts.
Andere Parameter für die Konversion?

Danke.
Elektrolurch

 
configDB und Windows befreite Zone!

Rewe2000

Hallo Elektrolurch,

die Wartezeit bis zur Sprachansage stelle ich mit dem Attribut "sip_call_audio_delay" ein:

Zitatsip_call_audio_delay

    Damit wird festgelegt wie lange bei einem Call mit dem abspielen des Audiofiles gewartet werden soll nachdem man den Anruf angenommen hat. Gültige Werte sind 0 - 3 in 0.25 (1/4) Sekunden Schritten.

Bei mir steht da 1.75 und es reicht aus, damit der Höhrer das Ohr erreicht. Versuche ggf. mal auch einen etwas größeren Wert, max. 3 ist möglich. Ob zusätlich noch vor der Sprachansage ein Audiofile abgespielt werden kann, glaube ich nicht, aber man lernt ja täglich hinzu.

Zu deiner 2. Frage kann ich leider nichts beitragen, da ich (bisher) keine Soundfiles benutze.

Hörtst du denn etwas, wenn du das Mp3 File mit einen beliebigen MP3 Player anhörst, ev. hat das File ja selbst ein Problem.
Ich denke zu diesem Problem kann dir plin oder Wzut mehr helfen als ich.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Elektrolurch

Hallo Reinhard,
Zitat
Hörtst du denn etwas, wenn du das Mp3 File mit einen beliebigen MP3 Player anhörst, ev. hat das File ja selbst ein Problem.

Ja, die verwende ich ja alle für Sonos, funktionieren also.
Bei Sonos kann man die Audiodatien mit |datei> beliebig in den Text  einbetten.

Mal eine generelle Anmerkung zur Syntax:

set sonos  speak <volume> de |audiofile| TExt, der gesprochen werden soll.
set fritzbox call **611 <duration> say:TExt, der gesprochen werden soll
set sip call **611 <duration> !Text, der gesprochen werden soll
set SBPLAYER sayText  Text, der gesprochen werden soll

Wäre ja eigentlich schön, wenn man über alle Module hinweg gleiche Syntax hätte....
configDB und Windows befreite Zone!