﻿Балаболка (консольное приложение для использования онлайн-сервисов синтеза речи), версия 1.85
Copyright (с) 2019-2025 Илья Морозов
Все права защищены

WWW: https://www.cross-plus-a.com/ru/bweb.html
E-mail: crossa@list.ru

Тип лицензии: Freeware
Операционная система: Microsoft Windows 7/8/10/11

Консольное приложение позволяет использовать онлайн-сервисы для синтеза речи:
- Google TTS (Google Cloud TTS, если используется API-ключ);
- Amazon Polly;
- Baidu TTS;
- CereProc TTS (CereVoice Cloud);
- Descript TTS;
- IBM Watson TTS;
- Iciba TTS;
- iTranslate TTS;
- Microsoft Azure;
- Naver TTS;
- OpenAI TTS;
- Youdao TTS.
Все сервисы предоставляют бесплатный доступ для пользователей. Но нет гарантии, что этот бесплатный доступ не будет прекращен в любой момент.

Программа позволяет конвертировать текст в речь, а также преобразовать субтитры в речь (с соблюдением указанных внутри субтитров временных меток).



*** Командная строка ***

bal4web [параметры ...]


*** Параметры командной строки ***

-s <имя_сервиса>
   Выбрать онлайн-сервис для синтеза речи ("google" или "g", "amazon" или "a", "baidu" или "b", "cerevoice" или "c", "descript" или "d", "ibm" или "i", "iciba" или "k", "itranslate" or "t", "microsoft" или "m", "naver" или "n", "openai" или "o", "youdao" или "y"). По умолчанию значение равно "google".

-l <идентификатор_языка>
   Выбрать язык для синтеза речи. Идентификатор представляет собой комбинацию кода языка по стандарту ISO 639 (две маленькие буквы) и кода по стандарту ISO 3166 (две большие буквы), объединенных дефисом. Например: en-US, de-DE, ru-RU. По умолчанию значение равно "en-US" (этот язык поддерживается всеми онлайн-сервисами).
   Примечание: Descript TTS и OpenAI TTS могут идентифицировать язык входного текста, поэтому сейчас они игнорируют данный параметр. Эти два сервиса умеют самостоятельно распознавать несколько десятков языков.

-g <пол>
   Указать пол голоса для синтеза речи (если онлайн-сервис поддерживает такой параметр). Женский пол: "female" или "f". Мужской пол: "male" или "m". Значение по умолчанию отсутствует; онлайн-сервис сам выберет пол голоса для каждого языка.
   Параметр поддерживают сервисы Amazon Polly, CereProc TTS, Descript TTS, Google TTS, IBM Watson TTS, Microsoft Azure, Naver TTS, OpenAI TTS.
   Если указано имя голоса, указывать пол нет необходимости.

-n <имя_голоса>
   Указать имя голоса для синтеза речи (если онлайн-сервис поддерживает такой параметр). Значение по умолчанию отсутствует; онлайн-сервис сам выберет голос для каждого языка.
   Параметр поддерживают сервисы Amazon Polly, CereProc TTS, Descript TTS, Google Cloud TTS, IBM Watson TTS, Microsoft Azure, Naver TTS, OpenAI TTS.

-r <число>
   Установить скорость речи (если онлайн-сервис поддерживает такой параметр). По умолчанию значение равно "1.00" (средняя скорость человеческой речи). Ниже указаны диапазоны значений для разных сервисов.
   Amazon Polly: от "0.20" до "2.00".
   CereProc TTS: от "0.30" до "4.00".
   Descript TTS, Naver TTS, OpenAI TTS и Youdao TTS: от "0.70" до "2.00".
   Google TTS, IBM Watson TTS и Microsoft Azure: от "0.10" до "3.00".
   Google Cloud: от "0.25" до "4.00".
   iTranslate TTS: от "0.50" до "2.00".

-p <целое_число>
   Установить высоту звука в диапазоне от -20 до 20 (если онлайн-сервис поддерживает такой параметр). По умолчанию значение равно 0.
   Параметр поддерживают сервисы Amazon Polly, CereProc TTS, Google Cloud TTS, IBM Watson TTS, Microsoft Azure.

-v <целое_число>
   Установить громкость в диапазоне от 0 до 200 (по умолчанию значение равно 100).

-st <стиль>
   Установить стиль речи. Голос может выражать такие эмоции, как жизнерадостность, сочувствие или спокойствие.
   Параметр поддерживается некоторыми голосами сервиса Microsoft Azure: https://learn.microsoft.com/ru-ru/azure/ai-services/speech-service/language-support?tabs=tts#voice-styles-and-roles
   Стили будут недоступны, если используется протокол WebSocket для доступа к Microsoft Azure.

