Яндекс.Метрика

  Текст в речь.


Средство для озвучивания текста и его десять плюсов.

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

Процесс озвучивания может быть реализован одним из следующих способов.

- Диктовка текста человеком (диктором).

- Озвучивание в программах, типа «Говорилки» или «Балаболки», где на выходе получается речь одним из синтетических голосов. Наилучшие результаты получаются в коммерческих версиях программ для озвучивания.

- Применение сервисов синтеза речи, которые используют искусственный интеллект. Этот способ даёт наилучший результат, но для использования сервисов необходимо создавать программные средства, которые не предлагаются в интернете для широкого распространения.

В нашем случае мы воспользуемся третьим вариантом процесса озвучивания, а программные средства создадим самостоятельно на основе языка bash, который позволяет создавать скрипты для выполнения самых разнообразных задач.

Аудио запись этой статьи (с небольшими изменениями).

Видео демонстрация озвучки статьи.

Видео пояснение (как работать с файлом).

Сервис.

Сервис, на основе которого будем создавать скрипт озвучивания текста, создан компанией Яндекс, это облачный сервис Yandex-SpeechKit. На странице сервиса https://cloud.yandex.ru/docs/speechkit/tts/request

приводится описание метода API, генерирующего речь по переданному тексту.

Метод обладает целым рядом полезных свойств:

1-ое. Есть несколько голосов для озвучивания.

2-ое. Темп речи можно изменять.

3-е. Возможно применение эмоций для голосов.

4-ое. Текст может быть на русском, английском или турецком языках.

5-ое. Легко корректируются ударения в омонимах.

6-ое. Возможна передача пауз, когда должно быть молчание.

7-ое. Учитывая, что текст и параметры г+олоса передаются в облако, это можно делать прямо в процессе озвучивания. Это позволяет изменять параметры г+олоса для любого фрагмента текста и даже отдельной фразы.

8-ое. Промежуточные аудиофайлы могут быть дополнительно обработаны внутри скрипта. Соответственно, для каждой фразы или фрагмента текста можно изменять громкость, корректировать тембр, применять эффекты. И это всё будет происходить в процессе передачи текста в облако и получения результата озвучивания. Нет необходимости дополнительно обрабатывать голос в аудио ред+акторах.

9-ое. Если текст небольшой, можно выполнять озвучивание прямо с экрана.

10-ое. Нет необходимости в применении микрофона, поэтому в записи будут полностью отсутствовать акустические шумы вашего кабинета и наводки от сети электропитания.

Управление голосом.

 Для управления голосом применяются ключи, которые можно помещать с пробелом перед очередной озвучиваемой строкой. Текст строк+и и весь следующий за этой строкой текст будет озвучен в соответствии с параметрами, указанными в ключе.

Ключ содержит информацию о собственно голосе (код имени г+олоса), темп произношения, эмоция произношения, изменение громкости произношения, наличие аудио эффекта для результирующего г+олоса. Корректировка частотной характеристики применяется по умолчанию для всех голосов.

Разберём первый ключ, который находится в самом начале текста в озвученном видео. Набор символов {{ 8 0.8 1 0 -10 0 }} в двойных фигурных скобках обозначает:

Голос номер 2, темп 0.85, эмоция 3, язык текста 0 (RU), усиление -10 децибел, аудио эффект 0 (отсутствует).

Эффекты к голосу могут применяться в зависимости от требований к результату работы. Один из часто применяемых эффектов это эхо.

Эхо включается шестым параметром, когда его значение равно единице.

{{ 8 0.85 1 0 +12 1 }}

Параметры эха можно изменять в скрипте.

Возможна установка звуковых закладок в виде дополнительного текста озвученного перед строкой. В нашем случае текст закладки присвоен переменной в скрипте - «Следующий текст очень важен».

{{ 3 0.95 3 0 -1 2 }} -. Это включённый текст закладки перед пустой строкой с одной паузой «-».

После любых эффектов необходимо их отменить, если не используется другой эффект.

Возможен выбор эмоции говорящего. Весь текст в этом ролике записан с нейтральной интонацией. Но возможна злая и добрая интонация. Добрая интонация выглядит так:

{{ 3 0.95 1 0 0 0 }}.

