Главная » Проектирование » Распознавание речи

Распознавание речи

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

Как правило, в существующих системах используются два принципиально разных подхода:

· распознавание лексических элементов

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

Второй подход сложнее. При его реализации из потока речи выделяются отдельные лексические элементы - фонемы и аллофоны, которые затем объединяются в слоги и морфемы. Строго говоря, именно этот подход и используется в «настоящих» системах распознавания речи.

Все системы распознавания речи можно разделить на два класса:

· системы, зависимые от диктора;

· системы, не зависимые от диктора

К первому классу относятся системы, работа которых не зависит от диктора. Такие системы не требуют предварительного обучения и способны распознавать речь любого диктора.

Системы второго класса настраиваются на речь диктора в процессе обучения. Для работы с другим диктором такие системы требуют полной перенастройки.

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

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

Как это работает?

При добавлении нового контакта в записную книжку Вам предоставляется возможность ввести голосовую метку, идентифицирующую этот контакт, например, произнести в телефон имя или фамилию абонента. Возможно, придется сделать это два или три раза.

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

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

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

Эта технология работает достаточно хорошо, если телефоном пользуется только один человек, а общее количество голосовых меток не превышает десяток-другой. Если Вы «обучите» свой телефон (или клавиатуру с голосовым интерфейсом) реагировать на Ваш голос, то только Вы и сможете пользоваться речевыми метками. Таким образом, эти системы относятся к классу систем, зависимых от диктора. Впрочем, этот недостаток есть и у многих более совершенных систем распознавания речи, основанных на выделении из речи лексических элементов.

Как Вы можете убедиться, проводя осциллографические исследования (описанные нами в 3 главе), невозможно выделить из речи фонемы и аллофоны, анализируя только форму огибающей звукового сигнала. Как отмечено в , нельзя ограничиться составлением базы данных из записей звуковых сигналов всех фонем, аллофонов и других лексических элементов для последующего сравнения формы сигналов в процессе распознавания. Здесь нужны более сложные методы.

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

Отфильтрованный звуковой сигнал нужно оцифровать, выполнив аналого-цифровое преобразование. Этот этап обработки мы тоже уже обсуждали ранее.

Всю предварительную обработку звукового сигнала можно сделать при помощи стандартного звукового адаптера, установленного в компьютере. Дополнительная цифровая обработка звукового сигнала (например, частотная фильтрация) может выполняться центральным процессором компьютера. Таким образом, при использовании современных персональных компьютеров системы распознавания речи не требуют для своей работы какого-либо специального аппаратного обеспечения.

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

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

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

Для решения задачи распознавания необходимо выделить первичные признаки речи, которые будут использованы на последующих этапах процесса распознавания. Первичные признаки выделяются посредством анализа спектральных и динамических характеристик речевого сигнала.

В для выделения информативных признаков речевого сигнала используется спектральное представление речи. При этом на первом этапе осуществляется получение частотного спектра речевого сигнала с помощью набора программных полосовых фильтров (выполняя так называемое дискретное преобразование Фурье ).

На втором этапе выполняются преобразования полученного спектра речевого сигнала:

· логарифмическое изменение масштаба в пространстве амплитуд и частот;

· сглаживание спектра с целью выделения его огибающей;

· кепстральный анализ (cepstral analysis), т.е. обратное преобразование Фурье от логарифма прямого преобразования .

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

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

При этом мы можем отслеживать не только изменение параметров речи, но и скорость их изменения.

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

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

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

Распознавание слитной речи представляет собой многоуровневый процесс. После предварительной обработки речевого сигнала и выделения из него информативных признаков выполняется выделение лексических элементов речи. Это первый уровень распознавания.

На втором уровне выделяются слоги и морфемы, на третьем - слова, предложения и сообщения (рис. 5-1).

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

Рис. 5-1. Три уровня распознавания слитной речи

При переходе с уровня на уровень помимо представителей сигналов передаются и некоторые дополнительные признаки, временные зависимости и отношения между сигналами. Собирая сигналы с предыдущих уровней, высшие уровни располагают большим объемом информации (или её другим представлением), и могут осуществлять управление процессами на низших уровнях, например, с привлечением механизма внимания .

Механизм внимания используется при обучении нейронной сети. В случае использования такого механизма при появлении образца, неизвестного нейронной сети, скорость обучения многократно возрастает. При этом редко встречающийся образец запоминается в нейронной сети.

Рассказывая в 4 главе нашей книги о нейронных сетях, мы упоминали такое свойство этих сетей, как способность к обучению и классификации объектов по их числовым параметрам.

При обучении сети с учителем можно научить сеть распознавать объекты, принадлежащие заранее определенному набору классов. Если же сеть обучается без учителя, то она может группировать объекты по классам в соответствии с их цифровыми параметрами.

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

· Разработка системы заключается только в построении архитектуры системы

В процессе создания системы разработчик создает только функциональную часть, но не наполняет (или наполняет в минимальных объемах) систему информацией. Основную часть информации система получает в процессе обучения.

· Возможность контроля своих действий с последующей коррекцией

Этот принцип говорит о необходимости обратной связи Действие-Результат-Коррекция в системе. Такие цепочки очень широко распространены в сложных биологических организмах и используются на всех уровнях - от контроля мышечных сокращений на самом низком уровне до управления сложными механизмами поведения.

· Возможность накопления знаний об объектах рабочей области

Знание об объекте - это способность манипулировать его образом в памяти.

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

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

· Автономность системы

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

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

Возможность создания на базе искусственных нейронных сетей самообучающихся систем является важной предпосылкой для их применения в системах распознавания (и синтеза) речи.

После выделения информативных признаков речевого сигнала можно представить эти признаки в виде некоторого набора числовых параметров (т.е. в виде вектора в некотором числовом пространстве). Далее задача распознавания примитивов речи (фонем и аллофонов) сводится к их классификации при помощи обучаемой нейронной сети.

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

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

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

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

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

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

Генетические алгоритмы обязаны своим появлением эволюционной теории (отсюда и характерные термины: популяция, гены, родители-потомки, скрещивание, мутация). Таким образом, существует возможность создания таких нейронных сетей, которые ранее не изучались исследователями (или не поддаются аналитическому изучению), но, тем не менее, успешно решают задачу .

На рис. 5-3, который мы воспроизвели из , изображен процесс ввода звука в системе SAS .

Рис. 5-3. Процесс ввода звука в системе SAS

Ввод звука осуществляется в реальном времени через звуковую карту или через файлы формата WAV в кодировке PCM (разрядность 16 бит, частота дискретизации 22050 Гц). Работа с файлами была предусмотрена, чтобы облегчить многократное повторение обработки нейронной сети, что особенно важно при обучении.

Согласно рис. 5-3, звуковые сигналы, полученные в реальном времени или введенные из файлов формата WAV , подвергаются в системе SAS предварительной обработке.

При обработке файла по нему перемещается окно ввода, размер которого равен N элементов- размеру окна дискретного преобразования Фурье (ДПФ). Смещение окна относительно предыдущего положения можно регулировать. В каждом положении окна оно заполняется 16-разрядными данными (система работает только с такими звуковыми данными, в которых каждый отсчет кодируется 16 битами).

После ввода данных в окно перед вычислением ДПФ на него накладывается окно сглаживания Хэмминга:

Здесь Data - исходный массив данных, newData - массив данных, полученный после наложения окна сглаживания, N - размер ДПФ.

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

Рис. 5-4. Действие окна сглаживания Хэмминга (логарифмический масштаб)

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

Результат сглаживания Хэмминга подвергается в системе SAS дискретному преобразованию Фурье по алгоритму быстрого преобразования Фурье . В результате этого преобразования получается амплитудный спектр и информация о фазе сигнала (в реальных и мнимых коэффициентах).

Информация о фазе сигнала отбрасывается и вычисляется энергетический спектр:

