ubuntu - ¿Cómo puedo eliminar el silencio de un MP3 programáticamente?
audio ffmpeg (3)
Tengo archivos MP3 que a veces tienen silencio al final. Me gustaría eliminar este silencio automáticamente. Por lo que puedo decir, es silencio "perfecto" (amplitud 0), no ruido de fondo. La duración del contenido y el silencio varía.
Encontré algunas otras preguntas sobre recortar los primeros 30 segundos o recortar a X y X + N segundos usando ffmpeg
. Pensaría que podría usar un enfoque similar, siempre que tenga una manera de descubrir cuándo comienza el silencio. ¿Cómo lo haría programáticamente?
Por ejemplo, una posible solución sería tener un comando que encuentre el comienzo del "silencio". Esperaría una secuencia como esta
end=$(ffmpeg some-command-to-find-start-of-silence)
ffmpeg -t "$end" -acodec copy -i inputfile.mp3 outputfile.mp3
La solución no tiene que usar ffmpeg
, pero sí debe estar disponible en Ubuntu.
Eche un vistazo al filtro de audio FFmpeg silencedetect
:
Detecta silencio en una transmisión de audio.
Este filtro registra un mensaje cuando detecta que el volumen de audio de entrada es menor o igual a un valor de tolerancia de ruido para una duración mayor o igual a la duración de ruido mínima detectada.
Los tiempos impresos y la duración se expresan en segundos.
Tiene parámetros para ajustar cuán silencioso debe ser algo para que se lo considere silencio, y cuánto tiempo debe anotarse el silencio.
Probablemente esté buscando una solución sin pérdidas , es decir, una que no requiera una nueva codificación (lo que reduce la calidad).
Creo que mp3splt es lo que estás buscando. Se puede usar desde línea de comando y GUI.
sudo aptitude install mp3splt mp3splt-gtk
debería funcionar en Debian y Ubuntu.
Desde la página man:
También puede intentar dividir archivos automáticamente con la detección de silencio (vea la opción -s), recortar archivos usando la detección de silencio (vea la opción -r), o por una duración de tiempo fija (vea la opción -t)
sox inputfile.mp3 outputfile.mp3 silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse
Esto cortará cualquier silencio de más de 0.1 segundo desde su archivo. Si solo le preocupa recortar el extremo, esto se puede simplificar para:
sox inputfile.mp3 outputfile.mp3 reverse silence 1 0.1 0.1% reverse
Una mirada detallada sobre cómo funciona el silence
sox
se puede encontrar here .