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.tsv
de :
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 etext
, 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