(2)

Здесь E[i] энергии частот.

Так как звуковые данные не содержат мнимой части, то по свойству ДПФ результат получается симметричным, т.е. E[i] = E. Таким образом, размер информативной части спектра NS равен N/2.

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

Для выполнения обработки спектра нейронной сетью в системе SAS полученный спектр нормируется на 1.0. Для этого каждый компонент вектора делится на его длину:

Исследования показали, что информативность различных частей спектра неодинакова: в низкочастотной области спектра содержится больше информации, чем в высокочастотной области спектра.

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

В системе SAS применен наиболее распространенный и простой метод - логарифмическое сжатие, или mel -сжатие. Этот метод описан в разделе «Non -linear frequency scales » документа .

Вот формула, по которой выполняется логарифмическое сжатие спектра:

Здесь f -частота в спектре, Гц, m - частота в новом сжатом частотном пространстве.

Рис. 5-5 иллюстрирует процесс логарифмического сжатия частотного спектра.

Рис. 5-5. Нелинейное преобразование спектра в пространстве частот

В только что описанной системе SAS для выделения из речи синтаксических элементов применялось быстрое преобразование Фурье.

Однако, как отмечают исследователи, анализ Фурье обладает целым рядом недостатков, в результате которых происходит потеря информации о временных характеристиках обрабатываемых сигналов. Этот анализ подразумевает использование искусственных приемов, с помощью которых осуществляется частотно-временная локализация, например, окон данных (на рис. 5-3 это окно обозначено как Окно ввода ).

В современных технологиях обработки и распознавания сигналов применяются так называемые вейвлет-преобразования и вейвлет-анализ.

Термин вейвлет (wavelets ) можно перевести как «маленькая волна». Вейвлеты представляют собой новый инструмент решения различных задач прикладной математики. Вейвлет-анализ, детальное знакомство с которым требует определенных познаний в математике, лишен недостатков анализа Фурье. Он позволяет достичь неплохих результатов при использовании в системах распознавания речи.

В чем отличие анализа Фурье от вейвлет-анализа?

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

Что же касается вейвлет-анализа, то здесь входной сигнал раскладывается в базис функций, характеризующих как частоту, так и время. Поэтому с помощью вейвлетов можно анализировать свойства сигнала одновременно и в физическом пространстве (время, координата), и в частотном пространстве. Чтобы подчеркнуть такое обстоятельство, в зарубежной литературе Фурье-анализ называют single spectrum , а спектры, полученные на основе вейвлет-преобразований - itime-scale spectrum , или wavelet spectrum .

Функции-базисы для вейвлетных преобразований конструируются на основе производных функций Гаусса. Подробнее об этом Вы сможете прочитать в .

На рис. 5-6, взятом из , показаны наиболее часто используемые вейвлеты.

Рис. 5-6. Часто используемые вейвлеты

Эти функции имеют свои названия. Мы привели их в табл. 5-1.

Таблица 5-1. Часто используемые вейвлеты

Обозначение на рис. 5-6

Название

WAWE -вейвлет

MHAT -вейвлет. Получил свое название от «мексиканская шляпа, сомбреро» (Mexican Hat )

Morlet

Paul

Daubeshies

При использовании вейвлет-преобразований для распознавания речи разработчик должен выбрать нужную функцию. От правильного выбора зависит успешность распознавания.

В этой главе мы попытались собрать неполную и разрозненную информацию относительно существующих методов распознавания речи.

Прежде всего, мы выделили два подхода к распознаванию речи. Первый подход реализует распознавание элементов речи по образцу и применяется в различного рода системах голосового управления. Второй подход основан на выделении в речи лексических элементов - фонем, аллофонов, морфем и т.д. Этот подход пригоден для создания систем диктовки текста, рассмотренных нами в следующей главе.

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

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

В этой главе мы рассмотрели две методики выделения из речи лексических элементов.

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

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

Вторая методика выделения лексических элементов речи, упомянутая в этой главе, основана на применении вейвлет-преобразований. В отличие от дискретного преобразования Фурье, этот метод исключает потерю информации о временных характеристиках обрабатываемых сигналов. Мы отметили, что при использовании вейвлет-преобразований входной сигнал раскладывается не в базисе периодических функций (как в дискретном преобразовании Фурье), а в базисе функций, характеризующих как частоту, так и время.

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

Таким вот образом механические колебания превращаются в набор чисел, пригодный для обработки на современных ЭВМ.

Отсюда следует, что задача распознавания речи сводится к «сопоставлению» множества численных значений (цифрового сигнала) и слов из некоторого словаря (русского языка, например).

Давайте разберемся, как, собственно, это самое «сопоставление» может быть реализовано.

Входные данные

Допустим у нас есть некоторый файл/поток с аудиоданными. Прежде всего нам нужно понять, как он устроен и как его прочесть. Давайте рассмотрим самый простой вариант - WAV файл.

Формат подразумевает наличие в файле двух блоков. Первый блок - это заголовка с информацией об аудиопотоке: битрейте, частоте, количестве каналов, длине файла и т.д. Второй блок состоит из «сырых» данных - того самого цифрового сигнала, набора значений амплитуд.

Логика чтения данных в этом случае довольно проста. Считываем заголовок, проверяем некоторые ограничения (отсутствие сжатия, например), сохраняем данные в специально выделенный массив.

Распознавание

Чисто теоретически, теперь мы можем сравнить (поэлементно) имеющийся у нас образец с каким-нибудь другим, текст которого нам уже известен. То есть попробовать «распознать» речь… Но лучше этого не делать:)

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

Поэтому мы пойдем несколько иным путём.

Фреймы

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

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

Опытным путём установлено, что оптимальная длина фрейма должна соответствовать промежутку в 10мс, «нахлёст» - 50%. С учётом того, что средняя длина слова (по крайней мере в моих экспериментах) составляет 500мс - такой шаг даст нам примерно 500 / (10 * 0.5) = 100 фреймов на слово.

Разбиение слов

Первой задачей, которую приходится решать при распознавании речи, является разбиение этой самой речи на отдельные слова. Для простоты предположим, что в нашем случае речь содержит в себе некоторые паузы (промежутки тишины), которые можно считать “разделителями” слов.

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

  • задать константой (сработает, если исходный сигнал всегда генерируется при одних и тех же условиях, одним и тем же способом);
  • кластеризовать значения сигнала, явно выделив множество значений соответствующих тишине (сработает только если тишина занимает значительную часть исходного сигнала);
  • проанализировать энтропию;

Как вы уже догадались, речь сейчас пойдёт о последнем пункте:) Начнём с того, что энтропия - это мера беспорядка, “мера неопределённости какого-либо опыта” (с). В нашем случае энтропия означает то, как сильно “колеблется” наш сигнал в рамках заданного фрейма.

  • предположим, что наш сигнал пронормирован и все его значения лежат в диапазоне [-1;1];
  • построим гистограмму (плотность распределения) значений сигнала фрейма:

И так, мы получили значение энтропии. Но это всего лишь ещё одна характеристика фрейма, и для того, что бы отделить звук от тишины, нам по прежнему нужно её с чем-то сравнивать. В некоторых статьях рекомендуют брать порог энтропии равным среднему между её максимальным и минимальным значениями (среди всех фреймов). Однако, в моём случае такой подход не дал сколь либо хороших результатов.
К счастью, энтропия (в отличие от того же среднего квадрата значений) - величина относительно самостоятельная. Что позволило мне подобрать значение её порога в виде константы (0.1).

