Як зробити розпізнавання мови. Найкраща програма розпізнавання російської мови

Сервіс SendPulse – це маркетинговий інструмент для створення передплатної бази та переведення випадкових відвідувачів вашого сайту в розряд постійних. SendPulse об'єднує на одній платформі найважливіші функції для залучення та утримання клієнтів:
● e-mail-розсилки,
● web-push,
● SMS розсилки,
● SMTP,
● розсилки в Viber,
● надсилання повідомлень у facebook messenger.

Розсилки email

Ви можете скористатися різними тарифами для ведення e-mail-розсилки, у тому числі безкоштовним. Безкоштовний тариф має обмеження: передплата не більше 2500.
Перше, з чого потрібно почати, при роботі з сервісом e-mail розсил ок, - це створити свою адресну книгу. Вкажіть заголовок і завантажте список адрес електронної пошти.


На SendPulse зручно створювати форми передплатиу вигляді спливаючого вікна, вбудовані форми, плаваючі та фіксовані у певній частині екрану. За допомогою форм передплати ви зберете базу передплатників з нуля або доповните новими адресами базу.
У конструкторі форм ви можете створити саме ту форму передплати, яка найбільш повно відповідає вашим потребам, а підказки сервісу допоможуть вам впоратися із цим завданням. Також можливе використання однієї з доступних готових форм.


Під час створення форм передплати обов'язково використання e-mail із корпоративним доменом. Читайте, як .
Шаблони повідомленьдопоможуть красиво оформити листи передплатникам. Власний шаблон листів ви можете створити у спеціальному конструкторі.


Авторасилки. Контент-менеджери активно використовують автоматичне розсилання. Це допомагає автоматизувати процес роботи з клієнтами. Створити авторозсилку можна кількома способами:
Послідовна серія листів. Це найпростіший варіант, коли незалежно від умов пишуться кілька листів, які будуть надіслані одержувачам у порядку. Тут можуть бути свої варіанти. серія повідомлень(простий ланцюжок повідомлень), особлива дата(листи приурочені до певних дат), тригерний лист– лист надсилається залежно від дій передплатника (відкриття повідомлення та ін.).
Automation360– розсилання з певними фільтрами та умовами, а також з урахуванням конверсій.
Готові ланцюжкиза шаблоном. Ви можете створити серію листів за заданим шаблоном або змінити шаблон і підлаштувати його під свої потреби.
А/В тестуваннядопоможе провести експеримент з різних варіантів відправки серії листів та визначити найкращий варіант з відкриття або переходів.

Надсилання Push повідомлень

Push-розсилки – це передплата у вікні браузера, це свого роду заміна rss-підпискам. Технології web-push стрімко увійшли до нашого життя, і вже складно знайти сайт, який не використовує для залучення та утримання клієнтів пуш-розсилки. Скрипт запиту на , ви можете надсилати листи, як вручну, так і створити авторозсилки, створивши серію листів або зібравши дані з RSS. Другий варіант передбачає, що після появи нової статті на вашому сайті, автоматично розсилатиметься повідомлення про це вашим передплатникам з коротким анонсом.


Новинка від SendPulse– тепер ви можете монетизувати сайт за допомогою Push-повідомлень, вбудовуючи рекламні оголошення. Після досягнення 10$ щопонеділка здійснюються виплати однією з платіжних систем – Visa/mastercard, PayPal чи Webmoney.
Push-повідомлення на сервісі абсолютно безкоштовні. Оплата береться тільки за White Label – розсилки без згадки про сервіс SendPulse, але якщо вам не заважає логотип сервісу, то ви можете користуватися пушами безкоштовно без обмежень.

SMTP

Функція SMTP захищає вашу розсилку від попадання до чорного списку за рахунок використання білих IP адрес. Технології криптографічного підпису DKIM і SPF, які використовуються в розсилках SendPulse, підвищують довіру до листів, що надсилаються, завдяки чому ваші листи рідше потраплятимуть в спам або блек-лист.

Боти Facebook Messenger

Facebook чат-бот знаходиться на етапі бета-тестування. Ви можете підключити його до своєї сторінки та розсилати повідомлення передплатникам.

Надсилання SMS

Через сервіс SendPulse легко відправляти розсилки по базі телефонних номерів. Спочатку потрібно створити адресну книгу з переліком телефонних номерів. Для цього виберіть розділ "Адресна книга", створіть нову адресну книгу, завантажте номери телефонів. Тепер ви можете створити розсилку СМС по даній базі. Ціна СМС розсилки варіює залежно від операторів зв'язку одержувачів і становлять у середньому від 1,26 рубля до 2,55 рублів за 1 відправлене СМС.

Партнерська програма

SendPulse реалізує партнерську програму, в рамках якої зареєстрований користувач за вашим посиланням, який оплатив тариф, принесе вам 4000 рублів. Запрошений користувач отримує знижку 4000 рублів на перші 5 місяців використання сервісу.

Титрівник телефону для глухих і тих, що слабо чують

Перетворіть ваш екран на дивовижний заголовок телефону. Це повністю автоматичний, без людського слуху-машиністки ваші розмови. Знаходять бабусі та дідусі важко почути родину та друзів по телефону? Увімкніть Speechlogger для них і зупинити кричати по телефону. Просто підключіть аудіовиход телефону до аудіо входу комп'ютера та запустити Speechlogger. Це також корисно віч-на-віч взаємодії.

Автоматична транскрипція

