silence detection

uli2

Neuer User
Mitglied seit
10 Jan 2007
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

kann man in einem EAGI-Programm eine silence - detection durchführen,
während man in diesem Programm den Anruf aufzeichnet?

Viele Grüße

uli2
 
Es gibt ein anderes Programm, dass das Audio-File zeitnah über die PC-Soundkarte ausgibt. Dazu wird der Inhalt von Filedeskriptor 3 in eine FIFO
geschrieben, der andere Prozess ließt dann von dieser FIFO (Siehe meinen anderen Beitrag). Der Anrufer soll nach einer silence - Zeit oder nach drücken der # - Taste informiert werden, ob sein Anruf ausgegeben wurde oder nicht.

Währe es eventuell möglich dieses NVBackgroundDetect in einem EAGI - Programm aufzurufen mit einer FIFO. Das andere (Ausgabe)-Programm liest dann von dieser FIFO.

Viele Grüsse und Danke

Uli
 
Zuletzt bearbeitet:
Um das Anliegen von uli2 noch etwas zu verdeutlichen: die Standard-Asterisk-Funktionen wie record() oder VoiceMail() schreiben zu langsam bzw. nur in nicht beeinflussbarer Blockgröße, um die Datei durch eine andere Anwendung nur minimal zeitversetzt während der Aufnahme bereits wieder abspielen zu können. Daher muss es über ein EAGI-Skript realisiert werden, nicht im Dialplan selber. ;)
Nur ergibt sich da das Problem, dass während der Aufnahme aber auch entweder ein Tastendruck oder Stille erkannt werden sollte.
 
Problem gelöst:

Man untersucht byte für byte folgendermaßen

Code:
    unsigned char seg;
    unsigned char useSample = byte;
    char ch;

    useSample = reverse(useSample);

    useSample ^= 0xff;

    seg = (useSample & 0x7f) >> 4;

    if ( seg < 2 )
        ch = '.';        // silence
    else if ( seg < 5 )
        ch = '+';        // some sound
    else
        ch = '*';        // noise

Dann schreibt man die "ch"s in eine Queue (fester Größe) von beispielsweise
20 Werten und untersucht die relative Häufigkeit der '+'.

Diese schreibt man ebenfalls in einen Vektor.
Die Werte im Vektor summiert man und prüft die Summe / 20 - 1.0 < 0.00001.

D.h. man mittelt nochmal die relativen Häufigkeiten.
 
Darf ich dich fragen wo du das genau eingebaut hast bzw. hast du vielleicht sogar ein eines app_*.so geschrieben?

Ich würd jetzt nämlich auch so eine silence detection brauchen, eigentlich das Gegenteil von NvFaxDetect etc. Und zwar für einen automatisierten Anruf, wo ja zuerst eine Stimme kommt und man dann DTMF Töne eingeben muss.
Es wäre schön wenn ich nun solange warten könnte bis es "still" ist und ich danach die Töne abschicken kann.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,695
Beiträge
2,216,692
Mitglieder
371,315
Neuestes Mitglied
jack-mack
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.