Compartilhar via


Executar operações em lote com a CLI de Fala

Tarefas comuns ao usar o serviço de fala são operações em lote. Neste artigo, você aprenderá a fazer conversão de fala em texto em lote (reconhecimento de fala), conversão de texto em fala em lote (síntese de fala) com a CLI de Fala. Especificamente, você aprenderá como:

  • Executar o reconhecimento de fala em lote em um diretório de arquivos de áudio
  • Executar a síntese de fala em lote Iterando em um arquivo de .tsv

Conversão de fala em texto (reconhecimento de fala) em lote

Frequentemente, o serviço de Fala é usado para reconhecer a fala de arquivos de áudio. Neste exemplo, você aprenderá a iterar em um diretório usando a CLI de Fala para capturar a saída de reconhecimento de cada .wav arquivo. O sinalizador --files é usado para apontar para o diretório onde os arquivos de áudio estão armazenados, e o curinga *.wav é usado para instruir a CLI de Fala a executar o reconhecimento em todos os arquivos com a extensão .wav. A saída de cada arquivo de reconhecimento é gravada como um valor separado por tabulação em speech_output.tsv.

Observação

O argumento --threads também pode ser usado na próxima seção para comandos spx synthesize, e os threads disponíveis dependerão da CPU e do respectivo percentual de carga atual.

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

Aqui está um exemplo da estrutura do arquivo de saída.

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

Conversão de texto em fala (síntese de fala) em lote

A maneira mais fácil de executar a conversão de texto em fala em lote é criar um novo arquivo .tsv (valor separado por tabulação) e usar o comando --foreach na CLI de Fala. Você pode criar um arquivo .tsv usando seu editor de texto favorito. Para este exemplo, vamos chamá-lo de text_synthesis.tsv:

Importante

Ao copiar o conteúdo do arquivo de texto, verifique se o arquivo tem uma tabulação, e não espaços entre o local do arquivo e o texto. Às vezes, ao copiar o conteúdo deste exemplo, as tabulações são convertidas em espaços, fazendo com que o comando spx falhe durante a execução.

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.

Em seguida, execute um comando para apontar para text_synthesis.tsv, executar a síntese em cada campo text e gravar o resultado no caminho audio.output correspondente como um arquivo .wav.

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

Esse comando é o equivalente à execução de spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wav para cada registro no arquivo .tsv.

Algumas coisas a serem observadas:

  • Os cabeçalhos de coluna, audio.output e text, correspondem aos argumentos de linha de comando --audio output e --text, respectivamente. Argumentos de linha de comando de várias partes, como --audio output, devem ser formatados no arquivo sem espaços, sem traço à esquerda e com pontos separando cadeias de caracteres, por exemplo, audio.output. Quaisquer outros argumentos de linha de comando existentes podem ser adicionados ao arquivo como mais colunas usando esse padrão.
  • Quando o arquivo é formatado dessa maneira, nenhum outro argumento precisa ser passado para --foreacho .
  • Separe cada valor no .tsv com uma tabulação.

No entanto, se você tiver um arquivo .tsv como o seguinte exemplo, com cabeçalhos de coluna que não correspondem a argumentos de linha de comando:

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.

Você pode substituir esses nomes de campo pelos argumentos corretos usando a sintaxe a seguir na chamada --foreach. Esse comando faz a mesma chamada de antes.

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

Próximas etapas