Ви занотували інтерв'ю? Зберегти деякий час на переписування його, з автоматичним мовлення Google, до тексту, принесла у ваш браузер Speechlogger. Відтворення записаного інтерв'ю в мікрофон вашого комп'ютера (або лінії) в-і нехай speechlogger зробити транскрипцію. Speechlogger зберігає транскрипції тексту разом з датою, часом і ваші коментарі. Вона також дозволяє редагувати текст. Телефонні розмови можуть бути розшифровані за допомогою того ж методу. Ви також можете записати аудіофайли безпосередньо з комп'ютера, як описано нижче.

Автоматичний усний та письмовий перекладач

Зустріч із іноземними гостями? Принесіть ноутбук (або два) з speechlogger і мікрофон. Кожна сторона бачитиме друга вимовлені слова, перекладені їхньою рідною мовою в режимі реального часу. Це також корисно на телефонний дзвінок іноземною мовою, щоб переконатися, що ви повністю зрозуміти іншу сторону. Підключіть аудіовиход вашого телефону, щоб лінійний вхід вашого комп'ютера і почати Speechlogger.

Вивчайте іноземні мови та покращуйте навички вимови

Speechlogger є відмінним інструментом для вивчення мов і може бути використаний u200b u200Bin кілька способів. Ви можете використовувати його, щоб дізнатися словниковий запас, говорячи рідною мовою і даючи програмного забезпечення перекласти його. Ви можете навчатися та практикувати правильну вимову, розмовляючи іноземною мовою і, бачачи, чи розуміє Speechlogger чи ні. Якщо розшифрувати текст в чорний шрифт це означає, що ви промовили це добре.

Генерування субтитрів для фільмів

Speechlogger може автоматично записати фільми чи інші звукові файли. Потім візьміть файл і автоматично перекласти його будь-якою мовою, щоб зробити міжнародні субтитри.

Диктуйте замість введення

Написання листа? Документи? Списки? Резюме? Незалежно від того, вам потрібно ввести, спробуйте диктувати його Speechlogger замість цього. Speechlogger буде автоматично зберігати його для вас і дозволить експортувати його в документ.

Кумедна гра:)

Чи можете ви імітувати китайську динамік? Французька? Що про російську мову? Спробуйте імітувати іноземну мову і побачити те, що ви тільки що сказали зі Speechlogger. Використовуйте синхронний переклад Speechlogger, щоб зрозуміти, що ви щойно сказали. Отримати дивовижні результати – це дуже весело!

У «Фейсбуку» нам запитали:
«Для роботи з текстом мені потрібно розшифрувати три години диктофонного запису. Пробував завантажити аудіофайл з картинкою в YouTube і скористатися їх розшифрувальником тексту, але виходить якась абракадабра. Підкажіть, як це можна вирішити технічно? Дякую!
Олександр Коновалов»

Олександре, просте технічне рішення є – але результат залежатиме виключно від якості вашого запису. Поясню, про яку якість йдеться.

Останніми роками технології розпізнавання російської мови сильно просунулися вперед. Відсоток помилок розпізнавання знизився до такого рівня, що інший текст стало простіше «наговорити» у спеціальному мобільному додатку або інтернет-сервісі, відкоригувавши вручну окремі «чап'ятки» – чим повністю набирати весь текст на клавіатурі.

Але щоб штучний інтелект системи розпізнавання зміг зробити свою роботу – користувач повинен зробити свою. А саме: говорити в мікрофон чітко та розмірено, уникати сильних фонових шумів, по можливості використовувати стереогарнітуру або виносний мікрофон, прикріплений до петлиці (для якості розпізнавання важливо, щоб мікрофон весь час знаходився на одній відстані від губ, а ви самі говорили з однаковою гучністю ). Звичайно, чим вищий клас аудіопристрою – тим краще.

Нескладно дотримуватись цих умов, якщо ви, замість того, щоб звертатися до інтернет-сервісу розпізнавання мови безпосередньо, застосовуєте як проміжний пристрій-посередник диктофон. До речі, такий персональний секретар особливо незамінний, коли у вас немає доступу до онлайну. Природно, краще використовувати хоча б недорогий професійний диктофон, ніж пристрій, що записує, вбудований в дешевий mp3-плеєр або смартфон. Це дасть набагато більше шансів "годувати" отримані записи сервісу розпізнавання мови.

Складно, але можна умовити дотримуватись цих правил співрозмовника, у якого ви берете інтерв'ю (ще одна порада: якщо у вас немає в комплекті виносного мікрофона на прищіпці – хоча б тримайте диктофон поруч із співрозмовником, а не з собою).

А от «законспектувати» на потрібному рівні в автоматичному режимі конференцію чи семінар – справа, на мій погляд, практично нереальна (адже ви не зможете контролювати промову спікерів та реакцію слухачів). Хоча досить цікавий варіант: перетворення на текст професійно записаних аудіолекцій та аудіокниг (якщо на них не накладалася фонова музика та шуми).

Сподіватимемося, що якість вашого диктофонного запису – досить висока, щоб її вдалося розшифрувати в автоматичному режимі.

Якщо ж ні – практично за будь-якої якості запису ви зможете провести розшифровку в напівавтоматичний режим.

Крім того, у низці ситуацій найбільшу економію часу і сил вам принесе, як не парадоксально, розшифровка в ручному режимі. Точніше, той її варіант, який сам я використовую вже з десяток років. 🙂

Отже, за порядком.

1. Автоматичне розпізнавання мови

Багато хто радить розшифровувати диктофонні записи на YouTube. Але цей метод змушує користувача витрачати час на етапі завантаження аудіофайлу та фонової картинки, а потім – під час очищення підсумкового тексту від міток часу. Тим часом цей час нескладно заощадити. 🙂

