Фонемафон - один из старейших синтезаторов речи, известный старожилам еще со времен MS Dos. Легкий, быстрый, занимающий мало памяти. Именно с ним чаще всего ассоциируется компьютерная эра девяностых.
Истоки
На заре девяностых, в Минске, в Институте инженерии и кибернетики, профессорами Александром Ивановым и Борисом Лобановым, была разработана MSDOS-версия синтезатора, который умел читать текст, введенный с командной строки на PC-speaker. Исполняемый файл назывался spp.exe. В дальнейшем, появились новые версии, называемые SDRV. Данные версии уже умели выводить речь не только на динамик компьютера, но и на ковокс и звуковую карту. Вот тогда и началась эра синтезатора и DOS-скринридеров - Epard, Argus. до скринридеров была самоозвучивающаяся среда, называемая в народе “Минск”. Реальное название нам не известно. Данная среда представляла из себя две панели “Тексты” и “Программы”. Также, эта среда содержала в себе говорящий калькулятор, толковый словарь, текстовый редактор, игру “Поле чудес”. Без трудов Александра Иванова и Бориса Лобанова эра могла бы отодвинуться очень далеко. Низкий им поклон! Это первопроходцы в сфере русского синтеза речи на PC. Они проделали колоссальную работу, дело которой живо по сей день и будет жить!
Выдержки из технической документации фонемафона:
Всеми правами на техническое описание и программное обеспечение владеет фирма “БелСИнт”. Копирование, полное или частичное, без приобретения лицензии категорически запрещается и преследуется по закону. (C) 1990-93 БелСИнт 220012, Минск, ул. Сурганова 6, Институт технической кибернетики АН РБ, лаборатория распознавания и синтеза речи.
Фонемафон. Перезагрузка.
Однако времена меняются, а запросы синтезоманов - чаще всего нет. Именно поэтому в свое время Сергеем Шишминцевым был дизассемблирован код фонемафона, к тому времени безбожно забытого под платформой Microsoft, и разработана “читалка” книг, использовавшая фонемафон как основное средство чтения. Примечание для любопытных: Существует версия фонемафона для linux, называемая RU_TTS. Каким способом был портирован синтезатор в линукс нам не известно, известно лишь то, что его разрабатывает Игорь Порецкий.
Newfon
Алексеем Садовым и Сергеем шишминцевым была создана версия фонемафона, работающая на платформе экранного чтеца NVDA (Non Visual Desktop Access), которая получила название Newfon. Это стало фактически бесплатной альтернативой “My Mouse” от Сергея Волкова, разработанного для пользователей JAWS For Windows. Молниеносный, работающий без сбоев, он завоевал большую популярность среди русскоязычных пользователей NVDA.
Nefonit TTS
Спустя долгое время, благодаря Сергею Шишминцеву, сообщество владельцев устройств на базе OS Android увидело реализацию Newfon и в качестве TTS-возможности под свою операционную систему. Она получила название “Nefonit TTS”. Опять же, молниеносные быстрота и реакция сделали его номером один для людей, ценящих скорость получения информации и свое время, обилие настроек сделало его номером один среди гиков, требовавших от синтезатора экзотических возможностей (таких например, как изменение дискретизации вывода, ресемплирование, более детальная подстройка громкости, скорости, паузы между словами, и даже эквализация вывода!), а ретрограды получили уникальную возможность читать им книги. Сергей охотно прислушивался к мнению сообщества. Наращивание возможностей и исправление ошибок шло полным ходом.
Смерть Сергея Шишминцева
В один из дней Сергея Шишминцева не стало… Люди, близко знающие сергея, переживали его уход из жизни, а пользователи его разработок “похоронили” Newfon. Спустя некоторое время Nefonit TTS был автоматически удален из Play маркета, а остальные наработки остались в том варианте, в котором они были выпущены на тот момент.
Как оно оказалось у нас
Недавно нам в руки попали исходные коды разработок сергея. Его близкие, благодаря которым это случилось, поставили нам всего одно условие: если разработка его проектов продолжится, они должны стать бесплатными. Мы же в свою очередь решили, что история не должна забыть Сергея Шишминцева, поскольку это уникальный программист, обладавший колоссальным запасом усидчивости, трудолюбия, знаний.
Что такое Newfon SAPI?
Newfon SAPI - это фонемафон, доработанный Сергеем Шишминцевым, подключенный к платформе SAPI5 от Microsoft, совместимый с OS Windows. Его можно использовать как в “читалках” электронных книг, таких как Балаболка, Говорилка и т.д., так и в других приложениях, использующие синтез речи. А незрячие пользователи, использующие такие продукты, как JAWS For Windows, WindowEyes, Cobra и т.д., могут использовать его как основной синтезатор речи для повседневной работы, наслаждаясь быстротой, реакцией, возможностью задавать чтение символов и некоторых сочетаний на свой вкус. Помимо стандартных возможностей настройки скорости, тона и громкости, Newfon SAPI имеет дополнительные конфигурации, которые расширяют лояльность к пользователям. Вы можете выбрать тип звучания, установить паузы между знаками препинания и при делении большого фрагмента текста на блоки, степень выразительности, или же включить встроенный словарь ударений на 425369 слов. К тому же, вы можете определить как Newfon SAPI5 должен озвучивать русские, латинские буквы, или задать правильное чтение сочетаний латинских букв для вас.
Предупреждения
На данный момент Newfon SAPI5 поддерживает только русский язык. Синтезатор постоянно будет разрабатываться, поэтому появление поддержки других языков, основанных на кириллице, будет реализовано. Однако помните, что специфичные звуки, (такие как украинская мягкая Г, или белорусская мягкая Г), не могут быть реализованы в виду отсутствия фонем в самом синтезаторе.
Newfon SAPI X86-совместимый синтезатор. Это обозначает, что на 64-битных операционных системах он будет видеться исключительно в 32-битных приложениях. Если вы установили 64-битное приложение, Newfon SAPI не будет распознан им. Это издержки разработанного ранее Сергеем Шишминцевым ядра запуска 16-разрядного кода SDRV. в 32-разрядной среде. К сожалению, к 64-разрядной ОС Сергей не успел написать ядра. Если у нас хватит сил и знаний сделать это за него, то в том случае Newfon будет скомпилирован как 64-совместимое приложение. Но мы ничего не обещаем. Это не справедливо для экранного чтеца JAWS For Windows, поскольку он имеет мост, способный определять и X86-совместимые SAPI5.
Конфигурация Newfon SAPI
В пакете с Newfon SAPI предоставляется конфигуратор, который может помочь вам настройке дополнительных опций синтезатора. Здесь мы рассмотрим все его настройки и что каждая из них значит.
Примечание: если вы что-то забудете, вы всегда можете вызвать текущую справку прямо из конфигуратора Newfon SAPI, нажав кнопку “Документация” вверху окна приложения. Также, можно воспользоваться клавишей F1.
Верхняя панель. Основные настройки.
На верхней панели располагаются настройки, отвечающие за звучание синтезатора. Здесь вы можете выставить частоту дискретизации, длину пауз, интенсивность выразительности, а также включить/выключить словарь ударений, который поставляется с самим Newfon.
На каждом элементе предоставляется краткая справка, которая всплывает при наведении мыши на него, поэтому вы всегда сможете получить информацию по той или иной опции.
Частота дискретизации. Позволяет выставить частоту дискретизации для вывода звука синтезатора. Говоря по заумному, определяет с каким семплрейтом будет выводиться звук в систему. Проще говоря, изменение скорости вывода звука как при забыстрении или замедлении пленки. Таким образом, вы можете добиться звучания как MyMouse, который изначально использует ту же самую базу фонем, только транслирует ее в 11025 Гц. Newfon же изначально транслирует звук в 10000 Гц. Исходя из всего вышесказанного, мы можем дополнительно ускорить синтезатор для восприятия. Вы можете установить удобоваримый для вас вариант с помощью ползунка.
Использовать заданные паузы. Позволяет выставить ту длину пауз между знаками препинания и фрагментами текста, которая удобна лично вам. При приеме большого текста для синтеза, он сначала разбивается по фрагментам, чтобы Newfon был в состоянии обработать его. Опять же, вспомним 16-разрядное приложение и ограниченность памяти для него. Также, текст дополнительно разбивается по знакам препинания. Именно ползунком правее этой галочки, мы можем выставить паузу, которая будет выдерживаться между подачами текста в синтезатор. Если галочка снята, то синтезатор сам подсчитывает паузы, исходя из выставленной скорости. Некоторые говорят, что паузы позволяют успевать обрабатывать порции текста в мозге и делить сплошной поток информации, чтобы осмыслить его.
Интонация. Позволяет выставить выразительность чтения синтезатора. Можно убрать полностью всю интонацию, сместив ползунок в 0, и Newfon будет роботичным. Ну а если поднять ползунок чуть выше половины, то можно получить весьма выразительное чтение!
Словарь: В пакете с Newfon поставляется словарь ударений на 425369 русскоязычных слов. Также, Newfon SAPI позволяет добавлять свои словарные слова в нижней панели на вкладке “Словарь”. Люди, которые привыкли слышать нормальные ударения, могут включить его, и Newfon не будет читать все по слогам. Для любителей же MyMouse или для людей, которые правят тексты, принцип “как пишется, так и слышится” превыше эстетики. В этом комбосписке “вы можете отключить все словари, включить только встроенный словарь, пользовательский (сформированный вами) или же оба выше обозначенных. Заметьте, что при отключении пользовательского словаря, вкладка”Словарь" пропадет в нижней панели.
Пауза в начале. Позволяет выставить тишину в начале буфера синтезатора, чтобы избежать некоторые проблемы при конвертации звука отдельными приложениями. Бывает так, что при проговаривании, первые буквы слов в начале или между фрагментами съедаются. Подобрав необходимую длину тишины, можно избежать этой проблемы.
Пауза в конце. Все то же самое, что и для предыдущего пункта, только можно выставить тишину в конце буферов синтезатора. Опять же, для избежания проблемы со съеданием последних звуков.
Нижняя панель. Произношения.
В этом разделе мы можем определять как синтезатор должен произносить те или иные слова, буквы, символы. Вы здесь видите некое количество вкладок в верху панели, и ниже - список с определениями. Давайте рассмотрим каждый раздел и поймем для чего он здесь присутствует.
Важные примечания:
Внимательно читайте правила формата добавления статей для каждого из разделов! Иначе, вы можете получить всякого рода ошибки.
В большинстве случаев вы можете задавать ударения тем или иным обозначениям, используя знак “+” (плюс) после ударной гласной. Например, если вы хотите исправить слово “Синтезатор”, вы должны в левом поле написать “синтезатор”, а в правом поле - “синтеза+тор”. Также, вы можете использовать знак "=" (знак равенства), чтобы задать ударение части сложнообразованных слов, например, “са=мопровозглашё+нных”
При неверном оформлении произношений, конфигуратор оповестит вас системным звуком ошибки и появившейся подсказкой под соответствующим полем. Также, недопустимый символ будет выделен, чтобы вы увидели какой из символов вызвал ошибку в приложении и смогли его удалить. До тех пор, пока вы не устраните ошибку, кнопка добавления или сохранения исправления будет серой.
Итак:
Латиница. Можно задавать произношение латинских букв при посимвольном чтении (когда Newfon SAPI получает только этот символ). Например, можно сообщить Newfon, что “A” - это “Эй”, а не “А”. При добавлении или редактировании, всегда нужно вводить все буквы в нижнем регистре и не писать никаких знаков препинания или специальных символов, кроме знака “+” (плюс), который используется для установки ударения на гласную, которая перед ним стоит.
Кириллица. Можно задавать произношение кириллических букв при посимвольном чтении (когда Newfon SAPI получает только этот символ). Например, здесь можно сообщить синтезатору, что “Ь” - это “мя+хький знак”, а не молчание. При добавлении или редактировании, всегда нужно вводить все буквы в нижнем регистре и не писать никаких знаков препинания или специальных символов, кроме знака “+” (плюс), который используется для установки ударения на гласную, которая перед ним стоит.
Латинские сочетания. Позволяет задавать чтение латинских сочетаний в латинских текстах. Например, можно научить Newfon понимать “J” как “дж”, и синтезатор будет читать “Jack” как “Джацк”, а не “Йацк”. Можно использовать сочетания символов в левом поле, однако спешим вас предупредить, что не стоит пытаться собирать корректное произношение всего английского языка, поскольку это может вызвать большие отставания. При добавлении или редактировании, всегда нужно вводить все буквы в нижнем регистре и не писать никаких знаков препинания или специальных символов, кроме знака “+” (плюс), который используется для установки ударения на гласную, которая перед ним стоит.
Специальные символы. Можно задавать правильное произношение небуквенных символов и определять должен ли Newfon SAPI прочитывать их в текстах. Например, можно научить Newfon понимать, что “₽” - это “рубль” и заставить фразу “18₽”, читаться как “восемнадцать рубль”. При добавлении или редактировании, всегда нужно вводить все буквы в нижнем регистре и не писать никаких знаков препинания или специальных символов, кроме знака “+” (плюс), который используется для установки ударения на гласную, которая перед ним стоит.
Словарь. Позволяет учить Newfon SAPI правильно читать слова, которые он правильно читать еще не умеет. Например, здесь вы можете сказать Newfon SAPI, что “самопровозглашенных” нужно произносить как “са=мопровозглашё+нных”, а не по слогам. При добавлении или редактировании, всегда нужно вводить все буквы в нижнем регистре и не писать никаких знаков препинания или специальных символов, а также нельзя использовать пробелы, кроме знака “+” (плюс), который используется для установки ударения на гласную, которая перед ним стоит.
У каждой записи в этих разделах есть свои всплывающие меню с действиями, которые к ним можно применить. Просто нажмите правую кнопку мыши на любой из записей.
Под списком находятся три кнопки: “Добавить”, “Редактировать” и “Удалить”. В принципе, все эти действия можно делать через всплывающее меню на любом из элементов в этих списках, однако альтернативный способ работы со словарями не помешает 😉
Заключение
После того, как вы сконфигурировали Newfon SAPI на ваш вкус, вы можете нажать кнопку “Применить” в самом верху окна справа. Если Newfon SAPI сейчас активен в каком-либо из приложений, он тут же подхватит все сделанные настройки и вы сразу же услышите результат.
Горячие клавиши
Здесь будет список горячих клавиш, которые можно использовать в конфигураторе Newfon SAPI.
F1: вызов этой самой справки.
Control+S: применить настройки.
Control+D: добавить новую запись в произношения.
Enter на записи произношения: редактировать ее.
Delete на записи произношения: удалить ее.
Applications на записи произношения: аналог правой кнопки мыши .
Пользователям JAWS For Windows
Встроенный драйвер SAPI5X в JAWS For Windows не умеет автоматически выбирать нужные параметры вывода звука синтезаторов. В случаях, когда вывод стандартный (22050, 16 бит, моно), драйвер вполне самостоятельно корректно выводит звук. В нестандартных же случаях требуется вмешательство пользователя. Newfon SAPI - это как раз второй случай.
Чтобы избежать звона, съедания букв и дополнительных артефактов в звучании синтезатора в JAWS For Windows, требуется произвести несколько действий. Здесь мы их опишем.
Примечание: Некоторые действия могут затребовать прав администратора для выполнения. Вам необходимо либо получить разрешение системного администратора, либо самостоятельно давать необходимые права.
Откройте любой удобный вам браузер файлов на компьютере (Этот компьютер в Windows 10, Компьютер в Windows 7, 8 и 8.1 или Мой компьютер в Windows XP, или же любой другой сторонний удобный вам).
Проследуйте по пути c:\Program Files\Freedom Scientific\JAWS\[Ваша.версия.JAWS]\, где “[Ваша.версия.JAWS]” - это папка с версией JAWS For Windows, которая у вас установлена. Например, путь может выглядеть как c:\Program Files\Freedom Scientific\JAWS\18.0\.
Найдите и откройте файл sapi5x.ini с правами администратора.
Переместитесь к строке с надписью [Unsupported SAPI 5 Speech Engines], установите курсор над этой строчкой (если такой строки нет, просто переместитесь в конец файла), и добавьте следующую секцию:
Таким образом, мы научили драйвер SAPI5X корректно выводить звук Newfon SAPI (SPSF, 11000 Гц, 8 бит, моно).
Благодарности
Наша самая главная благодарность Сергею Шишминцеву за адаптацию фонемафона под существующие платформы. Царствие небесное, Сергей!
Разработчики
O-Team Development - это часть активистов команды O-Team, некоммерческого интернет-объединения, существовавшего ранее. Объединение распалось в 2012 году, однако часть людей осталась под эгидой лозунгов и политики команды O-Team, что способствовало началу некоторых проектов. ОДна их часть существует исключительно для узкого круга лиц, другая же - выпускается для общего использования.
Активные разработчики Newfon SAPI5 и их направление работы:
Сергей Паршаков (Electrik)
Разбор Newfon,
Написание заголовочных файлов,
Зарождение проекта,
Основная разработка моста между SAPI 5 и Newfon,
Все низкоуровневые процессы,
Адаптация основного кода Newfon, чтобы сам движок работал соответственно запросам SAPI.
Фактически, Сергей отвечает за весь проект. Так уж получилось. :) Тем не менее, все благодарности Сергею!
Денис Шишкин (Outsider)
Документация,
Алгоритм поддержки мультиязычности
Дополнительные настройки синтезатора через интерфейс.
Соучастники
Beqa Gozalishvili. Не знаем как, однако достал все исходные коды.
Antey. Тестировал, давал советы по визуализации.
История изменений
V2019.03.06
Добавлена опция запрета использовать десятичный разделитель. Помогает избавиться от извечных “один целых тридцать четыре сотых” там, где это не нужно. Опцию можно включить в конфигураторе Newfon SAPI.
Для страждущих: в меню Пуск добавлен ярлык на документацию по Newfon SAPI.
V2019.03.03
Полностью переписан механизм взаимодействия с самой библиотекой Newfon на один языкк программирования: теперь отсутствуют дополнительные мосты.
v2018.12.02
Теперь все параметры секций доступны в конфигураторе.
При первом запуске конфигуратора, когда конфигурации для Newfon SAPI еще не созданы, после приветствия будут созданы стартовые конфигурации физически, чтобы не допустить ошибки синтезатора при первой его инициализации.
Написана документация по Newfon SAPI. Прочесть ее можно, как запустив ярлык в группе Newfon SAPI, так и нажав в окне конфигуратора F1 или “Документация” вверху окна рядом с кнопкой “Применить”.
Переосмыслена нижняя панель конфигуратора: теперь это вкладки, которые можно переключать и видеть нужные вам списки, Также, внизу появились три кнопки для работы со словарем. Аппендикс в виде кнопки “Добавить” сбоку убран, ибо это было нелогично.
Теперь в Newfon SAPI можно не только включать встроенный словарь, но и отключать пользовательский или выбирать какой из них будет активен.
V2018.11.06
Добавлены пользовательские словари.
добавлена секция спец-символов.
Сняты ограничения в русской кириллице, можно изменять произношение всех букв.
Исправлена ошибка в аббревиатурах, в которых встречалась латинская j.
Наконец, теперь ярлык вызова настроек работает корректно.
V2018.10.30
Разработан интерфейс для конфигурирования дополнительных опций синтезатора. Теперь INI-файл править не обязательно.
В конфигурацию добавлены новые параметры: “Пауза в начале” и “Пауза в конце”, позволяющие регулировать тишину в начале и конце воспроизведения соответственно.
Ярлык prefs.ini переименован в настройки NewfonSAPI.
V2018.10.09
Бинарный код отделен от пользовательских данных, а значит, что теперь словари и настройки хранятся в папке пользователя, а сама программа в program files.
при установке программы создается ярлык prefs.ini.
При деинсталляции программы, теперь есть запрос на удаление пользовательских данных.
V2018.10.08
Добавлены настройки prefs.ini.
Выявлены ошибки которые мешали регистрации SAPI сервера.