Тем не менее проблемы на этом не заканчиваются:(Энтропия может проседать по середине слова (на гласных), а может внезапно вскакивать из-за небольшого шума. Для того, что бы бороться с первой проблемой, приходится вводить понятие “минимально расстояния между словами” и “склеивать” близ лежачие наборы фреймов, разделённые из-за проседания. Вторая проблема решается использованием “минимальной длины слова” и отсечением всех кандидатов, не прошедших отбор (и не использованных в первом пункте).

Если же речь в принципе не является “членораздельной”, можно попробовать разбить исходный набор фреймов на определённым образом подготовленные подпоследовательности, каждая из которых будет подвергнута процедуре распознавания. Но это уже совсем другая история:)

MFCC

И так, мы у нас есть набор фреймов, соответствующих определённому слову. Мы можем пойти по пути наименьшего сопротивления и в качестве численной характеристики фрейма использовать средний квадрат всех его значений (Root Mean Square). Однако, такая метрика несёт в себе крайне мало пригодной для дальнейшего анализа информации.

Вот тут в игру и вступают Мел-частотные кепстральные коэффициенты (Mel-frequency cepstral coefficients). Согласно Википедии (которая, как известно, не врёт) MFCC - это своеобразное представление энергии спектра сигнала. Плюсы его использования заключаются в следующем:

  • Используется спектр сигнала (то есть разложение по базису ортогональных [ко]синусоидальных функций), что позволяет учитывать волновую “природу” сигнала при дальнейшем анализе;
  • Спектр проецируется на специальную mel-шкалу , позволяя выделить наиболее значимые для восприятия человеком частоты;
  • Количество вычисляемых коэффициентов может быть ограничено любым значением (например, 12), что позволяет “сжать” фрейм и, как следствие, количество обрабатываемой информации;

Давайте рассмотрим процесс вычисления MFCC коэффициентов для некоторого фрейма.

Представим наш фрейм в виде вектора , где N - размер фрейма.

Разложение в ряд Фурье

Первым делом рассчитываем спектр сигнала с помощью дискретного преобразования Фурье (желательно его “быстрой” FFT реализацией).

То есть результатом будет вектор следующего вида:

Важно понимать, что после этого преобразования по оси Х мы имеем частоту (hz) сигнала, а по оси Y - магнитуду (как способ уйти от комплексных значений):

Расчёт mel-фильтров

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

Преобразовать частоту в мел можно по следующей формуле (запомним её как «формула-1»):

Обратное преобразование выглядит так (запомним её как «формула-2»):

График зависимости mel / частота:

Но вернёмся к нашей задаче. Допустим у нас есть фрейм размером 256 элементов. Мы знаем (из данных об аудиоформате), что частота звука в данной фрейме 16000hz. Предположим, что человеческая речь лежит в диапазоне от hz. Количество искомых мел-коэффициентов положим M = 10 (рекомендуемое значение).

Для того, что бы разложить полученный выше спектр по mel-шкале, нам потребуется создать “гребёнку” фильтров. По сути, каждый mel-фильтр это треугольная оконная функция , которая позволяет просуммировать количество энергии на определённом диапазоне частот и тем самым получить mel-коэффициент. Зная количество мел-коэффициентов и анализируемый диапазон частот мы можем построить набор таких вот фильтров:

Обратите внимание, что чем больше порядковый номер мел-коэффициента, тем шире основание фильтра. Это связано с тем, что разбиение интересующего нас диапазона частот на обрабатываемые фильтрами диапазоны происходит на шкале мелов.

Но мы опять отвлеклись. И так для нашего случая диапазон интересующих нас частот равен . Согласно формуле-1 в на мел-шкале этот диапазон превращается в .

m[i] =

Обратите внимание, что на мел-шкале точки расположены равномерно. Переведём шкалу обратно в герцы с помощью формулы-2:

h[i] =

Как видите теперь шкала стала постепенно растягиваться, выравнивая тем самым динамику роста “значимости” на низких и высоких частотах.

Теперь нам нужно наложить полученную шкалу на спектр нашего фрейма. Как мы помним, по оси Х у нас находится частота. Длина спектра 256 - элементов, при этом в него умещается 16000hz. Решив нехитрую пропорцию можно получить следующую формулу:

f(i) = floor((frameSize+1) * h(i) / sampleRate)

что в нашем случае эквивалентно

f(i) = 4, 8, 12, 17, 23, 31, 40, 52, 66, 82, 103, 128

Вот и всё! Зная опорные точки на оси Х нашего спектра, легко построить необходимые нам фильтры по следующей формуле:

Применение фильтров, логарифмирование энергии спектра

Применение фильтра заключается в попарном перемножении его значений со значениями спектра. Результатом этой операции является mel-коэффициент. Поскольку фильтров у нас M, коэффициентов будет столько же.

Однако, нам нужно применить mel-фильтры не к значениям спектра, а к его энергии. После чего прологарифмировать полученные результаты. Считается, что таким образом понижается чувствительность коэффициентов к шумам.

Косинусное преобразование

Дискретное косинусное преобразование (DCT) используется для того, что бы получить те самые “кепстральные” коэффициенты. Смысл его в том, что бы “сжать” полученные результаты, повысив значимость первых коэффициентов и уменьшив значимость последних.

В данном случае используется DCTII без каких-либо домножений на (scale factor).

Теперь для каждого фрейма мы имеем набор из M mfcc-коэффициентов, которые могут быть использованы для дальнейшего анализа.

Примеры код для вышележащих методов можно найти .

Алгоритм распознавания

Вот тут, дорогой читатель, тебя и ждёт главное разочарование. В интернетах мне довелось увидеть множество высокоинтеллектуальных (и не очень) споров о том, какой же способ распознавания лучше. Кто-то ратует за Скрытые Марковские Модели, кто-то - за нейронные сети, чьи-то мысли в принципе невозможно понять:)

В любом случае немало предпочтений отдаётся именно СММ , и именно их реализацию я собираюсь добавить в свой код… в будущем:)

На данный момент, предлагаю остановится на гораздо менее эффективном, но в разы более простом способе.

И так, вспомним, что наша задача заключается в распознавании слова из некоторого словаря. Для простоты, будем распознавать называния первых десять цифр: “один“, “два“, “три“, “четыре“, “пять“, “шесть“, “семь“, “восемь“, “девять“, “десять“.

Теперь возьмем в руки айфон/андроид и пройдёмся по L коллегам с просьбой продиктовать эти слова под запись. Далее поставим в соответствие (в какой-нибудь локальной БД или простом файле) каждому слову L наборов mfcc-коэффициентов соответствующих записей.

Это соответствие мы назовём “Модель”, а сам процесс - Machine Learning! На самом деле простое добавление новых образцов в базу имеет крайне слабую связь с машинным обучением… Но уж больно термин модный:)

Теперь наша задача сводится к подбору наиболее “близкой” модели для некоторого набора mfcc-коэффициентов (распознаваемого слова). На первый взгляд задачу можно решить довольно просто:

  • для каждой модели находим среднее (евклидово) расстояние между идентифицируемым mfcc-вектором и векторами модели;
  • выбираем в качестве верной ту модель, среднее расстояние до которой будет наименьшим;

Однако, одно и тоже слово может произносится как Андреем Малаховым, так и каким-нибудь его эстонским коллегой. Другими словами размер mfcc-вектора для одного и того же слова может быть разный.

К счастью, задача сравнения последовательностей разной длины уже решена в виде Dynamic Time Warping алгоритма. Этот алгоритм динамическо программирования прекрасно расписан как в буржуйской Wiki , так и на православном Хабре .

Единственное изменение, которое в него стоит внести - это способ нахождения дистанции. Мы должны помнить, что mfcc-вектор модели - на самом деле последовательность mfcc-“подвекторов” размерности M, полученных из фреймов. Так вот, DTW алгоритм должен находить дистанцию между последовательностями эти самых “подвекторов” размерности M. То есть в качестве значений матрицы расстояний должны использовать расстояния (евклидовы) между mfcc-“подвекторами” фреймов.

Эксперименты

