In diesem Beitrag zeige ich, wie man große Hörbuchdateien mit einem von ChatGPT generierten Python-Skript in kleinere Stücke aufteilt.

Über einen Beitrag auf Hacker News bin ich kürzlich auf die Project Gutenberg Open Audiobook Collection gestoßen. Für diese Seite haben Project Gutenberg, Microsoft und das MIT mithilfe neuer neuronaler Text-to-Speech-Technologie und der großen frei zugänglichen E-Book-Sammlung von Project Gutenberg Tausende kostenlose und offene Hörbücher erstellt. Leider sind die Hörbücher ziemlich lang. „Sturmhöhe“ von Emily Brontë dauert zum Beispiel 11:23:18. Wenn man eine so große Datei auf dem Handy abspielt, hört man sie wahrscheinlich nicht in einem Rutsch durch. Die Stelle wiederzufinden, an der man aufgehört hat, kann mühsam sein.

Um die Datei handlicher zu machen, habe ich mit ChatGPT ein Python-Skript generiert, das sie in 30-minütige Stücke aufteilt.

Bevor ihr das Skript ausführt, empfiehlt es sich, eine Anaconda-Umgebung für Python einzurichten. Danach installiert ihr die Abhängigkeiten von „audiobook-splitter.py“ mit pip und Chocolatey:

pip install pydub

choco install ffmpeg

Legt eine neue Python-Datei an und fügt den folgenden Inhalt ein, oder klont mein Repository mit Python-Hilfsskripten.

# audiobook-splitter.py
import os
import argparse
from pydub import AudioSegment


def split_audio(input_file, output_dir):
    audio = AudioSegment.from_file(input_file)
    segment_length = 30 * 60 * 1000  # 30 minutes in milliseconds

    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    for i, start_time in enumerate(range(0, len(audio), segment_length)):
        end_time = start_time + segment_length
        segment = audio[start_time:end_time]
        output_file = os.path.join(
            output_dir, f"{os.path.basename(input_file)[:-4]}_part_{i + 1}.mp3")
        segment.export(output_file, format="mp3")


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Split an audio file into 30-minute segments.")
    parser.add_argument("input_file", help="Path to the input audio file.")
    parser.add_argument("--output-dir", default="output",
                        help="Directory to save the segmented audio files.")
    args = parser.parse_args()

    input_file = args.input_file
    output_dir = args.output_dir

    split_audio(input_file, output_dir)

Das Skript lässt sich auf der Kommandozeile mit folgender Syntax ausführen:

python audiobook-splitter.py input_audio.mp3 --output-dir output_directory

Viel Spaß mit dem Hörbuch-Splitter und gute Unterhaltung mit der Project Gutenberg Open Audiobook Collection!