Когда не хочется читать: программы для чтения текста голосом в 2021 году
Содержание:
- Некачественный датасет
- Дополнительные эксперименты
- SOVA
- Планы
- Библиотека pyttsx3
- Программы для чтения текста голосом
- Обертка для eSpeak NG
- Перечень сервисов для голосовой озвучки текста
- VLC media player 2.2.1 [2015, Медиаплеер] 32/64-bit
- Интерфейс Балаболки
- BookReader
- Голосовые движки: мужские и женские
- Готовим поляну
- AVS Audio Editor
- Приложения для чтения книг голосом
- Популярные голосовые движки
- Бенчмарки по Скорости
Некачественный датасет
Нам повезло, что в команде есть человек, увлекающийся музыкой, так что для облагораживания датасетов, в частности Руслана, мы вручную подбирали параметры различных фильтров и обрабатывали ими аудиодорожки в Logic Pro X. Ниже можете прослушать примеры оригинального и прошедшего обработку Руслана:
Также стоит отметить, что в датасете немного почищена пунктуация, так как движок реагирует на неё весьма чувствительно.
Дополнительные эксперименты
После решения всех насущных вопросов встала задача улучшить и разнообразить звучание, придать ему изюминки. Любой знакомый с темой скажет «Ок, посмотрите в сторону GST и VAE », и мы посмотрели.
Введение в пайплайн GST, на субъективный слух автора, не давало каких-то особых запоминающихся изменений, пока мы не попробовали подход, описанный в Text predicted GST – предлагается модели самой подбирать комбинацию стилистических токенов, чтобы добиться лучшего звучания для текущего текста. Для демонстрации работы этого модуля приведём аудио, полученные моделью, которая обучалась на датасете реплик персонажей из популярных зарубежных сериалов (актриса озвучки Екатерина). Уточним, что датасет изначально не предназначался для синтеза.
В общем, как и в жизни: главное найти подход к человеку.
Что касается использования вариационных автоэнкодеров, то эксперименты пока продолжаются, и похвастаться на данный момент нечем, так как столкнулись с определёнными проблемами. Если интересны технические детали — прошу под спойлер.
К тому же, так как мы часто слышали вопрос «А можно ли управлять скоростью и высотой тона речи?», мы добавили небольшой инструментарий для проведения этих операций на сгенерированных записях.
SOVA
В тексте неоднократно упоминалось, что мы выложили в открытый доступ часть своих наработок по синтезу. Вот их список:
- sova-tts-engine – движок на базе Tacotron 2 от NVIDIA. Всё вышеперечисленное, за исключением text predicted GST и VAE, было опубликовано в этом репозитории, плюс проведён избирательный рефакторинг кода;
- sova-tts-tps – тот самый nlp-препроцессор;
- sova-tts-vocoder – практически не изменённый вокодер от NVIDIA, но всё-таки с отличиями;
- sova-tts-binding – пакет для связывания nlp-препроцессора, движка и вокодера в единый инференс-пайплайн. Реализован с прицелом на добавление новых движков и вокодеров;
- sova-tts – упакованный в докер стенд синтеза с простеньким GUI интерфейсом;
- Почищенный датасет и веса Руслана (This work, «SOVA Dataset (TTS RUSLAN)», is a derivative of «RUSLAN: Russian Spoken Language Corpus For Speech Synthesis» by Lenar Gabdrakhmanov, Rustem Garaev, Evgenii Razinkov, used under CC BY-NC-SA 4.0. «SOVA Dataset (TTS RUSLAN)» is licensed under CC BY-NC-SA 4.0 by Virtual Assistant, LLC)
- Датасет и веса Наталии («SOVA Dataset (TTS Natasha)» is licensed under CC BY 4.0 by Virtual Assistant, LLC)
Наш SOVA TTS (весь код + модель и датасет Наталии) вы можете свободно использовать для коммерческих задач бесплатно.
Планы
Планы у нас грандиозные, а именно:
- Полноценный нормализатор текста для раскрытия чисел, аббревиатур и сокращений;
- Модуль для решения неоднозначностей в ударениях и словах с буквой «ё»;
- Добавление поддержки ssml;
- Дальнейшие эксперименты с VAE, получение контроля над отдельными словами и фонемами;
- Подготовка эмоционального синтеза, по возможности с контролем уровня эмоции;
- Мультидикторный синтез на одной модели;
- Новые голоса;
- Клонирование голоса;
- Возможный переход на более современные архитектуры типа Flowtron или FastSpeech2;
- Эксперименты с вокодерами: дообучение Waveglow, обучение LPCNet, тестирование MelGAN;
- Оптимизация архитектуры для работы в реальном времени на CPU.
На текущий момент мы продолжаем двигаться в сторону улучшения качества синтеза речи. Если то, что мы делаем, вам интересно – пишите, можем посотрудничать. Как на коммерческих проектах, так и в Open Source.
Все наши наработки доступны тут: наш GitHub
Распознавание речи: SOVA ASR
Синтез речи: SOVA TTS
Спасибо за внимание, впереди еще много интересного!
Библиотека pyttsx3
PyTTSx3 — удобная кроссплатформенная библиотека для реализации TTS в приложениях на Python 3. Использует разные системы синтеза речи в зависимости от текущей ОС:
- в Windows — SAPI5,
- в Mac OS X — nsss,
- в Linux и на других платформах — eSpeak.
Это очень удобно: пишете код один раз и он работает везде. Кстати, eSpeak NG поддерживается наравне с исходной версией.
А теперь примеры!
Просмотр голосов
У каждого голоса есть несколько параметров, с которыми можно работать:
- id (идентификатор в операционной системе),
- name (имя),
- languages (поддерживаемые языки),
- gender (пол),
- age (возраст).
Первый вопрос всегда в том, какие голоса установлены на стороне пользователя. Поэтому создадим скрипт, который покажет все доступные голоса, их имена и ID. Назовем файл, например, list_voices.py:
import pyttsx3
tts = pyttsx3.init() # Инициализировать голосовой движок.
У активного движка есть стандартный параметр ‘voices’, где содержится список всех доступных этому движку голосов. Это нам и нужно:
voices = tts.getProperty(‘voices’)
# Перебрать голоса и вывести параметры каждого
for voice in voices:
print(‘=======’)
print(‘Имя: %s’ % voice.name)
print(‘ID: %s’ % voice.id)
print(‘Язык(и): %s’ % voice.languages)
print(‘Пол: %s’ % voice.gender)
print(‘Возраст: %s’ % voice.age)
Теперь открываем терминал или командную строку, переходим в директорию, куда сохранили скрипт, и запускаем list_voices.py.
Результат будет примерно таким:
В Linux картина будет похожей, но с другими идентификаторами.
Как видите, в Windows для большинства установленных голосов MS SAPI заполнены только «Имя» и ID. Однако этого хватит, чтобы решить следующую нашу задачу: написать код, который выберет русский голос и что-то им произнесет.
Например, у голоса RHVoice Aleksandr есть преимущество — его имя уникально, потому что записано транслитом и в таком виде не встречается у других известных производителей голосов. Но через pyttsx3 этот голос будет работать только в Windows. Для воспроизведения в Linux ему нужен Speech Dispatcher (подробнее чуть позже), с которым библиотека взаимодействовать не умеет. Как общаться с «диспетчером» еще обсудим, а пока разберемся с доступными голосами.
Как выбрать голос по имени
В Windows голос удобно выбирать как по ID, так и по имени. В Linux проще работать с именем или языком голоса. Создадим новый файл set_voice_and_say.py:
import pyttsx3
tts = pyttsx3.init()
voices = tts.getProperty(‘voices’)
# Задать голос по умолчанию
tts.setProperty(‘voice’, ‘ru’)
# Попробовать установить предпочтительный голос
for voice in voices:
if voice.name == ‘Aleksandr’:
tts.setProperty(‘voice’, voice.id)
tts.say(‘Командный голос вырабатываю, товарищ генерал-полковник!’)
tts.runAndWait()
В Windows вы услышите голос Aleksandr, а в Linux — стандартный русский eSpeak. Если бы мы вовсе не указали голос, после запуска нас ждала бы тишина, так как по умолчанию синтезатор говорит по-английски.
Обратите внимание: tts.say() не выводит реплики мгновенно, а собирает их в очередь, которую затем нужно запустить на воспроизведение командой tts.runAndWait(). Выбор голоса по ID
Выбор голоса по ID
Часто бывает, что в системе установлены голоса с одинаковыми именами, поэтому надежнее искать необходимый голос по ID.
Заменим часть написанного выше кода:
for voice in voices:
ru = voice.id.find(‘RHVoice\Anna’) # Найти Анну от RHVoice
if ru > -1: # Eсли нашли, выбираем этот голос
tts.setProperty(‘voice’, voice.id)
Теперь в Windows мы точно не перепутаем голоса Anna от Microsoft и RHVoice. Благодаря поиску в подстроке нам даже не пришлось вводить полный ID голоса.
Но когда мы пишем под конкретную машину, для экономии ресурсов можно прописать голос константой. Выше мы запускали скрипт list_voices.py — он показал параметры каждого голоса в ОС
Тогда-то вы и могли обратить внимание, что в Windows идентификатором служит адрес записи в системном реестре:
import pyttsx3
tts = pyttsx3.init()
EN_VOICE_ID = «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MS-Anna-1033-20DSK»
RU_VOICE_ID = «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\TokenEnums\RHVoice\Anna»
# Использовать английский голос
tts.setProperty(‘voice’, EN_VOICE_ID)
tts.say(«Can you hear me say it’s a lovely day?»)
# Теперь — русский
tts.setProperty(‘voice’, RU_VOICE_ID)
tts.say(«А напоследок я скажу»)
tts.runAndWait()
Программы для чтения текста голосом
1. IVONA Reader
Сайт разработчика: www.ivona.com/
Одна из самых лучших программ для озвучивания текста.Позволяет вашему ПК читать не только простые текстовые файлы в формате txt, но и новости, RSS, любые веб-страницы в интернете, электронную почту и пр.
Кроме того, позволяет преобразовать текст в mp3 файл (который вы потом можете загрузить на любой телефон или mp3 плеер и слушать в дороге, например). Т.е. вы можете самостоятельно создавать аудио-книги!
Голоса программы IVONA очень похожи на реальный голос, достаточно не плохое произношение, не запинаются. Кстати, программа может быть полезна для тех, кто изучает иностранный язык. Благодаря ней можно слушать правильное произношение тех или иных слов, оборотов.
Поддерживает SAPI5, плюс к этому хорошо кооперируется с внешними приложениями (например, Apple Itunes, Skype).
Пример (текст воспроизведения одной моей недавней статьи)
Из минусов: некоторые незнакомые слова читает с неправильным ударением и интонацией. В целом же весьма не плохо, чтобы прослушать, например, параграф из книги по истории, пока идешь на лекцию/занятие — даже более чем!
2. Балаболка
Сайт разработчика: www.cross-plus-a.ru/balabolka.html
Программа «Балаболка», главным образом, предназначена для чтения вслух текстовых файлов. Для воспроизведения текста нужны, помимо программы, голосовые движки (синтезаторы речи).
Воспроизведение речи можно контролировать при помощи стандартных кнопок, подобных тем, что присутствуют в любой мультимедийной программе («воспроизвести/приостановить/остановить»).
Пример воспроизведения (тот же):
Минусы: некоторые незнакомые слова читает не правильно: ударение, интонация. Иногда, пропускает знаки препинания и не делает паузы между словами. Но в целом слушать можно.
Кстати, качество звучания сильно зависит от речевого движка, поэтому, в одной и той же программе звук воспроизведения текста может отличаться в разы!
3. ICE Book Reader
Сайт разработчика: www.ice-graphics.com/ICEReader/IndexR.html
Отличная программа для работы с книгами: чтение, каталогизирование, поиск нужной и пр. Помимо стандартных документов, которые могут читать и другие программы (TXT-HTML, HTML-TXT, TXT-DOC, DOC-TXT, PDB-TXT, LIT-TXT, FB2-TXT и т.д.) ICE Book Reader поддерживает файлы форматов: .LIT, .CHM и .ePub.
К тому же ICE Book Reader позволяет не только читать, но и отличная настольная библиотека:
— позволяет хранить, обрабатывать, каталогизировать книги (до 250000 тысяч экземпляров!);
— автоматическое упорядочивание вашей коллекции;
— быстрый поиск книги из вашей «свалки» (особенно актуально, если у вас много не каталогизированной литературы);
— ядро базы данных ICE Book Reader превосходит большинство программ подобного рода.
Так же программа позволяет озвучивать тексты голосом.
Lkя этого нужно зайти в настройки программы и настроить две вкладки: «Режим»(выбрать чтение голосом) и «Режим синтеза речи» (выбрать непосредственно сам голосовой движок).
4. Говорилка
Сайт программы: www.vector-ski.ru/vecs/govorilka/index.htm
Основные возможности программы «Говорилка»:
- Чтение текста голосом (открывает документы txt, doc, rtf, html и пр.);
- Позволяет записывать текст из книги в форматы (*.WAV, *.MP3) с повышенной скоростью — т.е. по сути создание электронной аудио-книги;
- Хорошие функции по регулировке скорости чтения;
- Авто прокрутка читаемого текста;
- Возможность пополнения словарей произношения;
- Поддерживает старые файлы из времен DOS (многие современные программы не могут прочитать файлы в подобной кодировке);
- Размер файла, из которого программа может прочитать текст: до 2 гигабайт;
- Возможность делать закладки: при выходе из программы, она автоматически запоминает место остановки курсора.
5. Sakrament Talker
Сайт разработчика: sakrament.by/index.html
С помощью Sakrament Talker можно превратить свой компьютер в «говорящую» аудио книгу! Программа Sakrament Talker поддерживает форматы RTF и TXT,может автоматически распознавать кодировку файла (наверное, иногда замечали, что некоторые программы открывают файл с «крякозабрами» вместо текста, так вот в Sakrament Talker такое невозможно!).
Кроме того Sakrament Talker позволяет воспроизводить достаточно большие файлы, быстро находить те или иные файлы. Озвученный текст можно не только прослушать на компьютере, но и сохранить в mp3 файл (который в последствии можно скопировать на любой плеер или телефон и прослушивать вдалеке от ПК).
В целом довольно не плохая программа, которая поддерживает все популярные голосовые движки.
Обертка для eSpeak NG
Модуль называется py-espeak-ng. Это альтернатива pyttsx3 для случаев, когда вам нужен или доступен только один синтезатор — eSpeak NG. Не дай бог, конечно. Впрочем, для быстрых экспериментов с голосом очень даже подходит. Принцип использования покажется вам знакомым:
from espeakng import ESpeakNG
engine = ESpeakNG()
engine.speed = 150
engine.say(«I’d like to be under the sea. In an octopus’s garden, in the shade!», sync=True)
engine.speed = 95
engine.pitch = 32
engine.voice = ‘russian’
engine.say(‘А теперь Горбатый!’, sync=True)
Обратите внимание на параметр синхронизации реплик sync=True. Без него синтезатор начнет читать все фразы одновременно — вперемешку
В отличие от pyttsx3, обертка espeakng не использует команду runAndWait(), и пропуск параметра sync сбивает очередь чтения.
Озвучиваем текст из файла
Не будем довольствоваться текстами в коде программы — пора научиться брать их извне. Тем более, это очень просто. В папке, где хранится только что рассмотренный нами скрипт, создайте файл test.txt с текстом на русском языке и в кодировке UTF-8. Теперь добавьте в конец кода такой блок:
text_file = open(«test.txt», «r»)
data = text_file.read()
tts.say(data, sync=True)
text_file.close()
Открываем файл на чтение, передаем содержимое в переменную data, затем воспроизводим голосом все, что в ней оказалось, и закрываем файл.
Перечень сервисов для голосовой озвучки текста
При разборе сервисов для воспроизведения текстов важно понимать, что идеального «человеческого» звучания от таких программ вы не добьётесь. Синтезатор речи часто неверно расставляет ударение, пробелы между словами бывают слишком короткими или слишком долгими, выбирается некорректная интонация и так далее
Платные озвучки обычно выше качеством, и часто позволяют воспроизвести текст в рекламных целях лишь ограниченное число символов (к примеру, текст до 200-300 букв). Бесплатные, соответственно, могут не иметь таких ограничений, но и качество воспроизводимых ими голосов может быть сомнительным.
Перейдём к рассмотрению перечня из 10 программ для воспроизведения напечатанных слов и предложений при помощи виртуального робота.
VLC media player 2.2.1 [2015, Медиаплеер] 32/64-bit
Год выпуска: 2015Жанр: МедиаплеерРазработчик: VideoLANСайт разработчика: http://www.videolan.org/Язык интерфейса: Мультиязычный (русский присутствует)Тип сборки: StandardРазрядность: 32/64-bitОперационная система: Windows XP, Vista, 7, 8, 8.1, 10 Описание: VLC Media Player — универсальный плеер, способный воспроизводить практически любые существующие на сегодняшний день форматы файлов: MPEG-1, MPEG-2, MPEG-4, DivX, XviD, H.264, MP3, OGG и другие, обычные DVD и VCD диски, а также музыкальные. Одной из его особенностей является возможность проигрывания практически любого типа потокового …
Программы / Программы для работы с Мультимедиа / Кодеки и Медиаплееры
Подробнее
Интерфейс Балаболки
Balabolka имеет простой и интуитивно понятный интерфейс на русском и нескольких европейских и азиатских языках. Те, кто смог скачать Балаболку бесплатно, установил Balabolka и голосовой движок, чтобы программа смогла читать русскими голосами, сразу могут прослушать тексты. Процесс воспроизведения речи запускается кнопкой Воспроизведение. Кнопкой Пауза виртуальный рассказчик приостанавливается. Прекращается воспроизведение кнопкой Стоп. Такой же интерфейс управления присутствует в любом компьютерном аудио-видео плеере. Настроить программу для работы сможет даже малоопытный пользователь.
Возможность изменения дизайна программы на любой вкус реализована с помощью нескольких сменных скинов, или тем оформления интерфейса. Также существует возможность дополнительно бесплатно скачать темы для программы Балаболка с официального сайта. Мультиязычный интерфейс с превосходным русским языком и объемный раздел справки и помощи от автора программы Ильи Морозова вдвойне упрощает задачу изучения функционала, которого немного больше, чем может показаться на первый взгляд.
BookReader
BookReader — отечественная разработка с поддержкой русского языка, которая позволяет с комфортом читать электронные книги на экране вашего ПК. Можно настроить автоматическую прокрутку, делать закладки. Ридер дает доступ к электронной библиотеке и позволяет выбрать стиль оформления и вручную указать кодировку.
Софт не очень удобен в управлении, а стиль оформления дает дополнительную нагрузку на глаза
Поддерживаются txt, rtf, также доступна загрузка архивов zip и rar. При открытии приложение автоматически распознает и подбирает кодировку и форматирует содержимое для удобного просмотра. Также включена читалка текста голосом.
Голосовые движки: мужские и женские
Движки синтеза речи — это специальное ПО, своего рода драйвера, необходимые для того, чтобы компьютер мог «заговорить» (т.е. для преобразования текста в речь). Движков сейчас в сети сотни: есть как платные, так и бесплатные. Наилучшее качество чтения, конечно же, показывают платные движки.
Важное замечание: движок синтеза речи не имеет никакого дизайна или интерфейса. После его установки в систему — вы не заметите ровным счетом никаких изменений! Чтобы работать с движком — вам нужна какая-нибудь программа для чтения текстов: Балаболка, Говорун, Ice Reader и пр., чуть выше я приводил те, которые «мне по душе» )
Вот поэтому, кстати, часто пользователи ругают ту или иную программу, что она не может прочитать русский текст (или вообще не может). Просто они забывают о необходимости установки речевого движка.
Пару слов про стандарты…
Голосовые движки могут быть выполнены в разных стандартах (так называемых), самые основные три: SAPI 4, SAPI 5 или Microsoft Speech Platform (примечание: почти в каждой программе для чтения, вы можете выбрать речевой движок).
SAPI 4
Добротный стандарт, был актуален десяток лет назад. На сегодняшний день устарел, и на современных компьютерах/ноутбуках его использование не оправдано.
SAPI 5
Почти все современные голосовые движки построены на этом стандарте (как платные, так и бесплатные). Наиболее популярный стандарт, можно найти движок с мужским, женским, детским голосами.
Microsoft Speech Platform
Microsoft Speech Platform – большой набор инструментов для разработчиков, которые позволяют реализовывать возможность преобразования текста в речь.
это набор инструментов, позволяющих разработчикам различных приложений, реализовывать в них возможность преобразования текста в голос.
Примечание! Чтобы синтезатор речи работал, необходимо:
Microsoft Speech Platform — Runtime – серверная часть платформы, предоставляющая API для программ;
Microsoft Speech Platform — Runtime Languages – языки для работы серверной части.
Более подробно об этом здесь — https://msdn.microsoft.com/en-us/library/hh361572.aspx
Несколько голосовых движков
Тext-to-speech engines Дигало // Николай
Сайт: http://www.digalo.com/index.htm
Очень популярный русский голосовой движок (голос мужской!). Подойдет для большинства программ, которые умеют читать текст голосом. На мой скромный взгляд, один из лучших общедоступных движков для синтеза речи (на русском языке). Кроме русского, кстати, на сайте разработчика доступны движки еще для нескольких языков. Минус: без регистрации работает всего две недели.
Acapela // Голосовой движок (модуль) Алена
Сайт: http://www.acapela-group.com/
Алёнка — относительно новый русский женский речевой движок от компании Acapela. Работает по стандарту SAPI-5 с частотой 22 КГц. Некоторые пользователи считают, что голос у «Алены» приятнее, чем у «Николая».
Голосовой движок (модуль) Катерина 2
Компания разработчик: ScanSoft RealSpeak
Довольно неплохой речевой движок с женским голосом. После доработки движка, он стал сопоставим с «Николаем». Существенному обновлению подверглась фонетическая база движка, изменен алгоритм постановки ударений (что положительно сказалось на звучании), устранена проблема со скоростью произношения.
RHVoice
Сайт: http://tiflo.info/rhvoice/
RHVoice — это многоязычный синтезатор речи с открытым исходным кодом. Можно использовать в ОС Windows и Linux. Синтезатор совместим с SAPI5. Разработчик синтезатора — Ольга Яковлева.
Кстати, движок основан на речевой базе, записанной дикторами. Русские голоса «Елена» и «Ирина» доступны для скачивания на официальном сайте.
IVONA Tatyana/Maxim
Сайт: https://www.ivona.com/us/about-us/voice-portfolio/
Станет ли движок самым используемым — не знаю, время покажет!
Кстати, как думаете, будет ли когда-нибудь разработан речевой движок, который не отличишь от голоса обычного человека? Или может он уже есть, а я о нем не слышал… (скиньте название!)
Готовим поляну
Прежде чем писать и тестировать код, убедимся, что операционная система готова к синтезу речи, в том числе на русском языке.
Чтобы компьютер заговорил, нужны:
- голосовой движок (синтезатор речи) с поддержкой нужных нам языков,
- голоса дикторов для этого движка.
В Windows есть штатный речевой интерфейс Microsoft Speech API (SAPI). Голоса к нему выпускают, помимо Microsoft, сторонние производители: Nuance Communications, Loquendo, Acapela Group, IVONA Software.
Есть и свободные кроссплатформенные голосовые движки:
- RHVoice от Ольги Яковлевой — имеет четыре голоса для русского языка (один мужской и три женских), а также поддерживает татарский, украинский, грузинский, киргизский, эсперанто и английский. Работает в Windows, GNU/Linux и Android.
- eSpeak и его ответвление — eSpeak NG — c поддержкой более 100 языков и диалектов, включая даже латынь. NG означает New Generation — «новое поколение». Эта версия разрабатывается сообществом с тех пор, как автор оригинальной eSpeak перестал выходить на связь. Система озвучит ваш текст в Windows, Android, Linux, Mac, BSD. При этом старый eSpeak стабилен в ОС Windows 7 и XP, а eSpeak NG совместим с Windows 8 и 10.
В статье я ориентируюсь только на перечисленные свободные синтезаторы, чтобы мы могли писать кроссплатформенный код и не были привязаны к проприетарному софту.
По качеству голоса RHVoice неплох и к нему быстро привыкаешь, а вот eSpeak очень специфичен и с акцентом. Зато eSpeak запускается на любом утюге и подходит как вариант на крайний случай, когда ничто другое не работает или не установлено у пользователя.
Установка речевых движков, голосов и модулей в Windows
С установкой синтезаторов в Windows проблем возникнуть не должно. Единственный нюанс — для русского голоса eSpeak и eSpeak NG нужно скачать расширенный словарь произношения. Распакуйте архив в подкаталог espeak-data или espeak-ng-data в директории программы. Теперь замените старый словарь новым: переименуйте ru_dict-48 в ru_dict, предварительно удалив имеющийся файл с тем же именем (ru_dict).
Теперь установите модули pywin32, python-espeak и py-espeak-ng, которые потребуются нам для доступа к возможностям TTS:
pip install pywin32 python-espeak pyttsx3 py-espeak-ng
Если у вас на компьютере соседствуют Python 2 и 3, здесь и далее пишите «pip3», а при запуске скриптов — «python3».
Установка eSpeak(NG) в Linux
Подружить «пингвина» с eSpeak, в том числе NG, можно за минуту:
sudo apt-get install espeak-ng python-espeak
pip3 install py-espeak-ng pyttsx3
Дальше загружаем и распаковываем словарь ru_dict с официального сайта:
wget http://espeak.sourceforge.net/data/ru_dict-48.zip
unzip ru_dict-48.zip
Теперь ищем адрес каталога espeak-data (или espeak-ng-data) где-то в /usr/lib/ и перемещаем словарь туда. В моем случае команда на перемещение выглядела так:
sudo mv ru_dict-48 /usr/lib/i386-linux-gnu/espeak-data/ru_dict
Обратите внимание: вместо «i386» у вас в системе может быть «x86_64…» или еще что-то. Если не уверены, воспользуйтесь поиском:. find /usr/lib/ -name «espeak-data»
find /usr/lib/ -name «espeak-data»
Готово!
RHVoice в Linux
Инструкцию по установке RHVoice в Linux вы найдете, например, в начале этой статьи. Ничего сложного, но времени занимает больше, потому что придется загрузить несколько сотен мегабайт.
Смысл в том, что мы клонируем git-репозиторий и собираем необходимые компоненты через scons.
Для экспериментов в Windows и Linux я использую одни и те же русские голоса: стандартный ‘ru’ в eSpeak и Aleksandr в RHVoice.
Как проверить работоспособность синтезатора
Прежде чем обращаться к движку, убедитесь, что он установлен и работает правильно.
Проверить работу eSpeak в Windows проще всего через GUI — достаточно запустить TTSApp.exe в папке с программой. Дальше открываем список голосов, выбираем eSpeak-RU, вводим текст в поле редактирования и жмем на кнопку Speak.
Обратиться к espeak можно и из терминала. Базовые консольные команды для eSpeak и NG совпадают — надо только добавлять или убирать «-ng» после «espeak»:
espeak -v ru -f D:\my.txt
espeak-ng -v en «The Cranes are Flying»
echo «Да, это от души. Замечательно. Достойно восхищения» |RHVoice-test -p Aleksandr
Как нетрудно догадаться, первая команда с ключом -f читает русский текст из файла. Чтобы в Windows команда espeak подхватывалась вне зависимости от того, в какой вы директории, добавьте путь к консольной версии eSpeak (по умолчанию — C:\Program Files\eSpeak\command_line) в переменную окружения Path. Вот как это сделать.
AVS Audio Editor
Достаточно понятной и при этом бесплатной является программа для работы с голосом AVS Audio Editor. В её арсенале присутствует возможность работы с огромным числом форматов, например, MP3, ALAC, FLAC, WAV, M4A, WMA, AAC, MP2, AMR, OGG и пр. Производители позаботились, чтобы аудио редактор выполнял широкий функционал, включая объединение файлов, обрезку, разделение на части, микширование.
Оператору в работе помогает установленная шкала времени с высокой дискретностью промежутков. В последних версиях появилась возможность практически хирургического вмешательства в файлы для блокировки шипения, свиста, треска и других звуков. Если есть необходимость в использовании аудиоэффектов, то в AVS Audio Editor предусмотрен такой набор:
- смешивание нескольких дорожек;
- установка задержки;
- хорус (хоровое звучание);
- реверберация (постепенное уменьшение звука).
Запись может вестись из нескольких источников, например, через микрофон, от проигрывателя виниловых пластинок, с выхода звуковой карты. Сохранять готовый проект или продукт получится в любом формате. Для установки требуются минимальные характеристики железа, такие как процессор 1.86 ГГц или выше, оперативка от 1 Гб, Microsoft DirectX 9.0c или более поздней версии.
Приложения для чтения книг голосом
Чтобы выбрать лучшую программу для озвучивания текста, нужно перебрать разные варианты читалок. Каждая из этих программ получила свою аудиторию – кому-то нравится оформление, а другим универсальность и малое потребление ресурсов ПК. Прежде чем скачивать и ставить приложение на свой компьютер рекомендуют предварительно просмотреть подробную информацию по наиболее популярным.
Acapela
Речевой синтезатор, который может воспроизводить голосом текст из файлов разного формата. Пакет насчитывает больше 30 языков, среди которых присутствует и русский. Программу Acapela можно купить у разработчика – ее распространяют только на коммерческой основе. Для озвучивания книги на русском языке, пользователь может выбрать один из 2 предустановленных вариантов – устаревший мужской голос «Николай» и обновленный женский «Алена». Программу выпускают под управлением таких систем:
- Windows;
- Mac;
- Linux;
- Android;
- iOS.
Такое широкое распространение позволяет использовать Acapela любому пользователю. Сама программа не занимает много места на устройстве и устанавливается очень быстро. Для предварительной оценки, пользователи могут включить онлайн-версию приложения. Но, количество текста ограничено 300 знаками, поэтому включить книгу не получится, только краткий отрывок для проверки качества озвучки.
Ivona Reader
Программа для озвучивания текстов под управлением Windows, с реалистичным звучанием. Основной голос, который можно поставить на это приложение – «Татьяна». Может зачитывать текстовые файлы в любом формате, в том числе интернет страницы и RSS ленты. Разработчики также включили возможность преобразования текста в аудио-файл MP3 формата, поэтому книгу можно записать и сбросить на смартфон.
ICE Book Reader Professional
Программа, которая знакома пользователям компьютеров Windows уже давно. Она поддерживает большую часть текстовых форматов и проста в управлении. Для использования функции чтения и преобразования текста в аудиозапись, обязательно установить какой-либо голосовой движок. ICE Book Reader – относят к категории приложений с лицензией Freeware – ее можно получить бесплатно и пользоваться всеми функциями.
ToM Reader
Эта программа для компьютеров под управлением операционных систем Windows – аналог ICE Book Reader. Работает сходным образом – открывает книги в разных текстовых форматах и может озвучивать только после установки одного из голосовых движков. Для улучшения качеств воспроизведения есть возможность добавлять словари, по которым ориентируется синтезатор.
Программы, которые способны озвучивать текст голосом, становятся распространенней – при активном ритме жизни, не у каждого человека найдется время на чтение обычного буквенного формата. Но, в таких ситуациях можно не только скачивать заготовленные аудиокниги – установив читающую программу и голосовой движок, такой файл можно подготовить самостоятельно или озвучить интересующую информацию в потоковом режиме. Современное ПО синтеза речи, по звучанию приближено к реальному голосу.
Популярные голосовые движки
Звучание голоса в синтезаторе речи зависит от того, какой в нем используется движок. Например, в русских версиях Windows установлен “электронный диктор” Microsoft Irina. Если в синтезаторе речи нет другого движка, то по умолчанию будет говорить именно она. При этом выбор голосов на самом деле очень богатый. Среди популярных русских движков можно выделить:
- Alyona от Acapela Group
- Татьяна и Максим от Ivona
- Ольга и Дмитрий от Loquendo
- Милена, Катерина и Юрий от Nuance
- Николай от Speech Cube Elan
Движки отличаются тембром голоса, эмоциональной окраской, количеством встроенных словарей, которые определяют правильность речи. Например, Николай читает текст практически без эмоций, поэтому с ним сложно воспринимать художественные тексты, а Ольга и Дмитрий от Loquendo, наоборот, используют разные стили речи. Все перечисленные движки работают по стандарту SAPI 5, который применяется на Windows, начиная с версии XP.
Большинство движков представлены в двух вариантах — мужской и женский голос. Детских голосов мало. Даже на сайте Acapela Group, одного из лидеров индустрии, меньше 10 языков, для которых доступны голоса детей.
Как сказано выше, голосовые движки облегчают процесс изучения иностранных языков. Например, Lernout&Hauspie предлагает для этого бесплатные голоса с американским и британским акцентами английского,а также голландским, испанским, итальянским и другим произношением. Большое количество движков разработала компания Cepstral. У них также есть бесплатная версия электронного диктора, однако при ее использовании постоянно появляется окно с предложением перейти на платный тариф.
Несмотря на то, что голосовые движки становятся всё более технологичными, добиться 100% совпадения с живой человеческой речью не удалось пока никому. Вам достаточно услышать несколько предложений, чтобы понять, что говорит робот. При изучении иностранных слов не стоит полагаться только на произношение программ — они нередко ошибаются. Но если ваша задача — простое озвучивание информации на русском, то можно использовать любой движок, в базе которого есть этот язык.
Чтобы добавить голосовой движок в Windows, достаточно его скачать и установить как обычную программу. После этого он появится в списке доступных. Но для использования голосов необходима сторонняя программа или веб-сервис, так как сами движки не имеют графического интерфейса.
Бенчмарки по Скорости
После качества скорость является следующим определяющим свойством модели, для измерения скорости синтеза мы используем следующие простые метрики:
- RTF (Real Time Factor) — какую долю длительности аудио занимает синтез этого аудио;
- RTS = 1 / RTF (Real Time Speed) — насколько синтез «быстрее» риалтайма;
Метрики мы снимали на двух устройствах с помощью встроенных в PyTorch 1.8 утилит:
- CPU — Intel i7-6800K CPU @ 3.40GHz;
- GPU — 1080 Ti;
- При снятии метрик на CPU мы также ограничивали число используемых потоков;
Для моделей 16 kHz получаются такие показатели:
Батч | Устройство | RTF | RTS |
---|---|---|---|
1 | CPU 1 thread | 0.7 | 1.4 |
1 | CPU 2 threads | 0.4 | 2.3 |
1 | CPU 4 threads | 0.3 | 3.1 |
4 | CPU 1 thread | 0.5 | 2.0 |
4 | CPU 2 threads | 0.3 | 3.2 |
4 | CPU 4 threads | 0.2 | 4.9 |
— | ———— | — | — |
1 | GPU | 0.06 | 16.9 |
4 | GPU | 0.02 | 51.7 |
8 | GPU | 0.01 | 79.4 |
16 | GPU | 0.008 | 122.9 |
32 | GPU | 0.006 | 161.2 |
— | ———— | — | — |
Для моделей 8 kHz получаются такие показатели:
Батч | Устройство | RTF | RTS |
---|---|---|---|
1 | CPU 1 thread | 0.5 | 1.9 |
1 | CPU 2 threads | 0.3 | 3.0 |
1 | CPU 4 threads | 0.2 | 4.2 |
4 | CPU 1 thread | 0.4 | 2.8 |
4 | CPU 1 threads | 0.2 | 4.4 |
4 | CPU 4 threads | 0.1 | 6.6 |
— | ———— | — | — |
1 | GPU | 0.06 | 17.5 |
4 | GPU | 0.02 | 55.0 |
8 | GPU | 0.01 | 92.1 |
16 | GPU | 0.007 | 147.7 |
32 | GPU | 0.004 | 227.5 |
— | ———— | — | — |
Также при расчетах скорости мы были удивлены ряду вещей:
- Процессоры AMD показали себя сильно хуже;
- Удивительно, но бутылочным горлышком в нашем случае оказался именно такотрон а не вокодер (еще остается существенный потенциал ускорения всей системы в 3-4 раза, а может даже и в 10 раз, если получится квантизация и дополнительное сжатие);
- Более чем 4 потока CPU не помогают, равно как и батч больше 4;