Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
Заблокирован
1

Алгоритм поиска пиков (пик-детектор) и определение частоты на малой длительности аудиосигнала

16.06.2015, 12:38. Просмотров 8003. Ответов 40
Метки нет (Все метки)

Hallo Forum Benutzern
Подскажите, какие сейчас есть современные алгоритмы / методы поиска пиков в комплексном (много частот) звуковом сигнале? Желательно привести пример кода на С++ или дать ссылку

В крайнем случае подойдёт линк на матчасть по данной тематике ...
Вообще мне нужны все пики, как шума, так и не шума и т.д. (шум будет отделяться немного позже).
Сигнал дискретный - 44100Hz x 16bit...
0
Миниатюры
Алгоритм поиска пиков (пик-детектор) и определение частоты на малой длительности аудиосигнала  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2015, 12:38
Ответы с готовыми решениями:

Подскажите библиотеку для генерации аудиосигнала нужной частоты
Надо задавать частоту, дискретизацию, и тп вид сигнала

Детектор определенной частоты
Здравствуйте. Хотелось бы узнать мнения и мысли вот по какому вопросу. Есть поток звуковых волн...

Определение длительности нажатия клавиши
Как определить какое время была нажата определённая клавиша в миллисекундах?

Определение длительности импульса и вывод на индикатор
Нужно устройство, которое измеряет время между срабатываниями двух датчиков. Начал с устройства...

40
Эксперт С++
4958 / 3064 / 456
Регистрация: 10.11.2010
Сообщений: 11,152
Записей в блоге: 10
16.06.2015, 13:16 2
Сам аудиофайл - это и есть набор одних только пиков. О каких-таких современных алгоритмах ты вообще говоришь? Как прочитать двоичный файл - довольно старый и известный алгоритм.
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
16.06.2015, 13:21 3
Думаю все просто:
Если твоя точка меньше соседних или больше соседних - это пик!

p.s. сложнее если ты захочешь "сгладить" линию, уменьшить точность...
p.s.s может быть исключение если точка РАВНА соседним - может быть "размазанным" пиком
2
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
16.06.2015, 13:52 4
...самый примитивный - скользящее окно с базой (ширина окна) на три точки (псевдокод):
Код
 // скользящее окно W с базой на три для поиска экстремума
 okno[0] = okno[1];
 okno[1] = okno[2];
 okno[2] = текущая;

    // экстремум - поиск минимума
 if ((okno[2] > okno[1]) and (okno[1] < okno[0])) //or
    // экстремум - поиск максимума
    //((okno[2] < okno[1]) and (okno[1] > okno[0])) {
Пример:
1
Заблокирован
16.06.2015, 22:04  [ТС] 5
Цитата Сообщение от castaway Посмотреть сообщение
Сам аудиофайл - это и есть набор одних только пиков.
Это набор отчётов, а не пиков.
Цитата Сообщение от castaway Посмотреть сообщение
Как прочитать двоичный файл - довольно старый и известный алгоритм
Причём тут чтение файла? Разумеется здесь вопрос не о чтение WAV файла, на что, притом, есть куча доков в сети...

Цитата Сообщение от Tester64 Посмотреть сообщение
Если твоя точка меньше соседних или больше соседних - это пик!
Да не... Если б всё было так просто ... Так не прокатит, пик может быть под наклоном - см рисунок с графиком.

Цитата Сообщение от raxp Посмотреть сообщение
Пример:
Спасибо за видео
А чё это за сайт - то там интересный такой? Не пускают Судя по твоему нику, это что - то связано с тобой, твоей командой или что - то вроде того? Сами софт пишете или так... чисто радио любители наподобие "радио кот точка ру"
P.S.: Лучшая музыка - в кейгенах
raxp, в общем спасибо за наводку на нужный софт
Цитата Сообщение от raxp Посмотреть сообщение
..самый примитивный - скользящее окно с базой (ширина окна) на три точки (псевдокод):
Ну... тут опять же не всё так просто с наклонными пиками, где точка посередине не будет ниже или выше двух своих соседей по краям во время пика ...
0
Миниатюры
Алгоритм поиска пиков (пик-детектор) и определение частоты на малой длительности аудиосигнала   Алгоритм поиска пиков (пик-детектор) и определение частоты на малой длительности аудиосигнала  
Эксперт С++
4958 / 3064 / 456
Регистрация: 10.11.2010
Сообщений: 11,152
Записей в блоге: 10
16.06.2015, 22:21 6
Цитата Сообщение от D-lay_Its_Easy Посмотреть сообщение
Это набор отчётов, а не пиков.
Вообще-то это дискретный набор значений амплитуды. Каждое значение представляет собой пик. А отчёт - это что-то из бухгалтерии. Теперь я понимаю откуда у тебя -11..
0
Заблокирован
16.06.2015, 22:38  [ТС] 7
Цитата Сообщение от castaway Посмотреть сообщение
Вообще-то это дискретный набор значений амплитуды
Это любой школьник знает
Цитата Сообщение от castaway Посмотреть сообщение
Каждое значение представляет собой пик
Да не пик это, пик - это пиковое значение. Есть максимальный пик, пики ограниченные определённой амплитудой и тд...
Цитата Сообщение от castaway Посмотреть сообщение
А отчёт - это что-то из бухгалтерии
А ещё отчёт, это какое - то число, отсчитанное от чего либо Грубо говоря эти дискретные значения амплитуды часто называют отчётом, потому что это очередная выборка записанных в файл данных ...
Ладно, это всё оффтоп...
Цитата Сообщение от castaway Посмотреть сообщение
Теперь я понимаю откуда у тебя -11..
Это ты про репутацию что ли? Так я за ней не гонюсь, зачем мне это? Если б эти циферки можно было бы в каком - нибуть банке на реальные денежки поменять ...