У меня не было возможности проверить работу данного подхода на большой “обучающей” выборке. Результаты же тестов на выборке из 3х экземпляров для каждого слова в несинтетических условиях показали мягко говоря нелучший результат - 65% верных распознаваний.

Тем не менее моей задачей было создание максимального простого приложения для распознавания речи. Так сказать “proof of concept” :)

  • Tutorial

В этой статье я хочу рассмотреть основы такой интереснейшей области разработки ПО как Распознавание Речи. Экспертом в данной теме я, естественно, не являюсь, поэтому мой рассказ будет изобиловать неточностями, ошибками и разочарованиями. Тем не менее, главной целью моего «труда», как можно понять из названия, является не профессиональный разбор проблемы, а описание базовых понятий, проблем и их решений. В общем, прошу всех заинтересовавшихся пожаловать под кат!

Пролог

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

Таким вот образом механические колебания превращаются в набор чисел, пригодный для обработки на современных ЭВМ.

Отсюда следует, что задача распознавания речи сводится к «сопоставлению» множества численных значений (цифрового сигнала) и слов из некоторого словаря (русского языка, например).

Давайте разберемся, как, собственно, это самое «сопоставление» может быть реализовано.

Входные данные

Допустим у нас есть некоторый файл/поток с аудиоданными. Прежде всего нам нужно понять, как он устроен и как его прочесть. Давайте рассмотрим самый простой вариант - WAV файл.

Формат подразумевает наличие в файле двух блоков. Первый блок - это заголовка с информацией об аудиопотоке: битрейте, частоте, количестве каналов, длине файла и т.д. Второй блок состоит из «сырых» данных - того самого цифрового сигнала, набора значений амплитуд.

Логика чтения данных в этом случае довольно проста. Считываем заголовок, проверяем некоторые ограничения (отсутствие сжатия, например), сохраняем данные в специально выделенный массив.

Распознавание

Чисто теоретически, теперь мы можем сравнить (поэлементно) имеющийся у нас образец с каким-нибудь другим, текст которого нам уже известен. То есть попробовать «распознать» речь… Но лучше этого не делать:)

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

Поэтому мы пойдем несколько иным путём.

Фреймы

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

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

Опытным путём установлено, что оптимальная длина фрейма должна соответствовать промежутку в 10мс, «нахлёст» - 50%. С учётом того, что средняя длина слова (по крайней мере в моих экспериментах) составляет 500мс - такой шаг даст нам примерно 500 / (10 * 0.5) = 100 фреймов на слово.

Разбиение слов

Первой задачей, которую приходится решать при распознавании речи, является разбиение этой самой речи на отдельные слова. Для простоты предположим, что в нашем случае речь содержит в себе некоторые паузы (промежутки тишины), которые можно считать “разделителями” слов.

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

  • задать константой (сработает, если исходный сигнал всегда генерируется при одних и тех же условиях, одним и тем же способом);
  • кластеризовать значения сигнала, явно выделив множество значений соответствующих тишине (сработает только если тишина занимает значительную часть исходного сигнала);
  • проанализировать энтропию;

Как вы уже догадались, речь сейчас пойдёт о последнем пункте:) Начнём с того, что энтропия - это мера беспорядка, “мера неопределённости какого-либо опыта” (с). В нашем случае энтропия означает то, как сильно “колеблется” наш сигнал в рамках заданного фрейма.

  • предположим, что наш сигнал пронормирован и все его значения лежат в диапазоне [-1;1];
  • построим гистограмму (плотность распределения) значений сигнала фрейма:
рассчитаем энтропию, как ;

И так, мы получили значение энтропии. Но это всего лишь ещё одна характеристика фрейма, и для того, что бы отделить звук от тишины, нам по прежнему нужно её с чем-то сравнивать. В некоторых статьях рекомендуют брать порог энтропии равным среднему между её максимальным и минимальным значениями (среди всех фреймов). Однако, в моём случае такой подход не дал сколь либо хороших результатов.
К счастью, энтропия (в отличие от того же среднего квадрата значений) - величина относительно самостоятельная. Что позволило мне подобрать значение её порога в виде константы (0.1).

Тем не менее проблемы на этом не заканчиваются:(Энтропия может проседать по середине слова (на гласных), а может внезапно вскакивать из-за небольшого шума. Для того, что бы бороться с первой проблемой, приходится вводить понятие “минимально расстояния между словами” и “склеивать” близ лежачие наборы фреймов, разделённые из-за проседания. Вторая проблема решается использованием “минимальной длины слова” и отсечением всех кандидатов, не прошедших отбор (и не использованных в первом пункте).

Если же речь в принципе не является “членораздельной”, можно попробовать разбить исходный набор фреймов на определённым образом подготовленные подпоследовательности, каждая из которых будет подвергнута процедуре распознавания. Но это уже совсем другая история:)

И так, мы у нас есть набор фреймов, соответствующих определённому слову. Мы можем пойти по пути наименьшего сопротивления и в качестве численной характеристики фрейма использовать средний квадрат всех его значений (Root Mean Square). Однако, такая метрика несёт в себе крайне мало пригодной для дальнейшего анализа информации.

Вот тут в игру и вступают Мел-частотные кепстральные коэффициенты (Mel-frequency cepstral coefficients). Согласно Википедии (которая, как известно, не врёт) MFCC - это своеобразное представление энергии спектра сигнала. Плюсы его использования заключаются в следующем:

  • Используется спектр сигнала (то есть разложение по базису ортогональных [ко]синусоидальных функций), что позволяет учитывать волновую “природу” сигнала при дальнейшем анализе;
  • Спектр проецируется на специальную mel-шкалу , позволяя выделить наиболее значимые для восприятия человеком частоты;
  • Количество вычисляемых коэффициентов может быть ограничено любым значением (например, 12), что позволяет “сжать” фрейм и, как следствие, количество обрабатываемой информации;

Давайте рассмотрим процесс вычисления MFCC коэффициентов для некоторого фрейма.

Представим наш фрейм в виде вектора , где N - размер фрейма.

Разложение в ряд Фурье

Первым делом рассчитываем спектр сигнала с помощью дискретного преобразования Фурье (желательно его “быстрой” FFT реализацией).

То есть результатом будет вектор следующего вида:

Важно понимать, что после этого преобразования по оси Х мы имеем частоту (hz) сигнала, а по оси Y - магнитуду (как способ уйти от комплексных значений):

Расчёт mel-фильтров

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

Преобразовать частоту в мел можно по следующей формуле (запомним её как «формула-1»):

Обратное преобразование выглядит так (запомним её как «формула-2»):

График зависимости mel / частота:

Но вернёмся к нашей задаче. Допустим у нас есть фрейм размером 256 элементов. Мы знаем (из данных об аудиоформате), что частота звука в данной фрейме 16000hz. Предположим, что человеческая речь лежит в диапазоне от hz. Количество искомых мел-коэффициентов положим M = 10 (рекомендуемое значение).

Для того, что бы разложить полученный выше спектр по mel-шкале, нам потребуется создать “гребёнку” фильтров. По сути, каждый mel-фильтр это треугольная оконная функция , которая позволяет просуммировать количество энергии на определённом диапазоне частот и тем самым получить mel-коэффициент. Зная количество мел-коэффициентов и анализируемый диапазон частот мы можем построить набор таких вот фильтров:

Обратите внимание, что чем больше порядковый номер мел-коэффициента, тем шире основание фильтра. Это связано с тем, что разбиение интересующего нас диапазона частот на обрабатываемые фильтрами диапазоны происходит на шкале мелов.

Но мы опять отвлеклись. И так для нашего случая диапазон интересующих нас частот равен . Согласно формуле-1 в на мел-шкале этот диапазон превращается в .

m[i] =

Обратите внимание, что на мел-шкале точки расположены равномерно. Переведём шкалу обратно в герцы с помощью формулы-2:

