RU_TTS_SAPI — русская документация

RU_TTS_SAPI

RU_TTS_SAPI

© 1990, 1991 Speech Research Laboratory, Minsk

© 2005 Igor Poretsky poretsky(at)mlbox.ru

© 2021 Boris Lobanov lobbormef(at)gmail.com

Адаптация для SAPI5 и расширение RU_TTS_EX © 2021 Sergey Parshakov (Electrik) support(at)electrik-spb.ru

Огромная благодарность Тифлокомп За опубликованную информацию о синтезаторе речи RU_TTS, которая включена в данный документ.


Общая информация.

Фонемафон — один из старейших синтезаторов речи, известный старожилам еще со времен MS Dos. Легкий, быстрый, занимающий мало памяти. Именно с ним чаще всего ассоциируется компьютерная эра девяностых.

Истоки.

История синтезаторов речи серии “Фонемафон” отсчитывается с начала семидесятых годов и на протяжении всего этого времени связана с именем Бориса Лобанова, руководившего данными разработками. Однако ещё в 1959 году, проходя срочную службу в рядах Советской армии в должности старшего радиомастера, Борис Лобанов, имея достаточную специальную подготовку и хорошо оборудованную приборами радиомастерскую, задался вопросом: “А как же устроена естественная речевая связь между людьми?” Параллельно с изучением звуков речи с помощью микрофона и осциллографа он проводил свои увольнительные в Петрозаводской библиотеке, вступил в переписку с известным учёным, профессором Людмилой Чистович, и получил от неё ряд ценных советов по проведению исследований речи. Сохранилась документальная запись в дневнике Лобанова, датированная 25 октября 1959 года: “Фонемофон ведет к фонемографу”.

После окончания службы в армии в 1961 году Борис Лобанов поступил в институт и продолжил заниматься научными исследованиями в области анализа речевых сигналов для систем распознавания и синтеза речи. В 1966 году им была организована хозрасчётная научная лаборатория анализа и синтеза речевых сигналов при кафедре радиоприёмных устройств Минского радиотехнического института.

После защиты диссертации в 1968 году Борис Лобанов был направлен на научную стажировку в Великобританию в 1969-1970 годах, где под руководством профессора Эдинбургского университета Р. Лоренца им были проведены успешные эксперименты по синтезу звуков русской речи, позволившие заложить основы формантного синтеза речи по фонемному тексту. В результате уже в 1971 году под руководством Бориса Лобанова было создано автономное устройство с ручным вводом текста, базировавшееся на фонемно-формантном методе синтеза речи и считающееся первым поколением — “Фонемафон-1”. Устройство являлось одним из первых синтезаторов русской речи, и оно было отмечено двумя медалями ВДНХ СССР.

Усовершенствованная версия данного устройства, ставшая вторым поколением синтезатора, — “Фонемафон-2”, в которой были оптимизированы характеристики формантных фильтров, а ввод текста осуществлялся с перфоленты, появилась в 1975 году.

В 1979 году на международной выставке Telecom-79 в Женеве было продемонстрировано третье поколение устройства — “Фонемафон-3”, где использовался уже фонемно-артикуляторно-формантный метод синтеза речи. Ввод текста в него был возможен как с ЭВМ, так и вручную с клавиатуры. Устройство также могло подключаться к телефонной линии. К этому моменту синтезатор демонстрировал способность разговаривать не только на русском, но также на английском, французском и немецком языках, хотя и с сильным русским акцентом, так как синтез речи происходил на основе русских фонем.

В восьмидесятых годах началось активное внедрение подсистем синтеза речи серии “Фонемафон” в различные промышленные системы. В частности, в 1984 году появилось первое в СССР промышленное устройство распознавания и синтеза речи — “Марс-1”, выпускавшееся серийно ПО “Кварц” в Калининграде под руководством конструктора Валерия Афанасьева. На базе речевого терминала “Марс-1” была разработана система автоматического информирования абонентов междугородной телефонной сети (АИАМТС) о задолженности за переговоры. Система АИАМТС была успешно внедрена и длительное время эксплуатировалась в ряде крупных городов: Минске, Новосибирске, Алма-Ате, Фрунзе, Петропавловске-Камчатском. Ещё одна разработка — система контроля за параметрами аппаратуры телефонных и радиостанций с оперативным оповещением дежурного персонала о возникших неполадках — была внедрена на Минской, Московской и Зеленоградской АТС, а также на Белорусской республиканской радиоретрансляционной станции РТС-5.