Ви можете розпізнавати аудіозаписи прямо зі свого комп'ютера, скориставшись можливостями одного з інтернет-сервісів, що працюють на движку Google розпізнавання (рекомендую Speechpad.ru або Speechlogger.com). Все, що потрібно - зробити маленький трюк: замість вашого голосу, що відтворюється з мікрофона, перенаправити на сервіс аудіопотік, що відтворюється вашим комп'ютерним програвачем.

Цей трюк називається програмним стерео мікшером (його зазвичай застосовують для запису музики на комп'ютері або трансляції з комп'ютера в інтернет).

Стерео мікшер входив до складу Windows XP - але був видалений розробниками з пізніших версій цієї операційної системи (говорять, з метою захисту авторських прав: щоб геймери не крали музику з ігор тощо). Проте стерео мікшер нерідко поставляється разом із драйверами аудіокарт (наприклад, карт Realtec, що вбудовуються у материнську плату). Якщо ви не знайдете стерео мікшер на своєму ПК за допомогою пропонованих нижче скріншотів – спробуйте перевстановити аудіодрайвери з CD-диска, що йшов у комплекті з материнською платою або з сайту її виробника.

Якщо це не допоможе – встановіть на комп'ютер альтернативну програму. Наприклад - безкоштовний VB-CABLE Virtual Audio Device: використовувати його рекомендує власник вищезгаданого сервісу Speechpad.ru.

Першим крокомви повинні вимкнути для використання в режимі запису мікрофон і включити замість нього стерео-мікшер (або віртуальний VB-CABLE).

Для цього натисніть іконку гучномовця в правому нижньому кутку (біля годинника) – або виберіть розділ "Звук" в "Панелі управління". У вкладці «Запис» вікна клацніть правою кнопкою миші і поставте пташки навпроти пунктів «Показати вимкнені пристрої» та «Показати від'єднані пристрої». Натисніть правою кнопкою по іконці мікрофона та виберіть «Вимкнути» (взагалі, вимкніть усі пристрої, позначені зеленою значком).

Натисніть правою кнопкою на значок стерео мікшера і виберіть «Увімкнути». На іконці з'явиться зелений значок, що означатиме, що стерео мікшер став стандартним пристроєм.

Якщо ви вирішили використовувати VB-CABLE – то тим самим способом увімкніть його у вкладці «Запис».

Також – у вкладці «Відтворення».

Другий крок.Увімкніть аудіозапис у будь-якому програвачі (якщо потрібно розшифрувати аудіодорожку відео – можна запустити і відеопрогравач). Паралельно завантажте у браузері Chrome сервіс Speechpad.ru та натисніть у ньому кнопку «Увімкнути запис». Якщо запис досить високої якості, ви побачите, як сервіс на очах перетворює мову на осмислений та близький до оригіналу текст. Правда, без розділових знаків, які вам доведеться розставити самостійно.

Як аудіопрогравач раджу використовувати AIMP, про який буде докладніше розказано в третьому підголовку. Зараз лише зазначу, що цей плеєр дозволяє уповільнити запис без викривлень мови, а також виправити деякі інші похибки. Це може дещо покращити розпізнавання не надто якісного запису. (Іноді навіть радять попередньо піддавати погані записи обробці у професійних програмах редагування звуку. Однак, на мій погляд, це надто трудомістке завдання для більшості користувачів, які набагато швидше наберуть текст вручну. 🙂)

2. Напівавтоматичне розпізнавання мови

Тут усе просто. Якщо запис неякісний і розпізнавання «захлинається» або сервіс видає дуже багато помилок – допоможіть справі самі, «вбудовавшись» у ланцюжок: «аудіоплеєр – диктор – система розпізнавання».

Ваше завдання: прослуховувати в навушниках записане мовлення - і паралельно надиктовувати його через мікрофон інтернет-сервісу розпізнавання. (Звичайно, вам не потрібно, як у попередньому розділі, перемикатися у списку записуючих пристроїв з мікрофона на мікшер стерео або віртуальний кабель). А як альтернативу згадуваним вище інтернет-сервісам можете використовувати смартфонні програми на кшталт безкоштовної «Яндекс.Диктовки» або функцію диктування в iPhone з операційною системою iOS 8 і вище.

Зазначу, що в напівавтоматичному режимі ви можете відразу диктувати розділові знаки, розставляти які в автоматичному режимі послуги поки не здатні.

Якщо у вас вдасться диктувати одночасно з відтворенням запису на плеєрі - попередня розшифровка займе майже стільки ж часу, скільки і сама запис (не рахуючи наступних витрат часу на виправлення орфографічних і граматичних помилок). Але навіть робота за схемою: «прослухати фразу – надиктувати – прослухати фразу – надиктувати», може вам дати непогану економію часу в порівнянні з традиційним набором тексту.

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

3. Розшифрування диктофонного запису у ручному режимі

Ви можете встановити на практиці, що занадто швидко втомлюєтеся від диктування в напівавтоматичному режимі. Або робите разом із сервісом занадто багато помилок. Або завдяки навичкам швидкого набору набагато легше створюєте готовий виправлений текст на клавіатурі, ніж за допомогою диктування. Або ваш диктофон, мікрофон на стереогарнітурі, аудіокарту не забезпечують прийнятну для сервісу якість звуку. А може, у вас просто немає можливості диктувати вголос у своєму робочому чи домашньому офісі.

У всіх цих випадках вам допоможе мій фірмовий спосіб розшифровки вручну (прослуховуєте запис в AIMP – набираєте текст у Word). З його допомогою ви перетворите запис на текст швидше, ніж це зроблять багато професійних журналістів, чия швидкість набору на клавіатурі аналогічна вашій! При цьому ви витратите набагато менше, ніж вони, зусиль і нервів. 🙂

