BookinglyTech News
Software

Las voces de Windows leen texto, pero guardar ese audio en un archivo es otro problema

System.Speech viene instalado y escribe WAV; edge-tts se instala con pip y usa las voces neuronales de Edge. El obstáculo real está en los tiempos de los subtítulos y en la licencia.

3 min de lecturaDev.to0 vistas

Windows trae voces para leer texto en voz alta, pero ni el Narrador ni el Lector en voz alta de Edge guardan en un archivo lo que leen. Para eso hay dos caminos: System.Speech, que ya está en el sistema, y edge-tts, que se instala con pip y da acceso a las voces neuronales de Edge. El problema de verdad aparece después, cuando se intenta doblar un subtítulo.

Dos motores y dos ramas del registro

System.Speech se maneja desde PowerShell: se carga el ensamblado, se crea un objeto SpeechSynthesizer, se elige voz y velocidad, se llama a SetOutputToWaveFile y se vuelca el texto. Sin instalar nada ni tocar la red, y el resultado sale en WAV. La locución suena inequívocamente sintética, así que sirve para avisos y prompts más que para narrar.

El detalle que desconcierta a mucha gente es que una voz añadida desde Configuración, en Hora e idioma > Voz, no aparece luego en GetInstalledVoices(). Las dos generaciones viven en ramas distintas del registro: SAPI 5, que es lo que lee System.Speech, en HKLM:\SOFTWARE\Microsoft\Speech\Voices\Tokens, y OneCore, donde instala cosas Configuración y de donde tira el Narrador, en HKLM:\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens. En una máquina con Windows 11 25H2 que se revisó para el análisis, la rama SAPI tenía dos voces y la OneCore una tercera que System.Speech no podía seleccionar de ninguna manera.

edge-tts: neuronales sin cuenta

El paquete edge-tts se instala con un pip install y maneja directamente las voces que Edge usa para leer páginas. Acepta el texto suelto o un fichero de guion, admite ajustes de voz, velocidad, volumen y tono, y puede escribir los subtítulos correspondientes en un SRT junto al audio. Devuelve MP3 en lugar de WAV, cosa que se agradece cuando se acumulan decenas de guiones, y no pide clave de API ni cuenta.

Los tiempos nunca cuadran

Un subtítulo declara cuánto dura cada línea en pantalla. Leída en voz alta casi siempre dura más, porque quien lee subtítulos va escaneando y el sintetizador pronuncia cada sílaba. Un ejemplo del original: una entrada de 3,5 segundos con una locución de 3,2 encaja, pero la siguiente, también de 3,5 segundos, genera 4,6 segundos de voz y se mete en la tercera. Si encima se traduce antes, el hueco se agranda.

Lo que funciona: subir la velocidad entre un 10 y un 20%, que sigue sonando natural; acortar la línea, porque la narración no tiene que calcar el subtítulo palabra por palabra; fusionar dos entradas cortas en una sola frase y ganar margen por los dos lados. Si tiene que ir ajustado al fotograma, toca cortar entrada por entrada en un editor en vez de pelearse con los tiempos. Y si el material es nuevo y no un doblaje, generar primero la narración y montar la imagen a su duración: así no hay nada que apretar.

La parte que se salta todo el mundo

ElevenLabs da 10.000 créditos al mes en su nivel gratuito, sin licencia comercial en ese plan; los de pago arrancan en 6 dólares al mes. Naver Clova Dubbing impone límites mensuales de descarga y de caracteres, exige atribución y reserva anuncios y promoción para los planes de pago. Las voces de Edge no tienen cuota a través de edge-tts, pero son un servicio de Microsoft, así que conviene leer los términos antes de usarlas en trabajo comercial. Las cifras son de septiembre de 2026 y estas condiciones se mueven a menudo. "Gratis para generar, pero no para monetizar" es una combinación frecuente, y suele descubrirse cuando el vídeo ya está publicado.

Para quien prefiera no pelearse con la terminal, hay una guía completa de conversión a MP3 con diagramas y una opción con interfaz gráfica. La decisión de fondo es aburrida y conviene tomarla antes de grabar: si el audio va a ser el eje, se genera primero y se monta la imagen encima; si va a doblar algo ya cortado, hay que asumir que los tiempos se van a tocar.