Conozca los aspectos básicos de la CLI de Voz.Learn the basics of the Speech CLI

En este artículo, conocerá los patrones de uso básicos de la CLI de Voz, una herramienta de línea de comandos que permite usar el servicio de voz sin necesidad de escribir código.In this article, you learn the basic usage patterns of the Speech CLI, a command line tool to use the Speech service without writing code. Puede probar rápidamente las características principales del servicio de voz sin crear entornos de desarrollo ni escribir código, para ver si los casos de uso se pueden satisfacer adecuadamente.You can quickly test out the main features of the Speech service, without creating development environments or writing any code, to see if your use-cases can be adequately met. Además, la CLI de Voz está lista para producción y se puede usar para automatizar flujos de trabajo sencillos en el servicio de voz mediante scripts de shell o .bat.Additionally, the Speech CLI is production ready and can be used to automate simple workflows in the Speech service, using .bat or shell scripts.

Descargar e instalarDownload and install

Nota

En Windows, necesita Microsoft Visual C++ Redistributable para Visual Studio 2019 para su plataforma.On Windows, you need the Microsoft Visual C++ Redistributable for Visual Studio 2019 for your platform. La primera vez que instala este paquete, puede que deba reiniciar Windows.Installing this for the first time may require you to restart Windows.

Siga estos pasos para instalar la CLI de Voz en Windows:Follow these steps to install the Speech CLI on Windows:

  1. Descargue el archivo ZIP de la CLI de Voz y extráigalo.Download the Speech CLI zip archive, then extract it.
  2. Vaya al directorio raíz spx-zips que extrajo de la descarga y extraiga el subdirectorio que necesita (spx-net471 para .NET Framework 4.7 o spx-netcore-win-x64 para .NET Core 3.0 en una CPU x64).Go to the root directory spx-zips that you extracted from the download, and extract the subdirectory that you need (spx-net471 for .NET Framework 4.7, or spx-netcore-win-x64 for .NET Core 3.0 on an x64 CPU).

En el símbolo del sistema, cambie el directorio a esta ubicación y, luego, escriba spx para ver la ayuda de la CLI de Voz.In the command prompt, change directory to this location, and then type spx to see help for the Speech CLI.

Nota

En Windows, la CLI de Voz solo puede mostrar las fuentes disponibles para el símbolo del sistema en el equipo local.On Windows, the Speech CLI can only show fonts available to the command prompt on the local computer. El terminal de Windows admite todas las fuentes que genera de forma interactiva la CLI de Voz.Windows Terminal supports all fonts produced interactively by the Speech CLI. Si se genera la salida a un archivo, un editor de texto como el Bloc de notas o un explorador Web como Microsoft Edge también pueden mostrar todas las fuentes.If you output to a file, a text editor like Notepad or a web browser like Microsoft Edge can also show all fonts.

Nota

PowerShell no comprueba el directorio local al buscar un comando.Powershell does not check the local directory when looking for a command. En PowerShell, cambie el directorio a la ubicación de spx y llame a la herramienta escribiendo .\spx.In Powershell, change directory to the location of spx and call the tool by entering .\spx. Si agrega este directorio a su ruta de acceso, PowerShell y el símbolo del sistema de Windows buscarán spx en cualquier directorio sin incluir el prefijo .\.If you add this directory to your path, Powershell and the Windows command prompt will find spx from any directory without including the .\ prefix.

Creación de la configuración de la suscripciónCreate subscription config

Si desea empezar a usar la CLI de Voz, debe especificar la clave de la suscripción al servicio de voz y la información de la región.To start using the Speech CLI, you need to enter your Speech subscription key and region identifier. Para obtener estas credenciales, siga los pasos descritos en Prueba gratuita del servicio Voz.Get these credentials by following steps in Try the Speech service for free. Una vez que tenga la clave de suscripción y el identificador de región (p. ej.,Once you have your subscription key and region identifier (ex. eastus, westus), ejecute los comandos siguientes.eastus, westus), run the following commands.

spx config @key --set SUBSCRIPTION-KEY
spx config @region --set REGION