Через що, в основному, губляться сили та час у ході розшифрування аудіозаписів традиційним способом? Через те, що користувач робить дуже багато зайвих рухів.

Користувач постійно простягає руку до диктофона, то до клавіатури комп'ютера. Зупинив відтворення – набрав прослуханий уривок у текстовому редакторі – знову ввімкнув відтворення – відмотав нерозбірливий запис назад – тощо, тощо.

Використання звичайного програмного плеєра на комп'ютері мало полегшує процес: користувачеві доводиться постійно згортати/розгортати Word, зупиняти/запускати плеєр та ще й лазити туди-сюди слайдером плеєра, щоб знайти нерозбірливий фрагмент, а потім повернутися до останнього прослуханого місця в записі.

Щоб скоротити ці та інші втрати часу, спеціалізовані IT-компанії розробляють програмні та апаратні транскрайбери. Це досить дорогі рішення для професіоналів – тих самих журналістів, судових стенографістів, слідчих тощо. Але, власне, для наших цілей потрібні лише дві функції:

  • можливість уповільнити відтворення диктофонного запису без її спотворення та зниження тону (уповільнити швидкість відтворення дозволяють багато плеєрів – але, на жаль, при цьому людський голос перетворюється на монструозний голос робота, який складно сприймати на слух тривалий час);
  • можливість зупинити запис або відкотити його на задану кількість секунд та повернути назад, не зупиняючи набір тексту та не згортаючи вікно текстового редактора.

Свого часу я протестував десятки аудіопрограм – і знайшов лише два доступні платні програми, що відповідають цим вимогам. Придбав одне з них. Пошукав ще трохи для своїх дорогих читачів 🙂 – і знайшов чудове безкоштовне рішення – програвач AIMP, яким сам користуюсь досі.

«Увійшовши до налаштувань AIMP, знайдіть розділ Глобальні клавіші та переналаштуйте Стоп/Пуск на клавішу Ескейп (Esc). Повірте, це найбільш зручно, оскільки не доведеться замислюватись і палець не потрапить випадково на інші клавіші. Пункти "Трохи перейти назад" і "Трохи перейти вперед" налаштуйте, відповідно, на клавіші Ctrl + клавіші курсора назад/вперед (у вас на клавіатурі є чотири клавіші зі стрілками - виберіть дві з них). Ця функція потрібна, щоб прослухати останній фрагмент або перейти трохи вперед.

Потім, викликавши еквалайзер, можна зменшити значення «Швидкість» і «Темп» – і збільшити значення «Пітч». При цьому Ви помітите, що швидкість відтворення сповільниться, але висота голосу (якщо добре виберете значення «Пітч») – не зміниться. Підберіть ці два параметри так, щоб практично синхронно встигали набирати текст, лише зрідка зупиняючи його.

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

Можу лише додати до сказаного, що якщо запис не дуже якісний – ви можете спробувати покращити його відтворення, експериментуючи з іншими налаштуваннями в «Менеджері звукових ефектів» AIMP.

А кількість секунд, на яку вам буде найзручніше переміщатися по запису назад або вперед за допомогою гарячих клавіш – встановіть у розділі «Плеєр» вікна «Налаштування» (яке можна викликати натисканням гарячих клавіш «Ctrl + P»).

Бажаю заощадити більше часу на рутинних завданнях - і плідно використовувати його для головних справ! 🙂 І не забудьте увімкнути мікрофон у списку записуючих пристроїв, коли зберетеся поговорити по скайпу! 😉

3 способи розшифрування диктофонного запису: розпізнавання мови, диктування, ручний режим

Оновлено: Понеділок, Липень 31, 2017

Яке ставлення має фантастична ідея розмови з комп'ютером до професійної фотографії? Майже ніякого, якщо ви не шанувальник ідеї нескінченного розвитку всього технічного оточення людини. Уявіть на хвилину, що ви віддаєте голосом накази своєму фотоапарату змінити фокусну відстань і зробити корекцію експозиції на півступеня плюс. Дистанційне керування камерою вже реалізовано, але там потрібно мовчки натискати на кнопки, а тут фотик, що чує!

Стало традицією наводити приклад голосового спілкування людини з ЕОМ який-небудь фантастичний фільм, ну хоча б «Космічна одіссея 2001» режисера Стенлі Кубріка. Там бортовий комп'ютер не тільки веде осмислений діалог з астронавтами, але вміє читати губами як глухий. Інакше кажучи, машина навчилася розпізнавати людську мову без помилок. Можливо, комусь дистанційне голосове керування фотокамерою видасться зайвим, але багатьом би сподобалася така фраза «Зніми нас, крихітко»і знімок всієї родини на пальмі готовий.

Ну, от і я віддав данину традиції, трохи пофантазував. Але, щиро кажучи, ця стаття писалася важко, а почалося все з подарунка у вигляді смартфона з ОС «Андроїд 4». Ця модель HUAWEI U8815 має невеликий сенсорний екран у чотири дюйми та екранну клавіатуру. Набирати на ній дещо незвично, але виявилося це й не надто потрібно. (image01)

1. Розпізнавання голосу у смартфоні на ОС «Андроїд»

Освоюючи нову іграшку, я помітив графічне зображення мікрофона у рядку пошуку Googleта на клавіатурі в «Нотатках». Раніше мені було не цікаво, що цей символ означає. Розмови я вів у Skypeа листи набирав на клавіатурі. Так робить більшість користувачів Інтернету. Але як потім мені пояснили, у пошуковик Googleбув доданий голосовий пошук російською мовою та з'явилися програми, що дозволяють диктувати короткі повідомлення під час використання браузера "Chrome".

