реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Распознавание образа сигнала real-time
voicek
сообщение Dec 14 2010, 21:46
Сообщение #1





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



Условие.
На входе имеем сигнал звуковой частоты (музыкальный инструмент).
Задача.
Требуется определить частоту сигнала (извлекаемую ноту) и отправить команду исполняющему устройству. Задержка между звукоизвлечением и реакцией исп. устройства должна быть минимально заметной на слух (~10мс). Попытаться всунуть алгоритм в ARM.

Предполагаю несколько вариантов решений.
1.Корреляционный анализ. Сначала "обучаем" систему, записываем образцы сэмплов каждой ноты, а потом сравниваем входной сигнал с библиотекой образцов, т.е. определяем коэфф. корреляции. Вероятно размер образца не должен быть слишком большим (фронт сигнала), иначе задержка будет заметна. Не помешает ли это устойчивости распознавания?

2.Нейронные сети. Тут темный лес, мало знаком с этой темой.

Господа опытные товарищи поделитесь соображениями, "включите свет". С какой стороны копать огород.
Go to the top of the page
 
+Quote Post
subver
сообщение Dec 15 2010, 00:13
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Посчитать АКФ куска в 10мс и определить основной тон? Или еще какие нибудь алгоритмы выделения основного тона из вокодеров подсмотреть.
Go to the top of the page
 
+Quote Post
Andron_
сообщение Dec 15 2010, 00:29
Сообщение #3


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



если нужно определить лишь ноту - зачем корреляционный анализ. Фурье, и определяем гармонику максимального уровня.
Go to the top of the page
 
+Quote Post
Fast
сообщение Dec 15 2010, 03:02
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



если сигнал простой, т.е. нота состоит из одного тона,
то можно алгоритм Герцеля (Goertzel) на 7 частот
если сигнал сложный, - аккорд, полутоны, - то Фурье, а после Фурье распознавать
Go to the top of the page
 
+Quote Post
ataradov
сообщение Dec 15 2010, 03:05
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Andron_ @ Dec 15 2010, 06:29) *
если нужно определить лишь ноту - зачем корреляционный анализ. Фурье, и определяем гармонику максимального уровня.

Не работает фурье на настоящих музыкальных инструментах. Очень часто обертоны имеют сравнимый и больший уровень.

Можно посмотреть тут поднятую мной тему об определении частоты гитарной струны, там и матлабовские модели есть. Единственный медот который нормально работает - это АКФ.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Dec 15 2010, 04:49
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



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

2.Нейронные сети. Тут темный лес, мало знаком с этой темой.

Господа опытные товарищи поделитесь соображениями, "включите свет". С какой стороны копать огород.


Вариант 1 однозначно, еще попробовать автокорреляцию (как тут советовали). Хотя 10 мс маловато будет для автокорреляционного
анализа да и для корреляционного наверное тоже.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Dec 15 2010, 05:34
Сообщение #7


山伏
*****

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



Да, йа тоже за автокорреляцию... Но и "Фурье" попробовать можно...
Цитата(Taradov Alexander @ Dec 15 2010, 08:05) *
Не работает фурье на настоящих музыкальных инструментах. Очень часто обертоны имеют сравнимый и больший уровень.

Больший, то больший, но нужна ведь 1-ая...

Цитата(voicek @ Dec 15 2010, 02:46) *
2.Нейронные сети. Тут темный лес, мало знаком с этой темой.

...забудьте. Оптимальным решением будет тот же автокоррелятор, но спроецированный на структуру нейронной сети... Каша из топора - эти нейронные сети... wink.gif


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
Fast
сообщение Dec 15 2010, 05:39
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



Цитата(Taradov Alexander @ Dec 15 2010, 09:05) *
Не работает фурье на настоящих музыкальных инструментах. Очень часто обертоны имеют сравнимый и больший уровень.
сам Фурье и не должен работать, это всего лишь получение спектральных составляющих сигнала. Спектральные или кепстральные коэф-ты выступают в качестве признаков в разпознавании образа звука (с помощью нейронной сети, перцептрон с одним слоем).

