Spaces:
Sleeping
Sleeping
import whisper | |
from transformers import pipeline | |
import torch | |
import torchaudio | |
# 🔹 Whisper transkripcija | |
def transcribe_text(audio_path): | |
model = whisper.load_model("base") | |
result = model.transcribe(audio_path, language='lt') | |
return result.get("text", "").strip() | |
# 🔹 Whisper kalbos atpažinimas (su papildomu raktinių žodžių tikrinimu) | |
def recognize_language(audio_path): | |
model = whisper.load_model("base") | |
result = model.transcribe(audio_path) | |
text = result.get("text", "").strip() | |
lang_code = result.get("language", "unknown") | |
lower_text = text.lower() | |
if any(word in lower_text for word in ["labas", "ačiū", "draugas", "vardas", "sekasi", "prašau"]): | |
return "lt" | |
elif any(word in lower_text for word in ["hello", "name", "how are you", "friend", "please"]): | |
return "en" | |
elif any(word in lower_text for word in ["hallo", "danke", "freund", "ich", "bitte"]): | |
return "de" | |
else: | |
return lang_code | |
# 🔸 Wav2Vec2 transkripcija (su kalbos pasirinkimu) | |
def transcribe_text_wav2vec(audio_path, kalba): | |
kalbos_modeliai = { | |
"lt": "DeividasM/wav2vec2-large-xlsr-53-lithuanian", | |
"en": "facebook/wav2vec2-base-960h", | |
"de": "jonatasgrosman/wav2vec2-large-xlsr-53-german" | |
} | |
if kalba not in kalbos_modeliai: | |
raise ValueError(f"Nepalaikoma kalba: {kalba}") | |
pipe = pipeline( | |
"automatic-speech-recognition", | |
model=kalbos_modeliai[kalba] | |
) | |
speech_array, sampling_rate = torchaudio.load(audio_path) | |
if sampling_rate != 16000: | |
resampler = torchaudio.transforms.Resample(orig_freq=sampling_rate, new_freq=16000) | |
speech_array = resampler(speech_array) | |
speech = speech_array[0].numpy() | |
result = pipe(speech) | |
return result["text"] | |