Speech CLI를 사용하여 일괄 처리 작업 실행

Speech Service를 사용할 때 일반적인 작업은 일괄 처리 작업입니다. 이 문서에서는 Speech CLI를 사용하여 음성을 텍스트로 일괄 처리(음성 인식), 일괄 처리 텍스트 음성 변환(음성 합성)을 수행하는 방법을 알아봅니다. 특히 다음 방법을 알아봅니다.

  • 오디오 파일의 디렉터리에서 일괄 처리 음성 인식 실행
  • .tsv 파일을 반복하여 일괄 처리 음성 합성 실행

텍스트로 음성 배치(음성 인식)

Speech Service는 오디오 파일에서 음성을 인식하는 데 자주 사용됩니다. 이 예제에서는 Speech CLI를 사용하여 디렉터리를 반복하여 각 .wav 파일에 대한 인식 출력을 캡처하는 방법을 알아봅니다. --files 플래그는 오디오 파일이 저장된 디렉터리를 가리키는 데 사용되며, 와일드 카드 *.wav는 확장명이 .wav인 모든 파일에서 인식을 실행하도록 Speech CLI에 지시하는 데 사용됩니다. 각 인식 파일의 출력은 .에서 탭으로 구분된 값으로 작성됩니다 speech_output.tsv.

참고 항목

명령의 --threads 다음 섹션에서도 인수를 spx synthesize 사용할 수 있으며 사용 가능한 스레드는 CPU 및 현재 부하 비율에 따라 달라집니다.

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

다음은 출력 파일 구조의 예입니다.

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

텍스트 음성 변환 일괄 처리(음성 합성)

일괄 처리 텍스트 음성 변환을 실행하는 가장 쉬운 방법은 새 .tsv(탭으로 구분된 값) 파일을 만들고, Speech CLI에서 --foreach 명령을 사용하는 것입니다. 즐겨 찾는 텍스트 편집기를 .tsv 사용하여 파일을 만들 수 있습니다. 이 예제에서는 다음을 호출 text_synthesis.tsv해 보겠습니다.

Important

이 텍스트 파일의 내용을 복사할 때 파일 위치와 텍스트 사이에 공백이 없는 탭 이 파일에 있는지 확인합니다. 이 예에서 콘텐츠를 복사할 때 탭이 공백으로 변환되어 실행 시 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.

그런 다음, 명령을 실행하여 text_synthesis.tsv를 가리키고, 각 text 필드에서 합성을 수행하고, 결과를 해당 audio.output 경로에 .wav 파일로 작성합니다.

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

이 명령은 .tsv 파일의 레코드에 대해 spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wav를 실행하는 것과 동일한 효과가 있습니다.

주의해야 할 몇 가지 사항은 다음과 같습니다.

  • 열 머리글 및 audio.outputtext, 명령줄 인수 --audio output--text각각에 해당합니다. 예를 들어 audio.output여러 부분으로 구성된 명령줄 인수 --audio output 는 공백, 선행 대시, 문자열을 구분하는 마침표 없이 파일에서 서식을 지정해야 합니다. 이 패턴을 사용하여 다른 모든 기존 명령줄 인수를 더 많은 열로 파일에 추가할 수 있습니다.
  • 이러한 방식으로 파일의 형식을 지정하는 경우 다른 인수를 전달할 --foreach필요가 없습니다.
  • 탭을 사용하여 각 값을 .tsv 구분해야 합니다.

그러나 다음 예제와 같은 .tsv 파일이 있고 열 헤더가 명령줄 인수와 일치하지 않는 경우:

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.

--foreach 호출에서 다음 구문을 사용하여 이러한 필드 이름을 올바른 인수로 재정의할 수 있습니다. 이 명령은 이전과 동일한 호출을 수행합니다.

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

다음 단계