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

|
Условие. На входе имеем сигнал звуковой частоты (музыкальный инструмент). Задача. Требуется определить частоту сигнала (извлекаемую ноту) и отправить команду исполняющему устройству. Задержка между звукоизвлечением и реакцией исп. устройства должна быть минимально заметной на слух (~10мс). Попытаться всунуть алгоритм в ARM.
Предполагаю несколько вариантов решений. 1.Корреляционный анализ. Сначала "обучаем" систему, записываем образцы сэмплов каждой ноты, а потом сравниваем входной сигнал с библиотекой образцов, т.е. определяем коэфф. корреляции. Вероятно размер образца не должен быть слишком большим (фронт сигнала), иначе задержка будет заметна. Не помешает ли это устойчивости распознавания?
2.Нейронные сети. Тут темный лес, мало знаком с этой темой.
Господа опытные товарищи поделитесь соображениями, "включите свет". С какой стороны копать огород.
|
|
|
|
|
Dec 15 2010, 04:49
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(voicek @ Dec 15 2010, 03:46)  Условие. Предполагаю несколько вариантов решений. 1.Корреляционный анализ. Сначала "обучаем" систему, записываем образцы сэмплов каждой ноты, а потом сравниваем входной сигнал с библиотекой образцов, т.е. определяем коэфф. корреляции. Вероятно размер образца не должен быть слишком большим (фронт сигнала), иначе задержка будет заметна. Не помешает ли это устойчивости распознавания?
2.Нейронные сети. Тут темный лес, мало знаком с этой темой.
Господа опытные товарищи поделитесь соображениями, "включите свет". С какой стороны копать огород. Вариант 1 однозначно, еще попробовать автокорреляцию (как тут советовали). Хотя 10 мс маловато будет для автокорреляционного анализа да и для корреляционного наверное тоже.
--------------------
ну не художники мы...
|
|
|
|
|
Dec 15 2010, 05:34
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
Да, йа тоже за автокорреляцию... Но и "Фурье" попробовать можно... Цитата(Taradov Alexander @ Dec 15 2010, 08:05)  Не работает фурье на настоящих музыкальных инструментах. Очень часто обертоны имеют сравнимый и больший уровень. Больший, то больший, но нужна ведь 1-ая... Цитата(voicek @ Dec 15 2010, 02:46)  2.Нейронные сети. Тут темный лес, мало знаком с этой темой. ...забудьте. Оптимальным решением будет тот же автокоррелятор, но спроецированный на структуру нейронной сети... Каша из топора - эти нейронные сети...
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Dec 15 2010, 05:39
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Цитата(Taradov Alexander @ Dec 15 2010, 09:05)  Не работает фурье на настоящих музыкальных инструментах. Очень часто обертоны имеют сравнимый и больший уровень. сам Фурье и не должен работать, это всего лишь получение спектральных составляющих сигнала. Спектральные или кепстральные коэф-ты выступают в качестве признаков в разпознавании образа звука (с помощью нейронной сети, перцептрон с одним слоем). с практической реализацией АКФ тоже не все будет гладко, если звуки произвольной длительности
|
|
|
|
|
Dec 15 2010, 06:17
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531

|
Цитата(Fast @ Dec 15 2010, 10:02)  Герцеля (Goertzel) на 7 частот 1. Если внимательно посмотреть на музыкальную клавиатуру, то в каждой октаве 7 белых клавиш и 5 черных, итого 12. А октавы еще различать нужно? 2. Если хотя бы 2 периода поместить в 10мс это частота будет 200Гц, а для надежности надо бы побольше, частоты очень мало отличаются. Думаю 12 периодов как минимум для надежного корреляционного разделения частот. Это частоты 1200Гц и более. 3. Можно оцифровывать 12-ю каналами синхронными с нотами, наверное будет лучше. 4. Можно несколько раз продифференцировать сигнал и находить мгновенный спектр считая что он содержит не более 3-4 частот. Однако требования по отношению сигнал/шум могут быть невыполнимыми.
--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
|
|
|
|
|
Dec 15 2010, 07:07
|
Группа: Участник
Сообщений: 14
Регистрация: 10-10-10
Из: Королёв Моск.обл.
Пользователь №: 60 052

|
На Фурье и Герцеле вполне успешно строят тюнеры (прибор для настройки муз. инструмента), но там времени вагон, музыкант ноту дал и ждем пока система обработает. Соответственно и точек можно побольше взять. А вот в real-time... Года два назад пытался реализовать распознавание на Герцеле. На чистом синусе вроде бы все хорошо, а если гармоник добавить, то их уровни спектров начинали забивать основной тон. Если брать больше точек, чтобы разнести спектры, получаем неприемлемую реакцию системы. Так что Фурье и т.п. наверное не подойдет. Для справки. Немецкие инженеры решили таки эту задачу. Декларируют свои приборы, как работающие на принципе нейронных сетей. Хотя есть подозрение, что это рекламный ход. Музыканты, в большинстве своем, с математикой мало знакомые, нейронные сети для них как заклинание  . Тем не менее, на сегодняшний момент это самый эффективный в своем классе прибор. Попробую, как советуют уважаемые форумчане, корреляцию. И в этом разрезе вопроса, не подскажет ли кто алгоритмов для встроенных систем, поскольку вы люди хожалые по энтим тропам, а мы как говорится не местные...
|
|
|
|
|
Dec 15 2010, 07:50
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(voicek @ Dec 15 2010, 13:07)  Для справки. Немецкие инженеры решили таки эту задачу. Декларируют свои приборы, как работающие на принципе нейронных сетей.. Лет 50 назад думали что вот-вот кто-нибудь сделает искусственный разум на перцептронах, но что-то никак  . По теме, т.к. время анализа требуется маленькое наверное стоит попытаться работать на верхних гармониках. Типа пропускаем через ФВЧ и далее автокоррелятор, но если у музыканта больше одного пальца работать скорее всего не будет...
--------------------
ну не художники мы...
|
|
|
|
|
Dec 15 2010, 08:00
|
Группа: Участник
Сообщений: 14
Регистрация: 10-10-10
Из: Королёв Моск.обл.
Пользователь №: 60 052

