Audio-Dateien mittels ffmpeg normalisieren

Für einen Audio-Workflow wollte ich unter anderem Audio-Dateien normalisieren, damit diese mit einer identischen Lautheit verfügbar sind. Dazu kann das freie ffmpeg genutzt werden:

ffmpeg -i local.flac -filter:a loudnorm local.wav

Allerdings wird bei der Normalisierung eine 2-Pass-Lösung empfohlen. Dabei wird im ersten Durchlauf die Datei analysiert, um die entsprechenden Werte für die qualitativ hochwertige Normalisierung zu ermitteln:

ffmpeg -i local.flac -filter:a loudnorm=print_format=json -f null NULL

Für die entsprechende Datei wird dann eine Ausgabe erzeugt:

{
	"input_i" : "-33.65",
	"input_tp" : "-8.11",
	"input_lra" : "7.10",
	"input_thresh" : "-44.96",
	"output_i" : "-25.28",
	"output_tp" : "-2.00",
	"output_lra" : "4.50",
	"output_thresh" : "-36.36",
	"normalization_type" : "dynamic",
	"target_offset" : "1.28"
}

Mithilfe dieser Informationen kann dann der zweite Durchlauf gestartet werden:

ffmpeg -i local.flac -filter:a loudnorm=linear=true:i=-16:lra=7.0:tp=-2.0:offset=0.50:measured_I=-33.65:measured_tp=-8.11:measured_LRA=7.10:measured_thresh=-44.96 -ar 44100 local.wav

Da die Lösung mittels ffmpeg etwas umständlich ist, wurde ffmpeg-normalize entwickelt. Dieses Python-Tool kann über den Python-Paketmanager installiert werden:

pip3 install ffmpeg-normalize

Anschließend kann die Normalisierung und Konvertierung vorgenommen werden:

ffmpeg-normalize local.flac -o local.wav -ar 44100

In diesem Fall wird die FLAC-Datei normalisiert und in eine Wave-Datei konvertiert und die entsprechende Samplerate auf 44100 gestellt. Um das Kommando einfacher zugänglich zu machen, kann eine Bash-Funktion definiert werden. Unter macOS muss diese in der entsprechenden Konfigurationsdatei der Z shell angelegt werden:

nano ~/.zshrc

Anschließend kann die entsprechende Funktion in der Datei definiert werden:

normalize ()
{
  ffmpeg-normalize "$1" -o "$1".wav -ar 44100
}

Nachdem das Terminal neu gestartet wurde, kann das Kommando wie folgt benutzt werden:

normalize local.flac

WordPress-Beiträge als Markdown exportieren

Auf der Suche nach einer Möglichkeit um Beträge in WordPress als Markdown-Dateien zu exportieren, bin ich auf wp2md gestoßen. Dabei handelt sich um eine kleine Applikationen zur Umwandlung der WordPress-XML-Exportdatei zu Markdown. Zur Installation muss der Python-Paketmanager pip bemüht werden:

pip install git+https://github.com/dreikanter/wp2md

Anschließend kann wp2md für dem Export genutzt werden:

wp2md -d output/ export.xml

In der Minimalkonfiguration muss der Ausgabepfad und die Exportdatei angegeben werden. Die Export-Datei wird vorher unter WordPress über Werkzeuge -> Daten exportieren erzeugt. Anschließend erscheinen die Logmeldungen über den Exportfortschritt:

Dumping post to 'output/posts/20180616-pdfs-aus-bildern-mittels-imagemagick-erstellen.md'
Dumping post to 'output/posts/20180617-homebrew-deinstallieren-2.md'
Dumping post to 'output/posts/20180618-fernausloesung-der-kamera-am-iphone.md'
Dumping post to 'output/posts/20180619-transparente-verschluesselung-fuer-cloud-dienste.md'
Dumping post to 'output/posts/20180620-online-vektorisierer-fuer-rastergrafiken.md'
Dumping post to 'output/posts/20180711-zettlr-ein-flexibler-markdown-editor.md'
Dumping post to 'output/posts/20180712-bsnes-neu-aufgelegt.md'
Dumping post to 'output/posts/20180713-enpass-als-1password-alternative.md'
Dumping post to 'output/posts/20180720-ideentool-mit-neuen-generatoren-erschienen.md'
Dumping post to 'output/posts/20180723-cryptomator-laufwerk-verschwindet-unter-macos.md'
Dumping post to 'output/posts/20180725-puffer-fuer-streaming-im-vlc-mediaplayer-erhoehen.md'
Dumping index to 'output/index.md'

Total: posts: 3239; pages: 78; comments: 2878
Elapsed time: 30.55538 s

Neben den eigentlichen Artikeln, werden die dazugehörigen Kommentare exportiert. Daneben werde andere Inhalte wie Seiten und Entwürfe ebenfalls exportiert. Über die Kommandozeilenparameter kann der Export granulärer gesteuert werden. Der Quelltext des Projektes ist auf GitHub zu finden. Lizenziert ist das Projekt unter der GPL in der Version 3 und damit freie Software.