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

 
 
 
Reply to this topicStart new topic
> Детектирование "нелинейных" звуковых чирпов в аудио потоке., чем сдетектировать?
tmtlib
сообщение Aug 1 2011, 10:37
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Подскажите, чем определять синусоидальный сигнал с нелинейно растущей частотой? Есть шумы и эхо. Спектрограмма БПФ по времени даёт весьма размазанную картину, так как частота растёт быстро, амплитуда падает в шум, т.е. БПФ с большим окном попросту не подходит для таких писков. В спектрограмме конечно что-то видно, но алгоритмически это выделять уже сложно - и нужна память на хранение спектрограммы. На частоте дискретизации 22.5кГц в контроллер влазит примерно 2048 отсчёта (упаковываю по два 8-битных отстчёта в одну 16-битную ячейку памяти).
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 2 2011, 04:05
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Капитан очевидность утверждает, что надо выделить изменения частоты сигнала от номинальной частоты. Для этого можно поставить частотный детектор и на выходе будет зависимость мгновенной частоты сигнала от времени
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Aug 2 2011, 07:10
Сообщение #3


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

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(tmtlib @ Aug 1 2011, 14:37) *
Подскажите, чем определять синусоидальный сигнал с нелинейно растущей частотой?

А что Вы называете определять? Может быть отличать от сигналов с линейно растущей частотой? Или с нелинейно убывающей?
Возьмем короткий синусоидальный импульс. Сначала частоты не было, потом она нелинейно! возросла до определенной, потом нелинейно! исчезла.
Это надо определять?
Опишите Ваши сигналы и от чего их надо отличить. Может помочь ответ на вопрос зачем?


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


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(tmtlib @ Aug 1 2011, 13:37) *
Подскажите, чем определять синусоидальный сигнал с нелинейно растущей частотой? Есть шумы и эхо. Спектрограмма БПФ по времени даёт весьма размазанную картину, так как частота растёт быстро, амплитуда падает в шум, т.е. БПФ с большим окном попросту не подходит для таких писков. В спектрограмме конечно что-то видно, но алгоритмически это выделять уже сложно - и нужна память на хранение спектрограммы. На частоте дискретизации 22.5кГц в контроллер влазит примерно 2048 отсчёта (упаковываю по два 8-битных отстчёта в одну 16-битную ячейку памяти).

Я бы сделал с помощью оптимальной фильтрации. То есть, нужно взять ожидаемый сигнал и его ортогональное дополнение. Загрузить это в FIR. И работать с приемлемой децимацией (чтобы ресурса хватило и пик корреляции не прозевать). То есть делать свертку сигнала с действительной и мнимой частью ядра и векторно складывать. Получим огибающую, у которой будет хороший пик при приеме сигнала, на который настроен фильтр.

Сообщение отредактировал sup-sup - Aug 2 2011, 11:12
Go to the top of the page
 
+Quote Post
tmtlib
сообщение Aug 3 2011, 03:48
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Не ожидал такого количества ответов. Ну и наводящие вопросы тоже весьма помогли.
Цитата
. То есть, нужно взять ожидаемый сигнал и его ортогональное дополнение. Загрузить это в FIR. И работать с приемлемой децимацией (чтобы ресурса хватило и пик корреляции не прозевать).

Но меня смущало что сам сигнал весьма низкого качества. Из наиболее подходящего прочитал несколько пейперов по распознанию пения птиц, но там задача сложнее (определение вида птицы).

Я тут думал как это проще сделать, и вот придумал ещё один метод. Ниже опишу идею, может кому пригодится.

1. Берём спектр БПФ, смотрим где примерно шумы.
2. Преобразуем амплитуды спектра в "бинарные" значения: 0, если амплитуда меньше шумов и 1 - если больше.
3. Упаковываем 16 отсчётов спектра в 1 16-битное слово (экономия памяти).
4. Ведём запись такой упакованной спектрограммы. Например, спектрограмма 32 измерений по 512 частотным "бинам" будет занимать 32*512/16=1024 слова.

Теперь имеется нечто вроде чёрно-белой картинки спектрограммы размером 32*512, которая занимает 2048 байт (1024 слова) Без упаковки это 32768 байт (16384 слова). Далее:

5. Строю гистограмму по каждой строке текущей спектрограммы простым сложением HIST[i] = SPECTROGRAM[i,0]+SPECTROGRAM[i,1]+...+SPECTROGRAM[i,31]. i=0..511. Получается такой график: если частота не меняется, на гистограмме начинает расти пик и достигает значения 32 (т.е. равен длине "окна" спектрограммы). Если частота начинает меняться, например возрастать, то правый склон пика начинает подниматься, а сам пик постепенно уходит в ноль.

Вот здесь на картинке показан пример: частота начала расти вверх. Второй пик справа - это какая-то помеха самого компьютерного звукового входа.

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

p.s. всем спасибо за ответы, fir тоже посмотрю. Что применить ещё не решил

Сообщение отредактировал tmtlib - Aug 3 2011, 03:58
Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Aug 3 2011, 04:51
Сообщение #6


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

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(tmtlib @ Aug 3 2011, 07:48) *
1. Берём спектр БПФ, смотрим где примерно шумы.

1.Вообще надо сравнивать не с шумами, а с средним шума и желаемого значения спектра.
2.БПФ хорош для суммы синусоид, если сигнал имеет определенную форму и границы во времени, то корреляционные методы типа согласованного фильтра однозначно надежнее.


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
tmtlib
сообщение Aug 3 2011, 09:11
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



ну что же, стоит признать, что мой метод оказался бредом, хотя и не полнейшим. Та маленькая картинка сверху - это гистограмма, а не спектр. Спектр выглядит намного хуже - всё в шумах.

Теперь подумываю над предложением sup-sup засунуть эталон в FIR фильтр и натравить его на децимированный сигнал.

p.s. Всем спасибо, сделать открытие в области ЦОС мне пока не удалось fman.gif

У меня ещё вопрос! Я хочу выбрать эталон, с которым потом будет проводиться корреляция. Но при этом в звуковом сигнале присутствует многократное эхо, из-за чего синусоиды этого звука перемешались. Будет ли в этом случае у меня работать корреляция? Я ещё могу представить как это будет работать на "аналитическом" чирпе, нечто вроде ДПФ для одной частоты. Но здесь свёртка с такой фиговиной. Я конечно попробую, потом отпишу о результатах...
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Aug 3 2011, 09:59
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(tmtlib @ Aug 3 2011, 12:11) *
.. и натравить его на децимированный сигнал.
.. многократное эхо

Я предложил децимацию после свертки сигнала с комплексным эталоном. То есть, получить огибающую, с шагом в N выборок. Шаг децимации зависит от максимальной частоты спектра огибающей.
Go to the top of the page
 
+Quote Post
tmtlib
сообщение Aug 3 2011, 10:16
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Цитата(sup-sup @ Aug 3 2011, 13:59) *
Я предложил децимацию после свертки сигнала с комплексным эталоном. То есть, получить огибающую, с шагом в N выборок. Шаг децимации зависит от максимальной частоты спектра огибающей.

ok. А я думал для ускорения свёртки.....
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Aug 3 2011, 11:34
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(tmtlib @ Aug 3 2011, 13:16) *
ok. А я думал для ускорения свёртки.....

И еще, нужно не забыть про комплексное дополнение для ядра фильтра - можно сделать через преобразование Гильберта.

Сообщение отредактировал sup-sup - Aug 3 2011, 11:34
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 12:16
Рейтинг@Mail.ru


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