La autenticación de la suscripción se almacena ahora para futuras solicitudes de SPX.Your subscription authentication is now stored for future SPX requests. Si tiene que quitar cualquiera de estos valores almacenados, ejecute spx config @region --clear o spx config @key --clear.If you need to remove either of these stored values, run spx config @region --clear or spx config @key --clear.

Uso básicoBasic usage

En esta sección se muestran algunos comandos básicos de SPX que a menudo resultan útiles para la prueba y la experimentación iniciales.This section shows a few basic SPX commands that are often useful for first-time testing and experimentation. Para empezar, vea la ayuda integrada en la herramienta, para lo que debe ejecutar el siguiente comando.Start by viewing the help built in to the tool by running the following command.

spx

Observe los temas de ayuda que se muestran a la derecha de los parámetros del comando.Notice see: help topics listed right of command parameters. Puede escribir estos comandos para obtener ayuda detallada acerca de los subcomandos.You can enter these commands to get detailed help about sub-commands.

Puede buscar temas de ayuda por palabra clave.You can search help topics by keyword. Por ejemplo, escriba el siguiente comando para ver una lista de ejemplos de uso de la CLI de Voz:For example, enter the following command to see a list of Speech CLI usage examples:

spx help find --topics "examples"

Escriba el siguiente comando para ver las opciones del comando recognize:Enter the following command to see options for the recognize command:

spx help recognize

Ahora, use el servicio de voz para realizar un reconocimiento de la voz con el micrófono predeterminado, para lo que se debe ejecutar el siguiente comando.Now use the Speech service to perform some speech recognition using your default microphone by running the following command.

spx recognize --microphone

Después de escribir el comando, SPX comenzará a escuchar el audio en el dispositivo de entrada activo actual y se detendrá después de presionar ENTER.After entering the command, SPX will begin listening for audio on the current active input device, and stop after you press ENTER. La voz grabada se reconoce y se convierte a texto en la salida de la consola.The recorded speech is then recognized and converted to text in the console output. La síntesis de texto a voz también es fácil de usar con la CLI de Voz.Text-to-speech synthesis is also easy to do using the Speech CLI.

Al ejecutar el comando siguiente, se toma el texto escrito como entrada y se genera la voz sintetizada en el dispositivo de salida activo actual.Running the following command will take the entered text as input, and output the synthesized speech to the current active output device.

spx synthesize --text "Testing synthesis using the Speech CLI" --speakers

Además del reconocimiento y la síntesis de voz, también puede realizar la traducción de voz con la CLI de Voz.In addition to speech recognition and synthesis, you can also do speech translation with the Speech CLI. Igual que con el comando de reconocimiento de voz anterior, ejecute el siguiente comando para capturar audio desde el micrófono predeterminado y realizar la traducción a texto en el idioma de destino.Similar to the speech recognition command above, run the following command to capture audio from your default microphone, and perform translation to text in the target language.

spx translate --microphone --source en-US --target ru-RU --output file C:\some\file\path\russian_translation.txt

En este comando, se especifican los idiomas de origen (el idioma del que se va a traducir) y de destino (el idioma al que se traduce).In this command, you specify both the source (language to translate from ), and the target (language to translate to ) languages. Al usar el argumento --microphone, se escuchará el audio en el dispositivo de entrada activo actual y se detendrá después de presionar ENTER.Using the --microphone argument will listen to audio on the current active input device, and stop after you press ENTER. El resultado es una traducción del texto en el idioma de destino, escrito en un archivo de texto.The output is a text translation to the target language, written to a text file.

Nota

Consulte el artículo sobre los idiomas y las configuraciones regionales para obtener una lista de todos los idiomas compatibles con sus códigos de configuración regional correspondientes.See the language and locale article for a list of all supported languages with their corresponding locale codes.

Archivos de configuración en el almacén de archivosConfiguration files in the datastore

