Mi viaje mejorando un modelo TTS para el idioma tártaro de Crimea

Optimiza tu modelo TTS para el idioma tártaro de Crimea y lleva tu proyecto al siguiente nivel con nuestros consejos y técnicas avanzadas. ¡Mejora la calidad y la naturalidad de tu texto a voz de forma efectiva!

martes, 2 de diciembre de 2025 • 5 min de lectura • Equip Q2BSTUDIO

Mejorando un modelo TTS para el idioma tártaro de Crimea

Trabajar con aprendizaje automático suele significar que el éxito está oculto detrás de horas de frustración, errores constantes y pipelines rotas. Mi viaje mejorando un modelo TTS para el idioma tártaro de Crimea es exactamente ese tipo de historia. Lo que empezó como un experimento pequeño para afinar una voz existente terminó siendo una aventura completa de depuración que me enseñó más sobre integridad de datos, procesamiento de audio y paciencia de lo que cualquier tutorial podría.

El punto de partida fue sencillo: mejorar la voz Sevil para Crimean Tatar. Ya había trabajado con voces similares como Arslan y Abibullah usando datasets de Hugging Face como speech-uk/tts-crh-arslan y speech-uk/tts-crh-abibullah. Las primeras pruebas de entrenamiento parecían ir bien con una pérdida alrededor de 0,283 y resultados aceptables. Pero algo no cuadraba. El dataset tenía 1.566 archivos de audio y los logs de entrenamiento mostraban que solo se estaban usando 415, aproximadamente 26,5 por ciento del total. Casi tres cuartas partes de los datos se estaban ignorando silenciosamente.

Al principio pensé que era un caso aislado, luego descubrí que era un problema sistémico en la API de datasets de Hugging Face al cargar audio comprimido desde archivos Parquet. Al cargar el dataset con datasets.load_dataset() muchos archivos devolvían errores de decodificación y aparentaban estar vacíos, aunque al inspeccionarlos manualmente con pandas.read_parquet() los bytes de audio estaban donde debían. El problema no estaba en los archivos, sino en cómo el decodificador manejaba los bytes crudos.

Intenté convertir los bytes manualmente a .raw y abrirlos con librosa y soundfile sin éxito porque faltaba metadata esencial como sample rate, canales y codificación. La solución llegó con FFmpeg. Conociendo los parámetros del dataset — sample rate 16000 Hz, mono, formato PCM 16 bits little endian — pude convertir todos los .raw a .wav limpios con un comando como ffmpeg -f s16le -ar 16000 -ac 1 -i sevil_0000.raw sevil_0000.wav. Así se resolvieron 1.566 archivos sin corrupción y con validación 100 por ciento exitosa.

Con el audio limpio, reentrené el modelo Sevil desde cero usando todos los 1.566 registros. La configuración de entrenamiento, basada en experiencias previas con Arslan, incluyó num_train_epochs = 500, batch_size = 4, learning_rate = 1e-4, fp16 = True, warmup_steps = 2000 y save_steps = 2000. La pérdida bajó de 1,14 a 0,80 a 0,50 y finalmente a 0,27, y la calidad de la voz mejoró con cada época. Pero en el 78 por ciento de avance el entrenamiento falló con un RuntimeError relacionado con torch.cat() esperando una lista no vacía de tensores, un bug conocido en guided_attention_loss cuando hay longitudes de secuencia desiguales.

En lugar de reiniciar, reanudé desde el último checkpoint en el paso 16.000 y desactivé guided attention con model.config.use_guided_attention_loss = False. Esa simple línea salvó el proyecto. El entrenamiento continuó, completó el 98 por ciento del ciclo y se estabilizó con una pérdida final de 0,267. El cambio fue pequeño en números pero grande en calidad: Sevil v2 generalizó mejor, produjo una entonación más suave y mantuvo consistencia en la pronunciación incluso con palabras no vistas.

Comparando versiones: Sevil v1 entrenada con 415 archivos (26,5 por ciento) obtuvo pérdida 0,276 y funcionó en pruebas, pero estaba limitada por datos parciales. Sevil v2 con 1.566 archivos (100 por ciento) alcanzó pérdida 0,267 y mostró mayor robustez y mejor prosodia. La diferencia real estuvo en la confianza del modelo y en su capacidad de generalización.

Lecciones aprendidas clave: nunca confiar solo en métricas sin verificar la cobertura de datos; FFmpeg puede resolver problemas que otras librerías no manejan; validar cada archivo automatizando procesos ahorra horas; la guided attention puede ser prescindible cuando la estabilidad es prioritaria; y documentar cada intento permite entender la historia completa, no solo el final feliz.

Este proyecto importa porque no solo arregla un dataset, sino que mejora la presencia digital de un idioma con pocos recursos como el tártaro de Crimea. Mejorar la voz Sevil significa pronunciación más clara, prosodia más natural y mayor accesibilidad para estudiantes y hablantes nativos.

En Q2BSTUDIO aplicamos este tipo de experiencia técnica y metodológica en proyectos reales. Somos una empresa de desarrollo de software y aplicaciones a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud. Si buscas soluciones de software a medida o desarrollar una aplicación multiplataforma, podemos ayudarte con diseño y ejecución servicios de desarrollo de aplicaciones y software a medida. Y si tu proyecto requiere despliegue en la nube o integración con infraestructuras escalables, ofrecemos servicios cloud aws y azure pensados para producción servicios cloud AWS y Azure.

Además de desarrollo, brindamos soluciones en inteligencia artificial para empresas, creación de agentes IA, automatización de procesos y servicios de inteligencia de negocio como Power BI. Nuestra experiencia en IA para empresas incluye diseño de pipelines de datos, entrenamiento de modelos en lenguajes de bajo recurso y despliegue seguro y eficiente. También cubrimos ciberseguridad y pentesting para proteger los pipelines de datos y modelos ML, garantizando integridad y confidencialidad.

Si te interesa mejorar modelos TTS, integrar capacidades de IA en tu producto o desarrollar software a medida con soporte en seguridad y cloud, en Q2BSTUDIO combinamos investigación y práctica industrial para llevar tu proyecto del prototipo a producción. No subestimes el valor de validar datos, documentar intentos y utilizar herramientas como FFmpeg cuando las bibliotecas habituales fallan. Ese enfoque evita sorpresas y acelera resultados.

Autor del caso original Servin Osmanov, Lead Fullstack Python ReactJS Engineer, investigador en IA y desarrollador TTS para lenguas con pocos recursos. Proyecto disponible en Hugging Face como servinosmanov/tts-crh-sevil-fixed. En Q2BSTUDIO estamos listos para aplicar esta experiencia en tus proyectos de inteligencia artificial, software a medida y más.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.