initial: silero-tts-service + README

This commit is contained in:
Никита Тарасов committed 2026-08-24 21:28:44 +05:00
1 parent 8c60c25ad2
commit 984b1fec6d
18 files changed
+2080

No files matched your search

+49
View File
@@ -0,0 +1,49 @@
"""Валидаторы входных данных.
Не зависят от torch/silero — можно тестировать изолированно.
"""
from fastapi import HTTPException
def validate_text(text: str) -> str:
"""
Очистка и валидация входного текста:
- Убирает управляющие символы (кроме \n \r \t)
- Нормализует множественные пробелы
- Проверяет длину
"""
if not text.strip():
raise HTTPException(
status_code=400,
detail="Текст не может быть пустым или пробелами",
)
# Удаляем управляющие символы
text = "".join(
ch for ch in text
if ch in ("\n", "\r", "\t") or (ord(ch) >= 32 and ch != "\x7f")
)
# Нормализуем множественные пробелы (но не табы/ньюлайны)
import re
text = re.sub(r"[^\S\n\t]+", " ", text)
text = text.strip()
if len(text) > 4000:
raise HTTPException(
status_code=400,
detail=f"Текст слишком длинный (max 4000, got {len(text)})",
)
return text
def validate_speaker(speaker: str, speakers: dict) -> str:
"""Проверка валидности голоса."""
if speaker not in speakers:
raise HTTPException(
status_code=400,
detail=f"Неизвестный голос. Доступные: {', '.join(speakers.keys())}",
)
return speaker