Я вимовив фразу із трьох слів, програма їх визначила і показала в осередку із синім фоном. Тут було здивуватися, бо всі слова були написані правильно. Якщо натиснути на цей осередок, то фраза з'являється в текстовому полі андроїд-нота. Так ще пару фраз наговорив і відправив повідомлення помічникові SMS.


2. Коротка історія програм розпізнавання голосу.

Для мене не було відкриттям, що сучасні здобутки в галузі управління голосом дозволяють віддавати команди побутовій техніці, автомобілю, роботі. Командний режим був представлений у попередніх версіях Windows, OS/2 та Mac OS. Мені зустрічалися програми-говорки, але що з них користі? Можливо, це моя особливість, що говорити мені простіше, ніж друкувати на клавіатурі, а на мобільному телефоні я взагалі не можу нічого набрати. Доводиться записувати контакти на ноутбуці з нормальною клавіатурою та передавати USB кабелем. Але щоб просто говорити в мікрофон та комп'ютер сам набирав текст без помилок – це для мене було мрією. Атмосферу безнадійності підтримували дискусії на форумах. У них скрізь була така сумна думка:

«Однак насправді досі програм для реального розпізнавання мови (та ще й російською мовою) практично не існує, і створені вони будуть, очевидно, не скоро. Понад те, навіть зворотне розпізнаванню завдання - синтез мови, що, начебто, значно простіше розпізнавання, остаточно не вирішена». (Комп'ютерПрес №12, 2004р.)

«Нормальних програм розпізнавання мови (не тільки російської) досі немає, оскільки завдання неабияк важка для комп'ютера. А найгірше те, що механізм розпізнавання слів людиною так і не усвідомлений, тому нема від чого відштовхуватися при створенні програм-розпізнавалок». (ще одне обговорення на форумі).

При цьому огляди англомовних програм введення тексту вказували на явні успіхи. Наприклад, IBM ViaVoice 98 Executive Editionмала базовий словник у 64000 слів та можливість додавання такої ж кількості своїх слів. Відсоток розпізнавання слів без тренування програми був близько 80% і за подальшої роботи з конкретним користувачем сягав 95%.

З програм розпізнання російської мови варто відзначити «Горинич» – додаток до англомовної Dragon Dictate 2.5. Про пошуки, а потім «битву з п'ятьма Гориничами» я розповім у другій частині огляду. Першим я знайшов "англійського Дракона".

3. Програма розпізнавання злитого мовлення "Dragon Naturally Speaking"

Сучасна версія програми фірми «Nuance»виявилася у моєї давньої знайомої по Мінському інституту іноземних мов. Вона її привезла із закордонної поїздки, а купила, думаючи, що та зможе бути комп'ютерним секретарем. Але щось не пішло і програма залишилася на ноутбуці майже забута. Через відсутність хоч якогось виразного досвіду мені довелося їхати до своєї знайомої самої. Все це тривалий вступ необхідний для правильного розуміння висновків, які я зробив.

Повна назва першого мого дракона звучала так: . Програма англійською та все в ній зрозуміло навіть без керівництва. Першим кроком необхідно створити профіль конкретного користувача визначення особливостей звучання слів у його виконанні. Що я й зробив – важливий вік того, хто говорить, країна, особливості вимови. Мій вибір такий: вік 22-54 роки, англійська UK, вимова стандартна. Далі йде кілька вікон, у яких ви налаштовуєте свій мікрофон. (image04)

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

Суть цього етапу роботи з програмою гранично проста – у вікні виводиться текст, над ним жовта стрілочка. При правильному виголошенні стрілочка переміщається за фразами, а знизу йде смуга прогресу тренування. Англійська розмовна була мною неабияк забута, так що просувався я насилу. Час також був обмежений - адже комп'ютер не мій і довелося тренування перервати. Але подруга сказала, що проходила тест менш як за півгодини. (image05)

Відмовившись від адаптації програмою моєї вимови, я перейшов у основне вікно і запустив вбудований текстовий редактор. Говорив окремі слова із якихось текстів, що знайшов на комп'ютері. Ті слова, що сказав правильно, програма надрукувала, ті, що погано сказав, замінила на щось «англійською». Вимовивши команду «стерти рядок» англійською чітко – програма її виконала. Значить команди я читаю правильно, і програма розпізнає їх без попереднього тренування.

Але мені було важливо, як цей «дракон» пише російською мовою. Як ви зрозуміли з попереднього опису, при тренуванні програми можна вибрати тільки англійський текст, російської там просто немає. Зрозуміло, як і натренувати розпізнання російської не вийде. На наступному фото можна побачити, яку фразу набрала прога під час російського слова «Привіт». (image06)

Підсумок спілкування з першим драконом вийшов трохи комічним. Якщо уважно почитати текст на офіційному сайті, можна побачити англійську «спеціалізацію» цього програмного продукту. Крім того, під час завантаження ми читаємо у вікні програми «English». То навіщо це все було потрібне. Зрозуміло, що винні форуми та чутки…

Але є й корисний досвід. Моя знайома попросила переглянути стан її ноутбука. Якось він повільно почав працювати. Це не дивно – системний розділ мав лише 5% вільного місця. Видаляючи непотрібні програми, я побачив, що офіційна версія займала більше 2,3 Гб. Ця цифра стане в нагоді пізніше. (image. 07)



Розпізнання російської мови, як виявилося, було нетривіальним завданням. У Мінську мені вдалося знайти у знайомого «Горинича». Диск він довго шукав у своїх старих завалах та, за його словами, це офіційне видання. Встановилася прога миттєво, і я дізнався, що в її словнику є 5000 російських слів плюс 100 команд та 600 англійських слів плюс 31 команда.

Спочатку потрібно налаштувати мікрофон, що я зробив. Потім відкрив словник та додав слово «перевірка»бо його не виявилося у словнику програми. Намагався говорити чітко, монотонно. Нарешті відкрив програму «Горинич Про 3,0», включив режим диктування і отримав ось такий список «близьких за звучанням слів». (image. 09)

Отриманий результат мене спантеличив, адже він явно відрізнявся в гірший бік від роботи андроїд-смартфону, і я вирішив спробувати інші програми. інтернет-магазину Google Chrome». А розбиратися із «зміями-гориничами» відклав на потім. Мені здалося це відкладаннядією в споконвічно російському дусі

5. Можливості Google по роботі з голосом

Для роботи з голосом на звичайному комп'ютері з OS Windows вам знадобиться встановити браузер Google Chrome. Якщо ви працюєте в Інтернеті, то внизу праворуч можна натиснути на посилання магазину програмного забезпечення. Там абсолютно безкоштовно я знайшов дві програми та два розширення для голосового введення тексту. Програми називаються «Голосовий блокнот»і "Війснот - голос у текст". Після встановлення їх можна знайти на закладці «Додатки»вашого браузера «Хром». (image. 10)

Розширення називаються "Google Voice Search Hotword (Beta) 0.1.0.5"і "Голосове введення тексту - Speechpad.ru 5.4". Після встановлення їх можна буде вимкнути або видалити на вкладці «Розширення».(image. 11)

VoiceNote. На вкладці програми в браузері Хром двічі клацніть іконку програми. Відкриється діалогове вікно як на малюнку нижче. Натиснувши на мікрофон значок, ви говорите в мікрофон короткі фрази. Програма передає ваші слова на сервер із розпізнавання мови та набирає текст у вікні. Усі слова та фрази, показані на ілюстрації, були набрані з першого разу. Очевидно, що цей спосіб працює лише при активному підключенні до Інтернету. (image. 12)

Голосовий блокнот. Якщо запустити програму на вкладці додатків, відкриється нова вкладка Інтернет сторінки Speechpad.ru. Там є докладна інструкція, як користуватись цією службою та компактна форма. Остання показано на ілюстрації нижче. (image. 13)

Голосове введеннятексту дозволяє заповнювати текстові поля Інтернет сторінок голосом. Наприклад, я вийшов на свою сторінку "Google+". У полі введення нового повідомлення клацнув правою кнопкою миші та вибрав пункт "SpeechPad". Пофарбоване вікно введення в рожевий колір говорить, що можна диктувати ваш текст. (image. 14)

Google Voice Searchдозволяє шукати голосом. Під час встановлення та активації цього розширення у рядку пошуку з'являється символ мікрофона. Коли ви натиснете його, з'явиться символ у великому червоному колі. Просто скажіть пошукову фразу, і вона з'явиться в результатах пошуку. (image. 15)

Важливо: Для роботи мікрофона з розширеннями «Хром» вам потрібно дозволити доступ до мікрофона в налаштуваннях браузера. За умовчанням з метою безпеки його заборонено. Пройдіть у Налаштування→Особисті дані→Налаштування контенту. (Для доступу до всіх параметрів наприкінці списку клацніть Показати додаткові параметри). Відкриється діалогове вікно Налаштування змісту сторінки. Виберіть вниз за списком Мультимедіа→мікрофон.

6. Підсумки роботи з програмами розпізнавання російської мови

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

Тепер можна говорити, що результат розробок Googleбуде новим критерієм оцінки продуктів інших виробників. Хотілося б, щоб система розпізнавання працювала в автономному режимі без звернення до серверів компанії – так зручніше та швидше. Але коли буде випущена самостійна програма роботи з безперервним потоком російської мови невідомо. Варто, однак, припустити, що за можливості тренування цей «творіння» стане справжнім проривом.

Програми російських розробників «Горинич», «Диктограф»і «Комбат»я докладно розгляну у другій частині цього огляду. Ця стаття писалася дуже повільно через те, що сам пошук оригінальних дисків зараз утруднений. На даний момент я вже маю всі версії російських «розпізнавалок» голосу в текст крім «Комбат 2.52». Ніхто з моїх знайомих чи колег не має цієї програми, а я сам маю лише кілька хвалебних відгуків на форумах. Щоправда, знайшовся такий дивний варіант – завантажити «Комбат» через SMS, але мені він не подобається. (image16)


Короткий відео ролик покаже вам, як йде розпізнання мови у смартфоні з ОС Андроїд. Особливістю голосового набору є необхідність підключення до серверів Гугла. Таким чином у вас повинен працювати Інтернет

) на реальному Hello World прикладі управління побутовою технікою.
Чому саме домашня техніка? Так тому що завдяки такому прикладу можна оцінити ту швидкість та точність, якої можна досягти при використанні повністю локальногорозпізнавання мови без серверів типу Google ASRабо Яндекс SpeechKit.
До статті я також додаю всі вихідні програми та саму збірку під Android.