h[i] =

Как видите теперь шкала стала постепенно растягиваться, выравнивая тем самым динамику роста “значимости” на низких и высоких частотах.

Теперь нам нужно наложить полученную шкалу на спектр нашего фрейма. Как мы помним, по оси Х у нас находится частота. Длина спектра 256 - элементов, при этом в него умещается 16000hz. Решив нехитрую пропорцию можно получить следующую формулу:

f(i) = floor((frameSize+1) * h(i) / sampleRate)

Что в нашем случае эквивалентно

f(i) = 4, 8, 12, 17, 23, 31, 40, 52, 66, 82, 103, 128

Вот и всё! Зная опорные точки на оси Х нашего спектра, легко построить необходимые нам фильтры по следующей формуле:

Применение фильтров, логарифмирование энергии спектра

Применение фильтра заключается в попарном перемножении его значений со значениями спектра. Результатом этой операции является mel-коэффициент. Поскольку фильтров у нас M, коэффициентов будет столько же.

Однако, нам нужно применить mel-фильтры не к значениям спектра, а к его энергии. После чего прологарифмировать полученные результаты. Считается, что таким образом понижается чувствительность коэффициентов к шумам.

Косинусное преобразование

Дискретное косинусное преобразование (DCT) используется для того, что бы получить те самые “кепстральные” коэффициенты. Смысл его в том, что бы “сжать” полученные результаты, повысив значимость первых коэффициентов и уменьшив значимость последних.

В данном случае используется DCTII без каких-либо домножений на (scale factor).

Теперь для каждого фрейма мы имеем набор из M mfcc-коэффициентов, которые могут быть использованы для дальнейшего анализа.

Примеры код для вышележащих методов можно найти .

Алгоритм распознавания

Вот тут, дорогой читатель, тебя и ждёт главное разочарование. В интернетах мне довелось увидеть множество высокоинтеллектуальных (и не очень) споров о том, какой же способ распознавания лучше. Кто-то ратует за Скрытые Марковские Модели, кто-то - за нейронные сети, чьи-то мысли в принципе невозможно понять:)

В любом случае немало предпочтений отдаётся именно СММ , и именно их реализацию я собираюсь добавить в свой код… в будущем:)

На данный момент, предлагаю остановится на гораздо менее эффективном, но в разы более простом способе.

И так, вспомним, что наша задача заключается в распознавании слова из некоторого словаря. Для простоты, будем распознавать называния первых десять цифр: “один“, “два“, “три“, “четыре“, “пять“, “шесть“, “семь“, “восемь“, “девять“, “десять“.

Теперь возьмем в руки айфон/андроид и пройдёмся по L коллегам с просьбой продиктовать эти слова под запись. Далее поставим в соответствие (в какой-нибудь локальной БД или простом файле) каждому слову L наборов mfcc-коэффициентов соответствующих записей.

Это соответствие мы назовём “Модель”, а сам процесс - Machine Learning! На самом деле простое добавление новых образцов в базу имеет крайне слабую связь с машинным обучением… Но уж больно термин модный:)

Теперь наша задача сводится к подбору наиболее “близкой” модели для некоторого набора mfcc-коэффициентов (распознаваемого слова). На первый взгляд задачу можно решить довольно просто:

  • для каждой модели находим среднее (евклидово) расстояние между идентифицируемым mfcc-вектором и векторами модели;
  • выбираем в качестве верной ту модель, среднее расстояние до которой будет наименьшим;

Однако, одно и тоже слово может произносится как Андреем Малаховым, так и каким-нибудь его эстонским коллегой. Другими словами размер mfcc-вектора для одного и того же слова может быть разный.

К счастью, задача сравнения последовательностей разной длины уже решена в виде Dynamic Time Warping алгоритма. Этот алгоритм динамическо программирования прекрасно расписан как в буржуйской Wiki , так и на православном .

Единственное изменение, которое в него стоит внести - это способ нахождения дистанции. Мы должны помнить, что mfcc-вектор модели - на самом деле последовательность mfcc-“подвекторов” размерности M, полученных из фреймов. Так вот, DTW алгоритм должен находить дистанцию между последовательностями эти самых “подвекторов” размерности M. То есть в качестве значений матрицы расстояний должны использовать расстояния (евклидовы) между mfcc-“подвекторами” фреймов.

Эксперименты

У меня не было возможности проверить работу данного подхода на большой “обучающей” выборке. Результаты же тестов на выборке из 3х экземпляров для каждого слова в несинтетических условиях показали мягко говоря нелучший результат - 65% верных распознаваний.

Тем не менее моей задачей было создание максимального простого приложения для распознавания речи. Так сказать “proof of concept” :) Добавить метки

  • Tutorial

В этой статье я хочу рассмотреть основы такой интереснейшей области разработки ПО как Распознавание Речи. Экспертом в данной теме я, естественно, не являюсь, поэтому мой рассказ будет изобиловать неточностями, ошибками и разочарованиями. Тем не менее, главной целью моего «труда», как можно понять из названия, является не профессиональный разбор проблемы, а описание базовых понятий, проблем и их решений. В общем, прошу всех заинтересовавшихся пожаловать под кат!

Пролог

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

Таким вот образом механические колебания превращаются в набор чисел, пригодный для обработки на современных ЭВМ.

Отсюда следует, что задача распознавания речи сводится к «сопоставлению» множества численных значений (цифрового сигнала) и слов из некоторого словаря (русского языка, например).

Давайте разберемся, как, собственно, это самое «сопоставление» может быть реализовано.

Входные данные

Допустим у нас есть некоторый файл/поток с аудиоданными. Прежде всего нам нужно понять, как он устроен и как его прочесть. Давайте рассмотрим самый простой вариант - WAV файл.

Формат подразумевает наличие в файле двух блоков. Первый блок - это заголовка с информацией об аудиопотоке: битрейте, частоте, количестве каналов, длине файла и т.д. Второй блок состоит из «сырых» данных - того самого цифрового сигнала, набора значений амплитуд.

Логика чтения данных в этом случае довольно проста. Считываем заголовок, проверяем некоторые ограничения (отсутствие сжатия, например), сохраняем данные в специально выделенный массив.

Распознавание

Чисто теоретически, теперь мы можем сравнить (поэлементно) имеющийся у нас образец с каким-нибудь другим, текст которого нам уже известен. То есть попробовать «распознать» речь… Но лучше этого не делать:)

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

Поэтому мы пойдем несколько иным путём.

Фреймы

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

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

Опытным путём установлено, что оптимальная длина фрейма должна соответствовать промежутку в 10мс, «нахлёст» - 50%. С учётом того, что средняя длина слова (по крайней мере в моих экспериментах) составляет 500мс - такой шаг даст нам примерно 500 / (10 * 0.5) = 100 фреймов на слово.

Разбиение слов

Первой задачей, которую приходится решать при распознавании речи, является разбиение этой самой речи на отдельные слова. Для простоты предположим, что в нашем случае речь содержит в себе некоторые паузы (промежутки тишины), которые можно считать “разделителями” слов.

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

  • задать константой (сработает, если исходный сигнал всегда генерируется при одних и тех же условиях, одним и тем же способом);
  • кластеризовать значения сигнала, явно выделив множество значений соответствующих тишине (сработает только если тишина занимает значительную часть исходного сигнала);
  • проанализировать энтропию;

Как вы уже догадались, речь сейчас пойдёт о последнем пункте:) Начнём с того, что энтропия - это мера беспорядка, “мера неопределённости какого-либо опыта” (с). В нашем случае энтропия означает то, как сильно “колеблется” наш сигнал в рамках заданного фрейма.

  • предположим, что наш сигнал пронормирован и все его значения лежат в диапазоне [-1;1];
  • построим гистограмму (плотность распределения) значений сигнала фрейма:
рассчитаем энтропию, как ;

И так, мы получили значение энтропии. Но это всего лишь ещё одна характеристика фрейма, и для того, что бы отделить звук от тишины, нам по прежнему нужно её с чем-то сравнивать. В некоторых статьях рекомендуют брать порог энтропии равным среднему между её максимальным и минимальным значениями (среди всех фреймов). Однако, в моём случае такой подход не дал сколь либо хороших результатов.
К счастью, энтропия (в отличие от того же среднего квадрата значений) - величина относительно самостоятельная. Что позволило мне подобрать значение её порога в виде константы (0.1).

Тем не менее проблемы на этом не заканчиваются:(Энтропия может проседать по середине слова (на гласных), а может внезапно вскакивать из-за небольшого шума. Для того, что бы бороться с первой проблемой, приходится вводить понятие “минимально расстояния между словами” и “склеивать” близ лежачие наборы фреймов, разделённые из-за проседания. Вторая проблема решается использованием “минимальной длины слова” и отсечением всех кандидатов, не прошедших отбор (и не использованных в первом пункте).

Если же речь в принципе не является “членораздельной”, можно попробовать разбить исходный набор фреймов на определённым образом подготовленные подпоследовательности, каждая из которых будет подвергнута процедуре распознавания. Но это уже совсем другая история:)

И так, мы у нас есть набор фреймов, соответствующих определённому слову. Мы можем пойти по пути наименьшего сопротивления и в качестве численной характеристики фрейма использовать средний квадрат всех его значений (Root Mean Square). Однако, такая метрика несёт в себе крайне мало пригодной для дальнейшего анализа информации.

Вот тут в игру и вступают Мел-частотные кепстральные коэффициенты (Mel-frequency cepstral coefficients). Согласно Википедии (которая, как известно, не врёт) MFCC - это своеобразное представление энергии спектра сигнала. Плюсы его использования заключаются в следующем:

  • Используется спектр сигнала (то есть разложение по базису ортогональных [ко]синусоидальных функций), что позволяет учитывать волновую “природу” сигнала при дальнейшем анализе;
  • Спектр проецируется на специальную mel-шкалу , позволяя выделить наиболее значимые для восприятия человеком частоты;
  • Количество вычисляемых коэффициентов может быть ограничено любым значением (например, 12), что позволяет “сжать” фрейм и, как следствие, количество обрабатываемой информации;

Давайте рассмотрим процесс вычисления MFCC коэффициентов для некоторого фрейма.

Представим наш фрейм в виде вектора , где N - размер фрейма.

Разложение в ряд Фурье

Первым делом рассчитываем спектр сигнала с помощью дискретного преобразования Фурье (желательно его “быстрой” FFT реализацией).

То есть результатом будет вектор следующего вида:

Важно понимать, что после этого преобразования по оси Х мы имеем частоту (hz) сигнала, а по оси Y - магнитуду (как способ уйти от комплексных значений):

Расчёт mel-фильтров

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

Преобразовать частоту в мел можно по следующей формуле (запомним её как «формула-1»):

Обратное преобразование выглядит так (запомним её как «формула-2»):

График зависимости mel / частота:

Но вернёмся к нашей задаче. Допустим у нас есть фрейм размером 256 элементов. Мы знаем (из данных об аудиоформате), что частота звука в данной фрейме 16000hz. Предположим, что человеческая речь лежит в диапазоне от hz. Количество искомых мел-коэффициентов положим M = 10 (рекомендуемое значение).

Для того, что бы разложить полученный выше спектр по mel-шкале, нам потребуется создать “гребёнку” фильтров. По сути, каждый mel-фильтр это треугольная оконная функция , которая позволяет просуммировать количество энергии на определённом диапазоне частот и тем самым получить mel-коэффициент. Зная количество мел-коэффициентов и анализируемый диапазон частот мы можем построить набор таких вот фильтров:

Обратите внимание, что чем больше порядковый номер мел-коэффициента, тем шире основание фильтра. Это связано с тем, что разбиение интересующего нас диапазона частот на обрабатываемые фильтрами диапазоны происходит на шкале мелов.

Но мы опять отвлеклись. И так для нашего случая диапазон интересующих нас частот равен . Согласно формуле-1 в на мел-шкале этот диапазон превращается в .

m[i] =

Обратите внимание, что на мел-шкале точки расположены равномерно. Переведём шкалу обратно в герцы с помощью формулы-2:

h[i] =

Как видите теперь шкала стала постепенно растягиваться, выравнивая тем самым динамику роста “значимости” на низких и высоких частотах.

Теперь нам нужно наложить полученную шкалу на спектр нашего фрейма. Как мы помним, по оси Х у нас находится частота. Длина спектра 256 - элементов, при этом в него умещается 16000hz. Решив нехитрую пропорцию можно получить следующую формулу:

f(i) = floor((frameSize+1) * h(i) / sampleRate)

Что в нашем случае эквивалентно

f(i) = 4, 8, 12, 17, 23, 31, 40, 52, 66, 82, 103, 128

Вот и всё! Зная опорные точки на оси Х нашего спектра, легко построить необходимые нам фильтры по следующей формуле:

Применение фильтров, логарифмирование энергии спектра

Применение фильтра заключается в попарном перемножении его значений со значениями спектра. Результатом этой операции является mel-коэффициент. Поскольку фильтров у нас M, коэффициентов будет столько же.

Однако, нам нужно применить mel-фильтры не к значениям спектра, а к его энергии. После чего прологарифмировать полученные результаты. Считается, что таким образом понижается чувствительность коэффициентов к шумам.

Косинусное преобразование

Дискретное косинусное преобразование (DCT) используется для того, что бы получить те самые “кепстральные” коэффициенты. Смысл его в том, что бы “сжать” полученные результаты, повысив значимость первых коэффициентов и уменьшив значимость последних.

В данном случае используется DCTII без каких-либо домножений на (scale factor).

Теперь для каждого фрейма мы имеем набор из M mfcc-коэффициентов, которые могут быть использованы для дальнейшего анализа.

Примеры код для вышележащих методов можно найти .

Алгоритм распознавания

Вот тут, дорогой читатель, тебя и ждёт главное разочарование. В интернетах мне довелось увидеть множество высокоинтеллектуальных (и не очень) споров о том, какой же способ распознавания лучше. Кто-то ратует за Скрытые Марковские Модели, кто-то - за нейронные сети, чьи-то мысли в принципе невозможно понять:)

В любом случае немало предпочтений отдаётся именно СММ , и именно их реализацию я собираюсь добавить в свой код… в будущем:)

На данный момент, предлагаю остановится на гораздо менее эффективном, но в разы более простом способе.

И так, вспомним, что наша задача заключается в распознавании слова из некоторого словаря. Для простоты, будем распознавать называния первых десять цифр: “один“, “два“, “три“, “четыре“, “пять“, “шесть“, “семь“, “восемь“, “девять“, “десять“.

Теперь возьмем в руки айфон/андроид и пройдёмся по L коллегам с просьбой продиктовать эти слова под запись. Далее поставим в соответствие (в какой-нибудь локальной БД или простом файле) каждому слову L наборов mfcc-коэффициентов соответствующих записей.

Это соответствие мы назовём “Модель”, а сам процесс - Machine Learning! На самом деле простое добавление новых образцов в базу имеет крайне слабую связь с машинным обучением… Но уж больно термин модный:)

Теперь наша задача сводится к подбору наиболее “близкой” модели для некоторого набора mfcc-коэффициентов (распознаваемого слова). На первый взгляд задачу можно решить довольно просто:

  • для каждой модели находим среднее (евклидово) расстояние между идентифицируемым mfcc-вектором и векторами модели;
  • выбираем в качестве верной ту модель, среднее расстояние до которой будет наименьшим;