El comportamiento de la CLI de voz utiliza los valores de los archivos de configuración, a los se puede hacer referencia en las llamadas de la CLI mediante un símbolo @.Speech CLI's behavior can rely on settings in configuration files, which you can refer to within Speech CLI calls using a @ symbol. La CLI de voz guarda los valores nuevos en un subdirectorio ./spx/data nuevo que crea en el directorio de trabajo actual.Speech CLI saves a new setting in a new ./spx/data subdirectory it creates in the current working directory. Al buscar un valor de configuración, la CLI de voz busca en el directorio de trabajo actual, luego en el almacén de archivos de ./spx/datay, después, en otros almacenes de archivos, incluido un almacén de datos de solo lectura final que se encuentra en el binario spx.When seeking a configuration value, Speech CLI looks in your current working directory, then in the datastore at ./spx/data, and then in other datastores, including a final read-only datastore in the spx binary. Anteriormente se usaba el almacén de datos para guardar los valores @key y @region, por lo que no era necesario especificarlos con cada llamada a la línea de comandos.Previously, you used the datastore to save your @key and @region values, so you did not need to specify them with each command line call. También puede usar los archivos de configuración para almacenar su propia configuración, o incluso para pasar direcciones URL o cualquier otro contenido dinámico que se haya generado en el runtime.You can also use configuration files to store your own configuration settings, or even use them to pass URLs or other dynamic content generated at runtime.

En esta sección se muestra cómo se usa un archivo de configuración en el almacén de datos local para almacenar y capturar la configuración de comandos mediante spx config, así como para almacenar la salida de la CLI de Voz mediante la opción --output.This section shows use of a configuration file in the local datastore to store and fetch command settings using spx config, and store output from Speech CLI using the --output option.

En el ejemplo siguiente se borra el archivo de configuración @my.defaults, se agregan pares clave-valor para clave y región en el archivo, y se usa la configuración en una llamada a spx recognize.The following example clears the @my.defaults configuration file, adds key-value pairs for key and region in the file, and uses the configuration in a call to spx recognize.

spx config @my.defaults --clear
spx config @my.defaults --add key 000072626F6E20697320636F6F6C0000
spx config @my.defaults --add region westus

spx config @my.defaults

spx recognize --nodefaults @my.defaults --file hello.wav

En los archivos de configuración también se puede escribir contenido dinámico.You can also write dynamic content to a configuration file. Por ejemplo, el siguiente comando crea un modelo de voz personalizado y almacena la dirección URL del mismo en un archivo de configuración.For example, the following command creates a custom speech model and stores the URL of the new model in a configuration file. El siguiente comando espera hasta que el modelo de la dirección URL esté listo para su uso antes de volver.The next command waits until the model at that URL is ready for use before returning.

spx csr model create --name "Example 4" --datasets @my.datasets.txt --output url @my.model.txt
spx csr model status --model @my.model.txt --wait

En el ejemplo siguiente se escriben dos direcciones URL en el archivo de configuración @my.datasets.txt.The following example writes two URLs to the @my.datasets.txt configuration file. En este escenario, existe la opción de que --output incluya la palabra clave add para crear un archivo de configuración o anexarlo al existente.In this scenario, --output can include an optional add keyword to create a configuration file or append to the existing one.

spx csr dataset create --name "LM" --kind Language --content https://crbn.us/data.txt --output url @my.datasets.txt
spx csr dataset create --name "AM" --kind Acoustic --content https://crbn.us/audio.zip --output add url @my.datasets.txt

spx config @my.datasets.txt

Para más información sobre los archivos del almacén de datos, incluido el uso de archivos de configuración predeterminados (@spx.default, @default.config y @*.default.config para la configuración predeterminada específica del comando), escriba este comando:For more details about datastore files, including use of default configuration files (@spx.default, @default.config, and @*.default.config for command-specific default settings), enter this command:

spx help advanced setup

Operaciones por lotesBatch operations