В 1986 году, в сотрудничестве с профессором кафедры фонетики Минского лингвистического университета Еленой Карневской, была разработана англоязычная версия синтезатора речи, демонстрировавшаяся на Всемирном конгрессе фонетических наук 1987 года. К этому моменту четвёртое поколение устройства — “Фонемафон-4” — использовало фонемно-аллофонно-формантный метод синтеза речи и в добавок к мужскому, получило и женский голос.

На протяжении семидесятых и восьмидесятых годов в “Фонемафонах” использовались различные вариации формантного метода синтеза речи, а сами они воплощались в виде автономных устройств. Однако в конце восьмидесятых годов Борисом Лобановым был предложен новый фонемно-микроволновый метод синтеза речи, в котором вместо вычислений формантных колебаний использовался подготовленный заранее набор микроволн естественного речевого сигнала. Данный подход под руководством Бориса Лобанова в 1990 году реализовал инженер лаборатории распознавания и синтеза речи ИТК АН БССР Александр Иванов в виде программного обеспечения для персональных компьютеров класса ЕС-1840 и IBM PC/XT. Начиная с этого пятого поколения “Фонемафон-5”, для работы с синтезатором было достаточно иметь IBM-совместимый компьютер с тактовой частотой не ниже 10 мегагерц и оперативной памятью не менее 640 килобайт, а также операционную систему MS-DOS 3.30. Синтезатор мог разговаривать на русском языке мужским и женским голосом.

На базе “Фонемафона-5” научным сотрудником Института технической кибернетики АН РБ Георгием Лосиком в начале девяностых годов были созданы и распространены комплекты программного обеспечения, позволившие сделать работу в среде MS-DOS доступной для незрячих пользователей.

Резидентные речевые драйверы SDRV синтезатора “Фонемафон-5”, лицензировавшиеся международной лабораторией интеллектуальных систем “БелСИнт”, долгие годы использовались в целом ряде программных продуктов для MS-DOS, нуждающихся в функциональности синтеза речи, в том числе в множестве программ экранного доступа, таких как “Аргус”, “Сталкер” и других.

К сожалению, ухудшение финансирования научных разработок в девяностых годах привело к снижению активности исследований в области синтеза речи и к уходу многих специалистов, в том числе инженеров-программистов, разрабатывавших конкретные реализации синтезаторов, что на фоне общей неразберихи привело к печальным последствиям в виде утраты исходного кода “Фонемафон-5”.

Фонемафон. Перезагрузка.

Однако синтезатор “Фонемафон-5” за счёт своей компактности и высокой разборчивости речи продолжал оставаться востребованным многими людьми, что привело к ряду попыток его возрождения и переноса на более новые системы посредством дизассемблирования и обратной разработки. Несколько подобных инициатив закончились получением работоспособных, хотя и не эквивалентных версий синтезатора “Фонемафон-5”, которые различаются особенностями технической реализации, но до недавнего времени были схожи общим неоднозначным правовым статусом.

Одним из наиболее удачных проектов этого рода является обратная разработка “Фонемафона-5”, выполненная Игорем Порецким в сотрудничестве с Дмитрием Падучих в середине двухтысячных годов с целью получения русскоязычного синтезатора речи для операционных систем GNU/Linux. Получившийся синтезатор был назван ru_tts и в своё время стал знаковым событием, так как был первым приемлемым решением по синтезу русской речи для систем семейства Linux.

