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ás 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.wav
para cada registro en el archivo .tsv
.
Tenga en cuenta lo siguiente:
- Los encabezados de columna,
audio.output
ytext
, 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 ejemploaudio.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