Ejecutar operaciones por lotes con la CLI de Voz

Las tareas habituales al usar los servicios de Voz son operaciones por lotes. En este artículo, aprenderá a realizar conversión por lotes de voz en texto (reconocimiento de voz), texto por lotes a voz (síntesis de voz) con la CLI de Voz. Específicamente, aprenderá sobre lo siguiente:

  • Ejecutar el reconocimiento de voz por lotes en un directorio de archivos de audio
  • Ejecutar la síntesis de voz por lotes iterando por un archivo .tsv

Conversión de voz en texto por lotes (reconocimiento de voz)

El servicio Voz se usa a menudo para reconocer la voz de los archivos de audio. En este ejemplo, aprenderá a iterar en un directorio mediante la CLI de Voz para capturar la salida de reconocimiento de cada .wav archivo. La marca --files se usa para apuntar al directorio donde se almacenan los archivos de audio y el carácter comodín *.wav se usa para indicar a la CLI de Voz que ejecute el reconocimiento en cada archivo con la extensión .wav. La salida de cada archivo de reconocimiento se escribe como un valor separado por tabulaciones en speech_output.tsv.

Nota

El argumento --threads también se puede usar en la siguiente sección para los comandos spx synthesize, y los subprocesos que estén disponibles dependerán de la CPU y de su porcentaje de carga actual.

spx recognize --files C:\your_wav_file_dir\*.wav --output file C:\output_dir\speech_output.tsv --threads 10

Este es un ejemplo de la estructura del archivo de salida.

audio.input.id	recognizer.session.started.sessionid	recognizer.recognized.result.text
sample_1	07baa2f8d9fd4fbcb9faea451ce05475	A sample wave file.
sample_2	8f9b378f6d0b42f99522f1173492f013	Sample text synthesized.

Conversión de texto a voz por lotes (síntesis de voz)

La forma más sencilla de ejecutar la conversión de texto a voz por lotes es crear un archivo .tsv (con valores separados por tabulaciones) y usar el comando --foreach de la CLI de Voz. Puede crear un archivo .tsv con el editor de texto que prefiera. En este ejemplo, se llamará text_synthesis.tsv:

Importante

Al copiar el contenido de este archivo de texto, asegúrese de que el archivo tenga una tabulación y no espacios entre la ubicación del archivo y el texto. A veces, al copiar el contenido de este ejemplo, las tabulaciones se convierten en espacios, lo que provoca un error en el comando spx cuando se ejecuta.

audio.output	text
C:\batch_wav_output\wav_1.wav	Sample text to synthesize.
C:\batch_wav_output\wav_2.wav	Using the Speech CLI to run batch-synthesis.
C:\batch_wav_output\wav_3.wav	Some more text to test capabilities.

A continuación, ejecutará un comando para que apunte a text_synthesis.tsv, realizará la síntesis en cada campo text y escribirá el resultado en la ruta de acceso de audio.output correspondiente como un archivo .wav.

spx synthesize --foreach in @C:\your\path\to\text_synthesis.tsv

Este comando equivale a ejecutar spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wavpara cada registro en el archivo .tsv.

Tenga en cuenta lo siguiente:

  • Los encabezados de columna, audio.output y text, se corresponden con los argumentos de la línea de comandos --audio output y --text, respectivamente. Los argumentos de la línea de comandos de varias partes, como --audio output, deben tener el formato del archivo sin espacios, guiones iniciales y puntos que separen las cadenas, por ejemplo audio.output. Cualquier otro argumento de línea de comandos existente se puede agregar al archivo como más columnas con este patrón.
  • Cuando el archivo tiene el formato de esta manera, no es necesario pasar ningún otro argumento a --foreach.
  • Asegúrese de separar cada valor del archivo .tsv con una tabulación.

Sin embargo, si tiene un archivo .tsv como en el ejemplo siguiente, con encabezados de columna que no coinciden con los argumentos de la línea de comandos:

wav_path    str_text
C:\batch_wav_output\wav_1.wav	Sample text to synthesize.
C:\batch_wav_output\wav_2.wav	Using the Speech CLI to run batch-synthesis.
C:\batch_wav_output\wav_3.wav	Some more text to test capabilities.

Estos nombres de campo se pueden invalidar con los argumentos correctos mediante la siguiente sintaxis en la llamada --foreach. Este comando realiza la misma llamada que antes.

spx synthesize --foreach audio.output;text in @C:\your\path\to\text_synthesis.tsv

Pasos siguientes