Долгие годы по этическим соображениям, связанным со спорным правовым статусом ru_tts, исходный код данного синтезатора речи не раскрывался. Однако в 2021 году были проведены переговоры, в результате которых было получено общее согласие со стороны Игоря Порецкого, который является автором программной реализации ru_tts, Дмитрия Падучих, который внёс заметный вклад на этапе начального дизассемблирования резидентного речевого драйвера SDRV, и Бориса Лобанова, который был руководителем лаборатории, разработавшей “Фонемафон-5”, и является автором его конструктивных решений, лёгших в основу ru_tts, о публикации исходного кода ru_tts на легальной основе под свободной лицензией MIT.

Синтезатор ru_tts представляет собой альтернативную реализацию “Фонемафона-5”, функционально близкую к оригинальному синтезатору для MS-DOS. Его код написан языке C и легко собирается под различные операционные системы, разрядности и процессорные архитектуры. Код распространяется на условиях свободной лицензии MIT и опубликован в репозитории на GitHub.


Что такое RU_TTS_SAPI?

RU_TTS_SAPI — это RU_TTS, подключенный к платформе SAPI5 от Microsoft, совместимый с OS Windows. Поддерживаются как X86 так и X64 версии Windows. Его можно использовать как в “читалках” электронных книг, таких как Балаболка, Говорилка и т.д., так и в других приложениях, использующие синтез речи. А незрячие пользователи, использующие такие продукты, как Экранный диктор (Narrator), JAWS For Windows, WindowEyes, Cobra и т.д., могут использовать его как основной синтезатор речи для повседневной работы, наслаждаясь быстротой, реакцией, возможностью задавать чтение символов и некоторых сочетаний на свой вкус.

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

На данный момент, RU_TTS_SAPI поддерживает следующие языки:

  • Русский,
  • Украинский — не имеет фрикативной Г,
  • Хорватский — на основе русского произношения,
  • Грузинский — на основе русского произношения.

Настройки.

RU_TTS_SAPI не имеет отдельной программы конфигурации, но вы можете производить настройки посредствам редактирования конфигурационных файлов. Данные файлы хранятся в кодировке UTF-8, которую без проблем распознаёт Блокнот в windows 10, Notepad++, Akelpad.

Чтобы открыть папку с конфигурациями нажмите “WIN+R” и введите:


%appdata%\RU_TTS_SAPI

Чтобы открыть непосредственно конфигурационный файл “prefs.ini” сделайте это при помощи проводника или нажмите “WIN+R” и введите:


%appdata%\RU_TTS_SAPI\prefs.ini
Файл “prefs.ini”.

Данный конфигурационный файл имеет одну группу [general], в которой производятся общие настройки RU_TTS_SAPI. Приведём пример полного конфигурационного файла, и ниже разберём его настройки.


[general]
sample_rate = 10000
intonation = 50
use_dictionary = 1
disable_decimal_fractions = 0
general_gap_factor = 100
comma_gap_factor = 100
dot_gap_factor = 100
semicolon_gap_factor = 100
colon_gap_factor = 100
question_gap_factor = 100
exclamation_gap_factor = 100
intonational_gap_factor = 100
silence_at_begin = 0
silence_at_end = 0
interpolation_multiplier = 1
interpolation_algorithm = 0
Описание настроек “prefs.ini”.
  • sample_rate — частота дискретизации синтезатора от 10000 до 11025 герц, умолчание 10000. Для любителей звучания старого Фонемафона лучше оставить эту настройку по умолчанию. Если вы хотите получить похожее звучание как у Speaking mouse, тогда установите значение параметра 11025.
  • use_dictionary — использование словаря. 0 — выключено, 1 — использовать пользовательский словарь, умолчание 1. Если вы желаете чтобы синтезатор читал как написано, следует выключить пользовательский словарь установив значение параметра в 0.
  • intonation — интонация синтезатора, 0 — монотонно, 100 — очень выразительно, умолчание 50. Чтобы получилась интонация подобная Speaking mouse, пробуйте менять значение параметра от 30 до 40.
  • disable_decimal_fractions — отключить чтение десятичных дробей. 1 — выключено, 0 — включено, умолчание 0. Надоело что синтезатор читает десятичные дроби подобно 0 целых 45 сотых, установите значение параметра в единицу.
  • general_gap_factor — общая пауза между фразами от 0 до 500, умолчание 100. Чтобы синтезатор не вставлял большие паузы между блоками фраз, пробуйте изменять значение параметра на ту минимальную величину, при которой будет нормально восприниматься речь.

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

  • comma_gap_factor — пауза после запятой от 0 до 750, умолчание 100.
  • dot_gap_factor — пауза после точки от 0 до 500, умолчание 100.
  • semicolon_gap_factor — пауза после точки с запятой от 0 до 600, умолчание 100.
  • colon_gap_factor — пауза после двоеточия от 0 до 600, умолчание 100.
  • question_gap_factor — пауза после вопросительного знака от 0 до 375, умолчание 100.
  • exclamation_gap_factor — пауза после восклицательного знака от 0 до 300, умолчание 100.
  • intonational_gap_factor — интонационная пауза от 0 до 1000, умолчание 100.

