• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Lautstärke innerhalb einer wav-Datei anpassen ?

abgdf

Guru
Hi,

ich habe hier eine wav-Datei, bei der die Lautstärke stark schwankt.
normalize geht wohl nur zum Anpassen mehrerer Dateien.
Gibt es einen Effekt oder dgl., der die Lautstärke innerhalb einer wav-Datei auf einen einheitlichen Level bringt ?

Vielen Dank
 
Hast Du schon mal geschaut ob audacity nicht solche Option bietet? Ich meine damit kannst Du auch die Lautstärke anpassen.

Davon mal ab, hab ich mir erlaubt den doppelten Thread zu löschen.
 
OP
A

abgdf

Guru
Entschuldigung für den doppelten Thread, war keine Absicht, das Senden per 56K-Modem hakte zuerst.

audacity zeigt mir ca. 300 Plugin-Effekte. Ich habe viele probiert, aber bisher ohne Erfolg. Ich weiß einfach nicht, welcher es ist.

Vielleicht versuche ich mal, sowas selber mit Python und snack zu programmieren ....

Viele Grüße
 

Speedstar

Hacker
Ich klinke mich da mal eben mit ein :twisted:

Gibt es mittlerweile überhaupt eine vernünftige Möglichkeit die Lautstärke mehreren Liedern anzupassen? Damals gab es nur eine komplizierte, und die hatte bei mir irgendwie nicht geklappt. Das war was mit MP3Gain oder so.
 

Speedstar

Hacker
Vielen Dank, das sieht sehr gut aus.
Aber wie lasse ich ihn Verzeichnisse normalisieren? Arbeitet er auch Verlustfrei? Also, nicht dass sich die lieder danach alle schlecht anhören.
 
Schau mal im Netz, dort solltest Du auch eine Java-Oberfläche für mp3gain finden die auch unter Linux läuft. Diese hat dann eine gewisse Ähnlichkeit mit der Windowsversion.

Normalize wird dir nichts bringen, da es wav Dateien normalisiert. Das führst Du aus wenn Du Musik gerippt hast und bevor Du auf mp3 encodest.
 
OP
A

abgdf

Guru
Hi,

nochmal zu meinem Problem:
Dieses Skript liefert leider auch keine guten Ergebnisse :( :

Code:
#!/usr/bin/env python

from Tkinter import *
import tkSnack
import time

IN = "in.wav"
OUT = "out.wav"
TESTNUM = 50000

root = Tk()
tkSnack.initializeSnack(root)

mysound = tkSnack.Sound(load = IN)
samples = mysound.length()

def cut(a):
    if a > 32767:
        a = 32767
    if a < - 32767:
        a = - 32767
    return(a)

def Getn(a):
    if a < 0:
        a = - a
    if a < 1500:
        n = 6.
    if a > 10000:
        n = 1.
    if a >= 1500 and a <= 10000:
        n = -1./1700 * a + 117. / 17.
        # 5000
        n = - 1. / 700. * a + 57. / 7.
    return (n)

def test(x):
    t = 0
    for i in range(TESTNUM):
        a = int(mysound.sample(x + i).split(" ")[0])
        b = int(mysound.sample(x + i).split(" ")[1])
        if a > 10000 or b > 10000:
            t = 1
            break
    return(t)
    

x = 0

acttime = time.time()
hours = str(time.localtime(acttime)[3])
mins = str(time.localtime(acttime)[4])
if len(mins) == 1:
    mins = "0" + mins
print "Start time: " + hours + ":" + mins + "."

y = 0
print str(y) + " %"

while x < samples:

    a = int(mysound.sample(x).split(" ")[0])
    b = int(mysound.sample(x).split(" ")[1])
    na = Getn(a)
    nb = Getn(b)
    if int(float(x) / float(samples) * 100.) != y:
        y = int(float(x) / float(samples) * 100.)
        print str(y) + " %"
    if na == 1. or nb == 1.:
        if test(x) == 1:
            x += TESTNUM
            continue
    a = int(a * na)
    b = int(b * nb)
    a = cut(a)
    b = cut(b)
    mysound.sample(x, a, b)

    x += 1

mysound.write(OUT)

print "Ok."

acttime = time.time()
hours = str(time.localtime(acttime)[3])
mins = str(time.localtime(acttime)[4])
if len(mins) == 1:
    mins = "0" + mins
print "End time: " + hours + ":" + mins + "."

Ist ja auch ein echt schwieriges Thema:

http://en.wikipedia.org/wiki/Sound_pressure

(Den Artikel hab ich aber nicht benutzt / verstanden).

Auch z.B.
Code:
sox in.wav out.wav vol 6 amplitude 0.5
liefert leider kein gutes Ergebnis.

Viele Grüße
 
OP
A

abgdf

Guru
Ach, es war ja so einfach:

Code:
mplayer in.wav -af volnorm -ao pcm:file=out.wav

"mplayer -af volnorm" mach ich oft bei Video, bei Audio hab ich zuerst einfach nicht dran gedacht.

Viele Grüße
 
Oben