Windows-App zum Trimmen des Kommentars am Ende eines Songs

Gibt es eine Windows-App zum Trimmen von Kommentaren am Ende eines Songs? Wie dieses hier https://www.youtube.com/watch?v=lVXziMFEqX0 Die Musik endet bei ca. 3:42, dann gibt es mindestens 10 Sekunden lang Stille und einen Kommentar. Ich möchte alle meine aac/opus-Dateien stapelweise von solchen Kommentaren (und natürlich der Stille) befreien. Die Formatunterstützung spielt keine Rolle, ich werde sie sowieso in mp3 konvertieren.

Vielen Dank im Voraus!

Antworten (1)

Anstelle eines einzelnen Programms, das dies für Sie erledigt, habe ich eine Kombination, die dies für Sie erledigen kann. Die Kombination ist:

  • PythonProgrammiersprache Download und Installation von https://www.python.org/downloads/ , indem Sie Python 3.6 oder höher auswählen und während der Installation „Zum Pfad hinzufügen“ auswählen.
  • Numpy - Numerische Bibliothek Sobald Sie Python installiert haben, können Sie es von der Eingabeaufforderung mit installierenpip install numpy
  • MoviePy - Videobearbeitung in Python Sobald Sie Python installiert haben, können Sie die Installation von der Eingabeaufforderung mit ausführenpip install moviepy
  • FFMPEG - Media Processing Tools Wird von MoviePy bei der ersten Verwendung automatisch heruntergeladen und installiert.

Beachten Sie, dass dieser Prozess von diesem Blogbeitrag inspiriert wurde , der automatisch die Höhepunkte von Fußballspielen basierend auf den durchschnittlichen Audiopegeln ausschneidet.

Sie können dann ein Python-Skript wie das folgende zusammenstellen:

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)

Beachten Sie, dass der obige Code sehr grob und fertig ist, aber Ihnen den Einstieg erleichtern sollte.