Так как пики выявлять? Интересуют и прямые и косые пики, в общем все...
0
Миниатюры
Алгоритм поиска пиков (пик-детектор) и определение частоты на малой длительности аудиосигнала  
Эксперт С++
4958 / 3064 / 456
Регистрация: 10.11.2010
Сообщений: 11,152
Записей в блоге: 10
16.06.2015, 23:00 8
Цитата Сообщение от D-lay_Its_Easy Посмотреть сообщение
Так как пики выявлять? Интересуют и прямые и косые пики, в общем все...
Тебе же дали варианты решения: №1, №2
Чем они тебя не устраивают?

Добавлено через 15 минут
Алгоритм прост.
Берёшь соседние точки, вычисляешь между ними середину, если она меньше средней точки - это пик.
1
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
17.06.2015, 06:24 9
Лучший ответ Сообщение было отмечено D-lay_Its_Easy как решение

Решение

...правильно говорить экстремумы.

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

Пример:
Код
    if (
       ((inwav.yValues[i-1] < inwav.yValues[i])and
       (inwav.yValues[i]>inwav.yValues[i+1]))or

       ((inwav.yValues[i-1] < inwav.yValues[i])and
       (inwav.yValues[i]=inwav.yValues[i+1]))or

       ((inwav.yValues[i-1] = inwav.yValues[i])and
       (inwav.yValues[i]>inwav.yValues[i+1]))
       ) then ...