Следующие параметры могут помочь при проблемах со звуком, а так же имитировать звучание синтезатора как на старых звуковых картах в DOS.

  • silence_at_begin — тишина вначале от 0 до 100 мс, умолчание 0. Этот параметр может помочь при проглатывании начала звука, эффект недоговаривания, щелчок. На некоторых звуковых устройствах бывает проблема когда драйвер сообщил программе, что устройство открыто, но при посылке данных на звуковое устройство, они как бы проглатываются, часть данных не проигрывается. при увеличении значения данного параметра, на звуковое устройство посылается тишина, что решает проблему проглатывания. Значение выше 40 миллисекунд может создавать ощущение плохого отклика синтезатора.
  • silence_at_end — тишина в конце от 0 до 100 мс, умолчание 0. этот параметр может помочь при проглатывании конца звука, эффект недоговаривания или щелчок. Те же рекомендации, что и для предыдущего параметра.
  • interpolation_multiplier — устанавливает множитель интерполяции. 1 — выключена, 2 — увеличение частоты дискретизации в 2 раза, 4 — увеличение частоты дискретизации в 4 раза, умолчание 1, максимальный множитель 4. При повышении частоты дискретизации без фильтрации возникают шумы квантования. На профессиональном оборудовании такое поведение пытаются всячески сгладить мощными фильтрами. Мы же будем использовать эти шумы в целях имитации псевдо-высоких частот. Пользователи операционной системы DOS помнят как на SB16 или AVE32 звучал SDRV. меняя значение параметра можно добиться похожего звучания тех самых подзвякиваний.
  • interpolation_algorithm — устанавливает алгоритм интерполяции. 0 — линейная интерполяция, 1 — интерполяция нулевого порядка. При линейной интерполяции, высокие частоты будут более сглажены, ну а для экстрима можете включить ядовитую интерполяцию нулевого порядка. берегите уши!

Конфигурирование языковых произношений.

Как было сказано выше, RU_TTS_SAPI поддерживает Русский, Украинский, Хорватский и Грузинские языки. Примечание: при установке RU_TTS_SAPI устанавливаются и файлы языковых произношений. Если вы удалили эти файлы, полностью RU_TTS_SAPI переустанавливать не обязательно. При запуске голоса, если нет файла произношений, он создаётся автоматически с произношениями по умолчанию. Обновление RU_TTS_SAPI так же не затронет ваши произношения.

Чтобы открыть папку с файлом произношений, к примеру Русского языка ,нажмите “WIN+R” и введите:


%appdata%\RU_TTS_SAPI\lng\russian

Чтобы открыть непосредственно файл с произношениями “pronunc.ini” сделайте это при помощи проводника или нажмите “WIN+R” и введите:


%appdata%\RU_TTS_SAPI\lng\russian\pronunc.ini
Файл “pronunc.ini”.

