Mit FFmpeg konvertieren
FFmpeg verfügt über einen eingebauten Audiofilter, um das Tempo ohne Änderung der Tonhöhe zu ändern. Wir müssen die Datei in ein Format kodieren, das Ihr Telefon wiedergibt. Das hängt natürlich vom Telefon ab. Viele moderne Smartphones wie AAC-Audio:
ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libfaac -q:a 100 final.m4a
Hier können Sie die Qualität mit der -q:a
Option ändern, wobei der Wert in Prozent und höher bedeutet besser.
Oder MP3-Audio mit einer (durchschnittlichen) Qualität von 4, wobei weniger besser ist (0 führt zu etwa 245 kBit / s):
ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libmp3lame -q:a 4 final.mp3
Wenn Ihr Telefon keine davon unterstützt, müssen wir weiter suchen. Oh, und ich benutze hier ffmpeg
synonym mit avconv
. Sie sind nicht ganz dasselbe, aber für die oben genannten Fälle können Sie eines der beiden Werkzeuge verwenden. Wenn Ihre Version von FFmpeg oder avconv weder FAAC noch LAME enthält, holen Sie sich einen statischen Linux-Build von der FFmpeg-Downloadseite .
Wenn Sie die FFmpeg-Filter nicht mögen, haben Sie einen anderen Ansatz:
Rohes Audio extrahieren
Zunächst müssen Sie den rohen Audiostream in einem unkomprimierten Format extrahieren, z. B. PCM Stereo 16-Bit-Audio in einem WAV-Container.
ffmpeg -i weird.wma temp.wav
Jetzt können wir die Datei verwenden temp.wav
, um den Ton zu verkürzen. Dafür haben wir einige Möglichkeiten:
Option 1: SoX
SoX bietet verschiedene Filter an, mit denen Sie Geschwindigkeit, Tonhöhe oder Tempo ändern können. Wenn Sie einfach die Geschwindigkeit ändern, wird die Tonhöhe erhöht, um die Länge zu kompensieren. Dies kann unnatürlich klingen.
Der tempo
Filter verwendet einen erweiterten Algorithmus, um die Dateien zu verkürzen, die Tonhöhe jedoch beizubehalten, indem sie in kleinere Zeitfenster unterteilt und dann "zusammengeführt" werden, wodurch das Tempo beschleunigt wird. Zum Beispiel:
sox temp.wav output.wav -tempo 1.7
Das hört sich vielleicht etwas komisch an. Wenn dies der Fall ist, wählen Sie Option 2.
Option 2: Pauls extreme Sounddehnung
Dieses Programm verspricht, bessere Qualität als SoX zu bieten, und es gibt eine in GitHub verfügbare Befehlszeilenversion in Python . Ein Befehl könnte wie folgt aussehen: Denken Sie daran, dass die Datei standardmäßig gedehnt wird. Um sie zu verkürzen, berechnen wir die Umkehrung von 1.7 (0,59):
python paulstretch_stereo.py -s 0.59 temp.wav output.wav
Konvertieren Sie Roh-Audio in eine komprimierte Datei
Jetzt haben wir eine gekürzte WAV-Datei, die jedoch immer noch nicht komprimiert ist und daher erneut komprimiert werden muss. Informationen zu den verschiedenen Formaten finden Sie in den Optionen oben in diesem Beitrag.
ffmpeg -i output.wav -c:a …
Die oben beschriebenen Nicht-ffmpeg-Methoden verlieren Ihre Metadaten. Sie können es wieder hinzufügen, wenn Sie output.wav in ein komprimiertes Format konvertieren:
ffmpeg -i output.wav -i weird.wma -map 0 -map_metadata 1 -c:a ...