Pull to refresh

Comments 26

Заголовок поправьте. Опечатка закралась.
А как происходит корректировка времени? В зависимости от чего, и по какому принципу?
Я в следующих частях этот вопрос постараюсь чуточку осветить.
Основной принцип: необходимо входной сигнал «сжать/расширить» до требуемого шаблона. Т.е. если мы распознаем команды, то находим среднее значение временного промежутка для всех из них. Грубо говоря, 1 с. И все входные сигналы (от начала речи до конца речи) масштабируем до этого времени.
Причем мастабировать надо так, чтобы частота входного сигнала не изменилась, иначе вносятся значительные искажения.
Простейший вариант — как показано на картинке: дублируем сигнал и накладываем сам на себя (с учетом заданного линейного затухания). При масштабировании с коэффициентом до 1.3-1.5 качество сигнала на выходе получается достаточное.
Шустро вы. Я так понимаю, вы свою некую работу по кусочкам выкладываете?
И вот ещё вопрос созрел. Насколько чувствительны эти системы к таким искажениям в голосе, как, допустим, акцент, заложенность носа, и т.д.
И применяются ли какие-то дополнительные алгоритмы, например, что бы отсечь фоновый шум? По идее, он должен оказывать определенное влияние на распознавание, т.к. распознавание речи редко происходит в абсолютной тишине…
Да естественно. Если выложить сразу много, то читать будет скушно. А если постепенно — то кто-нибудь может и втянуться (как показала практика наркодиллеров ;0)) )
Следующая часть будет очень интересная, кстати.

Акцент — может влиять существенно, особенно в дикторонезависимых системах, наученых исключительно на носителях языка. Если обучал «носитель» акцента, то качественно можно будет распознать только его речь.

Заложенность носа — может влиять не очень существенно, но может значительно исказить результаты распознавания диктора (т.е. не распознавание фразы, но распознавание того, кто говорил).

В принципе, все зависит от конкретной реализации системы распознавания.

Фильтрация, естественно, производится. С фильтров выделяется спектр речи (0.3 — 3.4 kHz), пытаются максимально отсечь посторонние шумы. На фокализованых звуках (гласных, звонких согласных) это делать относительно легко. Главное — не затереть шипящие и другие невокализованные участки.
Я про искажение голоса неспроста спросил… У меня одно время была задумка попробовать сделать ГА, который бы на основе анализа параметров звукового сигнала человека подстраивал бы те же вейвлетные коэффициенты к некоему универсальному голосу (эталону). Не знаю, было это когда либо реализовано или нет, и возможно ли это… мои познания, к сожалению, недалеки от их отсутствия :)
Вейвлеты они на то и используются, чтобы решеткой фильтров убрать 99% не нужной информации о сигнале (тембр речи, гнусавость, манеру произношения) и оставить 1% «сухого остатка», однозначно характеризующего определенное слово/букву.

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

Но, как по мне, так это как операция на глаза через толстую кишку… «А я никого не подпущу к своей толстой кишке!» (с)
Я правильно понимаю, что сравнение сигнала с эталонными происходит во временной области, а не в виде каких-нибудь вейвлетов?
В зависимости от алгоритма — по-разному.
В моей реализации — два измерения: дискретное время (кадр) и вейвлетные коэффициэнты. Грубо говоря, 10 коэффициентов на кадр.
Я подробнее буду рассказывать дальше.
Спасибо, буду ждать продолжения.
Посмотри картинку «Речевые кадры». Там каждый столбик соответствует отдельному временному кадру:
по X — время;
по Y — номер коэффициента.
Замечтался я тут и вот что придумал:
Насколько я понимаю, хоть и в статье это не указано, реализуется такая система на основе нейронных сетей. А одна из проблем — это обучение сети. Я предожил бы такую реализацию, рассчитанную на ближайшее будущее:

На пк или ноут пользователя ставится программа, которая будет следить (не без помощи пользователя) за тем что пишет и читает пользователь, а он в свою очередь будет это произносить. Таким образом в течение времени система будет постепенно учиться на примерах из реальной жизни. Это будет дикторозависимая сеть, распознающая слитную речь с большим объёмом словаря, которую можно будет использовать для различных целей
Далее обученную сеть можно виртуализовать, что бы быть не зависимым от конкретного устройства. А на основе анализа личных обученных сетей пользователей сделать дикторонезависимую сеть.
Эта система уже «успешно» была сделана, показывала качество дикторонезависимого распознавания 5-и команд с 5-7% ошибок и была обучена на 9-и дикторах. После чего, к сожалению, все заглохло, так как у нас до сих пор нет команд, которые хотели бы этим заняться. Сейчас пришлось переквалифицироваться в распределенные вычисления, на это у нас спрос есть.

Насчет вашей идеи: с нейросетями есть противоположная проблема — переобучение. Это когда добавление информации о новом дикторе не увеличивает, но уменьшает качество распознавания. В рамках этой работы этот эффект наблюдался уже на 8-и — 9-и пользователях.
Очень интересно, не останавливайтесь, пишите больше, пишите конкретнее.
Для тех кого интересует распознование речи:voxforge.org — opensource проект, нужны добровольцы, нужно наговаривать текст онлайн, прямо на странице. Многие opensource программы нуждаются в этой базе (например: Julius, Sphinx, HTK)
Можно с библиографией ознакомиться?
Полную библиографию пока выкладывать не спешу, потому что, к сожалению, мой список составлен на конец 2006 г., в связи с чем, на текущий момент достаточно устарел…
Но к следующим статьям я буду прикладывать основные источники.
Всего 3 года прошло — это еще достаточно свежий. Многие используют материал, которому несколько десятилетий, и исследование хуже от этого не становиться.
Статья отличная!

Корректировка времени. Используется для обработки временной вариативности, возникающей при произношении слов (например, “растягивание” или “съедание” звуков).

Скинь ссылочку на что то по подробней по этому пункту!
Именно по этой теме, к сожалению, в свое время я достаточно полной информации найти не смог. В связи с этим пришлось довольствоваться «очевидным» алгоритмом, описанным в habrahabr.ru/blogs/artificial_intelligence/64594/#comment_1798446

Он показал очень хорошие результаты для моей задачи, в связи с чем я на нем и остановился.
Вместо того, чтобы показывать шоссе, по которому все прут не туда, куда полезнее и интереснее было бы предложить свою тропинку, если конечно она у вас есть.
Буду следить за темой. Филологу интересна техническая часть изучаемой проблемы.
Как показала практика, разработать «True» систему распознавания речи (которая бы хоть сколь-нибудь превосходила дипломный проект по масштабам) без филолога, лингвиста и проффессионала в области голосового тракта, скорее всего, невозможно.
UFO just landed and posted this here
Sign up to leave a comment.

Articles