X-Sender: dekay@xplor.ipf.de
References: <m0vIIrY-000LHmC@scorpio.in-berlin.de> from "Gernot Zander" at  Oct 29, 96 07:26:08 pm
Date: Wed, 30 Oct 1996 19:05:55 +0200
To: isdn4linux@hub-wue.franken.de, michael@abadonna.franken.de From: Darko Krizic <dekay@ipf.de>
Subject: Sounds erzeugen fr vgetty/vboxgetty Cc: maze@frankfurt.netsurf.de
Sender: owner-isdn4linux@hub-wue.franken.de Reply-To: isdn4linux@hub-wue.franken.de

Ich mchte hier ein paar Erfahrungen mit vboxgetty zusammenzhlen, insbesondere im Zusammenhang mit dem Erzeugen von Messages (Sounds)

Sound-Format
------------
Das Format ADPCM-4 generiert beim Aufzeichnen wesentlich kleinere Dateien als die Formate uLaw oder aLaw, deswegen ist dieses Format vorzuziehen.
Vorteil von uLaw ist allerdings, da es dem au-Format entspricht und so direkt mit cat sound.au >/dev/audio angehrt werden kann, allerdings gibt es zwei Probleme:

- Das ist nur interessant fr Leute, die auch am Linux-Rechner sitzen und dieser eine Soundkarte besitzt. Viele Leute verwenden den Linux-Rechner als "echten" Server, der weder Monitor noch Soundkarte hat.

- Die aufgezeichneten Samples haben einen sehr schwachen Pegel, den man theoretisch mit

	autopvf <x.msg | pvfamp 5 | pvftoau >x_laut.msg

verstrken knnte, allerdings mu man sich dann sowieso mit den pvf-Tools befassen und kann dann auch gleich auf ADPCM-4 umsteigen.

Aufzeichen ber Telefon
-----------------------
Wie in der i4l-FAQ beschrieben ist es ohne Probleme mglich sich selbst auf den Anrufbeantworter zu sprechen und die entsprechende Datei in das Verzeichnis /var/spool/vobx/<user>/incoming/standard.msg zu kopieren.
Allerdings ist die Qualitt bei weitem nicht ausreichend, unter anderem, weil sich am Anfang und Ende Gerusche oder Pausen befinden.

Selbst Dateien generieren
-------------------------
Ich habe einen Macintosh, der unter anderem die Mglichkeit bietet, Sound von Audio-CDs ohne Verluste per SCSI auf die Festplatte zu kopieren und nachtrglich auf andere Samplegeschwindigkeit und Bitbreite zu konvertieren, z.B. "16bit, 44kHz -> 8bit, 22kHz". Desweiteren kann ich mit dem Mikrofon Sounds und am Ende alle Sounds manipulieren und mixen. Die beste Voraussetzungen fr verrckte Ansagen.

Das Format, das der Macintosh verarbeitet ist AIFF. Dieser Standard wird auch von SGI und anderen namhaften Herstellern verwendet, allerdings konnte ich unter Linux kein Programm finden, das dieses Format versteht. Auf dem Macintosh gibt es allerdings das Programm "SoundApp", welches nach und von Suns .au konvertieren und ADPCM wenigstens abspielen kann. Anmerkung: Dummerweise nennt SoundApp das au-Format "NeXT", weil dieses Format dort verwendet wird, allerdings habe ich lange gebraucht, um herauszufinden, da es dasselbe wie au ist.

Ich nehme mal an, da unsere Windows-Freunde hnliche Fhigkeiten haben.
Das Windows-Hausformat nennt sich WAV. Auch dieses Format kennen die PVF-Tools nicht, aber ich denke mal, da es unter Windows hnliche Werkezeuge gibt, die sogar ADPCM-4 generieren knnen.

Ich wei nicht, wie man unter Linux Sounds aufzeichnen kann und welches Format diese haben, allerdings wird es wohl Sun-AU-Format haben, so da der weitere Text auf fr Linux-Benutzer interessant ist.

Sounds fr vboxgetty konvertieren
---------------------------------
Wie bereits oben beschrieben, empfehle ich den Betrieb mit ADPCM-4. Bei mgetty befindet sich die pvf-Toolsammlung, welche Soundformate konvertieren und manipulieren kann, allerdings gab es Probleme mit den Formaten, die vboxgetty generiert hatte (ADPCM-4). Gegen dieses Problem gibt es Patches, allerdings enthlt die neuste Version von mgetty (0.99 Okt02 und wahrscheinlich auch ein paar ltere) bereits die Programme "zyxeltopvf" und "pvftozyxel[234]", mit welchen genau diese Formate konvertiert werden knnen.

Mein Macintosh liefert die Sounds 22254Hz. Um daraus einen entsprechenden Sound in ADPCM-4 zu generieren verwende ich folgende Kommendozeile:

	autopvf <standard.au \
		| pvfspeed 2.73 \
		| pvfamp 0.2 \
		| pvftozyxel4 >standard.msg

autopvf konvertiert dan au-Sound nach pvf. pvfspeed ndert die Samplingrate auf 8000 (22554 / 8000 = 2.73), damit die Geschwindigkeit wieder stimmt.
pvfamp 0.2 senkt den Pegel auf 20%, weil der Sound sonst total verzerrt klingt, schlielich kennt das Telefon nur Frequenzen zwischen 300 und 3000Hz. Zuletzt legt pvftozyxel4 den Sound im richtigen Format ab.

