Home / LinuxUser / 2004 / 01 / SoX

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

SoX around the clock

SoX

01.01.2004 SoX steht für "sound exchange" und wandelt Audiodateien auf der Kommandozeile in andere Sound-Formate um. Auf Wunsch können dabei zusätzlich Effekte eingesetzt werden.

SoX wird nicht umsonst das Schweizer Messer unter den Audio-Konvertern ("the swiss army knife of sound processing programs") genannt – das Tool unterstützt zahlreiche Audioformate und konvertiert zwischen diesen. Darüber hinaus kann die Sampling-Rate verändert werden, und es lassen sich Sound-Effekte hinzufügen. Mit im Paket ist soxmix, mit dem Sie Dateien mischen. Wir stellen einige Funktionen dieses Sound-Allround-Talents vor.

Alle gängigen Distributionen enthalten SoX – aktuell ist Version 12.17.4. Da einige Bugs der Vorgängerversion 12.17.3 (unter anderem in Debian "Woody"), z. B. in Zusammenhang mit dem Ogg-Vorbis-Format, gefixt wurden, empfiehlt sich ein Upgrade auf die aktuelle Release. Nähere Informationen, fertige RPM-Pakte und die Sourcen finden Sie auf der Homepage des Programms [1].

Kopflos?

Es gibt zwei Typen von Audioformaten, mit denen SoX umgehen kann: Sound-Dateien mit Header und solche ohne, so genannte "raw data" (rohe Daten). In einem Header finden sich Informationen wie z. B. die Sampling-Rate, Anzahl der Bits pro Sample-Wert (etwa 8 oder 16 Bit), Anzahl der Kanäle (z. B. Mono oder Stereo) und, wenn vorhanden, Angaben zum verwendeten Kompressionsverfahren. Dateien im "raw data"-Format besitzen diese Informationen nicht; sie enthalten lediglich die Sample-Werte, und beim Konvertieren muss man ein bisschen tricksen.

MP3- oder Ogg-Vorbis-Dateien haben einen solchen Header. Da die Dateien in einem Binärformat vorliegen, können Sie diesen aber nicht in einem Editor oder Pager (less oder more) auslesen. Tools wie mp3info und ogginfo können hingegen diese Informationen auswerten und anzeigen (Listing 1).

Listing 1

Header mit ogginfo anzeigen

huhn@asteroid:~$ ogginfo 10_hungry.ogg
filename=10_hungry.ogg
serial=1804289383
header_integrity=pass
10_hungry.wav
vendor=Xiph.Org libVorbis I 20020717
version=0
channels=2
rate=44100
bitrate_upper=0
bitrate_nominal=112001
bitrate_lower=0
stream_integrity=pass
bitrate_average=108598
length=326.333333
playtime=5:26
stream_truncated=false
total_length=326.333333
total_playtime=5:26

Beim Konvertieren wird zunächst die Audiodatei eingelesen, und die enthaltenen Informationen werden für das Ausgabeformat umgewandelt. Qualitätsverluste, z. B. beim Ändern der Sampling-Rate von 16 zu 8 Bit, müssen dabei in Kauf genommen werden. SoX bietet für diesen Fall die Verwendung von Filtern an, die manchmal das Ergebnis verbessern können.

Verwandlungskünstler

Die Man-Page liefert eine Komplettübersicht aller unterstützten Sound-Formate. Darunter sind jede Menge bekannte Formate wie MP3, Ogg Vorbis oder Wav, aber auch "exotischere" Typen wie Amiga-8-Bit (8svx), die Ihnen normalerweise nicht auf Linux-Systemen begegnen. In manchen SoX-Versionen findet sich gar keine MP3-Unterstützung, was aber zu verschmerzen ist, da es jede Menge MP3-Encoder für Linux gibt. Welche Formate von Ihrer SoX-Installation unterstützt werden, verrät der Aufruf sox -h in der letzten Zeile ("Supported file formats").

Der allgemeine Aufruf zum Umwandeln in ein neues Format lautet

sox [Optionen
] Eingabedatei Ausgabedatei
 [Effekte
]

wobei die eingesetzten Parameter und Effekte optional sind. Sofern SoX die Dateiendung kennt, wandelt das Programm automatisch ins richtige Format um. Um eine Wav-Datei in ein Ogg-Vorbis-File zu kodieren, rufen Sie sox beispielsweise wie in Listing 2 gezeigt auf.

Listing 2

sox-Ausgabe

huhn@asteroid:~$ sox -V 10_hungry.wav 10_hungry.ogg
sox: Detected file format type: wav
sox: Chunk fmt
sox: Chunk data
sox: Reading Wave file: Microsoft PCM format, 2 channels, 44100 samp/sec
sox:         176400 byte/sec, 4 block align, 16 bits/samp, 57565200 data bytes
sox: Input file 10_hungry.wav: using sample rate 44100
        size shorts, encoding signed (2's complement), 2 channels
sox: Input file 10_hungry.wav: comment "10_hungry.wav"
Channels: 2  Rate: 44100
sox: Output file 10_hungry.ogg: using sample rate 44100
        size shorts, encoding signed (2's complement), 2 channels
sox: Output file: comment "10_hungry.wav"

Der Parameter -V sorgt für eine ausführliche Darstellung – hier sehen Sie, was hinter den Kulissen abläuft. SoX erkennt die Dateiformate an den Endungen und holt sich, wenn die Dateierweiterung fehlt, zusätzliche Informationen aus dem Datei-Header. Sollte es dennoch einmal haken und die Meldung "sox: Failed reading datei: Do not understand format type:" erscheinen, hilft die Option -t format.

Der Parameter -r verändert die Sampling-Rate. Diese ist für Dateien im .raw-Format beispielsweise standardmäßig auf 8000 Hz gesetzt. Um ein solches File in eine Wav-Datei zu wandeln, muss SoX die neue Rate (44100) und der Sample-Wert der Ausgangsdatei mitgeteilt werden:

sox -s -w -r 44100 -V datei.raw datei.wav

Die beiden zusätzlichen Optionen -s und -w definieren die Sample-Rate der Ausgangsdatei: Es ist ein Sample-Wert vom Typ "signed" und in "word-size" (2 Bytes). Alternativ können Sie diese beiden Optionen zusammenfassen und dem Parameter -t übergeben – der Aufruf lautet dann

sox -t sw -r 44100 -V datei.raw datei.wav

Soll statt Mono (ein Channel) eine Stereoaufnahme erzeugt werden, hilft -c 2 weiter.

Mit dem Parameter -v ändern Sie die Lautstärke der Datei. Geben Sie hinter der Option eine Zahl kleiner als 1.0 an, wird das Sample leiser, Werte größer als 1.0 drehen die Lautstärke hoch. (Das Dezimalkomma ist US-typisch als Dezimalpunkt zu schreiben.)

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

915 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...