Saltar al contenido

Cambiar el volumen de un archivo wav en python

El paso a paso o código que hallarás en este post es la resolución más eficiente y efectiva que hallamos a esta inquietud o problema.

Solución:

Escribí una biblioteca para simplificar este tipo de cosas.

Puedes hacerlo así:

from pydub import AudioSegment

song = AudioSegment.from_wav("never_gonna_give_you_up.wav")

# reduce volume by 10 dB
song_10_db_quieter = song - 10

# but let's make him *very* quiet
song = song - 36

# save the output
song.export("quieter.wav", "wav")

Como puede ver en los comentarios de la pregunta, hay varias soluciones, algunas más eficientes.

El problema fue detectado de inmediato por Jan Dvorak (“la parte * 5 se recorta y se desborda”) y la solución sencilla fue:

s = numpy.fromstring(s, numpy.int16) / 10 * 5

En este caso, esta solución fue perfecta para mí, lo suficientemente buena.

¡Gracias a todos!

Esto se puede hacer con el audioop módulo en la biblioteca estándar de Python. De esta manera, no hay dependencias como pydub o numpy Se necesitan.

import wave, audioop

factor = 0.5

with wave.open('input.wav', 'rb') as wav:
    p = wav.getparams()
    with wave.open('output.wav', 'wb') as audio:
        audio.setparams(p)
        frames = wav.readframes(p.nframes)
        audio.writeframesraw( audioop.mul(frames, p.sampwidth, factor))

Te mostramos reseñas y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *