|
Распознавание образа сигнала real-time |
|
|
|
Dec 14 2010, 21:46
|
Группа: Участник
Сообщений: 14
Регистрация: 10-10-10
Из: Королёв Моск.обл.
Пользователь №: 60 052

|
Условие. На входе имеем сигнал звуковой частоты (музыкальный инструмент). Задача. Требуется определить частоту сигнала (извлекаемую ноту) и отправить команду исполняющему устройству. Задержка между звукоизвлечением и реакцией исп. устройства должна быть минимально заметной на слух (~10мс). Попытаться всунуть алгоритм в ARM.
Предполагаю несколько вариантов решений. 1.Корреляционный анализ. Сначала "обучаем" систему, записываем образцы сэмплов каждой ноты, а потом сравниваем входной сигнал с библиотекой образцов, т.е. определяем коэфф. корреляции. Вероятно размер образца не должен быть слишком большим (фронт сигнала), иначе задержка будет заметна. Не помешает ли это устойчивости распознавания?
2.Нейронные сети. Тут темный лес, мало знаком с этой темой.
Господа опытные товарищи поделитесь соображениями, "включите свет". С какой стороны копать огород.
|
|
|
|
|
 |
Ответов
|
Jan 3 2011, 19:44
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Для определения высоты тона в реальном времени с малой задержкой хорошо работает следующий алгоритм "двойного окна". Раз у вас допустима задержка в 10 мс, то берём окно длиной 40 мс: на 10 мс вперёд по времени и на 30 мс назад. Вычисляем автокорреляцию и находим по ней высоту тона (детали — далее). Эта оценка обладает хорошей надёжностью (в т.ч. к октавным прыжкам), но отстаёт по времени от сигнала (т.к. окно сильнее простирается назад во времени). Далее берём более короткое окно, центрированное по времени, длиной 20 мс. Вычисляем автокорреляцию и ищем пик в небольшой окрестности лага, найденного с большим окном. Это и будет ответ. Кстати, во многих задачах небольшое отставание оценок высоты тона от самого сигнала не критично, если высота тона меняется медленно.
Как вычислить высоту тона по автокорреляции? В процессе вычисления автокорреляции из спектра сигнала можно извлечь квадратный корень, чтобы слегка "отбелить" спектр и обострить пики АКФ. На полученной псевдо-АКФ ищется максимум. Для повышения надёжности алгоритма можно искать максимум АКФ, сглаженной небольшим НЧ-фильтром. При поиске максимума учитываются значения АКФ с половинным лагом, чтобы избежать октавных ошибок. Далее по несглаженной АКФ производится параболическая интерполяция пика для уточнения положения максимума. Перед интерполяцией значения АКФ можно возвести в степень < 1 для увеличения точности интерполяции.
|
|
|
|
|
Jan 4 2011, 06:39
|

Местный
  
Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986