З чого раптом?

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

Навіщо нам щось ще окрім Яндекса та Google?

Як те саме «практичне застосування» я вибрав тему голосового управління розумним будинком.
Чому саме такий приклад? Тому що на ньому можна побачити кілька переваг повністю локального розпізнавання мови перед розпізнаванням з використанням хмарних рішень. А саме:
  • Швидкість- ми не залежимо від серверів і тому не залежимо від їх доступності, пропускної спроможності і т.п. факторів
  • Точність- наш двигун працює тільки з тим словником, який цікавить наш додаток, підвищуючи тим самим якість розпізнавання
  • Вартість- нам не доведеться платити за кожен запит до сервера
  • Голосова активація- як додатковий бонус до перших пунктів - ми можемо постійно слухати ефір, не витрачаючи при цьому свій трафік і не навантажуючи сервера

Примітка

Відразу зазначу, що ці переваги можна вважати перевагами тільки для певного класу проектів, де ми точно заздалегідь знаємо, яким словником і якою граматикою оперуватиме користувач. Тобто коли нам не треба розпізнати довільний текст (наприклад, СМС повідомлення, або пошуковий запит). Інакше без хмарного розпізнавання не обійтися.

Так Android же вміє розпізнавати мову без інтернету!
Так-так… Тільки на JellyBean. І лише з півметра, не більше. І це розпізнавання - це те ж диктування, тільки з використанням набагато меншої моделі. Тож керувати нею та налаштовувати її ми теж не можемо. І що вона поверне нам наступного разу – невідомо. Хоча для СМС-ок якраз!

