it-swarm.com.de

Reduzieren/Entfernen von Übersteuerungen in SoX beim Konvertieren der Samplerate

Ich verwende SoX, um einen Satz von WAV-Dateien in 16 kHz, 16 Bit, Monokanal-WAV-Dateien (die Teilmengen einer der anfänglichen WAV-Dateien sein werden) zu schneiden. Die meisten Quell-WAV-Dateien sind bereits auf diese Spezifikation eingestellt. Ich habe jedoch gerade herausgefunden, dass einige von ihnen unterschiedliche Abtastraten aufweisen. Da es in Java mithilfe eines ProcessBuilder automatisiert wird, konnte ich den folgenden Befehl verwenden:

sox <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>

und es wird nur die Abtastrate ändern, wenn es nicht 16000 Hz ist. Es macht, was es soll, bei Dateien mit der gleichen Spezifikation, aber bei Dateien mit unterschiedlichen Abtastraten, bekomme ich:

sox WARN rate: rate clipped 48 samples; decrease volume?
sox WARN dither: dither clipped 44 samples; decrease volume?

Wie gehe ich damit um, ohne die Audioqualität zu beeinträchtigen? Beachten Sie, dass ich nichts über Signalverarbeitung weiß.

24
cesar

Versuchen Sie, wie vom Tool vorgeschlagen, die Lautstärke etwas zu verringern, z. durch Voranstellen mit -v 0,99 (oder 0,98 usw.). Solche kleinen Volumenänderungen sind nicht wahrnehmbar.

Beispiel:

sox -v 0.99 <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>

Wenn Sie immer noch Übersteuerungen erhalten, werden die Audiodaten wahrscheinlich zunächst stark übersteuert (dh verzerrt) (dies ist bei moderner Musik üblich; siehe Wikipedia: Loudness war ), sodass die Warnungen ignoriert werden können - es kommt zu keiner zusätzlichen Verzerrung eingeführt.

Wie in den Kommentaren erwähnt, kann die Option -G angegeben werden, die automatisch die Lautstärke anpasst, die zur Vermeidung von Übersteuerungen erforderlich ist (auf Kosten einer kleinen zusätzlichen CPU-Zeit, d. H. Sie läuft mit -G etwas langsamer).

32
user871634

Ich hatte das Problem. Ändern der Codierung der WAV-Datei behoben:

sox input.wav -e signed-integer output.wav
0
Markus Lenger