1
Эксперт С++
3204 / 1731 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
17.06.2015, 08:26 10
D-lay_Its_Easy, вообще-то вы пометили на графике точки локальных минимумов радиуса кривизны графика функции, который выражается формулой
R = [1 + (f')^2] ^(3/2) / |f''|
1
Заблокирован
17.06.2015, 22:41  [ТС] 11
Цитата Сообщение от Mr.X Посмотреть сообщение
вообще-то вы пометили на графике точки локальных минимумов радиуса кривизны графика функции, который выражается формулой
Ну как сказать... Там частота одна, но амплитуда каждого колебания меняется согласно графику, так вот нужны все пики колебаний, пусть даже они плохо заметны, находятся как бы под углом или сбоку и явно не выражены.
Вот ещё рисунок ...
0
Миниатюры
Алгоритм поиска пиков (пик-детектор) и определение частоты на малой длительности аудиосигнала  
Эксперт С++
3204 / 1731 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
17.06.2015, 23:34 12
Цитата Сообщение от D-lay_Its_Easy Посмотреть сообщение
Ну как сказать... Там частота одна, но амплитуда каждого колебания меняется согласно графику, так вот нужны все пики колебаний, пусть даже они плохо заметны, находятся как бы под углом или сбоку и явно не выражены.
Ну, если соединить соседние локальные минимумы и максимумы вашего графика наклонными отрезками прямых, то «наклонные пики» можно определить как те точки, где наклон касательной совпадает с наклоном этого отрезка, и линия графика касается касательной своей выпуклостью. При этом график производной «спрямленного» графика кривой будет состоять из константных участков (горизонтальных отрезков), а в точках «наклонных пиков» график производной функции будет пересекать эти горизонтальные отрезки. Т.е. положение «наклонных пиков» будет зависеть от того какие наклонные отрезки мы выберем для спрямления участков кривой.
0
Заблокирован
18.06.2015, 07:53  [ТС] 13
Цитата Сообщение от Mr.X Посмотреть сообщение
локальные минимумы и максимумы
Хмм... А что под этим понимается конкретно?
Если вас не затруднит, не могли бы проиллюстрировать свои слова на простенькой схемке в пейнте, а то так ничего не понятно
0
Модератор
Эксперт по электронике
8231 / 6098 / 814
Регистрация: 14.02.2011
Сообщений: 21,180
18.06.2015, 08:06 14
судя по рисункам тебя интересуют частоты, а не амплитуда сигнала
тогда БПФ(Быстрое Преобразование Фурье) и на частоты уже натравливаешь скользящее окно, есть еще куча фильтров
рекомендую
"Руководство программиста по работе со звуком" Тим Кинтцель http://www.livelib.ru/book/1000003311
Часть VI. Обработка звука
Глава 24. Преобразования Фурье
дальше идет про цифровые фильтры
1
Заблокирован
18.06.2015, 21:36  [ТС] 15
Цитата Сообщение от ValeryS Посмотреть сообщение
судя по рисункам тебя интересуют частоты, а не амплитуда сигнала
На самом деле, если внимательно посмотреть на рисунок в 11-м посте ( https://www.cyberforum.ru/cpp-... ost7775491 ), можно заметить, что частота там одна, то есть есть одна главная частота у которой просто хитрым образом отрегулирована амплитуда

Цитата Сообщение от ValeryS Посмотреть сообщение
тогда БПФ(Быстрое Преобразование Фурье)
Я не сторонник Фурье и для меня всего его преобразования абсолютно бестолковые. У меня системы совершенно иная.

Цитата Сообщение от ValeryS Посмотреть сообщение
Руководство программиста по работе со звуком"
А...ну это я видел... Всё равно спасибо за ответ.

А вот скажи, ты видишь одну "тактовую" частоту на рисунке в посте 11 или тебе в глаза сразу бросается множество частот ?
0
Модератор
Эксперт по электронике
8231 / 6098 / 814
Регистрация: 14.02.2011
Сообщений: 21,180
18.06.2015, 21:49 16
Цитата Сообщение от D-lay_Its_Easy Посмотреть сообщение
А вот скажи, ты видишь одну "тактовую" частоту на рисунке в посте 11 или тебе в глаза сразу бросается множество частот ?
сразу бросается
"одна частота" это чистая синусоида с неизменяемой амплитудой
чуть только изменяется что то, значит появилась еще одна, или не одна, синусоида
то что инженеры называют гармоники, а музыканты обертона
на чем и стоит Фурье, любой сигнал можно разложить на кучу синусоид(косинусоид)
Цитата Сообщение от D-lay_Its_Easy Посмотреть сообщение
Я не сторонник Фурье и для меня всего его преобразования абсолютно бестолковые.
Это ты его "не умеешь готовить"
вот например на рисунке 11 одна частота промодулированная каким то сигнало, или наоборот какой то сигнал, на вскидку негармонический промодулирован синусоидой
и Фурье как раз позволит отбросить это синусоиду и анализировать сигнал
Прямое БПФ, отбросили гармонику модуляции, обратное БПФ и в результате модулирующий сигнал
1
Заблокирован
18.06.2015, 22:08  [ТС] 17
Цитата Сообщение от ValeryS Посмотреть сообщение
то что инженеры называют гармоники, а музыканты обертона
на чем и стоит Фурье
Вот по этому он мне и не подходит. Все эти гармоники и обертоны вообще есть только из за самого Фурье, в действительности их нет.
Цитата Сообщение от ValeryS Посмотреть сообщение
вот например на рисунке 11 одна частота промодулированная каким то сигнало,
Там есть одна частота, промодулированная сигналом, всё верно.
Кстати, чтоб самому не карачеться, может есть какой - то удобный софт для перемножения, сложения и тд всяких синусоид ? MatLab слишком геморойный ...
Цитата Сообщение от ValeryS Посмотреть сообщение
и Фурье как раз позволит отбросить это синусоиду и анализировать сигнал
Фурье нуждается в окне, что весьма удручает, т.к. для подробного анализа всего спектра нужны окна своего размера под каждую частоту, иначе, если будешь окном одного размера обрабатывать данные - получишь весьма размытый результат. Плюс к этому, в этом окне всегда идёт затухание громкости в каждом лупе по краям окна методами всяких Ханинов, БлэкМэнов Харисонов и тд... что значительно искажает результат и не может использоваться в высокоточных системах.
0
Эксперт С++
4958 / 3064 / 456
Регистрация: 10.11.2010
Сообщений: 11,152
Записей в блоге: 10
18.06.2015, 22:09 18
Цитата Сообщение от D-lay_Its_Easy Посмотреть сообщение
в действительности их нет
А куда они делись из действительности?
0
Заблокирован
18.06.2015, 22:12  [ТС] 19
Цитата Сообщение от castaway Посмотреть сообщение
А куда они делись из действительности?
Правильней спросить, откуда они там взялись?
0
Эксперт С++
4958 / 3064 / 456
Регистрация: 10.11.2010
Сообщений: 11,152
Записей в блоге: 10
18.06.2015, 22:17 20
Цитата Сообщение от D-lay_Its_Easy Посмотреть сообщение
Правильней спросить, откуда они там взялись?
Не правильней. Такова физика звука, и она стара как сама вселенная.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2015, 22:17

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Сообразить алгоритм подбора по длительности?
Нужен алгоритм подбора музыки по длительности для такого расписания Код: 9:00-10:00 - музыка ...

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки )
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void lab...

Определение частоты звука
Здравствуйте, очень хочется написать гитарный тюнер, поэтому пока пытаюсь понять математику этого...

Определение частоты по графику
Добрый день! Необходимо по графику найти значение частоты, прикрепляю файл с работой и картинку как...

Определение частоты ноты
Задача из второй недели CS50. Описывать смысл задания на русском очень долго и муторно, потому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.