Выполнение пакетных операций с использованием 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