Los comandos de la sección anterior son excelentes para ver rápidamente cómo funciona el servicio de voz.The commands in the previous section are great for quickly seeing how the Speech service works. Sin embargo, al evaluar si se pueden satisfacer o no los casos de uso, es probable que necesite realizar operaciones por lotes en un intervalo de entrada que ya tenga para ver cómo el servicio controla una variedad de escenarios.However, when assessing whether or not your use-cases can be met, you likely need to perform batch operations against a range of input you already have, to see how the service handles a variety of scenarios. En esta sección se muestra cómo:This section shows how to:

  • Ejecutar el reconocimiento de voz por lotes en un directorio de archivos de audioRun batch speech recognition on a directory of audio files
  • Recorrer en iteración un archivo .tsv y ejecutar la síntesis de texto a voz por lotesIterate through a .tsv file and run batch text-to-speech synthesis

Reconocimiento de voz por lotesBatch speech recognition

Si tiene un directorio de archivos de audio, con la CLI de Voz es fácil ejecutar rápidamente el reconocimiento de voz por lotes.If you have a directory of audio files, it's easy with the Speech CLI to quickly run batch-speech recognition. Simplemente ejecute el siguiente comando y apunte al directorio con el comando --files.Simply run the following command, pointing to your directory with the --files command. En este ejemplo, se anexa \*.wav al directorio para reconocer todos los archivos .wav que existen en el directorio.In this example, you append \*.wav to the directory to recognize all .wav files present in the dir. Además, especifique el argumento --threads para ejecutar el reconocimiento en 10 subprocesos paralelos.Additionally, specify the --threads argument to run the recognition on 10 parallel threads.

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.The --threads argument can be also used in the next section for spx synthesize commands, and the available threads will depend on the CPU and its current load percentage.

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

La salida de voz reconocida se escribe en speech_output.tsv mediante el argumento --output file.The recognized speech output is written to speech_output.tsv using the --output file argument. Este es un ejemplo de la estructura del archivo de salida.The following is an example of the output file structure.

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

Síntesis de voz en un archivoSynthesize speech to a file

Ejecute el siguiente comando para cambiar la salida del altavoz a un archivo .wav.Run the following command to change the output from your speaker to a .wav file.

spx synthesize --text "The speech synthesizer greets you!" --audio output greetings.wav

La CLI de Voz generará lenguaje natural en inglés en el archivo de audio greetings.wav.The Speech CLI will produce natural language in English into the greetings.wav audio file. En Windows, puede reproducir el archivo de audio escribiendo start greetings.wav.In Windows, you can play the audio file by entering start greetings.wav.

Síntesis de texto a voz por lotesBatch text-to-speech synthesis

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 aprovechar el comando --foreach de la CLI de Voz.The easiest way to run batch text-to-speech is to create a new .tsv (tab-separated-value) file, and leverage the --foreach command in the Speech CLI. Considere el siguiente archivo text_synthesis.tsv:Consider the following file text_synthesis.tsv:

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.Next, you run a command to point to text_synthesis.tsv, perform synthesis on each text field, and write the result to the corresponding audio.output path as a .wav file.

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.This command is the equivalent of running spx synthesize --text Sample text to synthesize --audio output C:\batch_wav_output\wav_1.wav for each record in the .tsv file. Tenga en cuenta lo siguiente:A couple things to note:

  • Los encabezados de columna, audio.output y text, se corresponden con los argumentos de la línea de comandos --audio output y --text, respectivamente.The column headers, audio.output and text, correspond to the command line arguments --audio output and --text, respectively. 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.Multi-part command line arguments like --audio output should be formatted in the file with no spaces, no leading dashes, and periods separating strings, e.g. audio.output. Cualquier otro argumento de la línea de comandos existente se puede agregar al archivo como columnas adicionales mediante este patrón.Any other existing command line arguments can be added to the file as additional columns using this pattern.
  • Cuando el archivo se formatea de esta manera, no es necesario pasar argumentos adicionales a --foreach.When the file is formatted in this way, no additional arguments are required to be passed to --foreach.
  • Asegúrese de separar cada valor del archivo .tsv con una tabulación.Ensure to separate each value in the .tsv with a tab.

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:However, if you have a .tsv file like the following example, with column headers that do not match command line arguments:

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.You can override these field names to the correct arguments using the following syntax in the --foreach call. Esta es la misma llamada que la anterior.This is the same call as above.

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

Pasos siguientesNext steps