
Осень 13-весна 14 курс 1-2 ОрТОР (сейчас это называют ТОЛААД) / Информатика / ССРР / Распознавание речи. Часть 2. Типичная структура системы распознавания речи Хабрахабр
.htmРаспознавание речи. Часть 2. Типичная структура системы распознавания речи / Хабрахабр var crtg_nid="2580"; var crtg_cookiename="cto_rtt"; var crtg_varname="crtg_content"; function crtg_getCookie(c_name){ var i,x,y,ARRCookies=document.cookie.split(";"); for(i=0;i0)document.getElementsByTagName("head")[0].appendChild(crtg_script); else if(document.getElementsByTagName("body").length>0)document.getElementsByTagName("body")[0].appendChild(crtg_script); var _gaq = window._gaq || []; window.onerror = function(msg, url, line) { //var preventErrorAlert = true; //_gaq.push(['_trackEvent', 'JS Error', msg, navigator.userAgent + ' -> ' + url + " : " + line]); //return preventErrorAlert; }; jQuery.error = function (message) { _gaq.push(['_trackEvent', 'jQuery Error', message, navigator.userAgent]); } войти через TM ID постыq&aсобытияхабыкомпании (function(){ var custom = []; /* custom params */ custom[1] = 'artificial_intelligence'; /* end of custom params */ var std = {gender:100, age:101},i;for(i in std){try{custom[std[i]]=eval(i)}catch(e){} } custom.getStd = function(){for(var i=0,j,s=[];i 0) { $('.'+name+'_inner_banner').show(); } } if( typeof(url) !== 'undefined') { $('.'+name+'_inner_banner .block_url').attr('href', url); } } //if (true) // show_inner_banner_block('mva'); //else new adriver("adriver_banner_1586921565", {sid:179440, bt:52, bn:3}); комментарии (26) +1 aen, 16 июля 2009 в 08:25 # Заголовок поправьте. Опечатка закралась. 0 domage, 16 июля 2009 в 08:31 # ↵ ↑ Спасибо 0 iv_s, 16 июля 2009 в 09:07 # А как происходит корректировка времени? В зависимости от чего, и по какому принципу? 0 domage, 16 июля 2009 в 09:30 # ↵ ↑ Я в следующих частях этот вопрос постараюсь чуточку осветить.
Основной принцип: необходимо входной сигнал «сжать/расширить» до требуемого шаблона. Т.е. если мы распознаем команды, то находим среднее значение временного промежутка для всех из них. Грубо говоря, 1 с. Рвсе входные сигналы (от начала речи до конца речи) масштабируем до этого времени.
Причем мастабировать надо так, чтобы частота входного сигнала не изменилась, иначе вносятся значительные искажения.
Простейший вариант — как показано на картинке: дублируем сигнал и накладываем сам на себя (с учетом заданного линейного затухания). При масштабировании с коэффициентом до 1.3-1.5 качество сигнала на выходе получается достаточное. 0 Krofes, 16 июля 2009 в 10:06 # Шустро вы. Я так понимаю, вы свою некую работу по кусочкам выкладываете?
Рвот ещё вопрос созрел. Насколько чувствительны эти системы к таким искажениям в голосе, как, допустим, акцент, заложенность носа, и т.д.
Рприменяются ли какие-то дополнительные алгоритмы, например, что бы отсечь фоновый шум? По идее, он должен оказывать определенное влияние на распознавание, т.к. распознавание речи редко происходит в абсолютной тишине… +2 domage, 16 июля 2009 в 10:23 # ↵ ↑ Да естественно. Если выложить сразу много, то читать будет скушно. А если постепенно — то кто-нибудь может и втянуться (как показала практика наркодиллеров ;0)) )
Следующая часть будет очень интересная, кстати.
Акцент — может влиять существенно, особенно в дикторонезависимых системах, наученых исключительно на носителях языка. Если обучал «носитель» акцента, то качественно можно будет распознать только его речь.
Заложенность носа — может влиять не очень существенно, но может значительно исказить результаты распознавания диктора (т.е. не распознавание фразы, но распознавание того, кто говорил).
В принципе, все зависит от конкретной реализации системы распознавания.
Фильтрация, естественно, производится. С фильтров выделяется спектр речи (0.3 — 3.4 kHz), пытаются максимально отсечь посторонние шумы. На фокализованых звуках (гласных, звонких согласных) это делать относительно легко. Главное — не затереть шипящие и другие невокализованные участки. 0 Krofes, 16 июля 2009 в 14:05 # ↵ ↑ Я про искажение голоса неспроста спросил… У меня одно время была задумка попробовать сделать ГА, который бы на основе анализа параметров звукового сигнала человека подстраивал бы те же вейвлетные коэффициенты к некоему универсальному голосу (эталону). Не знаю, было это когда либо реализовано или нет, и возможно ли это… мои познания, к сожалению, недалеки от их отсутствия :) +1 domage, 16 июля 2009 в 14:26 # ↵ ↑ Вейвлеты они на то и используются, чтобы решеткой фильтров убрать 99% не нужной информации о сигнале (тембр речи, гнусавость, манеру произношения) и оставить 1% «сухого остатка», однозначно характеризующего определенное слово/букву.
А вариант, близкий тому, который ты предлагаешь я здесь еще покажу. С помощью специального мат. аппарата пытаются узнать, как должны двигаться мышцы голосового тракта, чтобы по этим движениям однозначно определить произнесенный звук…
Но, как по мне, так это как операция на глаза через толстую кишку… «А я никого не подпущу к своей толстой кишке!» (с) 0 Jenyay, 16 июля 2009 в 10:19 # Я правильно понимаю, что сравнение сигнала с эталонными происходит во временной области, а не в виде каких-нибудь вейвлетов? 0 domage, 16 июля 2009 в 10:27 # ↵ ↑ В зависимости от алгоритма — по-разному.
В моей реализации — два измерения: дискретное время (кадр) и вейвлетные коэффициэнты. Грубо говоря, 10 коэффициентов на кадр.
Я подробнее буду рассказывать дальше. 0 Jenyay, 16 июля 2009 в 10:31 # ↵ ↑ Спасибо, буду ждать продолжения. 0 domage, 16 июля 2009 в 10:35 # ↵ ↑ Посмотри картинку «Речевые кадры». Там каждый столбик соответствует отдельному временному кадру:
по X — время;
по Y — номер коэффициента. 0 hazard2, 16 июля 2009 в 13:17 # Замечтался я тут и вот что придумал:
Насколько я понимаю, хоть и в статье это не указано, реализуется такая система на основе нейронных сетей. А одна из проблем — это обучение сети. Я предожил бы такую реализацию, рассчитанную на ближайшее будущее:
РќР° РїРє или РЅРѕСѓС‚ пользователя ставится программа, которая будет следить (РЅРµ без помощи пользователя) Р·Р° тем что пишет Рё читает пользователь, Р° РѕРЅ РІ СЃРІРѕСЋ очередь будет это произносить. Таким образом РІ течение времени система будет постепенно учиться РЅР° примерах РёР· реальной Р¶РёР·РЅРё. Рто будет дикторозависимая сеть, распознающая слитную речь СЃ большим объёмом словаря, которую РјРѕР¶РЅРѕ будет использовать для различных целей
Далее обученную сеть можно виртуализовать, что бы быть не зависимым от конкретного устройства. А на основе анализа личных обученных сетей пользователей сделать дикторонезависимую сеть.
0 domage, 16 июля 2009 РІ 13:37 # ↵ ↑ Рта система СѓР¶Рµ «успешно» была сделана, показывала качество дикторонезависимого распознавания 5-Рё команд СЃ 5-7% ошибок Рё была обучена РЅР° 9-Рё дикторах. После чего, Рє сожалению, РІСЃРµ заглохло, так как Сѓ нас РґРѕ СЃРёС… РїРѕСЂ нет команд, которые хотели Р±С‹ этим заняться. Сейчас пришлось переквалифицироваться РІ распределенные вычисления, РЅР° это Сѓ нас СЃРїСЂРѕСЃ есть.
Насчет вашей идеи: СЃ нейросетями есть противоположная проблема — переобучение. Рто РєРѕРіРґР° добавление информации Рѕ РЅРѕРІРѕРј дикторе РЅРµ увеличивает, РЅРѕ уменьшает качество распознавания. Р’ рамках этой работы этот эффект наблюдался СѓР¶Рµ РЅР° 8-Рё — 9-Рё пользователях. +1 Ferroman, 16 июля 2009 РІ 13:39 # Очень интересно, РЅРµ останавливайтесь, пишите больше, пишите конкретнее. +1 pingu, 16 июля 2009 РІ 15:48 # Для тех РєРѕРіРѕ интересует распознование речи:voxforge.org — opensource проект, РЅСѓР¶РЅС‹ добровольцы, РЅСѓР¶РЅРѕ наговаривать текст онлайн, РїСЂСЏРјРѕ РЅР° странице. РњРЅРѕРіРёРµ opensource программы нуждаются РІ этой базе (например: Julius, Sphinx, HTK) 0 legato_di, 16 июля 2009 РІ 16:30 # Отличная статья,) 0 nikitad, 16 июля 2009 РІ 19:07 # РњРѕР¶РЅРѕ СЃ библиографией ознакомиться? 0 domage, 16 июля 2009 РІ 21:22 # ↵ ↑ Полную библиографию РїРѕРєР° выкладывать РЅРµ спешу, потому что, Рє сожалению, РјРѕР№ СЃРїРёСЃРѕРє составлен РЅР° конец 2006 Рі., РІ СЃРІСЏР·Рё СЃ чем, РЅР° текущий момент достаточно устарел…
Но к следующим статьям я буду прикладывать основные источники. 0 nikitad, 16 июля 2009 в 22:14 # ↵ ↑ Всего 3 года прошло — это еще достаточно свежий. Многие используют материал, которому несколько десятилетий, и исследование хуже от этого не становиться. 0 JTOne, 16 июля 2009 в 19:45 # Статья отличная!
Корректировка времени. Рспользуется для обработки временной вариативности, возникающей РїСЂРё произношении слов (например, “растягивание” или “съедание” Р·РІСѓРєРѕРІ).
РЎРєРёРЅСЊ ссылочку РЅР° что то РїРѕ подробней РїРѕ этому пункту! 0 domage, 16 июля 2009 РІ 21:24 # ↵ ↑ Рменно РїРѕ этой теме, Рє сожалению, РІ СЃРІРѕРµ время СЏ достаточно полной информации найти РЅРµ СЃРјРѕРі. Р’ СЃРІСЏР·Рё СЃ этим пришлось довольствоваться «очевидным» алгоритмом, описанным РІ habrahabr.ru/blogs/artificial_intelligence/64594/#comment_1798446
Он показал очень хорошие результаты для моей задачи, в связи с чем я на нем и остановился. 0 VDG, 16 июля 2009 в 21:24 # Вместо того, чтобы показывать шоссе, по которому все прут не туда, куда полезнее и интереснее было бы предложить свою тропинку, если конечно она у вас есть. 0 Inquirer, 17 июля 2009 в 02:13 # Буду следить за темой. Филологу интересна техническая часть изучаемой проблемы.