Hoy hemos decidido publicar Navoiy TTS como código abierto. Partimos de CosyVoice2-0.5B, lo pusimos en una GPU y lo cocinamos con suficientes ingredientes de audio en uzbeko. El resultado es un modelo de texto a voz que habla bien uzbeko.
El modelo convierte texto uzbeko en habla neutra o expresiva. También incluye una herramienta de normalización que prepara números, fechas, horas, apóstrofos y texto uzbeko en cirílico para la síntesis.
Nada es perfecto y este modelo también tiene limitaciones. Todo depende de los ingredientes: los datos. Más ingredientes de calidad producen mejores resultados.
¿Por qué abrimos el modelo a todo el mundo?
El habla cotidiana no se compone solo de palabras sencillas. Por eso, el modelo se preparó para:
- leer bien números, fechas y horas;
- pronunciar correctamente nombres y lugares;
- entender las escrituras latina y cirílica;
- hablar con pausas naturales;
- admitir distintos estilos de habla;
- pronunciar palabras rusas e inglesas dentro de una frase.
También intentamos contemplar otras situaciones que puedas encontrar y resolver las tareas difíciles que conllevan.
La forma más sencilla de agradecérnoslo es compartir el proyecto con tus amigos. Nos alegrará que el modelo sea útil en tu proyecto.
Nos alegra que utilices nuestros modelos. Gracias por usar nuestros modelos de voz a texto y de texto a voz.
¿Cómo se utiliza?
Sigue estos pasos para instalar, configurar y ejecutar el modelo. El checkpoint no funciona por sí solo: también necesitas el código original de CosyVoice y el modelo base CosyVoice2-0.5B.
1. Instala primero CosyVoice
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
cd CosyVoice
git checkout 074ca6dc9e80a2f424f1f74b48bdd7d3fea531cc
git submodule update --init --recursive
pip install -r requirements.txt
cd ..2. Descarga Navoiy TTS
git clone https://huggingface.co/aisha-org/navoiy-tts
pip install -r navoiy-tts/requirements.txtDescarga el modelo base CosyVoice2-0.5B con la revisión indicada en la ficha del modelo.
3. Genera voz
python navoiy-tts/inference.py \
--cosyvoice-dir CosyVoice \
--base-model-dir CosyVoice/pretrained_models/CosyVoice2-0.5B \
--checkpoint navoiy-tts/emotion_600h_joint.pt \
--reference reference.wav \
--text "Bugun siz bilan muhim bir xabarni baham ko'rmoqchiman." \
--emotion warm \
--output output.wavEl script requiere capacidad de cálculo CUDA y genera audio a 24 kHz. Usa --list-emotions para ver todas las emociones disponibles.
Emociones
El modelo admite las emociones calm, happy, sad, angry, nervous, surprised, whisper, warm, tired y sarcastic.
Estos ajustes no garantizan un resultado concreto. La voz final depende del texto, el audio de referencia, el checkpoint y la semilla aleatoria. Recomendamos probar el sistema con tus propios textos antes de ponerlo en producción.
Normalización
Los números y las fechas pueden ser difíciles de pronunciar para un modelo de texto a voz. Navoiy TTS también proporciona un módulo de normalización:
from uztts.normalize import normalize
print(normalize('Bugun 16.07.2026, soat 14:30 da uchrashamiz.'))Convierte texto cirílico a latino, unifica los apóstrofos y normaliza números habituales, fechas, horas, ordinales y otros casos.
Limitaciones
El modelo puede pronunciar mal nombres, préstamos lingüísticos, abreviaturas y números poco habituales. También puede repetir, omitir o cambiar palabras. Aún no hemos evaluado completamente los dialectos ni los textos multilingües.
Antes de clonar una voz, obtén el consentimiento explícito de su propietario. No utilices el modelo para suplantación, engaño, fraude, acoso ni para eludir sistemas de autenticación por voz. Indica que una voz es sintética cuando los oyentes puedan creer que pertenece a una persona real.
Conclusión
Navoiy TTS no promete resultados perfectos para cada frase. Es una base abierta que desarrolladores e investigadores pueden probar, mejorar y utilizar para crear nuevos productos.
Explora el modelo en Hugging Face, escucha las demostraciones y comparte tu experiencia.
