Kokoro v0.19 es un modelo de texto a voz recientemente lanzado, con solo 82 millones de parámetros y una calidad de salida muy alta.
Se publica bajo licencia Apache y fue entrenado con menos de 100 horas de audio. Actualmente soporta inglés estadounidense, inglés británico, francés, coreano, japonés y mandarín, con una variedad de voces de muy buena calidad.
Un ejemplo de la calidad:
Siempre he soñado con convertir mi biblioteca de ebooks en audiolibros, especialmente para aquellos libros de nicho que no se encuentran en formato de audiolibro.
Como Kokoro es bastante rápido pensé que esto finalmente podría ser posible. He creado una pequeña herramienta llamada Audiblez (en honor a la popular plataforma de audiolibros) que analiza archivos .epub y convierte el contenido del libro en archivos de audio narrados de manera agradable.
En mi MacBook Pro M2, me lleva aproximadamente 2 horas convertir en mp3 The Selfish Gene de Richard Dawkins, que tiene unas 100,000 palabras (o 600,000 caracteres) a una velocidad de aproximadamente 80 caracteres por segundo.
¿Cómo instalar y ejecutar?
Si tienes Python 3 en tu computadora, puedes instalarlo con pip. Ten en cuenta que no funcionará con Python 3.13.
Luego también necesitarás descargar un par de archivos adicionales en la misma carpeta, que ocupan aproximadamente ~360 MB:
pip install audiblez
wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files/kokoro-v0_19.onnx
wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files/voices.json
Luego, para convertir un archivo epub en un audiolibro, solo debes ejecutar:
audiblez book.epub -l en-gb -v af_sky
Esto creará primero una serie de archivos book_chapter_1.wav, book_chapter_2.wav, etc., en el mismo directorio.
Al final, generará un archivo book.m4b con todo el libro, el cual puedes escuchar con VLC o cualquier reproductor de audiolibros.
Solo producirá el archivo .m4b si tienes ffmpeg instalado en tu máquina.
Idiomas soportados
Usa la opción -l para especificar el idioma. Los códigos de idiomas disponibles son: en-us, en-gb, fr-fr, ja, kr y cmn.
Voces soportadas
Usa la opción -v para especificar la voz. Las voces disponibles son: af, af_bella, af_nicole, af_sarah, af_sky, am_adam, am_michael, bf_emma, bf_isabella, bm_george, bm_lewis. Puedes probarlas aquí: Hugging Face – Kokoro-TTS.
Detección de capítulos
La detección de capítulos es un poco rudimentaria, pero logra encontrar los capítulos principales en la mayoría de los archivos .epub que probé, saltándose la portada, índice, apéndice, etc.
Si ves que no incluye el capítulo que te interesa, intenta ajustar la función is_chapter en el código. A menudo omite el prólogo o la introducción, y no estoy seguro si eso es un error o una característica.
Código Fuente
Consulta el proyecto Audiblez en GitHub.
Todavía hay algunos detalles por pulir, pero funciona bastante bien. Las mejoras futuras podrían incluir:
- Mejorar la detección de capítulos, o permitir que los usuarios incluyan/excluyan capítulos.
- Agregar navegación entre capítulos en el archivo m4b (lo cual parece complicado, ya que ffmpeg no lo soporta).
- Añadir narración para imágenes usando algún modelo de imagen a texto.