Выполнение пакетных операций с использованием CLI службы "Речь"

Распространенные задачи при использовании службы "Речь" — это пакетные операции. В этой статье вы узнаете, как выполнять пакетную речь с текстом (распознаванием речи), пакетным текстом для речи (синтезом речи) с помощью интерфейса командной строки распознавания речи. В частности, вы узнаете, как выполнять следующие задачи:

  • выполнить пакетное распознавание речи в каталоге звуковых файлов;
  • пакетный синтез речи путем итерации по файлу .tsv;

пакетное преобразование речи в текст (распознавание речи).

Служба "Речь" часто используется для распознавания речи из аудиофайлов. В этом примере вы узнаете, как выполнять итерацию по каталогу с помощью интерфейса командной строки службы "Речь" для записи выходных данных распознавания для каждого .wav файла. Флаг --files определяет каталог, в котором хранятся звуковые файлы. Подстановочный знак *.wav указывает CLI службы "Речь" выполнять распознавание для каждого файла с расширением .wav. Выходные данные для всех файлов распознавания записываются в speech_output.tsv в виде значений, разделенных знаками табуляции.

Примечание.

Аргумент --threads можно также использовать в следующем разделе для команд spx synthesize. Доступные потоки будут зависеть от ЦП и его текущей загрузки в процентах.

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 файл (tab-separated-value) и использовать --foreach команду в интерфейсе командной строки службы "Речь". Вы можете создать файл .tsv с помощью предпочитаемого текстового редактора. В этом примере назовем файл text_synthesis.tsv:

Важно!

При копировании содержимого этого текстового файла убедитесь, что в нем между сведениями о расположении файла и текстом используется знак табуляции, а не пробелы. Иногда при копировании содержимого из этого примера знаки табуляции преобразуются в пробелы. Это приводит к сбою команды 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

Эта команда эквивалентна выполнению spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wavдля каждой записи в файле .tsv.

Обратите внимание на несколько моментов.

  • Заголовки столбцов audio.output и text соответствуют аргументам командной строки --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

Следующие шаги