Eseguire operazioni batch con l'interfaccia della riga di comando di Voce
Le attività comuni quando si usa il servizio Voce sono operazioni batch. In questo articolo si apprenderà come eseguire il riconoscimento vocale in batch (riconoscimento vocale), il testo in batch per la sintesi vocale con l'interfaccia della riga di comando di Voce. In particolare, si apprenderà come:
- Eseguire il riconoscimento vocale in batch in una directory di file audio
- Eseguire la sintesi vocale in batch tramite l'iterazione su un file
.tsv
Riconoscimento vocale in batch
Il servizio Voce viene spesso usato per il riconoscimento vocale in file audio. In questo esempio si apprenderà come scorrere una directory usando l'interfaccia della riga di comando di Voce per acquisire l'output di riconoscimento per ogni .wav
file. Per puntare alla directory in cui sono archiviati i file audio, si usa il flag --files
, mentre per indicare all'interfaccia della riga di comando di Voce di eseguire il riconoscimento su ogni file con estensione .wav
, si usa il carattere jolly *.wav
. L'output relativo a ogni file di riconoscimento viene scritto come valore separato da tabulazioni in speech_output.tsv
.
Nota
L'argomento --threads
può essere usato anche nella sezione successiva per i comandi spx synthesize
e i thread disponibili dipendono dalla CPU e dalla percentuale di carico corrente.
spx recognize --files C:\your_wav_file_dir\*.wav --output file C:\output_dir\speech_output.tsv --threads 10
Ecco un esempio della struttura di file di output.
audio.input.id recognizer.session.started.sessionid recognizer.recognized.result.text
sample_1 07baa2f8d9fd4fbcb9faea451ce05475 A sample wave file.
sample_2 8f9b378f6d0b42f99522f1173492f013 Sample text synthesized.
Sintesi vocale in batch
Il modo più semplice per eseguire il riconoscimento vocale in batch consiste nel creare un nuovo .tsv
file (con valori separati da tabulazioni) e usare il --foreach
comando nell'interfaccia della riga di comando di Voce. È possibile creare un file .tsv
usando l'editor di testo preferito. Per questo esempio verrà creato il file text_synthesis.tsv
:
Importante
Quando si copia il contenuto di questo file di testo, assicurarsi che il percorso del file sia separato dal testo da un carattere di tabulazione e non da spazi. In alcuni casi, quando si copia il contenuto di questo esempio, le tabulazioni vengono convertite in spazi, impedendo la corretta esecuzione del comando spx
.
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.
Eseguire quindi un comando per puntare a text_synthesis.tsv
, eseguire la sintesi su ogni campo text
e scrivere il risultato nel percorso audio.output
corrispondente come file .wav
.
spx synthesize --foreach in @C:\your\path\to\text_synthesis.tsv
Questo comando equivale a eseguire spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wav
per ogni record nel file .tsv
.
Un paio di aspetti da considerare:
- Le intestazioni di colonna
audio.output
etext
corrispondono rispettivamente agli argomenti della riga di comando--audio output
e--text
. Gli argomenti della riga di comando in più parti, come--audio output
, devono essere formattati nel file senza alcuno spazio, alcun trattino iniziale e alcun punto di separazione delle stringhe, ad esempioaudio.output
. Qualsiasi altro argomento della riga di comando esistente può essere aggiunto al file come più colonne usando questo modello. - Quando il file viene formattato in questo modo, non è necessario passare altri argomenti a
--foreach
. - Verificare di separare ogni valore nel file
.tsv
con una tabulazione.
Può tuttavia essere presente un file .tsv
, come nell'esempio seguente, che include intestazioni di colonna non corrispondenti agli argomenti della riga di 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.
In tal caso è possibile eseguire l'override di questi nomi di campo negli argomenti corretti usando la sintassi seguente nella chiamata a --foreach
. Questo comando esegue la stessa chiamata di prima.
spx synthesize --foreach audio.output;text in @C:\your\path\to\text_synthesis.tsv