AWS Polly kein Text zu hören

Hallo,

ich verwende das Modul Telefonansage in Verbindung mit AWS Polly. Der Call kommt immer zustande leider großteils ohne Audio. Ich kann ein Echo hören jedoch wird die Textansage nicht abgespielt. Ich habe den Eindruck als würde der Call bereits aufgebaut werden bevor das Soundfile vorliegt.

Wenn man im Telefonmodul „Anruf starten“ und nach dem Connect auf neben dem Text auf „Schalten“ klickt, dann hört man die Ansage.

Der Aufruf ist durch nachfolgende Funktion implementiert.
TA_StartCallEx(38002, $Rufnummer1, $Ansagetext1);

Fragen:

  • Kann es sein, dass das Soundfile noch nicht fertig ist bevor der Anruf abgesetzt wird?
  • Gibt es da ein Debug welches man aktivieren kann?
  • Kann man für Polly ein Logging aktivieren?

IP-Symcon 6.2
Tinkerboard

09/30/22 19:43:34 | 18419 | DEBUG | ScriptEngine | Executing Event 23371 ~ Sender: Variable
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | ua: using best effort AF: af=AF_INET
09/30/22 19:43:34 | 18419 | DEBUG | ScriptEngine | Executed Event 23371 ~ Sender: Variable ~ Duration: 2 ms
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | call: alloc with params laddr=192.168.128.101, af=AF_INET, use_rtp=1
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | call: use_video=0
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | call: connecting to ‚sip:0043xxxxxx@replacedsipserver.at‘…
09/30/22 19:43:34 | 45106 | DEBUG | ScriptEngine | Executed Event 37255 ~ Sender: Variable ~ Duration: 66 ms
09/30/22 19:43:34 | 18639 | DEBUG | VariableManager | [Alarmanlage\UG\UG Heizraum Paniktaster\Value] = true
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | call: SIP Progress: 100 Trying (/)
09/30/22 19:43:35 | 00000 | DEBUG | VoIP | call: SIP Progress: 180 Ringing (/)
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | call: got SDP answer (235 bytes)
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | sipuser@replacedsipserver.at: Call answered: sip:0043xxxxxx@replacedsipserver.at
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | call: update media
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | stream: update ‚audio‘
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | stream: audio: starting RTCP with remote xx.xx.xx.xx:21887
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: update
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: Set audio decoder: PCMA 8000Hz 1ch
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: start
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: create recv buffer [20 - 160 ms] [320 - 2560 bytes]
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | aubridge: created device ‚pseudo0‘
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: player started with sample format S16LE
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: Set audio encoder: PCMA 8000Hz 1ch
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: start
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: source started with sample format S16LE
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio tx pipeline: aubridge —> PCMA
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio rx pipeline: aubridge <— PCMA
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | aubridge: thread start: 8000 Hz, 1 channels, format=S16LE
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | call: stream start (active=1)
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: start
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | sipuser@replacedsipserver.at: Call established: sip:0043xxxxxx@replacedsipserver.at
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | stream: incoming rtp for ‚audio‘ established, receiving from xx.xx.xx.xx:21886

Wenn man mittels Script „<?php TA_StartCall(IPS_GetParent($_IPS[„SELF“]));“ ausführt. Dann wird der Call aufgebaut und man hört nur Echo.
Wechselt man im IPS in die Instanzkonfiguration und klickt beim Text auf „SCHALTEN“ dann wird die Ansage abgespielt.

Kann es sein, dass bei meinem ersten Post zum Zeitpunkt des Anrufs der Text noch nicht als Soundfile vorliegt? Ich finde dazu leider auch kein Log.

(Rufnummer ist anonymisiert)

Hallo zusammen,
was ist denn hieraus geworden. Gab es hier eine Lösung? Habe das Problem ebenfalls.

Welche IPS Version verwendest du? Der Fehler wurde bestätigt. Seit dem Upgrade auf 6.3 und einem Delay im Module von 250ms funktioniert es bei mir. Kannst du das Update versuchen und nochmals testen.

Ich benutze schon die 6.3 Version.
Im Modul „Telefonansage“ von @paresy habe ich auf die Zeiten kein Einfluss.

Du musst das direkt im Source anpassen. Ich habe das in folgendem File gemacht /var/lib/symcon/modules/.store/de.symcon.phoneannouncement/Telefonansage/module.php
Wie du unten sehen kannst habe ich ein „usleep(250000);“ eingebaut.

