Verwendete Dateiformate

Bevor wir mit dem Schreiben von Skripten weiter machen, lassen Sie mich Ihnen bitte einige Worte zu den Dateiformaten sagen, die der CapiSuite-Kern verwendet.

CapiSuite liest und schreibt Dateien immer im dem Format, das die CAPI-ISDN-Treiber erwarten bzw. übergeben. Deshalb muss nicht alles in oder aus anderen Formaten konvertiert werden, wodurch unnötiger Overhead vermieden wird.

Da diese Formate nicht so bekannt sind und Sie spezielle Tools für die Konvertierung oder zum Anschauen/Abspielen brauchen, gebe ich Ihnen einen kurzen überblick, wie das geht.

Wahrscheinlich werden Ihre Skripte die speziellen ISDN-Dateiformate in bekannte Formate konvertieren, um sie z.B. per E-Mail an Sie zu verschicken. Trotzdem empfehle ich Ihnen, die empfangenen und gesendeten Dateien irgendwo im CapiSuite-eigenen Format zu speichern. Dies schützt Sie vor Datenverlust, wenn die Konvertierung schief geht und hilft Ihnen beim debuggen Ihrer Skripte.

Alle Tools, die hier erwähnt werden, sind im „Software“ beschrieben. Dort finden Sie Informationen, wo Sie diese bekommen.

ISDN überträgt Sprach-Daten als Wave-Dateien mit einer Sample-Rate von 8kHz in Mono. Um Bandbreite zu sparen, wird eine Kompression namens A-Law verwendet (zumindest in Europa, andere Länder wie die USA verwenden u-Law, das A-Law sehr ähnlich ist). Aus irgendeinem Grund, den ich nicht verstehe, verwenden sie eine Form von A-Law mit umgedrehter Bitfolge namens "invertiert A-Law".

Es gibt zwei Möglichkeiten, A-Law-Dateien zu erzeugen.

Die erste ist, Ihren Computer mit Ihrem Telefon anzurufen (verwenden Sie entweder das Standard-Anrufbeantworter-Skript und konfigurieren Sie es wie im „Konfiguration des Anrufbeantworters“ beschrieben oder schreiben Sie selbst ein einfaches Skript). Sie können dann alles aufnehmen, was Sie wollen. Danach können Sie die Datei nehmen (wenn Sie die Standard-Skripte verwenden, nehmen Sie bitte die Datei aus dem user_dir, nicht den Anhang der Mail, da dieser bereits konvertiert wurde) und verwenden.

Eventuell möchten Sie die aufgenommene Datei kürzen und unerwünschte Geräusche und Stille am Anfang und am Ende entfernen. Dies kann einfach mit sox und play erledigt werden (beide befinden sich im sox-Paket).

Mit sox kann man eine Datei konvertieren, während man sie mit play nur abspielen kann. Beide unterstützen die selben Effekte, einschließlich der Trim-Option. Beide erkennen auch, welchen Dateityp sie verwenden, indem Sie sich den Dateinamenerweiterung Ihrer Datei ansehen. Alle Ihre invertierten A-Law-Dateien sollten daher in der Form something.la benannt sein (.la ist die umgekehrte From von .al, was für A-Law steht).

Lassen Sie uns also zuerst die optimalen Werte für den Trim-Effekt herausfinden, indem wir play aufrufen:

play myfile.la trim <Start-Offset> <Dauer>

Spielen Sie nun ein bisschen mit dem Start-Offset und der Dauer (beide angegeben in Sekunden), bis Sie die richtigen Werte haben. Wenn Sie sie gefunden haben, können Sie sox verwenden, um die benötigte Datei zu erzeugen:

sox myfile.la outfile.la trim <Start-Offset> <Dauer>

Sie erhalten dann eine Datei namens outfile.la, die jetzt enthalten sollte, was Sie wollen.

Die zweite Möglichkeit, eine invertierte A-Law-Datei zu erzeugen, ist, eine normale WAV-Datei mit Ihrem Lieblings-Sound-Tool aufzunehmen und sie mit sox in das Zielformat zu konvertieren. Sie erzielen die besten Ergebnisse, wenn Ihre WAV-Dateien bereits das Format 8kHz, Mono, 8 Bit haben. sox kann auch andere WAV-Dateien wenn nötig konvertieren, aber dies resultiert normalerweise in einer schlechteren Qualität. Empfehlenswert ist auch, die Aufnahme auf maximal 50% der maximalen Amplitude zu normalisieren.

Sie können WAV in inverstiert A-Law konvertieren, indem Sie aufrufen (danke an Carsten Heesch für den Tipp):

sox myfile.wav -r 8000 -c 1 -b outfile.la resample -ql

Wenn Sie früher vbox benutzt haben und nun Ihre alten Audio-Files konvertieren wollen, können Sie auch das folgende Kommando benutzen:

vboxtoau < infile.msg | sox -tau - outfile.la

CAPI-konforme Treiber erwarten und übergeben Fax-Dateien als sog. Structured Fax File (SFF). Da dies ein CAPI-spezifisches Format zu sein scheint, gibt es nicht sehr viele Tools für GNU/Linux, die es verarbeiten können. Ich habe schließlich einige kleine Tools gefunden, die Peter Schäfer geschrieben hat und die wir hier verwenden werden.

CapiSuite kann auch Farbfaxe empfangen, welche in einem speziellen Dateiformat abgelegt werden, das ich CFF genannt habe.