Однако, одно и тоже слово может произносится как Андреем Малаховым, так и каким-нибудь его эстонским коллегой. Другими словами размер mfcc-вектора для одного и того же слова может быть разный.

К счастью, задача сравнения последовательностей разной длины уже решена в виде Dynamic Time Warping алгоритма. Этот алгоритм динамическо программирования прекрасно расписан как в буржуйской Wiki , так и на православном Хабре .

Единственное изменение, которое в него стоит внести - это способ нахождения дистанции. Мы должны помнить, что mfcc-вектор модели - на самом деле последовательность mfcc-“подвекторов” размерности M, полученных из фреймов. Так вот, DTW алгоритм должен находить дистанцию между последовательностями эти самых “подвекторов” размерности M. То есть в качестве значений матрицы расстояний должны использовать расстояния (евклидовы) между mfcc-“подвекторами” фреймов.

Эксперименты

У меня не было возможности проверить работу данного подхода на большой “обучающей” выборке. Результаты же тестов на выборке из 3х экземпляров для каждого слова в несинтетических условиях показали мягко говоря нелучший результат - 65% верных распознаваний.

Тем не менее моей задачей было создание максимального простого приложения для распознавания речи. Так сказать “proof of concept” :) Добавить метки

В представленной работе преимущественно разбирались по частям компании с Северной Америки и Европы. Рынок Азии представлен в исследовании слабо. Но все эти детали пожалуй оставим пока у себя. Однако очень интересно описаны тренды и текущая характеристика отрасли, что само по себе очень интересно - тем более ее можно изложить в различных вариациях не теряя общей сути. Не будем томить - пожалуй начнем описывать самые интересные моменты, куда движется все-таки отрасль распознавания речи и что нас ждет в ближайшем будущем (2012 - 2016 гг.) - как уверяют исследователи.

Введение

Системы распознавания голоса – это вычислительные системы, которые могут определять речь говорящего из общего потока. Эта технология связана с технологией распознавания речи, которая преобразует произнесенные слова в цифровые текстовые сигналы, путем проведения процесса распознавания речи машинами. Обе эти технологии используются параллельно: с одной стороны для идентификации голоса конкретного пользователя с другой стороны для идентификация голосовых команд посредством распознавания речи. Распознавание голоса используется в биометрических целях безопасности, чтобы определить голос конкретного человека. Эта технология стала очень популярной в мобильном банкинге, который требует идентификации подлинности пользователей, а также для других голосовых команд, чтобы помочь им совершать сделки.

Мировой рынок распознавания речи является одним из самых быстрорастущих рынков в голосовой индустрии. Большая часть роста на рынке приходит из Америки, а затем из Европы, Ближнего Востока и Африки (EMEA) и Азиатско-Тихоокеанского региона (АТР). Большая часть роста на рынке происходит от здравоохранения, финансовых услуг, и государственного сектора. Однако в других сегментах, таких как телекоммуникации и транспорт ожидается значительное увеличение роста в ближайшие несколько лет. Прогноз рынка, дальнейшее увеличение со среднегодовым темпом роста в 22,07 процента в период 2012-2016 гг. (показатели динамики роста текущих компаний).

Драйверы роста рынка

Рост мирового рынка распознавания голоса зависит от множества факторов. Одним из основных факторов является увеличение спроса на услуги голосовой биометрии. С увеличением сложности и частоты нарушений безопасности, безопасность продолжает оставаться одним из основных требований для предприятий, а также государственных организаций. Высокий спрос голосовой биометрии, которая является уникальной для любого человека, имеет решающее значение в установлении личности человека. Другим ключевым фактором для рынка является более широкое использование идентификации диктора для судебно-медицинских целей.

Некоторые из основных факторов мирового рынка распознавания речи:
Увеличение спроса на услуги голосовой биометрии
Более широкое использование идентификации диктора для судебно-медицинских целей
Спрос на распознавания речи в военных целях
Высокий спрос для распознавания голоса в сфере здравоохранения

Изначально, слово «биометрия» встречалось только в медицинской теории. Тем не менее, стали возрастать потребности в безопасности с использованием биометрических технологий среди предприятий и государственных учреждений. Использование биометрических технологий – один из ключевых факторов на мировом рынке распознавания речи. Распознавание голоса используется проверки подлинности человека, так как голос каждого человека индивидуален. Это обеспечит высокий уровень точности и безопасности. Распознавание голоса имеет большое значение в финансовых институтах, таких как банк, а так же на предприятиях в сфере здравоохранения. В настоящее время сегмент распознавания речи составляет 3,5% от доли технологий биометрии на мировом рынке, но это доля имеет постоянный рост. Также низкая стоимость биометрических устройств увеличивает спрос со стороны малого и среднего бизнеса.

Более широкое использование идентификации диктора для судебно-медицинских целей

Использование технологии идентификации диктора для судебно-медицинских целей является одной из главных движущих сил на мировом рынке распознавания голоса. Происходит сложный процесс определения, соответствует ли голос лица, подозреваемого в совершении преступления, голосу из судебно-медицинских образцов. Данная технология позволяет правоохранительным органам выявлять преступников по одной из самых уникальных характеристик человека, его голосу, тем самым предлагая относительно высокий уровень точности. Судебно-медицинские эксперты проводят анализ соответствия голоса подозреваемого образцам до тех пор, пока не будет найден преступник. В последнее время эта технология используется, чтобы помочь решать некоторые уголовные дела.

Спрос на распознавание речи в военных целях

Военные ведомства в большинстве стран используют крайне ограниченные зоны для того, чтобы предотвратить проникновение злоумышленников. Для обеспечения секретности и безопасности в этой зоне, военные используют системы распознавания голоса. Эти системы помогают военным учреждениям выявлять наличие несанкционированных проникновений в защищенную зону. Система содержит базу данных голосов военнослужащих и государственных чиновников, которые имеют допуск к защищенной территории. Эти люди идентифицируются системой распознавания голоса, тем самым предотвращается допуск людей, чьих голосов нет в базе данных системы. В дополнение можно сказать, что ВВС США используют голосовые команды для управления самолетом. Кроме того, военные ведомства используют распознавание речи и систему Voice-to-text для коммуникации с гражданами в других странах. Например, американские военные активно используют системы распознавания речи в их операциях в Ираке и Афганистане. Таким образом, существует высокий спрос на распознавание речи и голоса для военных целей.

Биометрические технологии, такие как сосудистое распознавание, распознавание голоса и сканирование сетчатки глаза широко внедряются в сферу здравоохранения. Распознавание голоса, как ожидается, станет одним из основных режимов идентификации в медицинских учреждениях. Многие компании здравоохранения в США, обращаясь к стандартам Health Insurance Portability and Accountability Act (HIPAA), также применяют биометрические технологии, такие как распознавание голоса, распознавание отпечатков пальцев для более безопасной и эффективной регистрации пациента, накопления информации пациента, защиты медицинских записей пациента. Также учреждения клинических испытаний внедряют распознавания голоса для выявления лиц, набранных для клинических испытаний. Таким образом, голосовая биометрия является одним из основных режимов для идентификации клиента в сфере здравоохранения в Азиатско-Тихоокеанском регионе.

Требования рынка



Влияние основных четырёх трендов и проблем на мировой рынок распознавания показано на рисунке

Ключ
Влияние проблем и трендов оценивается на основе интенсивности и длительности их воздействия на текущий рынок. Классификация величины воздействия:
Низкий – незначительное или нулевое влияние на рынок
Средний – средний уровень влияния на рынок
Умеренно высокий– значительное влияние на рынок
Высокий – очень сильное воздействие с радикальным влиянием на рост рынка

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

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

Невозможность подавления внешних шумов

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

Высокая стоимость приложений распознавания голоса

