|
Алгоритм поиска основной частоты, Метод максимального правдоподобия |
|
|
|
Jul 1 2011, 06:56
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 1-07-11
Пользователь №: 66 006

|
Здравствуйте, товарищи.
Мне нужно улучшить алгоритм поиска основной частоты по методу максимального правдоподобия. Был пример у меня, как делать, я его модифицировал в нескольких местах (добавил настраиваемость оконной функции и фильтра). Возможно, некоторые места вам покажутся совершенно абсурдными - но я пока новичок в DSP, некоторые места в старом алгоритме вызывают у меня сильное удивление, но пока не хватает опыта для однозначного решения: или я не понимаю момент, или предыдущий программист допустил косяк.
- Вход: массив байтов byteData длиной sampleLength, количество разбиений sampleRate. - Выход: фундаментальная частота fundamentalFrequency и громкость fundamentalVolume.
Алгоритм: 1. Массив байтов преобразуется в вешественный массив амплитуд. 2. Проверяется максимальная амплитуда - если она ниже определённого значения, то это квалифицируется как почти полная тишина (выход из алгоритма) 3. Получение спектра из массива амплитуд: 3.1. Умножение массива амплитуд на оконную функцию; 3.2. Преобразование Фурье. 4. Фильтрация массива спектральных значений. 5. Расчёт массива громкости (модуль от спектральных значений). 6. Нормализация громкости: 6.1. Поиск максимальной громкости (maxVolume). 6.2. Нормализация (volume[i] = volume[i]/maxVolume); 7. Квалификация спектра как информативного или зашумлённого. 8. Инициализация 3 пиков громкости и соответствующих им частот. 9. Поиск фундаментальной частоты. 9.1. Если один из 2 главных пиков громкости ниже некоторого порога громкости, то выбрать частоту другого главного пика, выход из алгоритма. 9.2. Поиск фундаментальной частоты по 2 главным пикам согласно известным пропорциям 1/2, 1/3, 2/3, 2/5, 3/4, 3/5. 9.3. Коррекция фундаментальной частоты по 3-му пику.
Мне нужно пробежаться по некоторым пунктам, чтобы удостовериться в валидности алгоритма. Пункты 1, 2, 6, 8 и 9 вопросов не вызывают.
Самые горячие вопросы сейчас такие: 1. Правильно ли считается громкость? Массив спектральных значений имеет следующую структуру: в ячейках spectre[2*i] лежат коэффициэнты при косинусах, в spectre[2*i+1] лежат коэффициэнты при синусах. Соответственно, громкость считаю так: volume[i] = sqrt(sqr(spectre[2*i])+sqr(spectre[2*i+1])); Может, таким методом не громкость считается, а что-то другое? 2. Как рассчитать шум? И как рассчитать порог шума (если его превысить, то выход из алгоритма)? Сейчас шум рассчитывается как среднее арифметическое по массиву громкости.
Сообщение отредактировал QuickNick - Jul 1 2011, 07:00
|
|
|
|
Сообщений в этой теме
QuickNick Алгоритм поиска основной частоты Jul 1 2011, 06:56 qxov Описано много всего. Зачем все это делается - не п... Jul 1 2011, 11:54 QuickNick Цитата(qxov @ Jul 1 2011, 14:54) Описано ... Jul 1 2011, 12:30 SPACUM Цитата(QuickNick @ Jul 1 2011, 10:56) Мне... Jul 1 2011, 13:58 QuickNick Цитата(SPACUM @ Jul 1 2011, 16:58) 1.Во п... Jul 1 2011, 14:56  DRUID3 Цитата(QuickNick @ Jul 1 2011, 17:56) В к... Jul 1 2011, 15:19   QuickNick Цитата(DRUID3 @ Jul 1 2011, 18:19) ...что... Jul 2 2011, 09:10    DRUID3 Цитата(QuickNick @ Jul 2 2011, 12:10) Так... Jul 3 2011, 00:09     SPACUM Цитата(DRUID3 @ Jul 3 2011, 04:09) Вы уж ... Jul 3 2011, 16:59      DRUID3 Цитата(SPACUM @ Jul 3 2011, 19:59) Матлаб... Jul 3 2011, 21:28     QuickNick Цитата(DRUID3 @ Jul 3 2011, 03:09) Педыду... Jul 4 2011, 06:19      DRUID3 Цитата(QuickNick @ Jul 4 2011, 09:19) До ... Jul 4 2011, 07:03       QuickNick Цитата(DRUID3 @ Jul 4 2011, 10:03) У Вас ... Jul 4 2011, 07:42     QuickNick Цитата(DRUID3 @ Jul 3 2011, 03:09) Гы... ... Jul 4 2011, 12:30      SPACUM Цитата(QuickNick @ Jul 4 2011, 16:30) А н... Jul 5 2011, 20:17       QuickNick Цитата(SPACUM @ Jul 5 2011, 23:17) Пробов... Jul 6 2011, 06:37        SPACUM Цитата(QuickNick @ Jul 6 2011, 10:37) Бин... Jul 6 2011, 11:45         QuickNick Цитата(SPACUM @ Jul 6 2011, 14:45) Bin - ... Jul 6 2011, 13:58          SPACUM Цитата(QuickNick @ Jul 6 2011, 17:58) А. ... Jul 6 2011, 16:04           QuickNick Цитата(SPACUM @ Jul 6 2011, 19:04) res =(... Jul 14 2011, 07:03            SPACUM Цитата(QuickNick @ Jul 14 2011, 11:03) По... Jul 14 2011, 17:10             QuickNick Цитата(SPACUM @ Jul 14 2011, 20:10) 1.Есл... Jul 15 2011, 06:43              SPACUM Цитата(QuickNick @ Jul 15 2011, 10:43) За... Jul 15 2011, 08:22               QuickNick Цитата(SPACUM @ Jul 15 2011, 11:22) Если ... Jul 15 2011, 09:08              SPACUM Цитата(QuickNick @ Jul 15 2011, 10:43) Но... Jul 15 2011, 10:51               QuickNick Цитата(SPACUM @ Jul 15 2011, 13:51) Очень... Jul 15 2011, 12:01       QuickNick Цитата(SPACUM @ Jul 5 2011, 23:17) А макс... Jul 8 2011, 08:59        SPACUM Цитата(QuickNick @ Jul 8 2011, 12:59) 1)Е... Jul 8 2011, 21:15 DRUID3 Цитата(QuickNick @ Jul 1 2011, 09:56) 8. ... Jul 1 2011, 14:33 QuickNick 2 SPACUM: спасибо большое за помощь! Jul 11 2011, 06:38 thermit ЦитатаQuickNick:
Вот и нарвались на ступеньку sad.... Jul 14 2011, 10:25 QuickNick Цитата(thermit @ Jul 14 2011, 13:25) Явле... Jul 14 2011, 10:32 thermit ЦитатаSPACUM:
4.Явление Гиббса никакого отношения ... Jul 14 2011, 18:30 SPACUM Цитата(thermit @ Jul 14 2011, 22:30) Это ... Jul 14 2011, 19:57
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|