import sys import whisper import os import re import ssl def transcribe_and_fix(mp3_file): # 1. Whisper Modell laden (Base reicht für einzelne Wörter meist aus) # 1. SSL-Check für Standard-Python-Tools deaktivieren if (not os.environ.get('PYTHONHTTPSVERIFY', '') and getattr(ssl, '_create_unverified_context', None)): ssl._create_default_https_context = ssl._create_unverified_context # 2. Umgebungsvariable setzen, die viele Bibliotheken (wie certifi) erkennen os.environ['CURL_CA_BUNDLE'] = "" os.environ['PYTHONHTTPSVERIFY'] = "0" model = whisper.load_model("large-v3") directory = os.path.dirname(mp3_file) #ssl._create_default_https_context = ssl._create_unverified_context print("Analysiere Audio...") # 'language="sv"' zwingt Whisper auf Schwedisch result = model.transcribe(mp3_file, language="sv", fp16=False) text = result['text'].strip() # 2. Fehlerhafte Zeichen & Leerzeichen korrigieren # Wir entfernen alles, was kein Buchstabe oder Zahl ist # und ersetzen Leerzeichen durch Unterstriche clean_text = re.sub(r'[^\w\säöåÄÖÅ]', '', text) # Behält schwedische Zeichen clean_text = clean_text.replace(" ", "_").lower() if not clean_text: print("Konnte keinen Text extrahieren.") return new_filename = f"{clean_text}.mp3" # 3. Umbenennen try: os.rename(mp3_file, directory +"/" + new_filename) print(f"Erfolg: '{mp3_file}' -> '{new_filename}'") except Exception as e: print(f"Fehler beim Umbenennen: {e}") # Testlauf transcribe_and_fix(sys.argv[1])