Batchbewerkingen uitvoeren met de Speech CLI
Veelvoorkomende taken bij het gebruik van de Speech-service zijn batchbewerkingen. In dit artikel leert u hoe u batchgewijze spraak naar tekst (spraakherkenning), batchtekst naar spraak (spraaksynthese) kunt uitvoeren met de Speech CLI. U leert met name het volgende:
- Batchgewijs spraakherkenning uitvoeren op een map met audiobestanden
- Batchgewijze spraaksynthese uitvoeren door herhaaldelijk een
.tsv
-bestand te doorlopen
Batchgewijze spraak-naar-tekst (spraakherkenning)
De Spraak-service wordt vaak gebruikt om spraak in audiobestanden te onderscheiden. In dit voorbeeld leert u hoe u een map kunt herhalen met behulp van de Speech CLI om de herkenningsuitvoer voor elk .wav
bestand vast te leggen. De vlag --files
wordt gebruikt om te verwijzen naar de directory waarin de audiobestanden zijn opgeslagen. Het jokerteken *.wav
wordt gebruikt om de Spraak-CLI te laten weten om herkenning uit te voeren op elk bestand met de extensie .wav
. De uitvoer voor elk herkenningsbestand wordt geschreven als een door tabs gescheiden waarde in speech_output.tsv
.
Notitie
Het argument --threads
kan ook worden gebruikt in de volgende sectie voor spx synthesize
-opdrachten; de beschikbare threads zijn afhankelijk van de CPU en het huidige belastingspercentage.
spx recognize --files C:\your_wav_file_dir\*.wav --output file C:\output_dir\speech_output.tsv --threads 10
Hier volgt een voorbeeld van de structuur van het uitvoerbestand.
audio.input.id recognizer.session.started.sessionid recognizer.recognized.result.text
sample_1 07baa2f8d9fd4fbcb9faea451ce05475 A sample wave file.
sample_2 8f9b378f6d0b42f99522f1173492f013 Sample text synthesized.
Batchgewijze tekst-naar-spraak (spraaksynthese)
De eenvoudigste manier om batchtekst naar spraak uit te voeren, is door een nieuw .tsv
bestand (door tabs gescheiden waarden) te maken en de --foreach
opdracht in de Speech CLI te gebruiken. U kunt een .tsv
-bestand maken met behulp van uw favoriete teksteditor, bijvoorbeeld met de naam text_synthesis.tsv
:
Belangrijk
Wanneer u de inhoud van dit tekstbestand kopieert, moet u ervoor zorgen dat het bestand tabs in plaats van spaties tussen de bestandslocatie en de tekst heeft. Wanneer u de inhoud uit dit voorbeeld kopieert, worden tabs soms naar spaties geconverteerd, waardoor de opdracht spx
mislukt wanneer deze wordt uitgevoerd.
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.
Vervolgens voert u een opdracht uit om naar text_synthesis.tsv
te verwijzen, voert u synthese uit op elk text
-veld en schrijft u het resultaat naar het overeenkomstige audio.output
-pad als een .wav
-bestand.
spx synthesize --foreach in @C:\your\path\to\text_synthesis.tsv
Deze opdracht is gelijk aan het uitvoeren van spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wav
voor elk record in het bestand .tsv
.
Enkele opmerkingen:
- De kolomkoppen,
audio.output
entext
, komen overeen met respectievelijk de opdrachtregelargumenten--audio output
en--text
. Opdrachtregelargumenten met meerdere delen, zoals--audio output
, moeten in het bestand worden opgemaakt zonder spaties, zonder voorloopstreepjes en met punten die tekenreeksen scheiden, bijvoorbeeldaudio.output
. Alle andere bestaande opdrachtregelargumenten kunnen als meer kolommen aan het bestand worden toegevoegd met behulp van dit patroon. - Wanneer het bestand op deze manier is opgemaakt, hoeven er geen andere argumenten te worden doorgegeven aan
--foreach
. - Vergeet niet elke waarde in het
.tsv
te scheiden door een tab.
Ga echter als volgt te werk als u een .tsv
-bestand hebt, zoals in het volgende voorbeeld, met kolomkoppen die niet overeenkomen met opdrachtregelargumenten:
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.
U kunt deze veldnamen vervangen door de juiste argumenten met behulp van de volgende syntaxis in de aanroep --foreach
. Met deze opdracht wordt dezelfde aanroep uitgevoerd als voorheen.
spx synthesize --foreach audio.output;text in @C:\your\path\to\text_synthesis.tsv