Dadurch, da weder Rauschen noch Klacken zu hren sind, klingen so generierte Ansagen einfach klasse. Wer etwas mit Sound-Manipulationsprogrammen spielen kann, der kann tolle Effekte generieren, allerdings sollte man damit wegen des beschrnten Frequenzbandes echt sparsam umgehen, sonst versteht der Anrufende nichts.

Nachbarbeiteitung von aufgezeichneten Nachrichten ------------------------------------------------- Ich mchte, da meine Nachrichten in ein auf dem Macintosh abspielbaren Format konvertiert werden und an eine e-mail an mich attached werden sollen. Ich konvertiere den Sound nach au mit folgenden Befehlen:

	zyxeltopvf <sound.pvf \
		| pvfamp 5
		| pvfcut 0.2 0.2 \
		| pvftoau 8000 >sound.au

zyxeltopvf konvertiert den aufgezeichneten Sound nach pvf und pvfamp verstrkt diesen auf das fnffache, weil der Pegel (s.ganz.o) sehr schwach ist. pvfcut schneidet 0.2 Sekunden vorne und hinten ab, weil man hinten z.B. das Auflegen des Telefons hrt. Scheinbar zeichnet vboxgetty schon auf, whrend der Beep-Ton abgespielt wird, weil dieser ganz am Anfang zu hren ist. Die 8000 nach dem pvtoau ist sehr wichtig, weil diese sorgt, da die Frequenz in den au-Header geschrieben wird, damit das abspielende Programm auch die richtige Rate spielt!

Namen des Anrufenden in der Mail
--------------------------------
vboxgetty kennt den Namen des Anrufenden, whrend es die Nachricht aufzeichnet, dummerweise wird dieser Name nicht an das Programm "-p /usr/local/vbox/new_voice" mit bergeben. Ich habe deswegen einen (very dirty) hack von vboxgetty erzeugt, welches als 4ten Parameter den Namen an new_voice bergibt, damit ist es mglich, da das Subject der generierten Mail aussieht wie "Voice from Darko Krizic" oder zumindest "Voice from Unknown". Da bei internationalen Calls zumindest die Landeskennung bergeben wird, kann eine Nachricht aus USA ein Subject wie "Voice from USA" haben.

Ich bitte hiermit den Autor von vbox selbst die nderungen zu machen.

Beispiel fr ein new_voice-Script
---------------------------------
Das Nachfolgende Shellscript hat bei mir den Namen /usr/local/vbox/new_voice und in der Inittab hngt noch "-p /usr/local/vbox/new_voice" als Parameter, damit dieses Programm nach dem Aufzeichnen einer Nachricht aufgerufen wird.

Die Datei wird nach .au konvertiert und als MIME-encoded Message an den Benutzer fr den die Nachricht aufgezeichnet wurde, geschickt. Ich verwende brigens mimeencode nicht. Wenn diese Mail von Eudora auf dem Macintosh empfangen wird, wird der Sound als Icon angezeigt. Ein Doppelklick reicht aus, um den Sound abzuspielen.

#! /bin/sh
#
# Creates a new MIME-encoded mail to the user with an attached .au file # Written 1996 by Darko Krizic

PATH="${PATH}:/usr/local/vbox"
TMP="/tmp/vboxmime.$$"
ME="`basename $0`"

mailer="/usr/sbin/sendmail -t"
bound="NewVoice_-${$}${$}"
type="audio/ulaw"

file="${1}"
id="${2}"
user="${3}"
name="${4}"
date="`date +%y%m%d%H%M`"
newname=${date}-${id}.au
if [ -z "$name" ]
then
        name=$id
fi

echo "\
Subject: Voice from $name
From: root@xplor.ipf.de (Voice Subsystem) To: $user
Content-type: multipart/mixed; boundary=\"$bound\"

--$bound
Content-Type: text/pain

A new voice has arrived

Sender ID:      $id
Name:           $name
File:           $file

--$bound
Content-Type: application/octet-stream; name=\"$newname\" Content-transfer-encoding: x-uuencode
" >$TMP

/usr/local/bin/zyxeltopvf <$file \
	| /usr/local/bin/pvfamp 5 \
	| /usr/local/bin/pvfcut 0.2 0.2 \
	| /usr/local/bin/pvftoau 8000 \
	| /usr/bin/uuencode $newname >>$TMP
#rmdcutheader <$file | uuencode $newname >>$TMP echo "--$bound--" >>$TMP


$mailer -t <$TMP

#cat $TMP
rm $TMP

Anmerkungen: Es handelt sich dabei nur um ein Beispiel, welches ich schnell fr mich zusammengehackt habe. Wenn jemand Anmerkugen und Ideen hat, soll ich bei mir melden. Ich erwhne nochmal: Das Script funktioniert zwar auch so, allerdings macht es erst richtig sinn, wenn vboxgetty als 4ten Parameter den Namen des Anrufenden bertragt, sonst ist das Subject immer "Voice from Unkown".

Darko Krizic

----------------------------------------------------------------------- Darko Krizic          Phrankphurt Germany     mailto:dekay@xplor.ipf.de


--------------------------------------------------- To remove yourself from this mailing list send email to majordomo@hub-wue.franken.de containing "unsubscribe isdn4linux <your_email_address>" in the message body [-vg]