Данный файл содержит записи произношений разделённые по группам. Название группы указывается в квадратных скобках []. Опишем каждую Подробней.

  • Группа [english_letters] — описывает произношения латинских символов при побуквенном чтении. Сlева от знака равно = записывается латинская буква, а справа её русское произношение. Пример:
    
    [english_letters]
    a = эй
    b = би
    c = си
    d = ди
    e = и
    

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

  • Группа [RUSSIAN_LETTERS] — описывает произношения русских символов при побуквенном чтении. Сlева от знака равно = записывается русская буква, а справа её произношение. Пример:
    
    [russian_letters]
    а = а
    б = бэ
    в = вэ
    г = гэ
    д = дэ
    е = е
    

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

  • Группа [general_pronunciation] — описывает произношения отдельных звуков и буквосочетаний. Данная группа является общим списком замен, произношения которого применяются после обработки языковых правил. Пример:
    
    [general_pronunciation]
    j = дж
    w = в
    x = кс
    y = ы
    

    и так далее. В эту группу вы можете добавить собственные записи произношений отдельных звуков и буквосочетаний. Не следует сильно загромождать группу записями, заменять что попало, и тем более использовать данную группу как словарь ударений. Списки работают медленно, и если сюда поместить словарь, вы рискуете значительно ухудшить отклик синтезатора. В зависимости от языка, в файле “pronunc.ini” могут быть другие списки замен, которые являются правилами и применяются до общего списка замен. В русских произношениях нет дополнительного списка замен, в украинском есть свой список замен, который является списком правил. Пример:

    
    [ukrainian_pronunciation]
    е = э
    и = ы
    є = е
    і = и
    ї = ййи
    ґ = г
    щ = шч
    

    И так далее.

  • Группа [symbols] — описывает произношения спец символов. Под спец символами подразумевается не буквы или звуки языка, а знаки припинания, или символы как торговая марка, евро, рубль и так далее. Слева от знака равно = записывается символ, а справа его произношение. так же после произношения через двоеточие : можно указать в каком случае будет произноситься символ. :0 указывает, что название символа будет произноситься только при посимвольном чтении, :1 указывает, что название символа будет произноситься как при посимвольном чтении, так и в сплошном тексте. Так же слева от знака равно =, вы можете ввести непосредственно код символа в шестнадцатиричной форме используя префикс доллар $, или в десятичной используя префикс процент %. Чтобы добавить произношение символов доллар или процент, напишите их дважды $$, %%. Пример:

