Anicet
first commit
ba828c2
Raw
History Blame Contribute Delete
1.11 kB
import base64, tempfile, os, torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from functions.utils import getAudioDuration
MODEL_NAME = "openai/whisper-large-v3"
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForSpeechSeq2Seq.from_pretrained(MODEL_NAME, torch_dtype=torch.float16).to(device)
processor = AutoProcessor.from_pretrained(MODEL_NAME)
pipe = pipeline("automatic-speech-recognition", model=model, tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor, torch_dtype=torch.float16, device=device)
def arSTT(audioBase64: str) -> dict:
audioBytes = base64.b64decode(audioBase64)
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as tempFile:
tempFile.write(audioBytes)
tempAudioPath = tempFile.name
try:
result = pipe(tempAudioPath, generate_kwargs={"language": "arabic"})
text = result["text"]
duration = getAudioDuration(tempAudioPath)
finally:
os.remove(tempAudioPath)
return {'text': text, 'language': 'ar', 'duration': duration}