Тексты могут быть на русском, английском или турецком языках. Проверим переход на другие языки распознавания. Сначала английский голосом Жанны.

Английский (обозначен единицей в четвёртом параметре) - {{ 3 1.0 2 1 0 0 }}.

Турецкий (2) - {{ 4 0.75 3 2 0 0 }}.

Пауза продолжительностью примерно три секунды состоит из тридцати дефисов через пробелы включённых в одно предложение:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .

Запуск файла может выполняться несколькими способами. Один из этих способов - запуск в окне терминала, из каталога, где лежит файл с текстом.

Авторизация в сервисе.

Сервисы Yandex-SpeechKit требуют авторизации при каждой передаче данных, чтобы получить положительный ответ на запрос.

Для авторизации применяются две больших строк+и, которые вы можете получить при регистрации в сервисах и создании каталога с бакетом для хранения данных.

Показанный скрипт может брать эти строки из отдельного файла, но если вы не собираетесь свой экземпляр скрипта кому-либо передавать, то можно эти строки записать прямо в тело скрипта в раздел «Авторизация».

В первой строке должно быть значение FOLDER_ID, а во второй строке значение OAuth_TOKEN.

Ключ IAM_TOKEN, который получается при авторизации, действителен несколько часов. Если работа длится дольше, то необходимо получать новый ключ, когда истекло время действия предыдущего.

Описываемый скрипт все процедуры авторизации, контроля истечения времени действия токена и получения нового токена выполняет автоматически. Вся чёрная работа выполняется за вас. Вам остаётся лишь творческая часть работы.

Полученный токен хранится в скрытом файле, который заменяется при устаревании ключа. При желании вы можете шифровать строки FOLDER_ID и OAuth_TOKEN, например, с помощью base64, а во время работы скрипта расшифровывать их. Но это только для тех, кому очень важна безопасность этих данных.

Результат работы.

В результате работы над текстом получаем аудиофайл в формате mp3. Имя файла состоит из времени записи и имени файла с текстом. Если работа ведётся прямо с экрана, то имя временного файла с текстом клип тэ экс тэ.

Далее возможно использование этого файла при создании видео или для пополнения библиотеки аудиокниг и других аудио материалов.


Если вас заинтересовала эта работа, вы можете посетить страницу автора скрипта www.beard-studio.ru, где скрипт в актуальной редакции может быть скачан.

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

В текущей версии устранены все ошибки, которые могли приводить к незначительным, но всё же искажениям звука при произношении. Одно из таких искажений в виде щелчков на границе некоторых фонем возникало при конкатен+ации промежуточного набора файлов утилитой SOX. Применение FFMPEG позволило эти щелчки устранить.

SOX теперь применяется только для корректировки частотной характеристики голосов.

Стоимость использования сервиса.

Используемый сервис не бесплатен. Но цена его такова, что устроит подавляющее число пользователей. Озвучить этот текст стоит меньше рубля. А при первом подключении к сервису можно получить месяц бесплатного использования.

Автор не даёт гарантий, что по этому описанию вы легко реализуете выплнение озвучивания текста. Вопросы можно задавать по почте tx-mm@mail.ru,

Сам скрипт можно скачать здесь.

Обновлён файл скрипта (04.11.2019 19:22)

Проверен с новыми голосами. Всего голосов 14.

{{ 1 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Ермил.
{{ 2 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Оксана.
{{ 3 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Жанна.
{{ 7 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Омаж.
{{ 4 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Захар.
{{ 5 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Настя.
{{ 9 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Саша.
{{ 8 0.9 3 1 -1 0 }} You see, I speak English well. Alyss. US.
{{ 6 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Костя.
{{ 10 0.9 3 2 -1 0 }} Sizi gormek ne hos. Turkcem iyi degil. Silaerkan. TR.
{{ 11 0.9 3 2 -1 0 }} Sizi gormek ne hos. Turkcem iyi degil. Erkanyavas. TR.
{{ 12 0.9 3 1 -1 0 }} You see, I speak English well. Nick. US.
{{ 13 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Филипп.
{{ 14 0.9 3 0 -1 0 }} Строка для проверки г+олоса. Алёна.

Результат здесь

На главную