53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
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]) |