Wie dämpf ich eine WAV-Datei um einen bestimmten Dezibelwert?

8

Wenn ich die Amplitude einer WAV-Datei um 25% reduzieren wollte, würde ich so etwas schreiben:

%Vor%

Viele der Artikel, die ich zu Audiotechniken gelesen habe, diskutieren die Amplitude in Dezibel. Ich verstehe die logarithmische Natur von Dezibel-Einheiten im Prinzip, aber nicht so sehr in Bezug auf den tatsächlichen Code.

Meine Frage ist: Wenn ich die Lautstärke einer WAV-Datei um beispielsweise 20 Dezibel abschwächen möchte, wie würde ich das im Code tun, wie in meinem obigen Beispiel?

Aktualisieren : Formel (basierend auf der Antwort von Nils Pipenbrinck) zum Dämpfen um eine gegebene Anzahl von Dezibel (eingegeben als eine positive Zahl, z. B. 10, 20 usw.):

%Vor%

Wenn ich also um 20 Dezibel dämpfen möchte, ist der Verstärkungsfaktor .1 .

    
MusiGenesis 19.07.2009, 02:21
quelle

4 Antworten

11

Ich denke, du willst von Dezibel in Verstärkung umwandeln.

Die Gleichungen für Audio sind:

Dezibel zu gewinnen:

%Vor%

oder in C:

%Vor%

Die Gleichungen zur Umwandlung von Gain in db lauten:

%Vor%     
Nils Pipenbrinck 19.07.2009, 02:34
quelle
1

Wenn Sie nur etwas Audio adden möchten, hatte ich gute Ergebnisse mit dem normalisieren Paket von nongnu.org . Wenn Sie wissen möchten, wie es gemacht wird, ist der Quellcode frei verfügbar. Ich habe auch wavnorm verwendet, dessen Homepage momentan nicht verfügbar ist.

    
Norman Ramsey 19.07.2009 03:11
quelle
1

Eine Sache zu beachten: .WAV-Dateien haben viele verschiedene Formate. Der obige Code funktioniert nur für WAVE_FORMAT_FLOAT. Wenn Sie mit PCM-Dateien arbeiten, werden Ihre Samples 8, 16, 24 oder 32 Bit Integer sein (8 Bit PCM verwendet vorzeichenlose Integer von 0..255, 24 Bit PCM kann gepackt oder entpackt werden (gepackt == 3 Byte Werte nebeneinander gepackt, entpackt == 3 Byte Werte in einem 4 Byte Paket).

Und dann gibt es das Problem der alternativen Kodierungen - Zum Beispiel in Win7, alle Windows-Sounds sind eigentlich MP3-Dateien in einem WAV-Container.

Es ist leider nicht so einfach wie es klingt: (.

    
Larry Osterman 21.07.2009 02:06
quelle
1

Hoppla! Ich habe die Frage falsch verstanden ... Sie können meine Python-Implementierungen der Konvertierung von dB in einen Float (den Sie als Multiplikator für die Amplitude verwenden können, wie Sie oben zeigen) und umgekehrt sehen

Ссылка

Kurz gesagt, es ist:

%Vor%

Um die Lautstärke um 6 dB zu reduzieren, multiplizieren Sie die Amplitude jedes Samples mit:

%Vor%     
Jiaaro 05.12.2012 22:31
quelle

Tags und Links