|
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
|
|
Как узнать частоту звука?20.01.2012, 16:11. Показов 65074. Ответов 252
Метки нет (Все метки)
народ,подскажите кто знает.обработкой сигнала нигода не занимался,поэтому если что-то говорю не правильно
хочу программно определить к какой ноте принадлежит звук. Имею частоту дискретизации 8кГц и глубину 16 бит. значения этой выборки заносятся в массив.1)Что представляют из себя эти значения? если я правильно понял то каждый элемент массива это значение частоты в момент времени? 2)что нужно сделать с этим массивом чтобы узнать ноту?
0
|
|
| 20.01.2012, 16:11 | |
|
Ответы с готовыми решениями:
252
Как менять частоту звука на STM32 Узнать из программы частоту процессора
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 05.12.2013, 11:17 | |||
|
Добавлено через 2 минуты
0
|
|||
| 05.12.2013, 18:25 | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 05.12.2013, 18:26 | |
|
Разве законченный Фурье даёт ни все частоты? Или проблема в том, что там ещё шум мешается?
0
|
|
| 16.12.2013, 18:52 | |
|
Опять я. Задача изменилась.
Определить, есть ли в звуке (4096 семплов) открытая гитарная струна? Есть ли там одна из данных частот? 6 струна=82.41 Гц; 5=110 ; 4=147.82 ; 3=196 ; 2=246.94 ; 1=329.63 Использовать функцию автокорреляции. Где есть такая? Как я понял, для поиска звука 6 струны нужно график сдвинуть на (44100/82.41) = 535.13 семплов, и посчитать корреляционный коэффициент. Во-первых как сдвигать на дробное количество? Во-вторых как считается коэффициент?
0
|
|
|
|
|||
| 16.12.2013, 19:16 | |||
|
http://ru.wikipedia.org/wiki/А... ая_функция
А через корреляцию ознакомтесь с закрепленной темой Автокорреляционная функция и частота основного тона (ЧОТ)
0
|
|||
| 28.12.2013, 23:36 | |
|
Так. Узнал новое. Есть алгоритм Герцеля - http://www.dsplib.ru/content/g... rtzel.html
Как я понял, он ищет величину мощности одной заданной частоты в сигнале (а не всех частот, как делает фурье) Возможно в будущем приделаю его к контролю правильности игры заданной ноты или двух одновременно заданных нот.
0
|
|
| 07.01.2014, 02:15 | |
|
нашел иностранную статью с исходниками на гитхабе
http://blog.bjornroche.com/201... pitch.html но заканчивается обычным magnitude[i] = sqrt( real[i]*real[i] + cmpx[i]*cmpx[i] ); без гармоник Добавлено через 2 часа 57 минут обалдеть. они там борятся с гармониками в самом начале! Low-Pass Filtering - берет среднее между двумя семплами, убирая таким образом резкие скачки и высшие частоты. Подскажите, что есть на эту тему?
0
|
|
| 05.02.2014, 17:49 | ||||||
|
Приделал фильтр на основе скользящего среднего. Захват, фильтр, окно, фурье, поиск максимума.
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 11
|
|
| 26.04.2014, 05:49 | |
|
Занимаюсь сейчас такой же задачей.
попробовал FFT + HPS. HPS - это сжатие спектра в 1, 2, 3, 4.. раз в зависимости от того сколько гармоник в нем может находится, затем перемножение полученных сжатых спектров между собой, и обычный поиск максимума. Теоретически гармоники должны наложиться на фундаментальную частоту и в результате получится один большой жирный пик. Проблема в том что он плохо работает с низкими частотами, у меня получалось вместо одного пика, несколько, я пробовал брать минимальный, и это сносно работало, на при записи с компьютера, где много шумов -- результаты намного хуже. Хотя с высокими работает отлично. вот тут http://www.hjortgaard.net/projects/4/download Для низких частот советуют использовать Cepstrum Кто что может посоветовать? Если можно, есть ссылки на реализации Cepstrum, то это очень бы помогло(насколько я понимаю там используется обратное преобразование фурье IDFT, исходники или псевдокод были бы кстати) Кстати кто что думает про метод автокорреляции http://cnx.org/content/m11714/latest/ Я не уверен стоит ли с ним вообще возится, судя из описания там вычислительная сложность намного больше, но в любом случае код-псевдокод, нормальное детальное описание помогли бы.
0
|
|
| 26.04.2014, 11:36 | |
|
Вопрос с определением басовых нот по нормальному у меня не решён. Актуален до сих пор.
Автокорреляцию использовать нужно тогда, когда нужно распознать одну из небольшого количества нот. Потому что запускать функцию приходится на каждую распознаваемую ноту.
0
|
|
|
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 11
|
|
| 29.04.2014, 04:27 | |
|
Попробовал кепструм. Резульаты еще хуже чем от HPS
, лагает как на высоких так и на низких частотах, причем ошибки не зависят напрямую от частоты. Возможно я где то ошибся или сам алгоритм не подходит, хотя странно.Значит я использовал следующий алгоритм x = Hamming(x), x - амплитуды y = FFT(x, N), N - размер окна, y - вещественная часть преобразования y = log(abs(y)) - от модуля каждого элемента берется логарифм x_c = IFFT(y) - обратное преобразование для y, мнимую часть, которая появилась при FFT(x, N) обнулил f0 = SAMPLE_RATE / max_i(x_c) - частоту дескритизации делим на номер найденного максимального элемента Кто что может посоветовать? Пока что буду пробовать автокорреляцию
0
|
|
| 09.05.2014, 13:20 | |
|
Всё что смог наизобретать выложил тут https://github.com/Remeslennik... ndAnalyzer
Как распознавать басы - вопрос открытый. Кто сможет, подскажите что-нибудь.
0
|
|
|
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 181
|
||
| 09.05.2014, 14:31 | ||
|
Вместо "наложения" гармоник друг на друга нужно высчитать соотношение между ними(Т.е делить на предыдущую гармонику ). В результате получим приблизительно 1/2, 1/3, 1/4 и тд. Очень часто октавная гармоника громче тоники, а 3я гармоника может быть тише 4ой и тд, но соотношение между ними всегда укажет на тонику. Анализ самых громких 5-7 значений Magnitude дает практически безошибочный результат.
0
|
||
| 09.05.2014, 15:00 | |
|
Хм. То есть предлагаешь сначала искать все громкие частоты?
0
|
|
| 09.05.2014, 15:00 | |
|
Как узнать частоту, амплетуду, длинну и т.д. звука в данный момент? Как получить частоту звука? Как узнать частоту процессора? Как узнать частоту прцессора?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|