--style-degree <число> или -sd <число>
   Установить интенсивность стиля речи в диапазоне от "0.01" до "2.00" (для стилей, поддерживаемых голосами Microsoft Azure). По умолчанию значение равно "1.00".
   Параметр позволяет усилить или ослабить выразительность речи.

-m
   Показать список языков, поддерживаемых онлайн-сервисом, а также перечислить дополнительные характеристики голосов для каждого языка (если есть).

-f <имя_файла>
   Открыть текстовый файл. Командная строка может содержать несколько параметров [-f].
   Если входной файл является субтитрами, содержимое файла будет преобразовано в речь с учётом информации об интервалах времени. Формат субтитров будет определён по расширению имени входного файла или с помощью параметра [--sub-format].

-fl <имя_файла>
   Открыть файл со списком текстовых файлов (по одному имени файла на каждой строке). Командная строка может содержать несколько параметров [-fl].

-w <имя_файла>
   Записать звуковой файл в формате WAV.

-c
   Использовать текст из буфера обмена.

-t <текст>
   Использовать текст из командной строки. Командная строка может содержать несколько параметров [-t].

-i
   Использовать текст из стандартного потока ввода (STDIN).

-o
   Записать аудиоданные в стандартный поток вывода (STDOUT); если параметр задан, параметр [-w] игнорируется.

--encoding <кодировка> или -enc <кодировка>
   Кодировка входного текста ("ansi", "utf8" или "unicode"). Если параметр не задан, программа автоматически определит кодировку текста.

--silence-begin <число> или -sb <число>
   Установить длину паузы в начале звукового файла (в миллисекундах). По умолчанию значение равно 0.

--silence-end <число> или -se <число>
   Установить длину паузы в конце звукового файла (в миллисекундах). По умолчанию значение равно 0.

-ln <число>
   Выбрать строку из текстового файла, используя её номер. Нумерация строк начинается с "1".
   Для выбора нескольких строк можно указать номера начальной и конечной строк в тексте (например, "26-34").
   Командная строка может содержать несколько параметров [-ln].

-e <число>
   Установить длину пауз между предложениями (в миллисекундах). Значение должно быть меньше 5000. Если параметр не задан, сервис будет использовать паузы между предложениями по умолчанию.
   Параметр поддерживает сервис Microsoft Azure (если задан ключ подписки).

-d <имя_файла>
   Применить к тексту правила для коррекции произношения из словаря (файла с расширением *.BXD, *.DIC или *.REX). Командная строка может содержать несколько параметров [-d].
   Пользователь может редактировать словарь в приложении "Балаболка".

-lrc
   Используя исходный текст, создать файл формата LRC. Текст в файле будет синхронизирован с речью в созданном звуковом файле.

-srt
   Используя исходный текст, создать файл формата SRT. Субтитры в файле будет синхронизирован с речью в созданном звуковом файле.

-sub
   Исходный текст представляет собой субтитры и должен быть преобразован в звуковой файл с учетом заданных интервалов времени.
   Параметр может быть полезен в тех случаях, когда в командной строке заданы параметры [-i] или [-c].

-host <адрес>
   Указать адрес прокси-сервера.

-port <число>
   Указать порт прокси-сервера.

-fr <число>
   Установить частоту дискретизации для аудиопотока, в кГц (8, 11, 16, 22, 24, 32, 44, 48). Если параметр не задан, используется значение по умолчанию для выбранного сервиса.

-ae <аудиоформат>
   Установить аудиоформат для данных, возвращаемых Google Cloud или Microsoft Azure ("linear16", "mp3" или "oggopus"). С помощью этой настройки можно улучшить качество звучания. Параметр доступен, если для сервиса указан API-ключ. Не рекомендуется использовать параметр без особой необходимости: применяйте его только в тестовых целях.

--ignore-square-brackets или -isb
   Игнорировать текст в [квадратных скобках].

--ignore-curly-brackets или -icb
   Игнорировать текст в {фигурных скобках}.

--ignore-angle-brackets или -iab
   Игнорировать текст в <угловых скобках>.

--ignore-round-brackets или -irb
   Игнорировать текст в (круглых скобках).

--ignore-url или -iu
   Игнорировать URL-адреса внутри текста.

--ignore-comments или -ic
   Игнорировать комментарии в тексте. Однострочные комментарии начинаются с // и продолжаются до конца строки. Многострочные комментарии начинаются с /* и завершаются */.

-dp
   Показать индикатор прогресса выполнения в окне консольного приложения.