public function MessageSink($timestamp, $senderID, $messageID, $data)
{
    $this->SendDebug('Message Received', json_encode([$senderID, $messageID, $data]), 0);
    // We are only registered to VOIP_EVENT of the defined VoIP instance, so no need to validate $senderID and $messageID
    // $data = [ connectionID, event, data ]
    if ($data[0] === json_decode($this->GetBuffer('CallID'))) {
        switch ($data[1]) {
            case 'Connect':
                if (!$this->checkConfiguration()) {
                    return;
                }
                // Disable close timer and play text
                $this->SetTimerInterval('CloseConnectionTimer', 0);
                // VoIP_Playwave() unterstützt ausschlie~_lich WAV im Format: 16 Bit, 8000 Hz, Mono.
                usleep(250000);
                VoIP_PlayWave($this->ReadPropertyInteger('VoIPInstanceID'), $data[0], TTSAWSPOLLY_GenerateFile($this->ReadPropertyInteger('TTSInstanceID'), $this->GetBuffer('Text')));
                break;

Hat sich erledigt.
Instanz musste neu zugewiesen werden

Ich befürchte eher, dass die eine Timing Problem ist (deswegen ist das Problem auch noch offen, weil nicht optimal nachstellbar)

paresy

Bei mir war auch immer das Problem, dass nach dem 3. Anruf nur noch Echo zu hören war. Ich habe das Modul jetzt wie folgt abgeändert:
Ab Zeile 88.

                    // Disable close timer and play text
                    $this->SetTimerInterval('CloseConnectionTimer', 0);
                    $soundfile = TTSAWSPOLLY_GenerateFile($this->ReadPropertyInteger('TTSInstanceID'), $this->GetBuffer('Text'));
                    usleep(250000);
                    // VoIP_Playwave() unterstützt ausschließlich WAV im Format: 16 Bit, 8000 Hz, Mono.
                    VoIP_PlayWave($this->ReadPropertyInteger('VoIPInstanceID'), $data[0], $soundfile);
                    break;

Seit dieser Änderung hatte ich keine Probleme mehr. Evtl so als Update releasen.

Gz Hannes

Hallo @paresy
es kann doch nicht sein, dass dieses Thema einfach nicht von euch bearbeitet wird.
Es funktioniert seit Monaten nicht.
Nach den o.g. Änderungen (man beachte, dass diese von den Usern stammen) funktioniert dies bis zu einem Neustart des Server/Dienstes.
Dann darf ich erst wieder die Text to Speech Instanz" einmal auf keine setzen, speichern und dann wieder zurück auf "Text to Speech (AWS Polly). Dann geht es bis zum nächsten Neustart.
Es wäre schön, wenn ihr diese Probleme mal beheben würdet, bevor immer weitere „neue“ Themen angegangen werden.

Wir sind für die 6.4 am VoIP immer noch dran - dort gibt es aktuell auch noch Probleme mit der VoIP_PlayWave Funktion. Ich denke, dass wir dies in dem Zuge ebenfalls ansehen und lösen werden.

paresy

Ich spreche aber von der 6.3

Für die 6.3 wird es leider keinen Fix geben. Wir mussten, um das Problem zu lösen, die VoIP Bibliothek um einige Versionen hochziehen, wodurch andere Änderungen an diversen Stellen notwendig waren. Deshalb wird der Fix erst ab der 6.4 (zur Public Beta) verfügbar sein.

paresy

Hallo @paresy
auch mit dem neuesten Update habe ich noch das Problem bei dem Modul Telefonansage.
Nach einem Neustart darf ich die „Text to Speech Instanz“ einmal auf keine setzen, speichern und dann wieder zurück auf "Text to Speech (AWS Polly). Dann geht es bis zum nächsten Neustart.
Ansonsten bekomme ich wieder das Echo und es wird kein Text abgespielt.
Wenn es aber einmal funktioniert, funktioniert es sehr gut.

@gogo20012002 Aaaah, ich glaube das Problem gefunden zu haben. Das Problem lag gar nicht an der VoIP Instanz, sondern an der Telefonansage. Schau mal bitte im Beta Kanal der Telefonansage, ob die dein Problem löst.

paresy

Yeah
@paresy das war es. Jetzt funktioniert es wieder wie es soll.
Nach Neustart des Dienstes oder Neustart des kompletten Systems geht alles sofort.
Vielen Dank.

Perfekt. Sorry, dass es so lange gedauert hat. Ich war völlig auf der falschen Fährte mit dem VoIP Modul und dachte es ist wie bei den anderen das PlayWave Thema.

paresy

1 „Gefällt mir“