RU_TTS_SAPI

RU_TTS_SAPI

© 1990, 1991 Speech Research Laboratory, Minsk

© 2005 Igor Poretsky

© 2021 Boris Lobanov

Адаптація для SAPI5 і росширення RU_TTS_EX © 2021 Sergey Parshakov (Electrik)

Величезна подяка Тифлокомп За опубліковану інформацію про синтезатор мовлення 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. Підтримуються як X-86, так і X-64-розрядні версії 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”.

Далі Йде короткий опис параметрів різних пауз після знаків пунктуації, і тут немає особливих рекомендацій, кожен користувач налаштовує на свій смак або використовує початкові значення.

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


Конфігурування вимови.

Як було сказано вище, RU_TTS_SAPI підтримує російську, українську, хорватську та грузинські мови. Примітка: при встановленні RU_TTS_SAPI встановлюються і файли вимови. Якщо ви видалили ці файли, повністю RU_TTS_SAPI перевстановлювати не потрібно. Під час запуску голосу, якщо немає файлу вимови, він створюється автоматично з початкової вимови. Оновлення RU_TTS_SAPI так само не зачепить ваших налаштування вимови.

Щоб відкрити папку з файлом вимови, наприклад, для української мови, натисніть “WIN+R” і введіть:


%appdata%\RU_TTS_SAPI\lng\ukrainian

Щоб відкрити безпосередньо файл вимови“pronunc.ini”, зробіть це за допомогою Провідника або натисніть “WIN+R” і введіть:


%appdata%\RU_TTS_SAPI\lng\russian\pronunc.ini

Файл “pronunc.ini”.

Цей файл містить записи вимови, розділені по групах. Назва групи вказується в квадратних дужках []. Опишемо кожну Детальніше.


[english_letters]
a = эй
b = би
c = си
d = ди
e = и

і так далі.

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


[russian_letters]
а = а
б = бэ
в = вэ
г = гэ
д = дэ
е = е

і так далі.

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


[general_pronunciation]
j = дж
w = в
x = кс
y = ы

і так далі.

У цю групу ви можете додати власні записи вимови окремих звуків і буквосполучень. Не варто сильно захаращувати групу записами, замінювати будь-що, і тим більше використовувати цю групу як словник наголосів. Списки працюють повільно, і якщо сюди помістити словник, ви ризикуєте значно погіршити відгук синтезатора.

Залежно від мови, у файлі “pronunc.ini” можуть бути інші списки замін, які є правилами і застосовуються до загального списку замін. У російській вимові немає додаткового списку замін, в українській є свій список замін, який є списком правил. приклад:


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

І так далі.


[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”, прохання цитувати цю статтю:

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

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