Драйвер NVDA для нейронних природних голосів Microsoft (Azure Embedded Speech SDK), що працює повністю офлайн після встановлення голосових пакетів.
Увага, якщо ви оновлюєтесь із версії 1.13.0 або старішої. Надбудова змінила ім'я з «NeuralVoices» на «NeuralVoicesUA» — щоб її не плутали зі стороннім драйвером, який зветься так само. Для NVDA це нова надбудова, тож стара лишиться встановленою поруч: видаліть «NeuralVoices» у керуванні надбудовами після встановлення цієї. Ваші налаштування — голоси, пари голосів, параметри кожного голосу, профілі — переносяться самі, нічого налаштовувати заново не треба.
Сам синтезатор далі налаштовується у звичайному діалозі NVDA «Голос синтезатора» — Ctrl+Insert+V (ті самі параметри доступні й у кільці налаштувань, NVDA+Ctrl+стрілки):
Додатковий діалог налаштувань цього додатку (меню NVDA → Параметри → Налаштування NeuralVoicesUA) має шість розділів: Мови (які мови показувати в розділі «Голоси»), Голоси (голос і параметри для кожної мови), Пари голосів (нижче), Голосові профілі (нижче), Наголос слова (нижче) і Різне (кнопка «Довідка», що відкриває цей файл у браузері).
Розділ «Голоси» діалогу налаштувань додатку дозволяє для кожної позначеної в розділі «Мови» мови вибрати, який із встановлених голосів озвучує її за замовчуванням, і налаштувати його швидкість, висоту тону й гучність окремо від інших голосів. Помилка одного голосового пакета не заважає завантаженню решти встановлених — якщо якийсь голос не з'являється в списку, перевірте насамперед саме його встановлення.
Пара голосів — це іменована група відповідностей «мова → голос» (не обов'язково рівно дві мови: можна створити, наприклад, групу з трьох і більше мов — англійська + українська + німецька тощо). Перемикання між парами одним пунктом заміняє налаштування кожної мови окремо.
У діалозі налаштувань активна пара позначається написом «(активна)» у списку пар, а якщо збережена пара посилається на більше не встановлений голос — це видно прямо в списку учасників пари.
Щоб швидко перемикатися між парами без відкриття діалогу налаштувань: відкрийте меню NVDA → Параметри → Жести введення, знайдіть категорію «NeuralVoicesUA» → «Перемкнути на наступну пару голосів NeuralVoicesUA» і призначте зручну комбінацію клавіш. За замовчуванням комбінація не призначена.
Голосовий профіль — це нумерований слот, у який кладеться одна пара голосів разом із її швидкістю, висотою тону та гучністю. Слотів десять, і кожен має власну комбінацію клавіш: NVDA+Ctrl+1 … NVDA+Ctrl+9, а десятий — NVDA+Ctrl+0.
Різниця між профілем і жестом «наступна пара голосів» — у двох речах. По-перше, профіль відкриває потрібну пару одразу, а не після кількох натискань поспіль. По-друге, і це головне: профіль спрацьовує навіть тоді, коли синтезатор NeuralVoicesUA зараз не активний в NVDA — комбінація сама перемикає NVDA на нього й одразу піднімає його з голосами профілю. Жест «наступна пара» в такій ситуації лише повідомляє, що синтезатор не активний.
Щоб налаштувати профіль:
Кнопка «Очистити профіль» звільняє слот; сама пара при цьому лишається на місці.
Комбінації клавіш можна змінити: меню NVDA → Параметри → Жести введення → категорія «NeuralVoicesUA». Типово обрано NVDA+Ctrl+цифра, а не Ctrl+Alt+цифра, бо останні у Microsoft Word означають стилі заголовків.
Якщо пару, на яку посилався профіль, видалено, слот показує це в списку, а натискання його клавіші повідомляє, що пари більше немає — профіль при цьому не зникає, тож досить призначити йому іншу пару.
Прапорець «Визначати мову тексту на основі Unicode-писемностей» у налаштуваннях голосу NVDA (Ctrl+Insert+V) вмикає автоматичне перемикання голосу за писемністю символів (латиниця, кирилиця тощо) прямо всередині одного речення — зручно поєднувати з парами голосів, щоб текст змішаною мовою одразу озвучувався потрібними голосами з обраної пари.
Українська та російська писемність — одна й та сама кирилиця, тому саму лише писемність символів для їх розрізнення використати не можна. Якщо пара голосів містить одразу і українську, і російську мову, драйвер автоматично вмикає окремий режим: українська мова має пріоритет за замовчуванням, а на російську текст перемикається лише тоді, коли в ньому (в межах одного речення) трапляється щось характерне саме для російського письма.
Цей режим можна також увімкнути окремо, без налаштування пари голосів: прапорець «Автоматично визначати російський текст у кирилиці (експериментально)» у налаштуваннях голосу NVDA (Ctrl+Insert+V, і в кільці налаштувань) працює за умови, що встановлено хоча б один український і хоча б один російський голосовий пакет — якщо котрогось із них немає, NVDA озвучить відповідне повідомлення й прапорець не увімкнеться.
Ознаки, за якими текст визначається як російський:
Це евристика, а не стовідсоткове правило: короткі слова й фрази, які не містять жодного з цих маркерів, за замовчуванням лишаться українською, навіть якщо фактично написані по-російськи. Межею, після якої мова тексту оцінюється заново, є крапка, знак оклику, знак питання або новий рядок — тобто маркер в одному реченні не «перетікає» в сусіднє.
Повний список маркерів зберігається в окремому текстовому файлі synthDrivers\NeuralVoices\russianMarkers.txt усередині папки додатку — його можна відредагувати будь-яким текстовим редактором, щоб додати власні маркери. Зміни діють після перезапуску NVDA.
Захист від хибного спрацювання: якщо в реченні є літери і, ї, є, ґ (їх немає в російському алфавіті), воно завжди лишається українським — незалежно від того, чи трапився в ньому якийсь із маркерів вище. Це гарантія, а не евристика: наявність цих літер стовідсотково означає, що текст український.
Виняток: якщо такі літери трапляються лише в першому слові речення (наприклад, коли якийсь застосунок «приклеює» власну українську позначку елемента, скажімо «Відео», прямо перед російським текстом без жодного розділового знаку між ними), а решта речення сама по собі однозначно виглядає російською — гарантія діє лише на це перше слово, а не на все речення.
Це саме стосується й українських слів чи фраз, вставлених у середину речення (наприклад, коли NVDA описує вбудований емодзі українською мовою прямо посеред інакше суцільно російського речення) — але для цього випадку гарантія знімається лише тоді, коли решта речення (без цієї вставки) містить літеру ы, э або ъ — не просто якийсь маркер-евристику, а стовідсоткову ознаку російського письма.
Так само влаштовано розпізнавання польської та німецької мов усередині латиниці. Якщо пара голосів містить одразу англійську й польську (або англійську й німецьку) мову, драйвер автоматично вмикає відповідний режим; окремо його вмикають прапорці «Автоматично визначати польський текст у латиниці (експериментально)» та «Автоматично визначати німецький текст у латиниці (експериментально)» у налаштуваннях голосу NVDA — за умови, що встановлено відповідні голосові пакети (англійський і польський / англійський і німецький).
Німецькі тверді літери ä, ö, ü, ß однозначно визначають німецький текст незалежно від будь-яких маркерів — вони не трапляються в польській абетці. Повні списки маркерів — у файлах synthDrivers\NeuralVoices\polishMarkers.txt і synthDrivers\NeuralVoices\germanMarkers.txt, з тим самим принципом редагування, що й для російських маркерів вище.
Число всередині речення (наприклад, «в 2024 году») озвучується мовою цього речення, а не завжди українською. Число на ПОЧАТКУ фрази бере мову тексту, що йде за ним: «5 з десяти» прозвучить повністю українською, навіть коли активний англійський голос.
Якщо покладатись на цей здогад не хочеться, пункт «Мова чисел» у налаштуваннях голосу NVDA (Ctrl+Insert+V, і в кільці налаштувань) дозволяє призначити цифрам кирилицю або латиницю назавжди: «Автоматично (за оточенням)» — типова поведінка, «Завжди кирилицею», «Завжди латиницею». У режимі «Завжди кирилицею» число в російському реченні все одно прозвучить російським голосом, а не українським.
Прапорець «Ігнорувати цифри при визначенні мови тексту» вимикає й саму прив'язку цифр до мови оточення: цифри стають повністю нейтральними для визначення мови, як пробіли чи розділові знаки. Це має сенс вмикати, якщо числа в тексті збивають автовизначення мови на сусідніх словах.
Модель Microsoft часом наголошує українські слова неправильно. NeuralVoicesUA дає змогу виправити це самостійно, без очікування на оновлення від Microsoft. Прапорець «Виправляти наголос українських слів зі словника» у налаштуваннях голосу NVDA вмикає чи вимикає всю цю поправку.
Клавіша NVDA+Alt+U працює поверх будь-якої програми й відкриває коротке вікно:
Українська мова сильно змінює слова за відмінками, тож вписувати кожну форму окремим рядком незручно. Список пропонує чотири варіанти, від найвужчого до найширшого:
Префікс може змінювати наголос — на відміну від закінчень, які майже завжди його зберігають. Особливо це стосується префікса «ви-», який майже завжди перетягує наголос на себе («ви́писати», «ви́носити», «ви́конати»). Тому варіанти з дозволеним префіксом ніколи не застосовуються до слова, яке починається рівно з «ви» перед основою — краще не виправити вимову, ніж виправити її неправильно. Якщо потрібен саме такий виняток, додайте це конкретне «ви-»-слово окремим записом із варіантом «Лише це слово»: точний запис завжди має пріоритет над основою. Основа з дозволеним префіксом має бути не коротшою за 4 літери — коротша збігалася б із надто багатьма непов'язаними словами; на варіант «лише закінчення» це обмеження не поширюється.
Кнопка «Відкрити налаштування словника…» у швидкому вікні (як і розділ «Наголос слова» у діалозі налаштувань додатку напряму) відкриває повний список слів: там можна переглянути, змінити чи видалити будь-який запис, а не лише щойно додане слово.
Словник зберігається у файлі в теці конфігурації NVDA, тож не зникає при оновленні додатку.
За натиском NVDA+Alt+E озвучення емодзі вмикається й вимикається. NVDA одразу каже, що вийшло: «Емодзі не озвучуються» або «Емодзі озвучуються».
Навіщо це. У стрічках соцмереж, месенджерах і на сайтах емодзі трапляються пачками, і кожен NVDA озвучує описом — «усміхнене обличчя з усмішкою», «тон шкіри 3». Щоб дістатися до двох слів тексту, доводиться вислухати опис двох десятків значків. Прапорець прибирає їх з мовлення ще до синтезу.
Той самий перемикач є і як звичайне налаштування голосу — «Не озвучувати емодзі» в діалозі «Голос синтезатора» (Ctrl+Insert+V) та в кільці налаштувань, тож його стан зберігається між запусками NVDA.
Список складається приблизно з 1635 правил і охоплює самі значки, модифікатори тону шкіри та службові символи. Кожен емодзі заміняється пробілом, а не порожнім рядком: інакше слова, написані впритул до значка, злиплися б в одне.
Якщо потрібен власний список, покладіть файл neuralVoicesEmoji.dic у теку конфігурації NVDA — він повністю замінить вбудований. Формат той самий, що й у словників мовлення NVDA: шаблон, заміна, врахування регістру, тип, розділені знаками табуляції. Правила з регулярними виразами (тип 2) не застосовуються.
Прибирання діє лише тоді, коли активний синтезатор — NeuralVoicesUA: у чуже мовлення надбудова не втручається.
Автор додатку — Олександр Ніколайчук (alexandrnikolaychuk@gmail.com).
Якщо ви бажаєте подякувати автору, а також підтримати розвиток проєкту, це можна зробити за такими реквізитами: