Voice recognition software что это
Поиск оптимальной системы аудио распознавания речи с закрытым исходным кодом, но имеющими открытые API, для возможности интеграции
Вместо введения
Решил немного дополнить отчет, который составлял еще будучи студентом. Прошло время и, как говорится, прогресс не стоит на месте. Технологии распознавания речи динамически развиваются. Что-то появляется, что-то исчезает. Вашему вниманию представляю самые известные речевые движки, которые может использовать разработчик в своем продукте на основе лицензионного соглашения. Буду рад замечаниям и дополнениям.
Содержание:
Определить наиболее оптимальную аудио-систему распознавания речи (речевой движок) на базе закрытого исходного кода, то есть лицензии которой не подходит под определение открытого ПО.
Задачи:
Введение
Реализация своей собственной системы распознавания речи является очень сложной, трудоемкой и ресурсозатратной задачей, которую сложно выполнить в рамках данной работы. Поэтому предполагается интегрировать представленную технологию видео-идентификации в системы распознавания речи, которые имеют для этого специальные возможности. Так как системы распознавания речи с закрытым исходным кодом реализованы более качественно и точность распознавания речи в них выше, то поэтому интеграция нашей видео-разработки в их работу следует считать более перспективным направлением, по сравнению с аудио системами распознавания речи на базе открытого исходного кода. Однако же необходимо иметь в виду тот факт, что системы распознавания речи с закрытым исходным кодом часто не имеют должной документации для возможности интеграции сторонних решений в их работу или же это направление является платным, то есть необходимо покупать специальную лицензию на использование речевых технологий, представленных лицензиантом.
Закрытый исходный код (Proprietary software)
Что касается определения — закрытый исходный код, то необходимо сказать – оно означает, что распространяются только бинарные (откомпилированные) версии программы и лицензия подразумевает отсутствие доступа к исходному коду программы, что затрудняет создание модификаций программы. Доступ к исходному коду третьим лицам обычно предоставляется при подписании соглашения о неразглашении. [1].
ПО с закрытым исходным кодом является проприетарным (собственническим) ПО. Однако необходимо иметь в виду, что фраза «закрытый исходный код» можно трактовать по-разному. Так как она может подразумевать лицензии, в которых исходный код программ недоступен. Однако если считать ее антонимом открытого кода, то она относится к программному обеспечению, не подходящему под определение лицензии открытого ПО, что имеет несколько другой смысл. Одним из таковых спорных моментов стало то, как трактовать понятия интерфейса программирования приложений.
Интерфейс программирования приложений (API)
С 24 марта 2004 года на основании решения Европейской комиссии для программ с закрытым исходным кодом в результате судебного процесса появилось определение API, которое расшифровывается как интерфейс программирования приложений или как интерфейс прикладного программирования (с англ. яз. — application programming interface). API — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.
API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.
Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика, которые он может вертеть и дёргать.
Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.
По такому принципу построены протоколы передачи данных по Интернет. Стандартный стек протоколов (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему уровню.
Важно заметить, что понятие протокола близко по смыслу к понятию API. И то и другое является абстракцией функциональности, только в первом случае речь идёт о передаче данных, а во втором — о взаимодействии приложений. [2].
Dragon Mobile SDK
Сам инструментарий называется NDEV. Чтоб получить необходимый код и документацию, надо зарегистрироваться на сайте в «программе сотрудничества». Сайт:
dragonmobile.nuancemobiledeveloper.com/public/index.php [5].
Инструментарий (SDK) содержит в себе компоненты и клиента, и сервера. Диаграмма иллюстрирует их взаимодействие на верхнем уровне:
Рис. 1. Принцип работы технологии Dragon Mobile SDK
Комплект Dragon Mobile SDK состоит из различных примеров кода и шаблонов проектов, документации, а также программной платформы (фреймворка), упрощающей интеграцию речевых сервисов в любое приложение.
Платформа Speech Kit framework позволяет легко и быстро добавлять в приложения сервисы распознавания и синтеза (TTS, Text-to-Speech) речи. Данная платформа также обеспечивает доступ к компонентам обработки речи, находящимся на сервере, через асинхронные «чистые» сетевые API, сводя к минимуму накладные расходы и потребляемые ресурсы.
Платформа Speech Kit является полнофункциональным высокоуровневым «фреймворком», который автоматически управляет всеми низкоуровневыми сервисами.
Рис. 2. Архитектура Speech Kit
Платформа выполняет несколько согласованных процессов:
1. Осуществляет полное управление аудио системой для записи и воспроизведения
2. Сетевой компонент управляет подключениями к серверу и автоматически восстанавливает соединения с истекшим временем ожидания при каждом новом запросе
3. Детектор окончания речи определяет, когда пользователь закончил говорить, и при необходимости автоматически останавливает запись
4. Кодирующий компонент сжимает и распаковывает потоковую аудиозапись, снижая требования к полосе пропускания и уменьшая среднее время задержки.
Система серверов отвечает за большинство операций, входящих в цикл обработки речи. Процесс распознавания или синтеза речи выполняется целиком на сервере, обрабатывая или синтезируя аудио-поток. Кроме того, сервер осуществляет аутентификацию в соответствии с конфигурацией разработчика.
Платформа Speech Kit является сетевым сервисом и нуждается в некоторых базовых настройках перед началом использования классов распознавания или синтеза речи.
Данная установка выполняет две основные операции:
Во-первых, она определяет и авторизует ваше приложение.
Во-вторых, — устанавливает соединение с речевым сервером, — это позволяет производить быстрые запросы на речевую обработку и, следовательно, повышает качество обслуживания пользователей.
Распознавание речи
Технология распознавания позволяет пользователям диктовать вместо того, чтобы печатать там, где обычно требуется ввод текста. Распознаватель речи выдает список текстовых результатов. Он никак не привязан к какому-либо объекту пользовательского интерфейса (UI), поэтому отбор наиболее подходящего результата и выборка альтернативных результатов остается на усмотрение пользовательского интерфейса каждого приложения.
Рис. 3. Процесс распознавания речи
В работе нашего приложения на ОС Android нам удалось интегрировать решение от Dragon Mobile SDK. Пионер отрасли распознавания речи показал отличные результаты, особенно на английском языке. Однако большим его недостатком следует считать ограниченный бесплатный функционал: только 10 тысяч запросов в сутки — которых для работы нашего приложения очень скоро стало недостаточно. За больший доступ следует платить.
Google Speech Recognition API
Рис. 4. Логотип Google Voice Search
Это продукт компании Google, который позволяет вводить голосовой поиск с помощью технологии распознавания речи. Технология интегрирована в мобильные телефоны и компьютеры, где можно ввести информация с помощью голоса. С 14 июня 2011 года Google объявила об интеграции речевого движка в Google Search и с тех пор он работает в стабильном режиме с этого времени. Эта технология на персональных компьютерах поддерживается только браузером Google Chrome. Функция включена по умолчанию в сборках dev-канала, но может быть включена вручную добавлением командного флага. Есть также функция голосового управления для введения речевых команд на телефонах с ОС Android.
Первоначально Google Voice Search — поддерживал короткие поисковые запросы длиной 35-40 слов. Необходимо было для отправки запроса включать и выключать микрофон, что было очень не естественно для использования (такая функция еще осталось в строке поиска Google, нужно нажать лишь на микрофон). Однако, в конце февраля 2013 года в браузер Chrome была добавлена возможность распознавания непрерывной речи и фактически Google Voice Search трансформировался в Speech Input (можно попробовать технологию на примере набора текста в Google Translate). Технологию можно экспериментально протестировать например также здесь. Ознакомиться с полной документацией можно здесь. Заметим лишь, что если раньше многие разработчики грешили тем, что незаконно с помощью различных уловок вклинивались в канал распознавания Google Speech API, то сейчас во время частых изменений API с мая 2014 года процесс доступа к API фактически стал легализован, так как для работы с базой данных системы распознавания речи достаточно зарегистрировать учетную запись в Google Developers и потом можно работать с системой в рамках правового поля.
Voice Search по умолчанию поставляется со следующими сервисами: Google, Википедия, YouTube, Bing, Yahoo, DuckDuckGo и Wolfram|Alpha и другими. Вы также можете добавить собственные поисковые системы. Расширение также добавляет кнопку голосового ввода для всех сайтов с использованием поисковых форм HTML5. Для работы расширения необходим микрофон. Речевой ввод весьма экспериментальный, так что не удивляйтесь, если он не сработает. [3].
Для этого, чтобы использовать технологию Google Voice Search необходимо сделать следующее:
Необходимо сделать POST запрос на адрес (сейчас он часто меняется — например, в мае месяце было три изменения и поэтому к этому надо быть готовым) со звуковыми данными в формате FLAC или Speex. Реализовывали демонстрацию распознавания WAVE-файлов с помощью C#. Количество ограничений запросов в сутки не замечали. Был риск с 10 000 знаками, как у многих других систем распознавания речи, но такие значения экспериментальным образом было нами доказано, можно преодолевать ежедневно.
Останавливаться на том, как работает данная технология специально не буду. Очень много статей имеется в сети, в том числе на хабре. Замечу лишь, что системы распознавания речи имеют практически схожий принцип работы, который был представлен в пункте выше на примере Nuance.
Yandex Speech Kit
Рис. 5. Лого Yandex Speech Kit
Сразу замечу, что сам лично я с данной библиотекой не работал. Расскажу лишь об опыте программиста, который работал с нами. Он говорил, что очень тяжелая для его восприятия документация и система имеет ограничение по количеству запросов: 10 000 в сутки, поэтому в итоге мы не стали использовать базу данных от Яндекса. Хотя по уверению разработчиков — этот инструментарий является номером 1 для русского языка и, что исследовательская группа компании, которая работала одна в Швейцарии, другая в Москве смогла сделать технологический прорыв в этой области. Однако с таким решением достаточно тяжело выходить на международный рынок по словам Григория Бакунова, так как «многое в области распознавания речи с точки зрения патентования принадлежит известной Nuance и Яндекс одним из последних сумел зацепиться за вагон уходящего вперед поезда развития систем распознавания речи.»
Скачать же библиотеки можно на портале Технологий «Яндекса»: api.yandex.ru/speechkit/downloads/
Microsoft Speech API
Рис. 6. Лого Microsoft Speech API
Майкрософт тоже в последнее время стал активно развивать речевые технологии. Особенно после анонсирования голосового ассистента Cortana и разработки автоматический технологии синхронного теле-перевода с английского на немецкий язык и наоборот для Skype
На текущий момент существуют 4 варианта использования:
1. Для Windows и Windows Server 2008. Можно добавить речевой движок для Windows приложения используя управляемый или нативный код, который можно взять с API и управлять речевым движком, который встроен в Windows и Windows Server 2008.
2. Speech Platforms. Встраивание платформы в приложения, которые используют распространяемые Microsoft диструбутивы (языковые пакеты с функцией распознавания речи или же средства перевода текста в речь).
3. Embedded. Встроенные решения, которые позволяют человеку взаимодействовать с устройствами используя голосовые команды. Например управление автомобилями Форд с помощью голосовых команд в ОС WIndows Automotive
4. Services. Разработка приложения с речевыми функциями, которые можно использовать в реальном времени, тем самым освобождая себя от создания, обслуживания и модернизации инфраструктуры речевых решений.
Microsoft Speech Platform (есть SDK)
После установки – можно посмотреть справку по следующему пути
И также нужно ставить еще Runtime (ссылка)
а также Runtime Languages (Version 11). Т.е. для каждого языка нужно скачать и установить словарь. Я видел 2 версии словаря для английского и русского языков.
Системные требования (для SDK)
Поддержка ОС
Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Vista
Разработка и поддержка
• Windows Vista или позднее
• Windows 2003 Server или позднее
• Windows 2008 Server или позднее
Развертывание поддерживается на:
• Windows 2003 Server или позднее
• Windows 2008 Server или позднее
Плюсы:
1) Готовая технология, бери и пользуйся! (есть SDK)
2) Поддержка от Майкрософт
Минусы:
1) нет отрыва от потенциальных конкурентов
2) как я понял – можно развернуть только на серверной Виндоус (Windows 2003 Server, Windows 2008 Server or later)
3) разработка под Виндоус 8 не анонсирована, только Виндоус 7 пока и ранние версии Виндоус
Использование Microsoft Speech API 5.1 для синтеза и распознавания речи
Статья как работать с АПИ
Установка (только для Windows XP), я так понимаю Speech API 5.1 он теперь входит в Microsoft Speech Platform (v 11), поэтому имеет смысл ознакомиться со статьей.
Примеры проектов по работе с Microsoft Speech API
MSDN ссылки про работу с Microsoft.Speech.dll
1. Как начать работать с системой распознавания речи (Microsoft.Speech)
Примеры:
C#, Разговоры с компом или System.Speech
Краткая статья как юзать System.Speech. Автор указывает на необходимость наличия английской версии Windows Vista или 7.
Распознавание речи с C# – Диктовка и пользовательская грамматика
Туториал, как использовать системные классы Майкрософт для задач аудио-распознавания (голос в текст), автор также сделал в своем блоге пост для обратной задачи речь в текст.
Проект (WinForms) по туториалу запускается и собирается. Там есть распознавание 20 секундного интервала. И распознавание по узкому словарю для управления софтом — Choices(«Calculator», «Notepad», «Internet Explorer», «Paint»); Если говорить фразы «start calculator» и т.п. то запускается соответствующий софт.
C# Speech to Text
Клиент на WPF.
Цель этой статьи дать Вам небольшое представление о способностях системы. В деталях рассмотреть как работают классы речевого движка. Также можно найти всю документацию MSDN здесь.
Speech for Windows Phone 8
Здесь рассматриваются аспекты программирования аудио-распознавания под Windows Phone 8.
Заключение
Таким образом, рассмотрев самые распространенные системы распознавания речи с закрытым исходным кодом необходимо заметить, что по своей библиотеке данных наиболее точным следует считать продукт на базе Dragon NaturallySpeaking. Он более всего подходит для задач распознавания на базе нашего визуального мобильного расширения (так как имеет хорошую документацию и простой код API для встраивания). Однако необходимо заметить, что данный инструментарий отличается очень сложной системой лицензирования, порядком и правилами использования данной технологии. Поэтому возникает сложность реализации на Dragon Mobile SDK пользовательского продукта.
Следовательно, в таком случае более правильным, для наших целей и задач следует считать использование речевого инструментария Google, который более встраиваемый и быстрый за счет больших вычислительных мощностей по сравнению с Dragon Mobile SDK. Также преимуществом распознавания речи от Google стало отсутствие ограничений по количеству запросов в сутки (у многих систем распознавания речи с закрытым исходным кодом есть ограничение 10 000 запросов). Также данная компания стала активно стремиться развивать свой речевой движок на базе лицензионного соглашения. Еще раз напомню в мае месяце 2014 года началась чехарда частой смены API от корпорации и для того, чтобы координировать процесс необходимо иметь статус GoogleDevelopers.
Большим достоинством систем распознавания с закрытым исходным кодом (но открытым API для разработчиков), по сравнению с аудио-системами распознавания речи с открытым исходным кодом является высокая точность (за счет огромных библиотек баз данных) и скорость распознавания речи, поэтому их использование для решения нашей задачи является актуальным направлением.
Распознавание речи: очень краткий вводный курс
Рассказать неспециалисту максимально просто о работе компьютерного распознавания речи и преобразовании её в текст — задача почти непосильная. Ни один рассказ об этом не обходится без сложных формул и математических терминов. Мы попробуем максимально понятно и немного упрощённо объяснить, как ваш смартфон понимает речь, когда машины научились распознавать человеческий голос и в каких неожиданных областях используется эта технология.
Необходимое предуведомление: если вы разработчик или, тем более, математик, вы едва ли узнаете из поста что-то новое и даже посетуете на недостаточную научность материала. Наша цель — самым простым образом познакомить непосвящённых читателей с речевыми технологиями и рассказать, как и зачем Toshiba взялась за создание своего голосового ИИ.
Важные вехи в истории распознавания речи
История распознавания электронными машинами человеческой речи началась чуть раньше, чем принято думать: в большинстве случаев принято вести отсчёт с 1952 года, но на самом деле одним из первых устройств, реагировавшим на голосовые команды, был робот Televox, о котором мы уже писали. Созданный в 1927 году в США робот Герберт Телевокс представлял собой несложное устройство, в котором различные реле реагировали на звуки разной частоты. В роботе было три камертона, каждый из которых отвечал за свою тональность. В зависимости от того, какой камертон срабатывал, включалось то или иное реле.
Фактически вся «начинка» Телевокса, включая систему распознавания команд, располагалась на стойке в районе туловища «робота». Закрыть её крышкой было нельзя, иначе камертоны не смогли бы корректно «слышать» звуки. Источник: Acme Telepictures / Wikimedia
С Телевоксом можно было общаться как отдельными сигналами с помощью свистка, так и короткими словесными репликами — их камертоны тоже раскладывали на последовательность звуков. Создатель робота Рой Уэнсли даже устраивал фантастическую по тем временам демонстрацию, говоря команду «Сезам, откройся», по которой Телевокс включал реле, отвечающее за открытие двери. Никаких цифровых технологий, нейросетей, ИИ и машинного обучения — только аналоговая техника!
Следующим ключевым изобретением, открывшим путь к настоящему распознаванию человеческой речи, стала машина Audrey, разработанная в 1952 году в кузнице инноваций Bell Labs. Огромная Audrey потребляла кучу электроэнергии и была размером с хороший шкаф, но вся её функциональность сводилась к распознаванию произнесённых цифр от нуля до девяти. Всего десять слов, да, но не будем забывать, что и Audrey была аналоговой машиной.
К сожалению, история не сохранила публичных фотографий Audrey, есть только принципиальная схема. Простая на бумаге, сложная в воплощении — по воспоминаниям современников, компоненты Audrey занимали целый шкаф. Источник: Bell Labs
Работало это так: диктор проговаривал в микрофон цифры, делая между словами интервалы не менее 350 мс, Audrey переводила услышанные звуки в электрические сигналы и сравнивала их с записанными в аналоговой памяти образцами. По результатам сравнения машина подсвечивала цифру на приборной панели.
Это был прорыв, но реальной пользы от Audrey не было и быть не могло — машина распознавала голос своего создателя с точностью до 97%, другие специально тренированные дикторы получали точность 70-80%. Посторонние люди, впервые контактирующие с Audrey, как бы ни старались, видели на табло свою цифру только в 50% случаев.
Несмотря на революционные для своего времени результаты, Audrey не нашла, да и не могла найти практического применения. Предполагалось, что систему можно приспособить вместо телефонных операторов, но всё же услуги человека оказались удобней, быстрее и гораздо надёжней, чем Audrey.
Презентация похожей на Audrey, только гораздо меньших размеров, машины — IBM Shoebox. Хорошо видна скорость работы Shoebox. Машина также могла выполнять простейшие математические операции сложения и вычитания
В начале 1960-х работы по созданию машин для распознавания речи велись в Японии, Великобритании, США и даже СССР, где изобрели очень важный алгоритм динамической трансформации временной шкалы (DTW), с помощью которого удалось построить систему, знающую около 200 слов. Но все наработки были похожи друг на друга, а общим недостатком стал принцип распознавания: слова воспринимались как целостные звуковые отпечатки, и затем их сверяли с базой образцов (словарём). Любые изменения скорости, тембра и чёткости проговаривания слов значительно влияли на качество распознавания. Перед учёными встала новая задача: научить машину слышать отдельные звуки, фонемы или слоги и затем составлять из них слова. Такой подход позволил бы нивелировать эффект смены диктора, когда в зависимости от говорящего уровень распознавания резко различался.
Фонемы — это звук или множество звуков, которыми обозначается буква слова в разговорной речи в зависимости от контекста. Например, в словосочетании «пока что» буква «ч» в разговоре чаще всего звучит как «ш». А предлог «с» в словосочетаниях «с сестрой» и «с братом» в первом случае звучит как «с», а во втором — как «з». То есть, буква одна, но фонемы разные.
Описание принципа работы Harpy. Видео работы программы не сохранилось.
Опыт Harpy показал, что наращивать словари целостных звуковых отпечатков бесполезно — это лишь увеличивает время распознавания и радикально снижает точность, поэтому исследователи всего мира пошли по другому пути — распознавания фонем. В середине 1980-х машина IBM Tangora могла научиться понимать речь любого диктора с любым акцентом, диалектом и особенностями произношения, для этого лишь требовалась 20-минутная тренировка, в ходе которой накапливалась база образцов фонем и аллофонов. Применение скрытой марковской модели повысило словарный запас IBM Tangora до впечатляющих 20 000 слов — в 20 раз больше, чем было у Harpy, и уже сравнимо со словарным запасом подростка.
Все системы распознавания речи с 1950-х до середины 1990-х годов не умели считывать естественную разговорную речь человека — слова приходилось произносить отдельно, делая паузы между ними. По-настоящему революционным событием стало внедрение разработанной в 1980-х скрытой марковской модели — статистической модели, строившей точные предположения о неизвестных элементах на основе вытекающих из них известных. Упрощённо говоря, с помощью всего нескольких распознанных фонем в одном слове скрытая марковская модель очень точно подбирает недостающие фонемы, тем самым значительно повышая точность распознавания речи.
В 1996 году появилась первая коммерческая программа, способная различать не отдельные слова, а беспрерывный поток естественной речи — IBM MedSpeak/Radiology. Продукт IBM был специализированным, он использовался в медицине для стенографирования описания результатов рентгенограммой, произносимых врачом в ходе исследования. Тут мощность компьютеров наконец стала достаточной для того, чтобы распознавать отдельные слова «на лету». Плюс алгоритмы стали более совершенными, появилось корректное распознавание микропауз между произносимыми словами.
Первым универсальным движком распознавания естественной речи стала программа Dragon NaturallySpeaking 1997-го года. При работе с нею диктору (т. е. пользователю) не требовалось проходить тренировку или оперировать определённым лексиконом, как в случае с MedSpeak, — с NaturallySpeaking мог работать любой человек, даже ребёнок, программа не ставила никаких правил произношения.
Несмотря на уникальность Dragon NaturallySpeaking, ИТ-обозреватели не выказывали особого восторга от распознавания естественной речи. Среди недостатков отмечались ошибки распознавания и некорректная обработка команд, обращённых к самой программе. Источник: itWeek
Примечательно, что движок распознавания был готов ещё в 1980-х, но из-за недостаточной мощности компьютеров разработка Dragon Systems (сейчас компанией владеет Nuance Communications) не успевала «на лету» определять промежутки между словами, что необходимо для распознавания естественной речи. Без этого слова «пока лечится», например, могли быть услышаны компьютером как «покалечится».
Впереди был рост популярности систем распознавания речи, нейросети, появление голосового поиска Google на мобильных устройствах и, наконец, голосовой ассистент Siri, не просто конвертирующий речь в текст, но и адекватно отвечающий на построенные любым естественным образом запросы.
Как услышать сказанное и додумать нерасслышанное?
В наше время лучшим средством для создания движка распознавания речи стала рекуррентная нейросеть (RNN), на которой построены все современные сервисы распознавания голоса, музыки, изображений, лиц, объектов, текста. RNN позволяет с высочайшей точностью понимать слова, а также предсказывать наиболее вероятное слово в рамках контекста, если оно не было распознано.
Нейросетевая темпоральная классификация модели (CTC) выделяет в записанном аудиопотоке (слове, фразе) отдельные фонемы и расставляет их в том порядке, в котором они были произнесены. После многократного анализа, CTC очень чётко выделяет определённые фонемы, а их текстовая запись сравнивается с базой слов нейросети и затем превращается в распознанное слово.
Нейросети потому так и называются, что принцип их работы похож на работу человеческого мозга. Обучение нейросети очень похоже на обучение человека. Например, чтобы совсем маленький ребёнок научился узнавать автомобили и отличать их от мотоциклов, нужно как минимум несколько раз обратить его внимание на различные машины и каждый раз произносить соответствующее слово: это большое и красное — машина, и эта низкая чёрная — машина, а вот это и это мотоциклы. В какой-то момент ребёнок обнаружит закономерности и общие признаки для разных автомобилей, и научится безошибочно узнавать, где легковушка, где джип, где мотоцикл, а где квадроцикл, даже если мимолётом увидит их на рекламном плакате на улице. Так же и нейросеть нужно обучить базой примеров — заставить «изучить» сотни и тысячи вариантов произношения каждого слова, буквы, фонемы.
Рекуррентная нейросеть для распознавания речи хороша тем, что после длительной тренировки базой различных произношений она научится с высокой точностью различать фонемы и составлять из них слова вне зависимости от качества и характера произношения. И даже «додумывать» с высокой точностью в рамках контекста слова, которые не удалось распознать однозначно из-за фоновых шумов или нечёткого произношения.
Но с предсказаниями RNN есть нюанс — рекуррентная нейросеть может «додумать» пропущенное слово только опираясь на самый ближайший контекст примерно в пять слов. За пределами этого пространства анализ вестись не будет. А он порой ох как нужен! Например, для распознавания мы произнесли фразу «Великий русский поэт Александр Сергеевич Пушкин», в которой слово «Пушкин» (специально выделено курсивом) сказали настолько неразборчиво, что ИИ не смог точно распознать его. Но рекуррентная нейросеть, опираясь на имеющийся опыт, полученный в ходе обучения, может предположить, что рядом со словами «русский», «поэт», «Александр» и «Сергеевич» чаще всего встречается слово «Пушкин». Это достаточно простая задача для обученной на русских текстах RNN, потому что очень конкретный контекст позволяет делать предположения с высочайшей точностью.
А если контекст расплывчатый? Возьмём другой текст, в котором одно слово не сможет быть распознано: «Наше всё, Александр Сергеевич Пушкин, трагически погиб в расцвете лет после дуэли с Дантесом. Именем поэта назван Пушкинский театральный фестиваль». Если убрать слово «Пушкинский», RNN попросту не сможет угадать его, опираясь на контекст предложения, ведь в нём упомянуты лишь театральный фестиваль и отсылка к имени неизвестного поэта — возможных вариантов масса!
Вот тут вступает в дело архитектура долгой краткосрочной памяти (Long short-term memory, LSTM) для рекуррентных нейросетей, созданная в 1997 году (подробная статья о LSTM). Она специально разрабатывалась для того, чтобы добавить RNN умение учитывать контекст, удалённый от обрабатываемого события, — результаты решения предыдущих задач (то есть, распознаваний слов) проносятся сквозь весь процесс распознавания, сколь бы длинным не был монолог, и учитываются в каждом случае сомнений. Причём расстояние удаления почти не влияет на эффективность работы архитектуры. С помощью LSTM нейросеть при необходимости угадать слово будет учитывать весь имеющийся в рамках задачи опыт: в нашем примере RNN заглянет в предыдущее предложение, обнаружит, что ранее упоминались Пушкин и Дантес, поэтому «Именем поэта» скорее всего указывает на кого-то из них. Так как нет никаких данных о существовании театрального фестиваля Дантеса, то речь идёт о Пушкинском (тем более что звуковой отпечаток нераспознанного слова очень похож) — такой фестиваль был в базе для обучения нейросети.
«Исповедь голосового помощника». Когда в дело вступает хорошо обученная нейросеть, голосовой ассистент может точно додумать, что же нужно сделать с «зелёными тапочками»
Как распознавание речи делает мир лучше?
В каждом случае применения по-разному — кому-то оно помогает общаться с гаджетами, причём по данным PricewaterhouseCoopers более половины пользователей смартфонов отдают устройствам голосовые команды — среди взрослых людей (25-49 лет) доля тех, кто постоянно пользуется голосовыми интерфейсами, даже выше, чем среди молодёжи (18-25) — 65% против 59%. А в России хотя бы раз с Siri, Google Assitant или «Алисой» общались не менее 71% населения. 45 млн россиян постоянно общаются с «Алисой» от «Яндекса», причём на долю «Яндекс.Карт»/«Яндекс.Навигатора» приходится только 30% запросов.
Кому-то распознавание речи реально помогает в работе — например, как мы говорили выше, врачам: в медицине с 1996 года (когда вышел IBM MedSpeak) распознавание применяется для записи анамнеза и при исследовании снимков — медик может продолжать работу, не отвлекаясь на записи в компьютер или бумажную карту. Кстати, работа над диктовкой в медицине ведётся не только на Западе — в России существует программа Voice2Med от «Центра речевых технологий».
Есть и иные примеры — в том числе наш собственный. Организация бизнеса Toshiba подразумевает полную инклюзию, то есть равные права и возможности для людей с различными ограничениями здоровья, в том числе для сотрудников с нарушениями слуха. У нас есть корпоративная программа Universal Design Advisor System, в рамках которой люди с различными видами инвалидности участвуют в разработке продуктов Toshiba, внося предложения для повышения их удобства людям с ограничениями здоровья — то есть мы не предполагаем, как можно сделать лучше, а оперируем реальным опытом и отзывами сотрудников.
Несколько лет назад в главном офисе Toshiba в Японии мы столкнулись с очень интересной задачей, потребовавшей разработать новую систему распознавания речи. Во время работы Universal Design Advisor System мы получили важный инсайт: сотрудники с нарушениями слуха хотят участвовать в обсуждениях на встречах и лекциях в реальном времени, а не ограничиваться чтением обработанной стенограммы часы или дни спустя. Запуск распознавания речи через смартфон в таких случаях даёт очень слабый результат, поэтому специалистам Toshiba пришлось взяться за разработку специализированной системы распознавания. И, конечно, мы сразу столкнулись с проблемами.
Разговорная речь колоссально отличается от речи письменной — мы не говорим так, как пишем письма, а реальный разговор, переведённый в текст, выглядит очень неаккуратным и даже нечитабельным. То есть, если мы будем даже с высокой точностью конвертировать диалоги на утренней планёрке в текст, то получим бессвязную мешанину, изобилующую словами-паразитами, междометиями и задумчивыми «ааа», «эээ» и «ммм». Чтобы избавиться в тексте от транскрибирования ненужных звуков, слов и выражения эмоций, мы решили разработать ИИ, способный максимально безошибочно распознавать не всегда нужные элементы разговорной речи, в том числе эмоциональный окрас некоторый слов (например, «да ну» может звучать как скепсис или как искренне удивление, а это буквально противоположные значения).
Так выглядит ноутбук с комплектом периферии для распознавания голоса с помощью ИИ Toshiba (слева) и приложение с результатами для конечных устройств (справа). Источник: Toshiba
Тут пригодилась LSTM, без которой точность распознавания была недостаточной для того, чтобы полученный текст можно было читать и понимать без усилий. Причём LSTM пригодилась не только для более точного предугадывания слов в контексте, но и для корректной обработки пауз в середине предложения и междометий-паразитов — для этого мы обучили нейросеть вот этим паразитам и паузам, естественным для разговорной речи.
Значит ли это, что теперь нейросеть может убирать из стенограмм междометия? Да, может, но делать этого не нужно. Дело в том, что (ещё один полученный инсайт) люди с нарушениями слуха ориентируются в том числе на движения губ говорящего. Если губы движутся, но на экране не появляется соответствующий этим движениям текст, возникает ощущение, будто система распознавания упустила часть беседы. То есть для того, кто не может слышать, важно получать максимум информации о разговоре, включая злосчастные паузы и меджометия. Поэтому движок Toshiba оставляет эти элементы в стенограмме, но в реальном времени приглушает яркость букв, давая понять, что это необязательные для понимания текста детали.
Вот так на клиентском устройстве выглядит результат распознавания на лету. В серый цвет окрашиваются не несущие смысловой нагрузки части монолога
Сейчас ИИ Toshiba работает с английской, японской и китайской речью, причём возможен даже перевод между языками на лету. Его не обязательно использовать для стенографирования на лету — ИИ может быть адаптирован для работы с голосовыми ассистентами, которые наконец научатся адекватно воспринимать междометия, паузы и запинки при произношении человеком команды. В марте 2019 года система успешно использовалась для добавления субтитров к видеотрансляции IPSJ National Convention, проводимой в Японии. В ближайших планах — превращение ИИ Toshiba в общедоступный сервис и опыты с внедрением распознавания голоса на производствах.