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)