[symbols]
+ = плюс:1
( = левая круглая:0
%59 = точка с запятой:0 ; в ключе ini файла Этот символ ввести нельзя,поэтому мы вводим его как код символа в десятичной форме.
$5b = левая квадратная:0 ; в ключе ini файла этот символ ввести нельзя, поэтому мы вводим его код в шестнадцатиричной форме.
£ = фунт:0
€ = евро:0
¢ = центы:0
¥ = иена:0
₹ = рупия:1
₽ = рубль:1

И так далее.

По приведённым выше примерам, вы без проблем можете редактировать произношения любых встроенных языков перейдя по пути:


%appdata%\RU_TTS_SAPI\lng

Работа со словарём.

RU_TTS_SAPI пока не содержит встроенного словаря ударений, но есть возможность работать с пользовательским словарём. перейдя по пути

"%appdata%\RU_TTS_SAPI\lng\russian"

, вы найдёте файл “dict.dic”, содержащий в себе около 425 тысяч словоформ. Словарь был взят со старого Newfon, а в Newfon он был взят из Rulex который разрабатывает игорь Порецкий. словарь должен храниться в кодировке UTF-8. Добавление собственных слов не составит труда, сначало пишем исходное слово, и через пробел так как оно произносится со знаком ударения. Знак ударения ставится после гласной знаком плюс +. Так же можно поставить вспомогательное ударение знаком равно =. Примечание: в словарь нельзя вносить словосочетания, слева от пробела должно быть только лишь одно исходное слово. Справа от пробела, в слове с ударением тоже не должно быть пробелов. Пример:


тифлокомп тифлоко+мп
электрочайник эле=ктроча+йник
веселые весё+лые
дальний да+льний
вертолет вертолё+т

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


Пользователям JAWS For Windows.

Встроенный драйвер SAPI5X в JAWS For Windows не умеет автоматически выбирать нужные параметры вывода звука синтезаторов. В случаях, когда вывод стандартный (22050, 16 бит, моно), драйвер вполне самостоятельно корректно выводит звук. В нестандартных же случаях требуется вмешательство пользователя. RU_TTS_SAPI — это как раз второй случай.

Чтобы избежать звона, съедания букв и дополнительных артефактов в звучании синтезатора в JAWS For Windows, требуется произвести несколько действий. Здесь мы их опишем.

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

  1. Откройте любой удобный вам браузер файлов на компьютере (Этот компьютер в Windows 10, Компьютер в Windows 7, 8 и 8.1 или Мой компьютер в Windows XP, или же любой другой сторонний удобный вам).
  2. Проследуйте по пути c:\Program Files\Freedom Scientific\JAWS\[Ваша.версия.JAWS]\, где “[Ваша.версия.JAWS]” — это папка с версией JAWS For Windows, которая у вас установлена. Например, путь может выглядеть как c:\Program Files\Freedom Scientific\JAWS\18.0\.
  3. Найдите и откройте файл sapi5x.ini с правами администратора.
  4. Переместитесь к строке с надписью [Unsupported SAPI 5 Speech Engines], установите курсор над этой строчкой (если такой строки нет, просто переместитесь в конец файла), и добавьте следующую секцию:
    
    ; RU_TTS_SAPI
    [{333DB9C5-EED3-47DE-96CC-035FA48A3F5C}]
    Output=10
    
  5. Сохраните изменения в файле.
  6. Перезапустите JAWS For Windows.

Таким образом, мы научили драйвер SAPI5X корректно выводить звук RU_TTS_SAPI (SPSF, 11000 Гц, 16 бит, моно).


Благодарности.

  • Выражаем благодарность Борису Мефодьевичу Лобанову за неоценимый вклад в развитие русскоязычного синтеза речи на протяжении многих десятилетий, а также Игорю Борисовичу Порецкому и Дмитрию Викторовичу Падучих за мастерскую работу по возвращению утраченной технологии “Фонемафон-5”.

  • Тифлокомп — за публикацию информации о синтезаторе речи RU_TTS которая стала истоком перезагрузкой, благодарностями и является чуть ли не половиной данного документа.

  • Денису Шишкину (Outsider) за статьи из предыдущих продуктов, лёгших в основу данной документации.

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

Научные публикации

В любых статьях или публикациях, в которых используются или упоминаются конструктивные решения синтезатора речи “Фонемафон-5”, просьба цитировать следующую статью:

  • Иванов А.Н., Лобанов Б.М. — Синтезатор речи ФОНЕМАФОН для САПР на базе IBM PC // Тез. докл. конф. “Теория и методы создания интеллектуальных САПР”. — Минск, 1992. — С. 29-30.

Вышеупомянутая статья представляет собой базовую публикацию об оригинальной реализации синтезатора речи “Фонемафон-5” для MS-DOS.

Микроволновой метод синтеза речи, разработанный Борисом Лобановым и использованный в “Фонемафоне-5”, также описан в следующих научных публикациях:

  • Лобанов Б.М. — Микроволновой синтез речи // Автоматическое распознавание слуховых образов (АРСО-16). — М., 1991. — С. 27-31.
  • Лобанов Б.М. — Микроволновой синтез речи по тексту // Анализ и синтез речи. — Минск: Инст. техн. кибернетики АНБ, 1991. — С. 57-73.
  • Лобанов Б.М. — Программная модель микроволнового синтеза речи по тексту // Автоматическое распознавание слуховых образов (АРСО-14). — М., 1991. — С. 82-84.
  • Lobanov B. — Microwave Speech Synthesis from Text // Proc. of the 24 Fachkolloquim Informationstechnik. — Dresden, 1991. — pp. 118-120.