|
Цитата(Alexey Lukin @ Jan 4 2011, 01:44)  Для определения высоты тона в реальном времени с малой задержкой хорошо работает следующий алгоритм "двойного окна". Раз у вас допустима задержка в 10 мс, то берём окно длиной 40 мс: на 10 мс вперёд по времени и на 30 мс назад. Вычисляем автокорреляцию и находим по ней высоту тона (детали — далее). Эта оценка обладает хорошей надёжностью (в т.ч. к октавным прыжкам), но отстаёт по времени от сигнала (т.к. окно сильнее простирается назад во времени). Далее берём более короткое окно, центрированное по времени, длиной 20 мс. Вычисляем автокорреляцию и ищем пик в небольшой окрестности лага, найденного с большим окном. Это и будет ответ. Кстати, во многих задачах небольшое отставание оценок высоты тона от самого сигнала не критично, если высота тона меняется медленно.
Как вычислить высоту тона по автокорреляции? В процессе вычисления автокорреляции из спектра сигнала можно извлечь квадратный корень, чтобы слегка "отбелить" спектр и обострить пики АКФ. На полученной псевдо-АКФ ищется максимум. Для повышения надёжности алгоритма можно искать максимум АКФ, сглаженной небольшим НЧ-фильтром. При поиске максимума учитываются значения АКФ с половинным лагом, чтобы избежать октавных ошибок. Далее по несглаженной АКФ производится параболическая интерполяция пика для уточнения положения максимума. Перед интерполяцией значения АКФ можно возвести в степень < 1 для увеличения точности интерполяции. Ну вот, вроде тяжелая музыкальная артиллерия подтянулась
--------------------
О сколько нам открытий чудных ...
|
|
|
|
Сообщений в этой теме
voicek Распознавание образа сигнала real-time Dec 14 2010, 21:46 subver Посчитать АКФ куска в 10мс и определить основной т... Dec 15 2010, 00:13 Andron_ если нужно определить лишь ноту - зачем корреляцио... Dec 15 2010, 00:29 Taradov Alexander QUOTE (Andron_ @ Dec 15 2010, 06:29) если... Dec 15 2010, 03:05  Fast Цитата(Taradov Alexander @ Dec 15 2010, 09... Dec 15 2010, 05:39   DRUID3 Цитата(Fast @ Dec 15 2010, 10:39) с помощ... Dec 15 2010, 08:22 Fast если сигнал простой, т.е. нота состоит из одного т... Dec 15 2010, 03:02 SPACUM Цитата(Fast @ Dec 15 2010, 10:02) Герцеля... Dec 15 2010, 06:17 alex_os Цитата(voicek @ Dec 15 2010, 03:46) Услов... Dec 15 2010, 04:49 DRUID3 Да, йа тоже за автокорреляцию... Но и "Фурье... Dec 15 2010, 05:34 voicek На Фурье и Герцеле вполне успешно строят тюнеры (п... Dec 15 2010, 07:07 Oldring Цитата(voicek @ Dec 15 2010, 13:07) Для с... Dec 15 2010, 07:12 alex_os Цитата(voicek @ Dec 15 2010, 13:07) Для с... Dec 15 2010, 07:50 phantom Цитата(voicek @ Dec 15 2010, 13:07) ........ Dec 16 2010, 15:27  fontp QUOTE (phantom @ Dec 16 2010, 21:27) Я по... Dec 17 2010, 05:13 voicek Цитата(SPACUM @ Dec 15 2010, 12:17) А окт... Dec 15 2010, 08:00 fontp QUOTE (voicek @ Dec 15 2010, 14:00) Приме... Dec 15 2010, 08:36  DRUID3 Цитата(fontp @ Dec 15 2010, 13:36) И хотя... Dec 15 2010, 08:41   fontp QUOTE (DRUID3 @ Dec 15 2010, 14:41) ??? ... Dec 15 2010, 08:44 voicek Если произвести информационную разведку у тех же н... Dec 15 2010, 08:40 DRUID3 Цитата(voicek @ Dec 15 2010, 13:40) Если ... Dec 15 2010, 08:55  fontp QUOTE (DRUID3 @ Dec 15 2010, 14:55) Я хот... Dec 15 2010, 09:00 voicek Цитата(fontp @ Dec 15 2010, 14:44) Что та... Dec 15 2010, 09:18 DRUID3 .кстати, вопрос очкастым аспирантам и их руководит... Dec 15 2010, 09:22 Fast а в чем, собственно, беспокойство
н.с. - это подви... Dec 15 2010, 09:38 DRUID3 Цитата(Fast @ Dec 15 2010, 14:38) а в чем... Dec 15 2010, 10:00 thermit Цитатаfontp: да хоть и для немцев
Для немцев - в... Dec 17 2010, 05:36 phantom "Для начала нужно понимать что вся музыка сос... Dec 17 2010, 06:29 fontp QUOTE (phantom @ Dec 17 2010, 12:29) Это ... Dec 17 2010, 07:13  phantom Цитата(fontp @ Dec 17 2010, 14:13) ... Dec 17 2010, 11:05 voicek Цитата(phantom @ Dec 16 2010, 21:27) Я по... Dec 17 2010, 13:09 alex_os Цитата(voicek @ Dec 17 2010, 19:09) ...
Н... Dec 17 2010, 13:49 blackfin Цитата(voicek @ Dec 17 2010, 19:09) Уточн... Dec 17 2010, 14:24 Diusha Цитата(voicek @ Dec 17 2010, 19:09) на ве... Jan 1 2011, 03:43 voicek Цитата(alex_os @ Dec 17 2010, 19:49) Я пр... Dec 17 2010, 15:03 GetSmart Цитата(voicek @ Dec 17 2010, 23:03) Задер... Dec 18 2010, 05:41  phantom Цитата(GetSmart @ Dec 18 2010, 12:41) А д... Dec 18 2010, 08:48 phantom Ну тогда все проще. Я то думал что надо любой инст... Dec 18 2010, 04:38 qxov Цитата(voicek @ Dec 15 2010, 03:46) 2.Ней... Dec 21 2010, 04:55 Oldring Цитата(qxov @ Dec 21 2010, 10:55) Я вопро... Dec 21 2010, 08:01  qxov Цитата(Oldring @ Dec 21 2010, 14:01) Нейр... Dec 22 2010, 06:06   phantom Цитата(qxov @ Dec 22 2010, 13:06) Сплошны... Dec 22 2010, 14:54 phantom Как я понял из чтения всяких книжек - адаптивные ф... Dec 21 2010, 06:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|