NIGERIA_TTS / classifier_model /voice_language_detector.py
drrobot9's picture
AI test version super initial commit
6153b5e verified
Raw
History Blame Contribute Delete
1.06 kB
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)