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.

Format der Sprach-Dateien (invertiert A-Law, 8kHz, mono)

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".

Erzeugen von A-Law-Dateien

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

Abspielen von A-Law-Dateien

Auch hier gibt es wieder zwei Möglichkeiten. Der play-Befehl von sox kann das invertiete A-Law-Format ohne Konvertierung abspielen. Rufen Sie einfach play mit dem Dateinamen als Parameter auf:

play myfile.la

Sie können aber auch sox verwenden, um die A-Law-Dateien in das gebräuchlichere WAV-Format zu konvertieren, indem die aufrufen:

sox myfile.la outfile.wav

Die erzeugte Datei outfile.wav kann mit fast jedem Audio-Player problemlos abgespielt werden.

Format von Fax-Dateien (Structured Fax Files)

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.

Erzeugen eines SFF

In aktuellen Ghostscript-Versionen gibt es einen Patch von Peter, um SF-Dateien zu erstellen. Um zu prüfen, ob Ihr Ghostscript das schon unterstützt, geben Sie gs --help ein und suchen nach dem sog. cfax-Device in der langen Device-Liste, die angezeigt wird. Wenn es nicht aufgelistet ist, müssen Sie einen neueren Ghostscript verwenden oder Ihn neu übersetzen, sorry. Ich kenne keine andere Möglichkeit, momentan SFF zu erzeugen.

Sie brauchen erstmal eine PostScript-Datei (wie sie von fast jedem Linux-Programm erstellt wird, wenn Sie "in Datei drucken" auswählen). Jetzt können Sie GhostScript aufrufen, um sie in ein SFF zu konvertieren:

gs -dNOPAUSE -dBATCH -sDEVICE=cfax -sOutputFile=outfile.sff file.ps

Wenn Sie sich nicht sicher sind, ob es funktioniert hat, können Sie sffview wie weiter unten beschrieben verwenden.

Ansehen / konvertieren von SFF

Um einfach ein empfangenes SFF anzusehen, können Sie das sffview-Programm verwenden. Dies ist ein einfaches, aber sehr nützliches Tool zum Ansehen von SF-Dateien, ohne sie konvertieren zu müssen. Starten Sie es einfach und Sie bekommen ein GUI, wo Sie die gewünschte Datei öffnen können.

Wenn Sie eine Fax-Datei in ein gebräuchlicheres Format konvertieren möchten, empfehle ich sfftobmp. Es unterstützt einige Ausgabe-Formate wie JPEG, TIFF, PBM oder BMP. Ich bevorzuge mehrseitige TIFF-Dateien, da dies das einzige Format ist, das in der Lage ist, mehrere Seiten in einer Datei zu speichern. Um SFF in ein mehrseitiges TIFF zu konvertieren, rufen Sie auf:

sfftobmp -tif myfile.sff outfile.tiff

Sie erhalten eine TIFF-Datei, die Sie mit den TIFF-Tools (z.B. tiff2ps) in nahezu jedes andere nützliche Format konvertieren können.

Farbfaxe - das CFF-Format

Es gibt eine Erweiterung zum Fax-Standard, die die Übertragung von farbigen Dokumenten erlaubt. Sie wird nur selten benutzt, aber da einige User sie trotzdem benötigten, habe ich den Empfang solcher Dokumente mittlerweile in CapiSuite realisiert.

Das CFF-Format (ich weiß nicht sicher, ob das ein offizieller Name für das Format ist) scheint eine JPEG-Datei mit spezieller Kodierung zu sein. Die meisten Programme, die JPEG-Dateien unterstützen, sollten CFF-Dateien ebenfalls öffnen können. Eventuell müssen Sie die Datei von .cff in .jpg umbenennen, bevor Sie sie öffnen können.

Leider kenne ich momentan keinen Weg, dieses Format manuell zu erzeugen. Daher unterstützt CapiSuite bis jetzt nur den Empfang solcher Dokumente. Wenn Sie mehr darüber wissen sollten oder den JPEG-Standard gut kennen, dann kontaktieren Sie mich bitte!