Ich arbeite mit Medien, und wenn man mit jeder Art von Medien arbeitet, lernt man ziemlich schnell, dass Standardisierung ein wertvolles Werkzeug ist. So wie Sie nicht versuchen würden, einen Bruch zu einer Dezimalzahl zu addieren, ohne das eine oder das andere umzuwandeln, habe ich gelernt, dass es nicht ideal ist, Medien unterschiedlicher Formate zu kombinieren. Die meisten Anwendungen auf Hobby-Ebene machen den Konvertierungsprozess für den Benutzer aus Bequemlichkeit unsichtbar. Flexible Software für Benutzer, die die Kontrolle über die feinen Details ihrer Assets benötigen, überlassen es jedoch oft Ihnen, Ihre Medien im Voraus in das gewünschte Format zu konvertieren. Ich habe ein paar Lieblingstools für die Konvertierung, und eines davon ist das sogenannte Schweizer Taschenmesser mit Klang, SoX.
Installation
Unter Linux oder BSD können Sie die sox Befehl (und einige hilfreiche Symlinks) aus Ihrem Software-Repository oder Ports-Baum.
Sie können SoX auch von seinem Zuhause auf Sourceforge.net installieren. Es wird nicht oft veröffentlicht, aber seine Codebasis ist in der Regel stabil. Wenn Sie also die neuesten Funktionen (wie Opus-Unterstützung) wünschen, ist es einfach und sicher zu bauen.
SoX bietet in erster Linie die sox Befehl, aber die Installation erstellt auch ein paar nützliche Symlinks: abspielen, rec, und soxi.
Abrufen von Informationen über Dateien mit SoX
SoX liest und schreibt Audiodaten neu. Ob die neu geschriebenen Audiodaten gespeichert werden, liegt bei Ihnen. Es gibt Anwendungsfälle, in denen Sie die konvertierten Daten nicht speichern müssen, beispielsweise wenn Sie die Ausgabe zur Wiedergabe direkt an Ihre Lautsprecher senden. Bevor Sie jedoch eine Konvertierung durchführen, ist es normalerweise eine gute Idee, genau zu bestimmen, womit Sie es überhaupt zu tun haben.
Um Informationen über eine Audiodatei zu sammeln, verwenden Sie die soxi Befehl. Dies ist ein Symlink zu sox –info.
$ soxi countdown.mp3
Input File : '/home/tux/countdown.mp3'
Channels : 1
Sample Rate : 44100
Precision : 16-bit
Duration : 00:00:11.21 = 494185 samples...
File Size : 179k
Bit Rate : 128k
Sample Encoding: MPEG audio (layer I, II or III)
Diese Ausgabe gibt Ihnen eine gute Vorstellung davon, in welchem Codec die Audiodatei codiert ist, die Dateilänge, Dateigröße, Abtastrate und die Anzahl der Kanäle. Einige davon könnten Sie Überlegen Sie wissen es bereits, aber ich vertraue niemals Annahmen, wenn Medien von einem Kunden zu mir gebracht werden. Medienattribute überprüfen mit soxi.
Konvertieren von Dateien
In diesem Beispiel wurde der Ton eines Spielshow-Countdowns als MP3-Datei geliefert. Während fast alle Bearbeitungsanwendungen komprimiertes Audio akzeptieren, bearbeitet keines von ihnen die komprimierten Daten. Die Konvertierung findet irgendwo statt, sei es eine geheime Hintergrundaufgabe oder eine Aufforderung zum Speichern einer Kopie. Ich bevorzuge es im Allgemeinen, die Konvertierung selbst durchzuführen, im Voraus. Auf diese Weise kann ich steuern, welches Format ich verwende. Ich kann viele Medien über Nacht in Stapeln erstellen, anstatt wertvolle Produktionszeit damit zu verschwenden, darauf zu warten, dass eine Bearbeitungsanwendung sie bei Bedarf durchsucht.
Der sox Befehl ist zum Konvertieren von Audiodateien gedacht. Es gibt ein paar Stufen in der sox Pipeline:
- Eingang
- kombinieren
- Auswirkungen
- Ausgang
In der Befehlssyntax ist der Effektschritt verwirrenderweise geschrieben zuletzt. Das bedeutet, dass die Pipeline so zusammengesetzt ist:
input → combine → output → effects
Codierung
Der einfachste Konvertierungsbefehl umfasst nur eine Eingabedatei und eine Ausgabedatei. Hier ist der Befehl zum Konvertieren einer MP3-Datei in eine verlustfreie FLAC-Datei:
$ sox countdown.mp3 output.flac
$ soxi output.flac
Input File : 'output.flac'
Channels : 1
Sample Rate : 44100
Precision : 16-bit
Duration : 00:00:11.18 = 493056 samples...
File Size : 545k
Bit Rate : 390k
Sample Encoding: 16-bit FLAC
Comment : 'Comment=Processed by SoX'
Auswirkungen
Die Effektkette wird am Ende eines Befehls angegeben. Es kann Audio ändern, bevor die Daten an ihr endgültiges Ziel gesendet werden. Manchmal kann beispielsweise zu lautes Audio zu Problemen bei der Konvertierung führen:
$ sox bad.wav bad.ogg
sox WARN sox: `bad.ogg' output clipped 126 samples; decrease volume?
Anwenden von a gewinnen Effekt kann dieses Problem oft lösen:
$ sox bad.wav bad.ogg gain -1
Verblassen
Ein weiterer nützlicher Effekt ist verblassen. Mit diesem Effekt können Sie die Form eines Fade-Ins oder Fade-Outs definieren und angeben, wie viele Sekunden das Fade dauern soll.
Hier ist ein Beispiel für eine sechs Sekunden lange Einblendung mit einer invertierten Parabel:
$ sox intro.ogg intro.flac fade p 6
Dies wendet ein dreisekündiges Fade-In auf den Kopf des Audios und ein Fade-Out ab der 8-Sekunden-Marke an (die Intro-Musik dauert nur 11 Sekunden, also beträgt das Fade-Out in diesem Fall auch drei Sekunden). :
$ sox intro.ogg intro.flac fade p 3 8
Die verschiedenen Fades (Sinus, Linear, Inverted Parabel usw.) sowie die Optionen verblassen Angebote (Einblendung, Ausblendung), sind in der sox man-Seite.
Effektsyntax
Jedes Effekt-Plug-in hat seine eigene Syntax. Einzelheiten zum Aufrufen jedes einzelnen finden Sie auf der Man-Seite.
Effekte können in einem Befehl verkettet werden, zumindest soweit Sie sie kombinieren möchten. Mit anderen Worten, es gibt keine Syntax zum Anwenden von a Flanger Effekt nur während einer sechssekündigen Ausblendung. Für etwas so Präzises benötigen Sie einen grafischen Klangwelleneditor oder eine digitale Audio-Workstation wie LMMS oder Rosegarden. Wenn Sie jedoch nur Effekte haben, die Sie einmal anwenden möchten, können Sie sie zusammen im selben Befehl auflisten.
Dieser Befehl wendet ein -1 . an gewinnen Wirkung, rechtzeitig strecken von 1,35 und a ausblenden:
$ sox intro.ogg output.flac gain -1 stretch 1.35 fade p 0 6
$ soxi output.flac
Input File : 'output.flac'
Channels : 1
Sample Rate : 44100
Precision : 16-bit
Duration : 00:00:15.10 = 665808 samples...
File Size : 712k
Bit Rate : 377k
Sample Encoding: 16-bit FLAC
Comment : 'Comment=Processed by SoX'
Audio kombinieren
SoX kann auch Audiodateien kombinieren, entweder durch Verketten oder durch Mischen.
Beitreten (oder verketten) Dateien in eine, geben Sie mehr als eine Eingabedatei in Ihrem Befehl an:
$ sox countdown.mp3 intro.ogg output.flac
In diesem Beispiel, ausgabe.flac enthält jetzt Countdown Audio, direkt gefolgt von Einführung Musik.
Wenn Sie jedoch möchten, dass sich die beiden Tracks gleichzeitig überspielen, können Sie die –Mix kombinieren Möglichkeit:
$ sox --combine mix countdown.mp3 intro.ogg output.flac
Stellen Sie sich jedoch vor, dass sich die beiden Eingabedateien nicht nur in ihren Codecs unterscheiden. Es ist nicht ungewöhnlich, dass Gesangsspuren in Mono (ein Kanal) aufgenommen werden, Musik jedoch mindestens in Stereo (zwei Kanäle). SoX wird standardmäßig keine Lösung verwenden, daher müssen Sie das Format der beiden Dateien zuerst selbst standardisieren.
Audiodateien ändern
Optionen in Bezug auf den aufgelisteten Dateinamen nach es. Zum Beispiel die –Kanäle Option in diesem Befehl gilt nur zu input.wav und NICHT zu beispiel.ogg oder ausgabe.flac:
$ sox --channels 2 input.wav example.ogg output.flac
Dies bedeutet, dass die Position einer Option in SoX von großer Bedeutung ist. Wenn Sie zu Beginn Ihres Befehls eine Option angeben, überschreiben Sie im Wesentlichen nur das, was SoX selbst aus den Eingabedateien liest. Optionen, die unmittelbar vor dem . platziert werden Ausgang legen Sie jedoch fest, wie SoX die Audiodaten schreibt.
Um das vorherige Problem der inkompatiblen Kanäle zu lösen, können Sie zuerst Ihre Eingänge standardisieren und dann mischen:
$ sox countdown.mp3 --channels 2 countdown-stereo.flac gain -1
$ soxi countdown-stereo.flac
Input File : 'countdown-stereo.flac'
Channels : 2
Sample Rate : 44100
Precision : 16-bit
Duration : 00:00:11.18 = 493056 samples...
File Size : 545k
Bit Rate : 390k
Sample Encoding: 16-bit FLAC
Comment : 'Comment=Processed by SoX'
$ sox --combine mix
countdown-stereo.flac
intro.ogg
output.flac
SoX erfordert unbedingt mehrere Befehle für komplexe Aktionen, daher ist es normal, nach Bedarf mehrere temporäre und Zwischendateien zu erstellen.
Mehrkanal-Audio
Natürlich ist nicht alles Audio auf einen oder zwei Kanäle beschränkt. Wenn Sie mehrere Audiokanäle zu einer Datei zusammenfassen möchten, können Sie dies mit SoX und dem –kombiniere geht Möglichkeit:
$ sox --combine merge countdown.mp3 intro.ogg output.flac
$ soxi output.flac
Input File : 'output.flac'
Channels : 3
[...]
Einfache Audiomanipulation
Es mag seltsam erscheinen, ohne visuelle Schnittstelle mit Audio zu arbeiten, und für einige Aufgaben ist SoX definitiv nicht das beste Werkzeug. Für viele Aufgaben bietet SoX jedoch ein einfaches und leichtes Toolkit. SoX ist ein einfacher Befehl mit starkem Potenzial. Damit können Sie Audio konvertieren, Kanäle und Wellenformen manipulieren und sogar Ihre eigenen Sounds erzeugen. Dieser Artikel hat nur einen kurzen Überblick über seine Funktionen gegeben. Lesen Sie also seine Manpage oder Online-Dokumentation und sehen Sie, was Sie erstellen können.