-cfg <имя_файла>
   Задать имя файла конфигурации с параметрами командной строки (текстовый файл, каждая строка которого содержит по одному параметру). Если параметр не задан, будет выбран файл "bal4web.cfg" в той же папке, что и консольное приложение.

-h
   Показать описание параметров командной строки.

--lrc-length <число>
   Установить максимальную длину строк для файла формата LRC (в символах).

--lrc-fname <имя_файла>
   Имя файла формата LRC, который будет создан. Параметр может быть полезен в тех случаях, когда в командной строке задан параметр [-o].

--lrc-enc <кодировка>
   Кодировка файла формата LRC ("ansi", "utf8" или "unicode"). По умолчанию значение равно "ansi".

--lrc-offset <число>
   Задать сдвиг времени для файла формата LRC (в миллисекундах).

--lrc-artist <текст>
   Тег для файла формата LRC: исполнитель произведения.

--lrc-album <текст>
   Тег для файла формата LRC: альбом.

--lrc-title <текст>
   Тег для файла формата LRC: название произведения.

--lrc-author <текст>
   Тег для файла формата LRC: автор.

--lrc-creator <текст>
   Тег для файла формата LRC: создатель файла.

--lrc-sent
   Вставить пустые строки после предложений при создании файла формата LRC.

--lrc-para
   Вставить пустые строки после абзацев при создании файла формата LRC.

--srt-length <число>
   Установить максимальную длину строк для файла формата SRT (в символах).

--srt-fname <имя_файла>
   Имя файла формата SRT, который будет создан. Параметр может быть полезен в тех случаях, когда в командной строке задан параметр [-o].

--srt-enc <кодировка>
   Кодировка файла формата SRT ("ansi", "utf8" или "unicode"). По умолчанию значение равно "ansi".

--raw
   Записать аудиоданные в формате RAW PCM; данные не содержат заголовок формата WAV. Параметр используется совместно с параметром [-o].

--ignore-length или -il
   Не записывать размер аудиоданных в заголовок формата WAV. Параметр используется совместно с параметром [-o].

--wss
   Использовать протокол WebSocket для Microsoft Azure. Это позволит улучшить характеристики аудиофайлов (24 КГц вместо 16 КГц).
   Параметр игнорируется, если задан ключ подписки для Microsoft Azure Cognitive Services. Параметр [-m] поможет проверить, поддерживает голос протокол WebSocket или нет.

--sub-format <текст>
   Формат субтитров ("srt", "lrc", "ssa", "ass", "smi" или "vtt"), которые необходимо преобразовать в речь. Если параметр не задан, формат будет определен по расширению имени входного файла субтитров.

--sub-fit или -sf
   При преобразовании субтитров в речь автоматически увеличивать скорость речи для того, чтобы уложиться в заданные интервалы времени. Используется библиотека SoundTouch, которая умеет ускорять воспроизведение аудиоданных.

--sub-max <число> или -sm <число>
   Установить максимальную скорость речи в диапазоне от 110% до 200% (для преобразования субтитров в звуковой файл). Программа будет автоматически увеличивать скорость речи, не превышая заданного значения скорости.

--aws-keyid <текст> или -ak <текст>
   Применить ключ доступа для Amazon Polly. Рекомендуется использовать этот ключ, если он у вас есть.

--aws-secret <текст> или -as <текст>
   Применить секретный ключ для Amazon Polly. Рекомендуется использовать этот ключ, если он у вас есть.

--aws-region <текст> или -ar <текст>
   Указать регион для Amazon Polly.

--crv-email <текст> или -ce <текст>
   Указать электронный адрес, который был использован для регистрации на официальном сайте CereProc. Этот электронный адрес необходим для доступа к Cerevoice Cloud API.

--crv-pwd <текст> или -cp <текст>
   Указать пароль, который был использован для регистрации на официальном сайте CereProc. Пароль необходим для доступа к Cerevoice Cloud API. Рекомендуется использовать этот пароль, если он у вас есть.

--gc-apikey <текст> или -gk <текст>
   Применить API-ключ для доступа к Google Cloud. Рекомендуется использовать этот ключ, если он у вас есть.

--ms-apikey <текст> или -mk  <текст>
   Применить ключ подписки для Microsoft Azure Cognitive Services. Рекомендуется использовать этот ключ, если он у вас есть.

--ms-region <текст> или -mr <текст>
   Указать регион подписки для Microsoft Azure Cognitive Services.


*** Примеры ***

Создать текстовый файл со списком языков, поддерживаемых онлайн-сервисом Google TTS (или Google Cloud TTS, если используется API-ключ):

