Partilhar via


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

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

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

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

O serviço de Fala é frequentemente 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 para cada .wav arquivo. O --files sinalizador é usado para apontar para o diretório onde os arquivos de áudio são armazenados, e o curinga *.wav é usado para dizer à CLI de fala para executar o reconhecimento em cada arquivo com a extensão .wav. A saída para cada arquivo de reconhecimento é gravada como um valor separado por tabulação em speech_output.tsv.

Nota

O --threads argumento também pode ser usado na próxima seção para spx synthesize comandos, e os threads disponíveis dependerão da CPU e de sua porcentagem 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 em lote (síntese de fala)

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

Importante

Ao copiar o conteúdo deste ficheiro de texto, certifique-se de que o ficheiro tem um separador e não espaços entre a localização do ficheiro e o texto. Às vezes, ao copiar o conteúdo deste exemplo, as guias são convertidas em espaços, fazendo com que o spx comando falhe quando executado.

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, execute a síntese em cada text campo e escreva o resultado no caminho correspondente audio.output como um .wav arquivo.

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

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

Algumas coisas a observar:

  • Os cabeçalhos audio.output de coluna e text, correspondem aos argumentos --audio output de linha de comando 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ços à esquerda e períodos 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 forma, nenhum outro argumento é necessário para ser passado para --foreach.
  • Certifique-se de separar cada valor no .tsv com uma guia.

No entanto, se você tiver um .tsv arquivo como o exemplo a seguir, com cabeçalhos de coluna que não correspondem aos 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 para os argumentos corretos usando a sintaxe a seguir na --foreach chamada. Este comando faz a mesma chamada que antes.

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

Próximos passos