from pydub import AudioSegment, silence import speech_recognition as sr import os # Lade die MP3-Datei und konvertiere sie zu WAV audio = AudioSegment.from_mp3("bisEnde.mp3") audio = audio.set_channels(2).set_frame_rate(48000) # Mono & 16kHz für bessere Erkennung BUFFER_BEFORE = 300 BUFFER_AFTER = 300 # Stille erkennen mit optimierten Werten silent_ranges = silence.detect_silence(audio, min_silence_len=400, silence_thresh=-45) silent_ranges = [(start, end) for start, end in silent_ranges if end - start > 200] # Kurze Pausen filtern # Wortsegmente bestimmen word_segments = [] start = 0 for silence_start, silence_end in silent_ranges: word_segments.append((start, silence_start)) start = silence_end word_segments.append((start, len(audio))) # Letztes Wort hinzufügen # Sprach-Recognizer vorbereiten recognizer = sr.Recognizer() namenr = 1 # Jedes Segment speichern und transkribieren for i, (start, end) in enumerate(word_segments): start = max(0, start - BUFFER_BEFORE) end = min(len(audio), end + BUFFER_AFTER) segment = audio[start:end] temp_file = f"temp_word_{i+1}.wav" segment.export(temp_file, format="wav") #word_text = "" # Spracherkennung durchführen with sr.AudioFile(temp_file) as source: audio_data = recognizer.record(source) try: word_text = recognizer.recognize_google(audio_data, language="sv-SE") # Schwedisch print("Erkanntes Wort:", word_text) word_text = word_text.replace(" ", "_") # Leerzeichen durch Unterstrich ersetzen final_file = f"{word_text}.wav" print(f"Wort {i+1}: {word_text} -> Gespeichert als {final_file}") os.rename(temp_file, final_file) except sr.UnknownValueError: print("Google konnte nichts erkennen.") final_file = f"{namenr}.wav" os.rename(temp_file, final_file) print(f"{namenr} -> Gespeichert als {final_file}") namenr = namenr + 1 except Exception as e: print(f"Fehler: {e}") print("Fertig! Alle Worte wurden gespeichert.")