bal4web -s Google -m > language.txt


Преобразовать текстовый файл BOOK.TXT в звуковой файл BOOK.WAV:

bal4web -f "d:\Text\book.txt" -w "d:\Sound\book.wav" -s Google -l ru-RU -g female

bal4web -f "d:\Text\book.txt" -w "d:\Sound\book.wav" -s g -l en-US -n Neural2-G -gk AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe


Преобразовать файл субтитров MOVIE.SRT в звуковой файл MOVIE.WAV:

bal4web -f "d:\Subtitles\movie.srt" -w "d:\Sound\movie.wav" -s Microsoft -l ru-RU -n Svetlana -r 1.1 --sub-fit


Пример использования приложения совместно с утилитой LAME.EXE:

bal4web -f d:\book.txt -s Baidu -l ru-RU -o --raw | lame -r -s 16 -m m -h - d:\book.mp3


Пример использования приложения совместно с утилитой OGGENC2.EXE:

bal4web -f d:\book.txt -s Baidu -l ru-RU -o -il | oggenc2 --ignorelength - -o d:\book.ogg


*** Файл конфигурации ***

Параметры можно сохранить как файл конфигурации "bal4web.cfg" в той же папке, что и консольное приложение.

Пример содержимого файла:
===================
-f d:\Text\book.txt
-w d:\Sound\book.wav
-s Google
-l de-DE
-g female
-d d:\Dict\rules.bxd
-lrc
--lrc-length 75
--lrc-enc utf8
===================

Программа может комбинировать параметры из файла конфигурации и командной строки.


*** Аудиоклипы ***

Программа позволяет вставлять ссылки на внешние звуковые файлы форматов WAV и MP3 (аудиоклипы) в текст. Тег вставки аудиоклипа будет выглядеть так:

{{Audio=C:\Sounds\ring.wav}}

При записи речи в файл программа вставит аудиоданные из внешнего звукового файла внутрь нового файла.


*** Тег "Lang" ***

Если требуется сменить язык при выполнении синтеза речи, можно использовать специальный тег:

Read the English text. {{Lang=ru-RU}} Прочти текст на русском языке.

Область действия тега распространяется до следующего тега или до конца текста. Чтобы восстановить исходные настройки голоса, необходимо вставить этот тег:

{{Lang=}}


* Google TTS *

Формат тега:

{{Lang=Язык;Пол;Скорость;Громкость}}

Параметр "Язык" является обязательным. Остальные параметры можно не указывать.

Значения для некоторых параметров могут отсутствовать. Например, этот тег установит для английского голоса уровень громкости равным 150.

{Lang=en-US;;;150}}

Внутри тега можно указать пол ("f" или "m"); имена голосов не поддерживаются сервисом Google TTS. Скорость речи может принимать значения от "0.1" до "3.0"; нормальная скорость речи "1.0".

{{Lang=de-DE;f}}

{{Lang=fr-FR;m;1.2}}


* Google Cloud TTS *

Формат тега (если используется API-ключ):

{{Lang=Язык;Голос/Пол;Скорость;Высота;Громкость}}

Тег может содержать информацию о поле диктора ("f" или "m") или названии голоса. Скорость речи может принимать значения от "0.25" до "4.0"; нормальная скорость речи "1.0".

Высота звука для всех сервисов может быть выражена целым значением в диапазоне от -20 до 20 (по умолчанию значение равно 0).

{{Lang=cmn-CN;f}}

{{Lang=cmn-CN;WaveNet-B;1.1;5;120}}


* Microsoft Azure *

Формат тега:

{{Lang=Язык;Голос/Пол;Скорость;Высота;Громкость;Стиль;Интенсивность}}

Внутри тега можно указать пол ("f", "m" или "n") или название голоса. Скорость речи может принимать значения от "0.1" до "3.0"; нормальная скорость речи "1.0".

{{Lang=es-ES;m;1.4}}

{{Lang=es-ES;Alvaro;2.0}}

{{Lang=en-US;Jenny;;;;whispering;1.5}}


* Amazon Polly *

Формат тега:

{{Lang=Язык;Голос/Пол;Скорость;Высота;Громкость}}

Внутри тега можно указать пол ("f" или "m") или название голоса. Скорость речи может принимать значения от "0.2" до "2.0"; нормальная скорость речи "1.0".

{{Lang=de-DE;f}}

{{Lang=de-DE;Dieter;1.4;-2}}


* Baidu TTS *

Формат тега:

{{Lang=Язык;Громкость}}

Внутри тега указывается только информация о языке. Бесплатное демо сервиса предоставлят только по одному голосу для каждого языка.


