В этом году Selectel стал поддерживать некоммерческий проект RHVoice Lab — лабораторию по созданию новых голосов для одноименного отечественного синтезатора речи. Его особенность в том, что синтезатор разработан специально для слабовидящих и незрячих людей, для бытового использования. Руководитель проекта Артём Плаксин рассказал, как появилась идея RHVoice Lab, как воссоздать голос Артемия Лебедева при помощи сервера от Selectel и можно ли быть программистом, если ты не видишь код.
Представьте на секунду, что этот текст вы не пробегаете глазами, пока допиваете кофе, а слушаете в выбранной озвучке, лишь примерно представляя, как выглядит верстка страницы. Тем не менее, именно так статью «прочитают» незрячие люди, в том числе энтузиасты RHVoice Lab.
За год существования RHVoice Lab создала до десяти новых голосов, в том числе для английского и украинского языков. Благодаря команде проекта незрячие люди могут выбирать голос подходящего им тембра и звучания или «озвучивать» навигацию по интернету голосами известных людей.
Об RHVoice
Об отечественном синтезаторе речи и его создательнице — Ольге Яковлевой — писали год назад. Если вы лишь примерно представляете, как работают синтезаторы речи, рекомендуем обратиться к этой статье.
RHVoice (международный сайт) существует уже более 10 лет, облегчая жизнь незрячих и слабовидящих людей. С развитием искусственного интеллекта и голосовых помощников синтезаторами речи никого не удивишь — по запросу Алиса или Siri зачитают вам прогноз погоды или статью из «Википедии». Но RHVoice вместе с первым голосом — Александром — появился задолго до рождения Алисы.
Кроме того, сравнивать синтезаторы речи от Yandex или «Сбера» некорректно. RHVoice использует статистический параметрический синтез, основанный на скрытой Марковской модели. Это устаревший метод синтеза, который предварял нейронные сети. При таком виде синтеза сложнее добиться естественного звучания голоса — многое зависит от мастерства его создателей. Зато он позволяет использовать голоса из каталога RHVoice без подключения к интернету и на слабом устройстве.
RHVoice дает возможность полностью озвучить любое взаимодействие незрячего человека с компьютером: ввод системного пароля при входе в учетную запись и завершение сеанса работы, серфинг в интернете, общение в соцсетях, чтение книг, редакторская работа и остальное. Большая часть операций с компьютером, которые совершает человек, доступна, частично доступна или в перспективе доступна незрячему человеку. Ролики с котиками на YouTube не посмотреть, зато более информативный контент — те же интервью Дудя или новости Лебедева — можно и посмотреть, и лайкнуть, и прокомментировать. Во всем этом поможет синтезатор речи, встроенный в скринридер.
Скринридер (Screen reader) — это программа экранного доступа. Он по кусочкам разбирает интерфейсы программ, сайтов, текст и прочее и в специализированном виде подает на брайлевский дисплей или синтезатор речи. К таким программам относятся NVDA, Jaws, Talkback, VoiceOver.
Скринридер во многом работает как поисковые системы — парсит информацию по HTML-разметке. Люди обычно не задумываются, что стоит за заголовком, кнопками, текстом и хедером на сайте — они охватывают все визуально. Для незрячих людей правильная разметка, добавление лейблов очень важны, так как это позволяет скринридеру работать эффективнее, а синтезатору речи — озвучивать так, чтобы незрячий человек мог взаимодействовать с сайтом.
RHVoice продолжает развиваться: в июле вышел релиз версии 1.4.2 (подробнее об изменениях можно узнать по ссылке). Одно из главных новшеств — замена библиотеки Sonic для ускорения голоса на собственное решение RHVoice. Незрячему человеку важно иметь гибкость в настройке синтеза речи: изменять тон, громкость, скорость воспроизведения без ущерба качеству и четкости речи. Поэтому большая часть улучшений направлена на достижение этой гибкости, замены устаревших решений на более современные.
Появление RHVoice Lab
Лаборатория RHVoice Lab появилась в 2020 года. До этого в каталоге RHVoice было четыре русскоязычных голоса, каждый из которых создала основательница проекта Ольга Яковлева.
Последние три года руководитель RHVoice Lab Артём Плаксин занимается некоммерческими социальными проектами для слабовидящих и незрячих людей. Будучи незрячим, он со школьных лет реализовывает полезные сервисы, онлайн-решения и прочее. Помимо RHVoice Lab, Артём руководит еще несколькими проектами. В их числе — сервис «Данные в данные», помогающий незрячим людям конвертировать изображения в текст, текст в речь и так далее; облачный сервис Tiflo Cloud — это альтернатива «Яндекс.Диску», которая доступна для незрячих людей; «Тифло Хост» – некоммерческая организация, занимающаяся развитием рунета для слепых.
Как отмечает Артём, изначально плана создавать целую библиотеку голосов не было. Начали с одного.
«В апреле 2020 года я начал смотреть “Самые честные новости” на YouTube-канале Артемия Лебедева. И через некоторое время задался вопросом, а как бы он звучал в синтезированном варианте. Артемию 45 лет, но у него живой, ровный голос без хрипотцы и лишних призвуков. Говорит он быстро, четко, тембр приятный», — рассказывает Артём Плаксин.
На тот момент команды, которая могла бы реализовать идею, не было. Понимания, как выстроить процесс, тоже. Зато была дружба с Бекой Гозалишвили, незрячим разработчиком, который занимался языковым модулем для грузинского языка в рамках проекта RHVoice. Он рассказал, как можно реализовать задумку, и в итоге вошел в команду лаборатории в качестве технического специалиста.
Вся команда RHVoice Lab состоит из четырех человек. Это Артём Плаксин в роли тимлида, инженер монтажа Сергей Паршаков, инженер звукозаписи Денис Шишкин и уже упомянутый программист из Грузии Бека Гозалишвили.
Как синтезировали голос Артемия Лебедева
Сначала Артём Плаксин написал потенциальному диктору и предложил поучаствовать в проекте. Артемий согласился.
Языковой модуль для русского языка у RHVoice Lab уже был. Он — база для создания любого голоса для синтезатора речи. Русскоязычный модуль был собран еще в самом начале существования проекта RHVoice, на нем Ольга Яковлева создала первый голос в RHVoice — Александр.
Языковой модуль – это то, на основе чего формируется голос, — некий свод правил, инструкция. Он определяет, как будет звучать та или иная графема, или буква, в определенной позиции. По сути, это просто много описаний в текстовых файлах, специального формата, в специальном синтаксисе.
Языковой модуль — результат сложной коллаборации программистов и лингвистов. Но его достаточно разработать один раз и создавать голоса уже на базе готового модуля. Естественно, языковая модель одного языка не подойдет для другого: на модели для русского языка не запишешь голос для украинского языка.
За более десятилетнее существование RHVoice были созданы языковые модули для американского английского, украинского, киргизского, грузинского, эсперанто. В последнем релизе добавился македонский язык.
Добавление новых языков – трудная задача. Помимо программистов, нужны языковеды, лингвисты, специализирующиеся на фонетике определенного языка. Поэтому новые языки добавляются не так часто, как хотелось бы, и не те, что обычно нужны людям. Одним из факторов создания языка является грант от какой-либо организации (например, United Nations Development Programme) или запрос от коммерческой компании. Так как разработка языкового модуля — трудоемкая задача, которая может занимать до полутора лет, добавлять язык без финансовой или грантовой поддержки непросто.
Этап 1. Запись речевой базы
Что обычно делает диктор? Он должен записать от 600 до 2 500 предложений в зависимости от подобранной речевой базы. Это отдельные предложения, сформулированные так, чтобы содержать в себе все фонетическое богатство языка. В дальнейшем каждое отдельное предложение является единицей для тренировки.
Артемий Лебедев постепенно начал присылать фрагменты записей — всего он записал 1 160 предложений. Так сформировалась речевая база, пока что в сыром виде.
Время, которое уходит на запись речевой базы, зависит от диктора. Артемий Лебедев записал весь материал за 1 час 40 минут суммарно, а фактического текста вышло на 1,5 часа. То есть на монтаже лишними оказались лишь 10 минут. Обычно дикторы присылают от 1,5 до 3 часов готового материала. На запись у них уходит от 2 до 6 часов.
Этап 2. Монтаж
Далее запись в WAV-формате переходит в руки инженера монтажа — материал нужно порезать. В случае с Артемием были длинные куски по 10 минут, обычно в таких отрезках содержится порядка 200 предложений. Чтобы работать дальше, аудиофайлы нужно порезать на отдельные предложения так, чтобы один аудиофайл был равен одному предложению и длился 3-6 секунд. Количество аудиофайлов должно совпадать с количеством строк в текстово-речевой базе. Также на этом этапе убираются какие-то речевые огрехи.
Этап монтажа, в целом, не слишком длинный. Он занимает несколько суток, иногда неделю, если инженер монтажа занят. RHVoice Lab – некоммерческий проект, поэтому участники занимаются им в свободное время, когда есть время и силы.
Этап 3. Звукорежиссура
После c очищенной базой начинает работать звукорежиссер. Специалист RHVoice использует REAPER. Он корректирует амплитудно-частотные, а также спектральные характеристики записи, подбирает индивидуальное звучание диктора на основе его речевых особенностей. Это кропотливая работа: для создания качественного голоса каждый лишний звук должен быть убран, чтобы добиться стандартов дикторской речи без каких-либо шумов и посторонних звуков. Мастерство звукорежиссера важно, но также важно качество записи. Поэтому перед дикторами устанавливают достаточно высокую планку качества записи.
При записи аналогового звука в цифровой файл звук кодируется не слоями, а единым потоком. Это значит, что все звуки как бы вплетаются в полезный сигнал голоса диктора. Когда звукорежиссер вычитает какой-либо фрейм спектра из файла, страдает и полезный сигнал.
Допустим, диктор говорит слово «яблоко», а на букве Б нечаянно ударяет ногой по столу. Звук удара — это тоже звук, и если он находится прямо на какой-то букве, в синтезаторе речи эта модель будет распознаваться как буква с таким звуком.
Этап 4. Тренировка
После рендеринга аудиофайлы отправляются в комплекс программ, среди которых HTS (HMM-based speech synthesis system). Здесь звуки сопоставляются буквам.
Затем самая важная и сложная часть — тренировка речевой базы. Технический специалист извлекает фундаментальную частоту диктора и преобразовывает аудиоматериал в готовый голос.
На этом этапе специалист RHVoice Lab проверяет, как модель справляется с озвучиванием текста. Эта работа связана с тонкой настройкой. Важно подобрать идеальное звучание, чтобы не было коробочного звука или «деревянного» голоса, чтобы буквы читались четко. Если частоты подобраны некорректно, какие-то буквы — например, «п» и «т» — могут звучать одинаково.
Тренировка – это длительный процесс. Вкупе он может занимать от 6 до 15 часов в зависимости от размера речевой базы. Влияет и количество вычислительных мощностей: на старом сервере процесс мог занимать до 30 часов, но благодаря инфраструктуре от Selectel скорость увеличилась в разы.
Голос Юрий
Специалисты RHVoice Lab могут воссоздать голос не только ныне живущего человека. Так, команда сделала голос Юрий. Этот модуль воспроизводит текст с интонацией и характером актера и чтеца аудиокниг Юрия Николаевича Заборовского.
Получив согласие на создание голоса от вдовы, команда RHVoice Lab начала работу. Записать новую речевую было невозможно, поэтому они работали с тем, что было. В распоряжении энтузиастов было около 1 000 аудиокниг, которые озвучил легендарный чтец за последний 40 лет.
«Может показаться, что такое количество материала сильно облегчает нам работу, — говорит Артём Плаксин. — Но это совсем не так. Материал не подготовлен для обработки: диктор читал не однотонно, а экспрессивно, как художественную литературу. Нужно было вычленить наименее эмоциональные предложения, чтобы удовлетворить требования, которые мы предъявляем к записям от дикторов».
В итоге удалось вычленить 1 500 предложений для дальнейшей тренировки. Теперь Юрий есть в каталоге голосов RHVoice Lab. И все, кто «вырос» на голосе Юрия Заборовского, могут продолжать слушать тексты в его озвучке.
Это, конечно, уникальный случай. Голос удалось синтезировать только благодаря тому, что диктор оставил после себя много аудиофайлов со «слепками» своего голоса. Если речь идет о покойных певцах или актерах кино, задача невыполнима: слишком много лишних звуков будет на фоне.
Об аудитории
Точно сказать, сколько человек пользуются в RHVoice, сложно. Суммарно голоса из каталога скачали около 15 000 раз. Но на эту цифру ориентироваться неправильно: многие голоса можно скачать напрямую из GitHub-репозитория RHVoice, какие-то распространяются по ссылкам через файлообменники.
Порог входа для использования инструмента невысокий: человеку достаточно уметь пользоваться скринридером. Подобные программы сейчас разработаны для всех популярных операционных систем: для MacOS, Android, Windows, даже Linux. С сайта RHVoice Lab можно скачать аддоны, которые достаточно легко установить в программы экранного доступа, — они представлены в форматах для NVDA и SAPI 5.
Технологический стек проекта
Инфраструктура
Сейчас RHVoice Lab работает на двух серверах. Один — «бывалый» сервер 2009 года — был подарен команде сервисом servero.ru. В нем четырехъядерный процессор, 32 Гб оперативной памяти и диск на 1 Тб. Этот сервер, где хранятся бэкапы тренировок и размещено рабочее облако проекта, поместили на colocation в один из дата-центров Selectel.
Второй сервер необходим для оперативной деятельности проекта. Раньше RHVoice Lab использовала мощности виртуальной машины с довольно скромными характеристиками: 4 ядра, 8 Гб RAM и SSD на 100 Гб. Пропускная способность — 100 Мбит/c.
Для разработчиков этот показатель был узким горлышком: только звукорежиссеру нужны были минимум 200 Мбит/с. И это без учета требований к синхронизации удаленно работающей команды. Конечно, канал не выдерживал, памяти не хватало, все было очень медленно. Маломощную «виртуалку» заменил сервер от Selectel, который компания предоставила RHVoice безвозмездно.
«Selectel предоставил нам выделенный сервер с процессором Intel Core i7-8700 (частота 3,2 ГГц, 6 ядер), 64 Гб оперативной памяти, два HDD-диска на 2 000 Гб. Один записанный голос может “отъесть” до 5 Гб оперативной памяти. Для оптимизации тренировки нового голоса мы запускаем сразу несколько его версий параллельно. Чтобы через день мы могли сравнить, что лучше сработало, а что хуже. На старом сервере мы себе такое позволить не могли — не хватало оперативки. Сейчас же мы можем хоть пять версий запускать одновременно», — делится руководитель RHVoice Lab.
По словам разработчиков, на старом сервере этап тренировки голоса занимал до 30 часов, на новом — около 10 часов. Конвертация исходных данных на первом этапе раньше занимала 55 минут, на новом сервере — 6 минут. Разница колоссальная.
«Сейчас мы не используем всю оперативную память, но мы намеренно взяли ресурсы с запасом. Так как наш план на будущее потребует больших вычислительных мощностей», — уточнил Артём.
Инструменты и решения
Все HTS работают на Perl, это наследство 90-х годов. Сам синтезатор речи RHVoice написан на C++, но энтузиасты, создающие голоса, взаимодействуют с ним в меньшей степени. Cкрипты для запуска конвертаций, разметки, создания вопросов, тренировки и других операций написаны на Shell.
Создание голоса — это многоэтапный проект, и на каждом этапе разработчикам помогает Telegram-бот собственной разработки. Он отправляет в рабочий чат уведомления о завершенной работе, успехах и ошибках, если они появляются. Так как вся команда — незрячие люди, бот играет важную роль в контролировании порядка разработки.
«Многие процессы мы покрыли скриптами для удобства: когда работа над голосом завершена, скрипт отправляет его в отдельную папку. Из нее по шаблонам собирается NVDA Addon. Также по скрипту аддон отправляется в облако — мы используем Nextcloud», — поясняет Артём Плаксин.
Наличие облачного хранилища критично для команды. Все готовые голоса, проекты в REAPER, речевые базы весят уже более 150 Гб — все они хранятся в облаке на одном из серверов. Когда звукорежиссер рендерит речевую базу, данные прилетают на сервер и прямо с сервера отправляются на тренировку. Сейчас все работает быстро.
Об инклюзивности российского ПО
Как отмечает Артём Плаксин, отечественное ПО на 90% проигрывает в инклюзивности любому западному. Так, система 1С – полностью не доступный для незрячих и слабовидящих людей продукт. И руководство компании пока не видит причин делать его доступным. Хотя ПО нередко используют для работы колл-центров, где незрячие люди вполне могли реализоваться.
«Поскольку отечественное ПО в большинстве своем недоступно, в России существует проблема с рабочими местами для незрячих, — рассказывает Артём. — Инвалиды просто сидят дома, на пенсии. Трудоустройство незрячих людей не раз становилось предметом дискуссий. Но важно понимать, что частично решить проблему можно не дотациями или выделением квот, а адаптацией российского ПО».
В прошлом году инклюзивный проект Everland, где Артём Плаксин является руководителем отдела accessibility-тестирования, проводил исследование доступности мобильных и онлайн-ресурсов. Это первый этап глобального исследования в рамках программы поддержки людей с нарушением зрения «Особый взгляд». Последние два года исполнители исследования занимаются тем, что тестируют на доступность сайты и мобильные приложения
«В рамках Everland мы предоставляем услугу по тестированию ПО компаний и составлению рекомендаций для повышения инклюзивности их продуктов. Работаем с Mail.Ru Group, “Альфа-банком”, “Росбанком”, с ООО “Сбербанк Страхование”, “Эльдорадо”, “Билайном” и другими. Последний год тенденция к доступности начинает набирать обороты. Но слабо, очень слабо. Любая российская ОС на основе Linux практически недоступна — приходится использовать Debian, Ubuntu и другие», — уточняет руководитель RHVoice.
Компании задумываются об инклюзивности, как только начинают видеть в незрячих людях своих потенциальных клиентов, добавляет Артём Плаксин. Сервисы доставки готовой еды и продуктов, банки и т.д. — решения этих компаний популярны у незрячих и слабовидящих людей. Каждый инвалид получает пенсию, он может дополнительно работать. Незрячий человек — потенциальный клиент, который готов платить за качество и удобство услуг. И компаниям не стоит списывать их со счетов.
Можно ли быть незрячим программистом
Как считает руководитель RHVoice Lab, работать программистом, если ты незрячий, нетрудно. Просто нужно быть целеустремленным и не лениться. Проще всего заниматься бэкэнд-разработкой. Писать код можно в блокноте/ Vim, в IDE, многие из которых сейчас доступны, а затем просто скомпилировать код. Нет ничего невозможного.
Планы RHVoice Lab
Энтузиасты лаборатории хотят и дальше создавать новые качественные голоса не только для русского, но и для других языков. В дальнейшем планируют собрать новый языковой модуль, но для этой работы нужна безвозмездная помощь лингвистов.
Также, отмечает Артём Плаксин, команда проекта хотела бы приобрести более качественное оборудование для работы с аудиофайлами: качественные мониторы, хорошие звуковые карты, многопоточный системный блок для параллельного рендеринга проектов.
В то же время в RHVoice обдумывают замену существующего вокодера (устройства синтеза речи на основе произвольного сигнала с богатым спектром) на более производительный и добавление эквалайзера, чтобы каждый человек мог менять частоты голоса. О ходе проекта Артём рассказывает в Telegram-канале.
«Допустим, человеку нравится голос, но он хочет больше низких частот. В эквалайзере он смог бы достичь нужного результата и использовать голос, максимально приятный для слуха. Сейчас эту фичу в RHVoice Lab мы реализовать не можем, так как не программируем на C++. Но, если у кого-то на Хабре есть такие навыки, будет круто, если он зайдет к нам на GitHub и сделает pull request», — заключает Артём Плаксин.
Вы можете поддержать некоммерческий проект RHVoice через форму донатов. Также лаборатория ищет дикторов, которые хотели бы «отдать свой голос» в пользу развития инклюзивной среды в России. Подробности смотрите по ссылке.