Пользователь
0,0
рейтинг
16 июля 2009 в 08:13

Распознавание речи. Часть 2. Типичная структура системы распознавания речи

Распознавание речи – это многоуровневая задача распознавания образов, в которой акустические сигналы анализируются и структурируются в иерархию структурных элементов (например, фонем), слов, фраз и предложений. Каждый уровень иерархии может предусматривать некоторые временные константы, например, возможные последовательности слов или известные виды произношения, которые позволяют уменьшить количество ошибок распознавания на более низком уровне. Чем больше мы знаем (или предполагаем) априорной информации о входном сигнале, тем качественнее мы можем его обработать и распознать.imageСтруктура стандартной системы распознавания речи показана на рисунке. Рассмотрим основные элементы этой системы.
  • Необработанная речь. Обычно, поток звуковых данных, записанный с высокой дискретизацией (20 КГц при записи с микрофона либо 8 КГц при записи с телефонной линии). Входной речевой сигнал
  • Анализ сигнала. Поступающий сигнал должен быть изначально трансформирован и сжат, для облегчения последующей обработки. Есть различные методы для извлечения полезных параметров и сжатия исходных данных в десятки раз без потери полезной информации. Наиболее используемые методы:
    1. анализ Фурье;
    2. линейное предсказание речи;
    3. кепстральный анализ.
    Анализ переходов через 0
  • Речевые кадры. Результатом анализа сигнала является последовательность речевых кадров. Обычно, каждый речевой кадр – это результат анализа сигнала на небольшом отрезке времени (порядка 10 мс.), содержащий информацию об этом участке (порядка 20 коэффициентов). Для улучшения качества распознавания, в кадры может быть добавлена информация о первой или второй производной значений их коэффициентов для описания динамики изменения речи.Речевой кадр
  • Акустические модели. Для анализа состава речевых кадров требуется набор акустических моделей. Рассмотрим две наиболее распространенные из них.
    1. Шаблонная модель. В качестве акустической модели выступает каким-либо образом сохраненный пример распознаваемой структурной единицы (слова, команды). Вариативность распознавания такой моделью достигается путем сохранения различных вариантов произношения одного и того же элемента (множество дикторов много раз повторяют одну и ту же команду). Используется, в основном, для распознавания слов как единого целого (командные системы).
    2. Модель состояний. Каждое слово моделируется как последовательность состояний указывающих набор звуков, которые возможно услышать в данном участке слова, основываясь на вероятностных правилах. Этот подход используется в более масштабных системах.
  • Акустический анализ. Состоит в сопоставлении различных акустических моделей к каждому кадру речи и выдает матрицу сопоставления последовательности кадров и множества акустических моделей. Для шаблонной модели, эта матрица представляет собой Евклидово расстояние между шаблонным и распознаваемым кадром (т.е. вычисляется, как сильно отлечается полученный сигнал от записанного шаблона и находится шаблон, который больше всего подходит полученному сигналу). Для моделей, основанных на состоянии, матрица состоит из вероятностей того, что данное состояние может сгенерировать данный кадр.
  • Корректировка времени. Используется для обработки временной вариативности, возникающей при произношении слов (например, “растягивание” или “съедание” звуков).Растяжение сигнала по времени
  • Последовательность слов. В результате работы, система распознавания речи выдает последовательность (или несколько возможных последовательностей) слов, которая, наиболее вероятно, соответствует входному потоку речи.
UPD: Перенес в «Искуственный интеллект». Если будет интерес, дальше публиковать буду в нем.
Глеб Радченко @domage
карма
30,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (26)

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

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

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

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

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

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

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

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

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

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

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

      Он показал очень хорошие результаты для моей задачи, в связи с чем я на нем и остановился.
  • 0
    Вместо того, чтобы показывать шоссе, по которому все прут не туда, куда полезнее и интереснее было бы предложить свою тропинку, если конечно она у вас есть.
  • 0
    Буду следить за темой. Филологу интересна техническая часть изучаемой проблемы.
    • 0
      Как показала практика, разработать «True» систему распознавания речи (которая бы хоть сколь-нибудь превосходила дипломный проект по масштабам) без филолога, лингвиста и проффессионала в области голосового тракта, скорее всего, невозможно.
  • НЛО прилетело и опубликовало эту надпись здесь

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