Escrito el 2025-11-29. Actualizado ese mismo día
Desde tiempos inmemoriables, los loquenderos han querido ejecutar Loquendo en Linux. El loquendo tts director 7 funciona sin pegas bajo Wine, pero lo cierto es que la pregunta de "¿Puedo tener Loquendo en la terminal?" ha rondado mi cabeza por lo menos unos cuantos años
Anteriormente tu podías usar APIs de TTS que te generasen voces parecidas a Loquendo en tu terminal o las voces de Loquendo propiamente, pero el tema es que como son las APIs de otros tíos, yo no me fío unam ierda porque en cualquier momento pretenderán cobrarme, o me pueden quitar las voces de Loquendo que yo uso. O sencillamente no dejarme mas peticiones porque he excedido el límite diario de las mismas
Por lo cual un amigo y yo decidimos montarnos nuestra propia API de Loquendo (o mejor dicho, de SAPI5), con casinos y furcias. El problema de esto es que vas a ejecutar tú SAPI5 en Linux, no?
Total que tuvimos que sacar una máquina virtual de Windows (dos, en realidad, para Alta Disponibilidad, porque yo me fío lo contrario de Windows) e instalar las voces de Loquendo TTS Director 7 y las del TextAloud. Con esto ya estarían registradas en la SAPI5 y podrían ser usadas con librerias como win32com de python o programas similares.
Para sorpresa de absolutísimamente nadie, windows es una putísima mierda que no vale ni para tomar por culo. No sirve para literalmente nada, ni para configurarse como servidor. Literalmente el Wireguard no funcionaba en un Windows Server 2016 (aunque luego descubrimos que pudo haber sido nuestra culpa) así que decidimos probarlo en un Windows 10 Enterprise LTSC. Enterprise porque necesitamos mierdas como NFS y SSH, pues somos una jodida Empresa Seria™1
Realmente, el mayor dolor de este proceso, de montar la API de Loquendo, fue el propio sistema operativo, ni el Python (que ya es raro que Python funcione sin rezarle a Cthulhu en sánscrito) sino el sistema operativo.
Por ejemplo, inicialmente el pyttsx4 no nos pillaba las voces que queríamos para el SAPI5. Esto se debe a que instalamos un Python de 64 bits y Loquendo, al ser de 32 bits, no pillaba la instalación. Así que tuvimos que instalar un Python de 32bits, el cual efectivamente funcionaba y podía generar las voces de Loquendo usando la SAPI5
Ahí fue cuando decidimos crear en Flask una REST API para SAPI5 para exponer el servicio que creamos en la red y poder ponerlo en el internet públicamente y que pueda ser usado libremente por cualquiera. Hasta en un .onion porque pensamos que cualquier cosa que esté en internet, ha de, obligatoriamente, tener un .onion o un .i2p para garantizar su disponibilidad hasta en el mas marginado de los países, o simplemente porque comprendemos perfectamente que nos tiene que sudar la polla quien usa nuestro servicio.
El tema es que la librería que usamos para generar los audios de Loquendo es una mierda porque no soportaba configurar el formato de salida. Tenía el por defecto de SAPI5 hardcodeado y nosotros queriamos tener distintas opciones para el output del audio, desde 48kHz, 8kHz 22kHz y demás. Esto era imposible desde la librería porque sencillamente no daba una opción
Y si no tenemos esa configuración del texto, habría que inventarla. Así que parcheé pyttsx4 creando pyttsx5, únicamente para ser usada en Lokendo. El parche que metí fue básicamente permitir la salida de audio con distintos formatos según la SAPI5
Sobra decir que, SAPI5, como le resto de cosas que ha hecho Microsoft, huele a culo y es inutilizable. Pero al menos funciona sin demasiado dolor, lo cual ya se aprecia lo que no está escrito. Uno no esperaría que Windows funcione así como así. sin tener que sacrificar una cabra a Hades.
Ya con la API funcionando con curl, decidimos escribir en Perl un programa que haga eso mismo. Tomando la entrada estándar como texto de entrada y dando el audio en .wav al stdout. Haciéndolo así simplemente un módulo mas del sistema operativo, de la misma manera en la que está diseñado este sistema operatvo.
cat texto.txt | lokendo > output.wav
Tiene soporte para distintas voces, modular el pitch, velocidad de lectura y la calidad.
Para mas información, visita el repositorio de loquendo_unix
1: Que a mi ya me parece que tiene cojones que para usar cosas tan mundanas y poco esotéricas como NFS o SSH tengas que tener la carísima versión Enterprise. Menos mal que no la he pagado.