Що будемо робити?

Продаватимемо голосовий пульт управління домашньою технікою, який працюватиме точно і швидко, з кількох метрів і навіть на дешевому гальмівному мотлоху дуже недорогих Android смартфонах, планшетах і годинниках.
Логіка буде простою, але дуже практичною. Активуємо мікрофон і вимовляємо одну або кілька назв пристроїв. Додаток їх розпізнає та включає-вимикає їх залежно від поточного стану. Або отримує від них статки і вимовляє його приємним жіночим голосом. Наприклад, поточна температура у кімнаті.

Варіантів практичного застосування маса

Вранці, не розплющуючи очей, грюкнули долонею по екрану смартфона на тумбочці і командуємо «Доброго ранку!» - запускається скрипт, включається і дзижчить кавоварка, лунає приємна музика, розсуваються штори.
Повісимо по дешевому (тисячі по 2, не більше) смартфону у кожній кімнаті на стінці. Заходимо додому після роботи та командуємо у порожнечу «Розумний дім! Світло, телевізор! - що відбувається далі, гадаю, говорити не треба.

Транскрипції



Граматика описує те, що може говорити користувач. Для того, щоб Pocketsphinx знав, яквін це вимовлятиме, необхідно для кожного слова з граматики написати, як воно звучить у відповідній мовній моделі. Тобто транскрипціюкожного слова. Це називається словник.

Транскрипції описуються за допомогою спеціального синтаксису. Наприклад:
розумний uu m n ay j будинок d oo m

У принципі нічого складного. Подвійна голосна транскрипції позначає наголос. Подвійна приголосна - м'яку приголосну, за якою йде голосна. Усі можливі комбінації всім звуків російської .

Зрозуміло, що заздалегідь описати всі транскрипції в нашому додатку ми не можемо, тому що ми не знаємо заздалегідь назв, які користувач дасть своїм пристроям. Тому ми будемо генерувати «на льоту» такі транскрипції за деякими правилами російської фонетики. Для цього можна реалізувати такий клас PhonMapper, який зможе отримувати на вхід рядок і генерувати для неї правильну транскрипцію.

Голосова активація

Це можливість движка розпізнавання мови весь час «слухати ефір» з метою реакцію заздалегідь задану фразу (чи фрази). При цьому всі інші звуки та мова будуть відкидатися. Це не те саме, що описати граматику і просто включити мікрофон. Наводити тут теорію цього завдання та механіку того, як це працює, я не буду. Скажу лише, що нещодавно програмісти, які працюють над Pocketsphinx, реалізували таку функцію, і тепер вона доступна "з коробки" в API.

Одне варто згадати обов'язково. Для активаційної фрази потрібно не лише вказати транскрипцію, а й підібрати відповідне значення порога чутливості. Занадто мале значення призведе до безлічі помилкових спрацьовувань (це коли ви не говорили активаційну фразу, а система її розпізнає). А надто високе – до несприйнятливості. Тому це налаштування має особливу важливість. Орієнтовний діапазон значень - від 1e-1 до 1e-40 залежно від активаційної фрази.

Активація датчика наближення

Це завдання специфічне саме для нашого проекту і безпосередньо до розпізнавання не має відношення. Код можна побачити прямо в головній активності.
Вона реалізує SensorEventListenerі в момент наближення (значення сенсора менше максимального) включає таймер, перевіряючи після деякої затримки, чи досі перекритий датчик. Це зроблено для виключення помилкових спрацьовувань.
Коли датчик знову не перекритий, ми зупиняємо розпізнавання, отримуючи результат (див. далі).

Запускаємо розпізнавання

Pocketsphinx надає зручний API для конфігурування та запуску процесу розпізнавання. Це класи SppechRecognizerі SpeechRecognizerSetup.
Ось як виглядає конфігурація та запуск розпізнавання:

PhonMapper phonMapper = новий PhonMapper(getAssets().open("dict/ru/hotwords")); Grammar grammar = новий Grammar(names, phonMapper); grammar.addWords(hotword); DataFiles dataFiles = New DataFiles(getPackageName(), "ru"); File hmmDir = новий File(dataFiles.getHmm()); File dict = new File(dataFiles.getDict()); File jsgf = новий File(dataFiles.getJsgf()); copyAssets(hmmDir); saveFile(jsgf, grammar.getJsgf()); saveFile(dict, grammar.getDict()); mRecognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(hmmDir) .setDictionary(dict) .setBoolean("-remove_noise", false) .setKeywordThreshold(1e-7f) .getRecognizer() mRecognizer.addKeyphraseSearch(KWS_SEARCH, hotword); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