* CereProc TTS *

Формат тега:

{{Lang=Язык;Голос/Пол;Скорость;Высота;Громкость}}

Внутри тега можно указать пол ("f", "m" или "n") или название голоса. Скорость речи может принимать значения от "0.3" до "4.0"; нормальная скорость речи "1.0".

{{Lang=de-DE;Alex;1.5}}


* Descript TTS *

Формат тега:

{{Lang=Язык;Голос/Пол;Скорость;Громкость}}

Внутри тега можно указать пол ("f" или "m") или название голоса. Скорость речи может принимать значения от "0.7" до "2.0"; нормальная скорость речи "1.0".

{{Lang=en-US;Henry;1.25}}


* IBM Watson TTS *

Формат тега:

{{Lang=Язык;Голос/Пол;Скорость;Громкость}}

Внутри тега можно указать пол ("f" или "m") или название голоса. Скорость речи может принимать значения от "0.1" до "3.0"; нормальная скорость речи "1.0".

{{Lang=en-AU;HeidiExpressive;1.2}}


* Iciba TTS *

Формат тега:

{{Lang=Язык;Громкость}}

Внутри тега указывается только информация о языке. Бесплатное демо сервиса предоставлят только по одному голосу для каждого языка.


* iTranslate TTS *

Формат тега:

{{Lang=Язык;Пол;Скорость;Громкость}}

Внутри тега можно указать пол ("f" или "m"); имена голосов не поддерживаются сервисом iTranslate TTS. Скорость речи может принимать значения от "0.5" до "2.0"; нормальная скорость речи "1.0".

{{Lang=fr-FR;m;1.05}}


* Naver TTS * 

Формат тега:

{{Lang=Язык;Голос/Пол;Скорость;Громкость}}

Внутри тега можно указать пол ("f" или "m") или название голоса. Скорость речи может принимать значения от "0.7" до "2.0"; нормальная скорость речи "1.0".

{{Lang=en-US;Clara;0.8}}


* OpenAI TTS *

Формат тега:

{{Lang=Язык;Голос/Пол;Скорость;Громкость}}

Внутри тега можно указать пол ("f" или "m") или название голоса. Скорость речи может принимать значения от "0.7" до "2.0"; нормальная скорость речи "1.0".

{{Lang=en-US;Fable;1.5}}


* Youdao TTS *

Формат тега:

{{Lang=Язык;Скорость;Громкость}}

Внутри тега указывается только информация о языке. Бесплатное демо сервиса предоставлят только по одному голосу для каждого языка. Скорость речи может принимать значения от "0.7" до "2.0"; нормальная скорость речи "1.0".


*** Тег "Pause" ***

С помощью специального тега можно вставить паузу в звуковой файл. Длительность паузы должна быть указана в миллисекундах.

Тишина продлится две секунды. {{Pause=2000}} Затем чтение возобновится.


*** Лицензия ***

Коммерческое использование программы допускается только с разрешения правообладателя.

Запрещается использование программного продукта на компьютерах, принадлежащих органам государственной власти и органам местного самоуправления Российской Федерации, законодательным и судебным органам Российской Федерации, структурным подразделениям российских политических партий. Запрещается использование программного продукта на компьютерах, принадлежащих правоохранительным органам и федеральным службам Российской Федерации, Вооружённым силам Российской Федерации. Запрещается использование программы религиозными объединениями и организациями в Российской Федерации. Запрещается использование программного продукта внутри зданий, сооружений и помещений объектов религиозного назначения, а также внутри зданий, предназначенных для обучения религии. Запрещается использование программы в суворовских военных училищах, нахимовских военно-морских училищах, кадетских корпусах, кадетских классах образовательных учреждений. Запрещается использование программного продукта на компьютерах, принадлежащих "Всероссийскому ордена Трудового Красного Знамени обществу слепых", "Общероссийскому народному фронту", российскому движению детей и молодёжи "Движение первых" и всероссийскому молодёжному военно-патриотическому общественному движению "Юнармия". Запрещается использование программного продукта Общественной палатой РФ и региональными общественными палатами. Запрещается применение программного продукта российскими средствами массовой информации и коммуникации. Запрещается использование программы на компьютерах, находящихся в личном пользовании членов и сотрудников вышеперечисленных организаций, а также членов их семей. Запрещается использование программного продукта на территории Государства Эритрия, Исламской Республики Иран, Корейской Народно-Демократической Республики, Республики Беларусь, Республики Куба, Республики Никарагуа, Сирийской Арабской Республики, Чеченской Республики, а также на территории полуострова Крым.

###