|
Цитата(SPACUM @ Dec 15 2010, 12:17)  А октавы еще различать нужно? Применительно допустим к бас-гитаре и обычной гитаре, это диапазон частот от 41.203 Гц (Ми контроктавы) до 1318.5 Гц (Ми третьей октавы). Цитата(SPACUM @ Dec 15 2010, 12:17)  2. Если хотя бы 2 периода поместить в 10мс это частота будет 200Гц, а для надежности надо бы побольше, частоты очень мало отличаются. Думаю 12 периодов как минимум для надежного корреляционного разделения частот. Это частоты 1200Гц и более. 10мс на все про все. Сигнал принять, обработать, +попутные сервисы и выдать упр. сигнал. Об эти ворота уже немало рогов поломано. Если верхние частоты еще нормально детектируются, то на низких уже задержка ощутимая получается. Так что басисты до недавнего времени скромно в сторонке курили. Может и не врут немцы-то? Может и впрямь на сетях реализовали? Цитата(Oldring @ Dec 15 2010, 13:12)  Сколько нот одновременно может звучать? Пока с одной попробуем. Ну а на текущий момент играют аккордами, т.е. шесть нот (для гитары применительно). Хотя для этих целей датчики специальные ставятся, каждая струна отдельно снимается.
|
|
|
|
|
Dec 15 2010, 08:22
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
Цитата(Fast @ Dec 15 2010, 10:39)  с помощью нейронной сети, перцептрон с одним слоем ...а нельзя построить распознающую структуру без таких вот умных слов? Вопрос риторический конечно. Цитата(voicek @ Dec 15 2010, 13:00)  Может и не врут немцы-то? Может и впрямь на сетях реализовали? А как, простите, это Ваше предположение связано с требованиями? Цитата(voicek @ Dec 15 2010, 13:00)  Применительно допустим к бас-гитаре и обычной гитаре, это диапазон частот от 41.203 Гц (Ми контроктавы) до 1318.5 Гц (Ми третьей октавы). ... 10мс на все про все. Сигнал принять, обработать, +попутные сервисы и выдать упр. сигнал. Об эти ворота уже немало рогов поломано. Если верхние частоты еще нормально детектируются, то на низких уже задержка ощутимая получается. Так что басисты до недавнего времени скромно в сторонке курили. Внутри нейросейтей вдруг откуда ни возьмись возникнет новая параллельная математика? Или ортогональная? Или где-то под углом?
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Dec 15 2010, 08:36
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
QUOTE (voicek @ Dec 15 2010, 14:00)  Применительно допустим к бас-гитаре и обычной гитаре, это диапазон частот от 41.203 Гц (Ми контроктавы) до 1318.5 Гц (Ми третьей октавы).
10мс на все про все. Сигнал принять, обработать, +попутные сервисы и выдать упр. сигнал. Об эти ворота уже немало рогов поломано. Если верхние частоты еще нормально детектируются, то на низких уже задержка ощутимая получается. Так что басисты до недавнего времени скромно в сторонке курили. Может и не врут немцы-то? Может и впрямь на сетях реализовали?
Пока с одной попробуем. Ну а на текущий момент играют аккордами, т.е. шесть нот (для гитары применительно). Хотя для этих целей датчики специальные ставятся, каждая струна отдельно снимается. .Октава - это в 2 раза. расстройка между тонами - корень 12-й степени из 2 = 1.0594630943592952645618252949461, т.е 5% Понятно что 40 гц с точностью пять процентов (+- гц) за 10 мс измерить невозможно. В общем случае есть принцип неопределённости который запрещает это, независимо от алгоритма. Это сразу рога обламать. Но на помощь приходит тот факт, что ноты звучат не на произвольных частотах (ми контрактавы не на любой частоте одинаково полезны), а только на (41.203)**(n/12). Можно пытаться соорудить банк фильтров на все ноты музыкального строя. И хотя Ми контроктавы от Фа контрактавы не отличить за 10 мс, но их высшие гармоники - возможно. Так что возможно немцы и не врут. По мощности определить в какой октаве, а по высшим гармоникам - какая нота строя. Решающая логика может быть довольно простая, нейтронной сетью называют её чтобы поважничать)) ЗЫ. Если немцы утверждают, что могут различать ноты на расстроеном инструменте, то можно смело плюнуть им в морду
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|