Spaces:
Sleeping
Sleeping
| import os | |
| import urllib.request | |
| import fasttext | |
| from app.config import config | |
| fasttext.FastText.eprint = lambda x: None | |
| class LanguageDetector: | |
| def __init__(self): | |
| if not os.path.exists(FASTTEXT_MODEL_PATH): | |
| print("Downloading fastText language ID model") | |
| urllib.request.urlretrieve(FASTTEXT_MODEL_URL, FASTTEXT_MODEL_PATH) | |
| self.model = fasttext.load_model(FASTTEXT_MODEL_PATH) | |
| def detect(self, text: str): | |
| clean_text = text.replace("\n", " ").strip() | |
| if not clean_text: | |
| return DEFAULT_LANGUAGE, 0.0 | |
| labels, confidences = self.model.predict(clean_text, k=1) | |
| lang_code = labels[0].replace("__label__", "") | |
| confidence = float(confidences[0]) | |
| if lang_code in VOICE_IDS and confidence >= CONFIDENCE_THRESHOLD: | |
| return lang_code, confidence | |
| return DEFAULT_LANGUAGE, confidence | |
| detector = LanguageDetector() | |
| def detect_language(text: str): | |
| """Returns (lang_code, confidence)""" | |
| return detector.detect(text) |