Aplicación de Windows para recortar el comentario al final de una canción

¿Existe una aplicación de Windows para recortar los comentarios al final de una canción? Me gusta este https://www.youtube.com/watch?v=lVXziMFEqX0 La música termina alrededor de las 3:42, luego hay un silencio de al menos 10 segundos y comentarios. Quiero recortar por lotes todos mis archivos aac/opus de dichos comentarios (y el silencio, por supuesto). El soporte de formato realmente no importa, los convertiré a mp3 de todos modos.

¡Muchas gracias de antemano!

Respuestas (1)

En lugar de un solo programa que hace esto por ti, tengo una combinación que puede hacerlo por ti. La combinación es:

  • Python : lenguaje de programación Descargue e instale desde https://www.python.org/downloads/ seleccionando Python 3.6 o posterior y seleccionando "Agregar a la ruta" durante la instalación.
  • Numpy - Biblioteca numérica Una vez que haya instalado Python, puede instalarlo desde el símbolo del sistema conpip install numpy
  • MoviePy - Edición de video en Python Una vez que haya instalado Python, puede instalarlo desde el símbolo del sistema conpip install moviepy
  • FFMPEG - Herramientas de procesamiento de medios MoviePy descarga e instala automáticamente en el primer uso.

Tenga en cuenta que este proceso se inspiró en esta publicación de blog que recorta automáticamente los mejores momentos de los partidos de fútbol en función de los niveles de audio promedio.

A continuación, puede armar una secuencia de comandos de python similar a la siguiente:

import os  # Pythons default library for OS operations
import glob  # Pythons default library for file pattern matching
import numpy as np # for numerical operations
from moviepy.editor import AudioFileClip

def find_silences(audio):
    """ Find the silences in an audio clip """
    cut = lambda i: audio.subclip(i,i+1).to_soundarray(fps=22000)  # get one sec of audio as an array
    volume = lambda array: np.sqrt(((1.0*array)**2).mean())  # RMS of Array
    # Use the above to get a list of the volumes per second
    volumes = [volume(cut(i)) for i in range(0,int(sound.duration-1))] 
    # Get the times when the volume is zero
    zero_secs = [i for i, v in enumerate(volumes) if v == 0.0]

def process_file(fname):
    """ Process a file """
    audio = AudioFileClip(filename=files[0])
    silences = find_silences(audio)
    two_secs = [s for s, i in silences[:-1] if s+1 == silences[i+1]]
    if len(two_secs) == 0:
        print(fname, "no two second silence found!")
    else:  # We have at least one 2 sec silence
        clipped = audio.subclip(0, two_secs[0])  # Clip to that length
        clipped.to_audiofile('temp.mp3')  # Save to a temp name
        os.rename(fname, fname+".orig")  # keep the old just in case
        os.rename('temp.mp3', fname)   # rename temp to original name

if __name__ == "__main__":
    for FNAME in glob.glob("*.mp3"):  # All the MP3 files in the current directory
        process_file(FNAME)

Tenga en cuenta que el código anterior es muy aproximado y está listo, pero debería ayudarlo a comenzar.