Тут ми спершу копіюємо всі необхідні файли на диск (Pocketpshinx вимагає наявності на диску акустичної моделі, граматики та словника з транскрипціями). Потім конфігурується сам двигун розпізнавання. Вказуються шляхи до файлів моделі та словника, а також деякі параметри (поріг чутливості до активаційної фрази). Далі конфігурується шлях до файлу із граматикою, а також активаційна фраза.

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

MRecognizer.startListening(KWS_SEARCH);
А ось так - розпізнавання мови за заданою граматикою:

MRecognizer.startListening(COMMAND_SEARCH, 3000);
Другий аргумент (необов'язковий) - кількість мілісекунд, після якого розпізнавання автоматично завершуватиметься, якщо ніхто нічого не говорить.
Як бачите, можна використовувати лише один двигун для вирішення обох завдань.

Як отримати результат розпізнавання

Щоб отримати результат розпізнавання, потрібно також вказати слухача подій, що імплементує інтерфейс RecognitionListener.
У нього є кілька методів, які викликаються пакетсфінксом при настанні однієї з подій:
  • onBeginningOfSpeech- двигун почув якийсь звук, можливо це мова (а може бути і ні)
  • onEndOfSpeech- звук закінчився
  • наPartialResult- Є проміжні результати розпізнавання. Для активаційної фрази це означає, що вона спрацювала. Аргумент Hypothesis
  • onResult- Кінцевий результат розпізнавання. Цей метод буде викликаний після виклику методу stopу SpeechRecognizer. Аргумент Hypothesisмістить дані про розпізнавання (рядок та score)

Реалізуючи тим чи іншим способом методи onPartialResult і onResult, можна змінювати логіку розпізнавання та отримувати остаточний результат. Ось як це зроблено у випадку з нашим додатком:

@Override public void onEndOfSpeech() ( Log.d(TAG, "onEndOfSpeech"); if (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) ( mRecognizer.stop(); ) ) @Override public void onPartial ( if (hypothesis == null) return; String text = hypothesis.getHypstr(); if (KWS_SEARCH.equals(mRecognizer.getSearchName())) ( startRecognition(); ) else ( Log.d(TAG, text); ) ) @Override public void onResult(Hypothesis hypothesis) ( mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); String text = hypothesis ! , "onResult " + text); if (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) ( if (text != null) ); ) mRecognizer.startListening(KWS_SEARCH); ) )

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

Приватний synchronized void startRecognition() ( if (mRecognizer == null || COMMAND_SEARCH.equals(mRecognizer.getSearchName())) return; mRecognizer.cancel(); TONE_CDMA_PIP, 200); commands"); post(4000, mStopRecognitionCallback); ) )); )
Тут ми спочатку граємо невеликий сигнал для оповіщення користувача, що ми його почули та готові до його команди. На цей час мікрофон має бути вимкнений. Тому ми запускаємо розпізнавання після невеликого таймууту (трохи більше, ніж тривалість сигналу, щоб не почути його відлуння). Також запускається потік, який припинить розпізнавання примусово, якщо користувач говорить занадто довго. У цьому випадку це 3 секунди.

Як перетворити розпізнаний рядок на команди

Ну тут все вже специфічно для конкретної програми. У випадку з голим прикладом, ми просто витягуємо зі рядка назви пристроїв, шукаємо по них потрібний пристрій і або змінюємо його стан за допомогою HTTP запиту на контролер розумного будинку, або повідомляємо його про поточний стан (як у випадку з термостатом). Цю логіку можна побачити у класі Controller.

Як синтезувати мовлення

Синтез мови - це операція, обернена до розпізнавання. Тут навпаки - потрібно перетворити рядок тексту на мову, щоб його почув користувач.
У випадку термостата ми повинні змусити наш Android пристрій вимовити поточну температуру. За допомогою API TextToSpeechце зробити досить просто (спасибі гуглу за прекрасний жіночий TTS для російської мови):

Private void speak(String text) ( synchronized (mSpeechQueue) ( ​​mRecognizer.stop(); mSpeechQueue.add(text); HashMap params = New HashMap (2); params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "true"); mTextToSpeech.speak(text, TextToSpeech.QUEUE_ADD, params); )

Скажу, напевно, банальність, але перед процесом синтезу потрібно обов'язково вимкнути розпізнавання. На деяких пристроях (наприклад, усі самсунги) взагалі неможливо одночасно і слухати мікрофон, і щось синтезувати.
Закінчення синтезу мови (тобто закінчення процесу говоріння тексту синтезатором) можна відстежити у слухачі:

Приватний final TextToSpeech.OnUtteranceCompletedListener mUtteranceCompletedListener = новий TextToSpeech.OnUtteranceCompletedListener() ( @Override public void onUtteranceCompleted(String utteranceId) ( synchronized (mSpeechQueue) ( ​​mSeech ;)))));

У ньому ми просто перевіряємо, чи ще немає чогось у черзі на синтез, і включаємо розпізнавання активаційної фрази, якщо нічого більше немає.

І це все?

Так! Як бачите, швидко і якісно розпізнати мову прямо на пристрої зовсім нескладно завдяки наявності таких чудових проектів, як Pocketsphinx. Він надає дуже зручний API, який можна використовувати у вирішенні завдань, пов'язаних із розпізнаванням голосових команд.

У цьому прикладі ми прикрутили розпізнавання до цілком кокрентного завдання - голосового управління пристроями розумного будинку. За рахунок локального розпізнавання ми досягли дуже високої швидкості роботи та мінімізували помилки.
Зрозуміло, що той самий код можна використовувати і для інших завдань, пов'язаних із голосом. Це не обов'язково має бути саме розумний будинок. Додати теги