с практической реализацией АКФ тоже не все будет гладко, если звуки произвольной длительности
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Dec 15 2010, 06:17
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 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 частот. Однако требования по отношению сигнал/шум могут быть невыполнимыми.


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
voicek
сообщение Dec 15 2010, 07:07
Сообщение #10





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



На Фурье и Герцеле вполне успешно строят тюнеры (прибор для настройки муз. инструмента), но там времени вагон, музыкант ноту дал и ждем пока система обработает. Соответственно и точек можно побольше взять. А вот в real-time... Года два назад пытался реализовать распознавание на Герцеле. На чистом синусе вроде бы все хорошо, а если гармоник добавить, то их уровни спектров начинали забивать основной тон. Если брать больше точек, чтобы разнести спектры, получаем неприемлемую реакцию системы. Так что Фурье и т.п. наверное не подойдет.

Для справки. Немецкие инженеры решили таки эту задачу. Декларируют свои приборы, как работающие на принципе нейронных сетей. Хотя есть подозрение, что это рекламный ход. Музыканты, в большинстве своем, с математикой мало знакомые, нейронные сети для них как заклинание sm.gif.
Тем не менее, на сегодняшний момент это самый эффективный в своем классе прибор.

Попробую, как советуют уважаемые форумчане, корреляцию. И в этом разрезе вопроса, не подскажет ли кто алгоритмов для встроенных систем, поскольку вы люди хожалые по энтим тропам, а мы как говорится не местные...
Go to the top of the page
 
+Quote Post
Oldring
сообщение Dec 15 2010, 07:12
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(voicek @ Dec 15 2010, 13:07) *
Для справки. Немецкие инженеры решили таки эту задачу. Декларируют свои приборы, как работающие на принципе нейронных сетей.


Кто вам мешает так же рассказывать?

Сколько нот одновременно может звучать?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Dec 15 2010, 07:50
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(voicek @ Dec 15 2010, 13:07) *
Для справки. Немецкие инженеры решили таки эту задачу. Декларируют свои приборы, как работающие на принципе нейронных сетей..

Лет 50 назад думали что вот-вот кто-нибудь сделает искусственный разум на перцептронах, но что-то никак sm.gif.
По теме, т.к. время анализа требуется маленькое наверное стоит попытаться работать на верхних гармониках. Типа пропускаем через
ФВЧ и далее автокоррелятор, но если у музыканта больше одного пальца работать скорее всего не будет...



--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
voicek
сообщение Dec 15 2010, 08:00
Сообщение #13





Группа: Участник
Сообщений: 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) *
Сколько нот одновременно может звучать?

Пока с одной попробуем. Ну а на текущий момент играют аккордами, т.е. шесть нот (для гитары применительно). Хотя для этих целей датчики специальные ставятся, каждая струна отдельно снимается.
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Dec 15 2010, 08:22
Сообщение #14


山伏
*****

Группа: Свой
Сообщений: 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мс на все про все. Сигнал принять, обработать, +попутные сервисы и выдать упр. сигнал.
Об эти ворота уже немало рогов поломано. Если верхние частоты еще нормально детектируются, то на низких уже задержка ощутимая получается. Так что басисты до недавнего времени скромно в сторонке курили.

Внутри нейросейтей вдруг откуда ни возьмись возникнет новая параллельная математика? Или ортогональная? Или где-то под углом? biggrin.gif


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
fontp
сообщение Dec 15 2010, 08:36
Сообщение #15


Эксперт
*****

Группа: Свой
Сообщений: 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 мс, но их высшие гармоники - возможно. Так что возможно немцы и не врут. По мощности определить в какой октаве, а по высшим гармоникам - какая нота строя. Решающая логика может быть довольно простая, нейтронной сетью называют её чтобы поважничать))

ЗЫ. Если немцы утверждают, что могут различать ноты на расстроеном инструменте, то можно смело плюнуть им в морду
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 18:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01515 секунд с 7
ELECTRONIX ©2004-2016