|
from faster_whisper import WhisperModel |
|
import os |
|
import torch |
|
|
|
|
|
model = None |
|
|
|
def get_model(): |
|
global model |
|
if model is None: |
|
|
|
device = "cuda" if torch.cuda.is_available() else "cpu" |
|
|
|
compute_type = "float16" if device == "cuda" else "int8" |
|
print(f"Laddar Whisper-modell på {device} med compute_type={compute_type}") |
|
model = WhisperModel("base", device=device, compute_type=compute_type) |
|
return model |
|
|
|
def transcribe_audio(audio_path: str) -> str: |
|
"""Transkribera ljudfil till text""" |
|
try: |
|
if not os.path.exists(audio_path): |
|
return f"Audio file not found: {audio_path}" |
|
|
|
model = get_model() |
|
segments, info = model.transcribe(audio_path, beam_size=5) |
|
|
|
transcription = " ".join(segment.text for segment in segments) |
|
return transcription.strip() or "No transcription found." |
|
|
|
except Exception as e: |
|
return f"Error transcribing audio: {str(e)}" |
|
|
|
|