Как стать автором
Обновить

Пиши голосом правильно

Время на прочтение 8 мин
Количество просмотров 11K

Всем привет!


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

Итак:


Для создания движка распознавания нам потребуются акустическая и языковая модели.
Акустическая модель отвечает за соотнесение кусочка звука (фрейма) с соответствующей фонемой. Фонема — это отдельный звук речи, например, «а-ударная», «т-мягкая», «т» и еще 49 других. Самая большая проблема заключается в том, что многие фонемы очень похожи между собой и отличить на слух слово «машины» от слова «машину» достаточно трудно (вспомните, сколько раз вы переспрашиваете, когда вам диктуют незнакомую фамилию). Поэтому акустическую модель делают вероятностной: она сообщает, что с некоторой вероятностью в этом звуковом фрагменте была произнесена фонема «а-ударная», с другой вероятностью это была фонема «а-безударная» и т.д. и выдает вероятности всем фонемам.


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

Языковая модель также является вероятностной и описывает структуру языка. Она показывает, насколько вероятна (правильна) та или иная фраза с точки зрения языка. Например, фраза «мама мыла раму» вполне нормальная, а вот «рама мыла маму» уже ошибочна (эта фраза настолько не нравится Voco, что он распознает «мама мыла маму»). После того, как мы распознали очередное слово, языковая модель определяет, насколько это слово согласуется с предыдущими распознанными словами.
Языковая модель тренируется по большому объему текстовых данных (гигабайты текстов). По этим тренировочным данным мы вычисляем вероятности появления слов в определенном контексте, основываясь на частоте встречаемости этих словосочетаний. Мы используем словосочетания длиной не более 3 слов (3-граммные языковые модели). Поэтому, языковая модель не может помочь согласовать, например, прилагательное с существительным, если между ними располагаются какие-то два слова. В этом случае согласование происходит только за счет акустической модели.
В качестве словаря распознавания мы берем примерно 300 тысяч самых частотных слов, которые покрывают 99% речи среднестатистического человека.


Теперь разберемся с самим распознаванием


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


Граф распознавания для слов: «мама», «мыла», «раму», «посуду». На ребрах графа у нас фонемы в качестве входных символов (слово до ‘:’), слова в качестве выходных символов ( слово после ‘: ’) и веса из языковой модели (число после ‘/’). ‘-’ означает пустой вход или выход. Ребро из 4-го узла в 0-узел зацикливает граф, чтобы можно было распознать несколько слов подряд.

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

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


У ли СУ


Одна из наиболее частых ошибок, которые совершают пользователи — это диктовка по слогам. Мы обучаем систему на обычной речи, поэтому растягивание слов по слогам только путает систему. При диктовке по слогам все гласные в слове превращаются в ударные, фонемы произносятся дольше, появляются паузы между слогами. Все это приводит к печальному результату, когда слова разбиваются на кучу односложных фрагментов. Например, сказав Voco по слогам «выбежать на улицу» получим такой результат: «Вы без жать на у ли СУ» или такой: «Вы без жать на у лису», но точно не то, что нам надо.

Совет: говорите естественно, как среднестатистический человек.


Как даже черт возьмет тебя



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

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


Пол лапы ралли но


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

Совет: продумайте заранее, что вы хотите сказать, так как это значительно сокращает количество длительных пауз и запинок в речи.


Ночь. Улица. Фонарь. Аптека.


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

Совет: избегайте очень коротких фраз. Если это невозможно, то постарайтесь четко проговаривать окончания.


Я этого не говорил


Случается так, что распознается не только то, что вы говорите, но и речь вашего соседа. В итоге письмо, которое вы набираете голосом, похоже на письмо дяди Федора маме: «Шерсть облазит, хвост отваливается.» Особенно сильно это проявляется при использовании удаленного микрофона на ноутбуке или web-камеры. Мы стараемся улучшить качество распознавания в шумах и отделить фоновую речь, но в случаях, когда пользователь молчит, распознавание может настроиться и на тихую фоновую речь.

Совет: качественная гарнитура и тихая обстановка помогут улучшить качество распознавания.


Как кола


Voco распознает русскую речь, но некоторые популярные английские слова, названия компаний и продуктов программе также под силу. Например, «Coca-Cola», «Windows» прекрасно распознаются. Но есть небольшая проблема: в английской речи есть звуки, которых в русской речи нет. Для решения этой проблемы мы транскрибировали английские слова наиболее похожими русскими фонемами, поэтому и произносить их стоит на русский манер. Например, «Кока-Кола». [kòka kòla]. Не стоить демонстрировать свой отличный британский акцент [k’əʊkʌ k’əʊla].

Совет: Произносите английские слова с русским акцентом.


Глубокая Кутра штыка Буланова бока и курящих банк рынка


Бывает, что слово не распознается, несмотря на то, что вы очень стараетесь и соблюдаете все наши рекомендации. Возможно, причина в том, что этого слова нет в словаре распознавания. Мы обучали языковую модель на общей тематике (политика, экономика, культура, спорт и т.п.) и в словарь попали примерно 300 тысяч самых частотных слов. Поэтому скорее всего там нет узкоспециализированных терминов или фамилии вашего начальника. Итак, пользователь диктует письмо клиенту: уважаемый Владимир обязательно, Владимир бежать им, без всяких, безо 1, безликим. Снова и снова пользователь произносит фамилию клиента — Безякин, варьирует произношения, скорость произнесения, акцентирует ударение, но нужная фамилия не распознается.
Вот так вот известная фраза лингвиста Шербы «Гло́кая ку́здра ште́ко будлану́ла бо́кра и курдя́чит бокрёнка» превратилась в штык Булановой и курящую банку.
Чтобы необходимые вам слова, неизвестные языковой модели, распознавались корректно, следует воспользоваться адаптацией модели распознавания под ваши нужды. Если вы набираете тексты, например, по биоинформатике, то лучше всего взять тексты по биоинформатике и дообучить систему на них.
При дообучении по новым текстам строится маленькая языковая модель, которая будет участвовать в распознавании вместе с основной моделью. То есть теперь вес, который мы получаем от языковой модели, будет складываться из двух весов: веса от основной языковой модели и вес от адаптационной модели.
Адаптировать систему по текстам намного правильнее, чем добавлять в словарь распознавания отдельные слова. Добавление отдельного слова не дает нам информации, как употребляется это слово, как оно склоняется и т.п., поэтому возможны ошибки при распознавании окончаний.

Совет: адаптируйте распознавание под вашу тематику на ваших текстах или добавьте необходимые слова в словарь распознавания.


PS: Данный текст записан голосом с помощью приложения #Voco. А посмотреть, как это происходило можно на видео:


Литература для Geek’ов:
1. Тема конечных автоматов для распознавания речи хорошо описана здесь: Mohri, M., Pereira, F., & Riley, M. Speech recognition with weighted finite-state transducers. In Springer Handbook of Speech Processing (pp. 559-584). Springer Berlin Heidelberg 2008.
2. Или в книге www.morganclaypool.com/doi/abs/10.2200/S00462ED1V01Y201212SAP010
3. По нейронным сетям, которые используются в акустических моделях можно почитать www.amazon.com/Automatic-Speech-Recognition-Communication-Technology/dp/1447157788/ref=sr_1_1?s=books&ie=UTF8&qid=1447854516&sr=1-1&keywords=speech+recognition

Теги:
Хабы:
+10
Комментарии 13
Комментарии Комментарии 13

Публикации

Информация

Сайт
speechpro.ru
Дата регистрации
Дата основания
1990
Численность
201–500 человек
Местоположение
Россия

Истории