paint-brush
Cómo configurar el sintetizador de voz Piper en una máquina local por@biq
2,616 lecturas
2,616 lecturas

Cómo configurar el sintetizador de voz Piper en una máquina local

por biq
biq HackerNoon profile picture

biq

@biq

R&D, consulting and open-source development.

2 min read2023/12/18
Read on Terminal Reader
Read this story in a terminal
Print this story

Demasiado Largo; Para Leer

Echemos un vistazo a cómo se puede configurar un sintetizador de texto a voz ad-hoc, local (fuera de línea) usando piper, piper-whistle y Named Pipes.
featured image - Cómo configurar el sintetizador de voz Piper en una máquina local
biq HackerNoon profile picture
biq

biq

@biq

R&D, consulting and open-source development.

0-item
1-item

STORY’S CREDIBILITY

Code License

Code License

The code in this story is for educational purposes. The readers are solely responsible for whatever they build with it.

Guide

Guide

Walkthroughs, tutorials, guides, and tips. This story will teach you how to do something new or how to do something better.

Echemos un vistazo a cómo se puede configurar un sintetizador de texto a voz ad-hoc, local (fuera de línea) usando piper , piper-whistle y Named Pipes.


Para configurar Piper en un sistema basado en GNU/Linux, describiré una arquitectura general que utiliza canalizaciones con nombre, que es lo suficientemente sencilla como para permitir la conversión de texto a voz en todo el sistema, con un poco de configuración manual y la ayuda de Piper. -silbato y algunas compensaciones menores (es simple, pero no admite el procesamiento de voz en paralelo).


Para comenzar, busquemos la última versión independiente de Piper creada desde su repositorio alojado en github ( 2023.11.14-2 al momento de escribir esto). Después de descargar el archivo comprimido, crearemos una estructura de directorios para nuestra configuración de Piper. El directorio raíz estará en /opt/wind con los siguientes subdirectorios:


  • /opt/wind/piper (albergará el gaitero construido)
  • /opt/wind/channels (contendrá las canalizaciones con nombre)


Después de descomprimirlo, el ejecutable de Piper debería estar disponible en /opt/wind/piper/piper , así como las bibliotecas que lo acompañan y espeak-ng-data .

Para administrar los modelos de voz utilizados por Piper, recomendaría usar piper-whistle, una utilidad de línea de comandos escrita en Python, que hace que sea más conveniente descargar y administrar voces.


Puede obtener el archivo wheel más reciente desde su página de lanzamiento de gitlab o github . Después de instalar el archivo wheel, busquemos una voz para generar algo de voz. Primero, actualicemos la base de datos llamando a piper_whistle -vR . Para hablar en inglés, me gusta bastante la voz femenina llamada alba. Usando Whistle, podemos obtener una lista de todas las voces en inglés (GB) disponibles usando piper_whistle list -l en_GB -i 2 . La voz está en el índice 2. Entonces, para instalarla, simplemente llame a piper_whistle install en_GB 2 .


A continuación, creemos las canalizaciones con nombre necesarias. La estructura resultante se verá así:

  • /opt/wind/channels/speak (acepta carga útil JSON)
  • /opt/wind/channels/input (leído por piper)
  • /opt/wind/channels/ouput (escrito por piper)


Para crear una canalización con nombre, puede utilizar el siguiente comando: mkfifo -m 755 /opt/wind/channels/input


Finalmente, creamos tres procesos en shells separados:

  • tty0: tail -F /opt/wind/channels/speak | tee /opt/wind/channels/input
  • tty1: /opt/wind/piper/piper -m $(piper_whistle path alba@medium) --debug --json-input --output_raw < /opt/wind/channels/input > /opt/wind/channels/output
  • tty2: aplay --buffer-size=777 -r 22050 -f S16_LE -t raw < /opt/wind/channels/output


El proceso en tty0 garantiza que la tubería se mantenga abierta, incluso después de que haya finalizado el procesamiento por parte de piper o aplay . De esta manera, podemos poner en cola las solicitudes TTS y posteriormente reproducirlas o guardarlas.


Dado que piper-whistle ofrece características adicionales si usa la estructura anterior, ahora podemos generar voz a través de piper_whistle speak "This is quite neat" . En sistemas con X11, puede generar una versión hablada del texto en su portapapeles a través de piper_whistle speak "$(xsel --clipboard --output)" .

Comment on this Story
L O A D I N G
. . . comments & more!

About Author

biq HackerNoon profile picture
biq@biq
R&D, consulting and open-source development.

ETIQUETAS

ESTE ARTÍCULO FUE PRESENTADO EN...

Read on Terminal Reader
Read this story in a terminal
 Terminal
Read this story w/o Javascript
Read this story w/o Javascript
 Lite
X REMOVE AD