Одной из основных проблем, препятствующих развитию технологий распознавания речи, является потребность в больших инвестиционных вложениях, требуемых для разработки и реализации. Крупномасштабное развертывание технологии распознавания голоса на предприятии является трудоемким процессом и требует огромных инвестиций. Экономия на бюджете приводит к ограничению тестирования технологии, следовательно, любой сбой может привести к большим потерям на предприятии. Поэтому альтернативные распознаванию голоса варианты, такие как swipe card и keypad по-прежнему активно используются во многих компаниях, особенно среди малого и среднего бизнеса, в силу их экономической эффективности. Таким образом, приложения распознавания голоса требуют больших материальных вложений, включая стоимость интеграционной системы, дополнительного оборудования и другие затраты.

Проблемы с точностью распознавания

На мировом рынке распознавания голоса единой проблемой является невысокие показатели точности распознавания, не смотря на то, что в настоящее время системы распознавания голоса способны распознавать различные языки и определять подлинность голоса. Так как система включает в себя сложный процесс согласования баз данных с произносимыми командами и интегрированной технологией распознавания речи и голосовой верификации, даже незначительная ошибка в любой часть процесса может привести к неверному результату. Погрешность в распознавании речи является одним из основных ограничений в приложениях распознавания голоса. Однако некоторые производители начали разработку систем с очень низким уровнем погрешности в распознавании голоса. Они разработали системы с менее чем 4% неточных результатов (например, измерения голосовой биометрии неверно идентифицируют и отвергают голос человека, у которого есть доступ).

Низкий уровень безопасности в верификации диктора

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

Тенденции рынка

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

Некоторые из основных тенденций на мировом рынке распознавания голоса:
Увеличение спроса на распознавание речи на мобильных устройствах
Рост спроса на услуги голосовой аутентификации для мобильного банкинга
Интеграция голосовой верификации и распознавания речи
Увеличение слияний и поглощений

Увеличение спроса на распознавание речи на мобильных устройствах

Растущее число правил дорожного движения, запрещающих использование мобильных устройств во время вождения автомобиля, увеличило спрос на приложения распознавания речи. Страны, в которых были наложены строгие ограничения: Австралия, Филиппины, США, Великобритания, Индия и Чили. В США более чем в 13 штатах, не смотря на введение Положение об использовании мобильных устройств, разрешено использовать громкую связь во время вождения. Следовательно, покупатели все чаще выбирают мобильные устройства, оснащенные приложениями распознавания речи, которые смогут помочь им получить доступ к устройству без необходимости отвлекаться на само устройство. В целях удовлетворения растущего спроса на приложения распознавания речи в мобильных устройствах, производители увеличили количество научно-исследовательских и опытно-конструкторских работ для того, чтобы развить речевые команды опций для мобильного устройства. В результате, большое количество приложений распознавания речи были включены в мобильное устройство, например, управление музыкальным плей листом, считывание адреса, считывание имени абонента, голосовые СМС сообщения и т.д.

Необходимость в усилении проверки приводит к всеобщей интеграции голосовой аутентификации в мобильном банкинге. В таких регионах, как Северная Америка и Западная Европа, большое количество банковских клиентов используют средства банковского обслуживания по телефону. Большое количество таких финансовых институтов принимают голосовые решения аутентификации от пользователя о принятии или отклонении мобильных транзакций. Кроме того, включение голосовой аутентификации в мобильных устройствах является экономически эффективным и в то же время обеспечивает более высокий уровень безопасности. Таким образом, тенденция к интеграции голосовой аутентификации для мобильного банкинга будет расти дальше на протяжении многих лет. Действительно, банковские учреждения использующие телефоны сотрудничают с поставщиками решений голосовой аутентификации и инкорпорациями голосовой биометрии, что является ключевым конкурентным преимуществом.

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

Увеличение слияний и поглощений

На мировом рынке распознавания голоса наблюдаются серьезные тенденции слияния и поглощения. Доминирующий лидер рынка Nuance Communications Inc ., который держит более чем 50% доли на рынке, приобрел большое количество маленьких компаний на рынке распознавания речи. Из этого следует, что приобретение – это новый подход к росту компании, в результате чего у Nuance шесть приобретений в 2007 году. Эта тенденция, как ожидается, сохранится и в ближайшие несколько лет в связи с наличием многочисленных мелких игроков, которые могут быть приобретены более крупными компаниями как Nuance . Поскольку рынок является технологически ориентированным, то небольшие компании разрабатывают инновационные решения. Но из-за нехватки ресурсов эти компании не в состоянии увеличить масштабы своего бизнеса. Таким образом, крупные компании, такие как Nuance , используют процесс поглощения в качестве основной стратегии для выхода на новые рынки и отрасли. Например, Nuance приобрела Loquendo Inc . Для того, чтобы войти в регион EMEA.

Заключение

Есть 2 ветки развития систем распознавания речи (объем рынка с $1.09 по $2.42 миллиарда с 2012 по 2016 гг., темп роста +22.07%)
Преобразование речи в текст (объем рынка с $860млн. (2012г.) до $1727млн. (2016г.) - общая доля 79%-71% с 2012 по 2016 гг.)
Верификация и идентификация голоса человека (объем рынка с $229млн. (2012г.) до $697млн. - общая доля 21%-28,8% с 2012 по 2016 гг.)

В конкурентной борьбе будут более активно развиваться компании, которые существуют на грани эти двух направлений - с одной стороны улучшая точность программ распознавания речи и перевода его в текста, с другой стороны решая эту задачу посредставом идентификации диктора и верификации его речи, используя дополнительный канал (например видео) в качестве источника информации.

Согласно исследованию Technavio - основная проблема существующих программ распознавания речи - это их подверженность в подавлении окружающего шума;
- Основная тенденция - распространение речевых технологий за счет увеличения количества и качества мобильных устройств и развития решений мобильного банкинга;
- Большую погоду в развитии технологий распознавания речи на данный момент играет государственные организации, военная сфера, медицина и финансовый сектор. Однако наметился большой спрос на такого рода технологии в виде мобильных приложений и задач голосовой навигации, а также биометрии;
- Основной рынок систем распознавания речи находится в США, однако самая быстрая и платежеспособная аудитория проживает в странах юго-восточной Азии, особенно в Японии (за счет полной голосовой автоматизации работы call-центров). Предполагается, что именно в данном регионе должен появиться сильный игрок, который станет серьезным подспорьем для мирового могущества Nuance Communications (текущая доля общемирового рынка - 70%);
- Наиболее распространенная политика на рынке систем распознавания речи - это слияния и поглощения (M&A) - компании -лидеры рынка часто скупают небольшие технологические лаборатории или фирмы по всему миру, чтобы сохранить гегемонию.
- Стоимость приложений стремительно падает, точность растет, фильтрация посторонних шумов улучшается, безопасность возрастает - предполагаемая дата реализации сверхточной технологии распознавания речи - 2014 гг.

Таким образом, по прогнозам Technavio в период 2012-2016 гг. ожидается увеличение рынка систем распознавания речи более чем в 2,5 раза. Большую долю на одном из самых динамичных и быстрых рынков IT технологии получат игроки, которые смогут в своем продукте решить 2 задачи одновременно: научиться качественно распознавать речь и переводить ее в текст, а также хорошо уметь идентифицировать голос диктора, верифицировать его из общего потока. Большим преимуществом в конкурентной борьбе можно назвать демпинг (искусственное снижение стоимости подобных технологий), создание программ с дружелюбным интерфейсом и быстрым процессом адаптации - при высоком качестве работы. Предполагается, что в течение ближайших 5 лет - появятся новые игроки на рынке, которые могут поставить под сомнение менее поворотливых крупных корпораций типа Nuance Communications распознавание речи

  • исследование рынка
  • прогноз развития
  • nuance
  • Добавить метки

    Предыдущая статья: Следующая статья:

    © 2015 .
    О сайте | Контакты
    | Карта сайта