- •1. Цифровые фильтры. Основные характеристики фильтров. Децибелы
- •2. Цифровые фильтры. Временные характеристики
- •3. Цифровые фильтры. Частотные характеристики.
- •4. Цифровые фильтры. Построение режекторных и полосовых фильтров.
- •5. Однородные нерекурсивные фильтры.
- •6. Переходная характеристика и подавление шума.
- •7. Модифицированные однородные фильтры.
- •8. Однородные рекурсивные фильтры.
- •10. Оконные фильтры и их расчет.
- •11. Оконные фильтры. Применение. Сверхвысокая точность.
- •12. Рекурсивные фильтры.Расчет параметров рекурсивных фильтров.
- •19.1. Рекурсивный метод
- •13. Однополюсный рекурсивный фильтр.
- •14. Фчх рекурсивных фильтров.
- •15. Фчх. Двунапрвленная фильтрация.
- •16. Фильтры Чебышева и Батерворда их свойства и применение.
- •20.2. Расчёт фильтра
- •17. Переходные характеристики, перерегулирование и устойчивость фильтров Чебышева и Батерворда.
- •20.4. Устойчивость
- •18. Сравнительный анализ фильтров.
- •21.1. Первый раунд:
- •21.2. Второй раунд:
- •21.3. Третий раунд:
- •24. Распознавание речи. Фреймы. Разбиение слов.
- •Входные данные
- •Распознавание
- •Разбиение слов
- •Разложение в ряд Фурье
- •Расчёт mel-фильтров
- •Применение фильтров, логарифмирование энергии спектра
- •Косинусное преобразование
- •Алгоритм распознавания
- •Эксперименты
- •Реализация
- •Основные понятия
- •Заключение
- •Формулы
- •26. Бинеризация изображений. Методы бинаризации. Сегментация изображения
- •Бинаризация
- •Бинаризация с нижним порогом
- •Локальная пороговая обработка
- •Глобальная пороговая обработка
- •27. Применение фвч и фнч при обработке изображений.
- •Часть 1. Фильтрация
- •Бинаризация по порогу, выбор области гистограммы
- •Классическая фильтрация: Фурье, фнч, фвч
- •Вейвлеты
- •Корреляция
- •Фильтрации функций
- •Фильтрации контуров
- •Прочие фильтры
- •Часть 2. Логическая обработка результатов фильтрации
- •Морфология
- •Контурный анализ
- •Особые точки
- •Часть 3. Обучение
- •Простой случай, одномерное разделение
- •Что делать если измерений больше двух?
- •И напоследок
- •28.Медианные фильтры. Адаптивные медианные фильтры.
- •Адаптивная медианная фильтрация
- •Введение
- •16.1. МедианНая фильтрацИя одномерных сигналов [44, 46, 2i, 3i].
- •16.2. МедианНая фильтрацИя изображений [47, 48, 3i].
- •29.Вейвлеты. Принципы и применение вейвлета Хаара. Вейвлет-сжатие «на пальцах» tutorial
- •Введение
- •Сжатие изображений
- •Преобразование Хаара
- •А где же сжатие?
- •Применим математику!
- •А как декодировать?
- •Увеличиваем число точек
- •Фильтры
- •Где эффективно преобразование Хаара?
- •30.Вейвлеты. Принципы и применение вейвлета Добеши. Преобразование Добеши
- •Другие вейвлеты
- •31.Фильтрация контуров. Оператор Кэни.
- •32.Фильтрация контуров. Оператор Собеля.
- •33.Линейная пространственная фильтрация.
- •Часть 1. Фильтрация
- •Что делать если измерений больше двух?
Применение фильтров, логарифмирование энергии спектра
Применение
фильтра заключается в попарном
перемножении его значений со значениями
спектра. Результатом этой операции
является mel-коэффициент. Поскольку
фильтров у нас M, коэффициентов будет
столько же.
Однако,
нам нужно применить mel-фильтры не к
значениям спектра, а к его энергии. После
чего прологарифмировать полученные
результаты. Считается, что таким образом
понижается чувствительность коэффициентов
к шумам.
Косинусное преобразование
Дискретное
косинусное преобразование (DCT) используется
для того, что бы получить те самые
“кепстральные” коэффициенты. Смысл
его в том, что бы “сжать” полученные
результаты, повысив значимость первых
коэффициентов и уменьшив значимость
последних.
В
данном случае используется DCTII без
каких-либо домножений на
(scale
factor).
Теперь
для каждого фрейма мы имеем набор из M
mfcc-коэффициентов, которые могут быть
использованы для дальнейшего
анализа.
Примеры
код для вышележащих методов можно
найти тут.
Алгоритм распознавания
Вот тут, дорогой читатель, тебя и ждёт главное разочарование. В интернетах мне довелось увидеть множество высокоинтеллектуальных (и не очень) споров о том, какой же способ распознавания лучше. Кто-то ратует за Скрытые Марковские Модели, кто-то — за нейронные сети, чьи-то мысли в принципе невозможно понять :) В любом случае немало предпочтений отдаётся именно СММ, и именно их реализацию я собираюсь добавить в свой код… в будущем :) На данный момент, предлагаю остановится на гораздо менее эффективном, но в разы более простом способе. И так, вспомним, что наша задача заключается в распознавании слова из некоторого словаря. Для простоты, будем распознавать называния первых десять цифр: “один“, “два“, “три“, “четыре“, “пять“, “шесть“, “семь“, “восемь“, “девять“, “десять“. Теперь возьмем в руки айфон/андроид и пройдёмся по L коллегам с просьбой продиктовать эти слова под запись. Далее поставим в соответствие (в какой-нибудь локальной БД или простом файле) каждому слову L наборов mfcc-коэффициентов соответствующих записей. Это соответствие мы назовём “Модель”, а сам процесс — Machine Learning! На самом деле простое добавление новых образцов в базу имеет крайне слабую связь с машинным обучением… Но уж больно термин модный :) Теперь наша задача сводится к подбору наиболее “близкой” модели для некоторого набора mfcc-коэффициентов (распознаваемого слова). На первый взгляд задачу можно решить довольно просто:
для каждой модели находим среднее (евклидово) расстояние между идентифицируемым mfcc-вектором и векторами модели;
выбираем в качестве верной ту модель, среднее расстояние до которой будет наименьшим;
Однако, одно и тоже слово может произносится как Андреем Малаховым, так и каким-нибудь его эстонским коллегой. Другими словами размер mfcc-вектора для одного и того же слова может быть разный. К счастью, задача сравнения последовательностей разной длины уже решена в виде Dynamic Time Warping алгоритма. Этот алгоритм динамическо программирования прекрасно расписан как в буржуйской Wiki, так и на православном Хабре. Единственное изменение, которое в него стоит внести — это способ нахождения дистанции. Мы должны помнить, что mfcc-вектор модели — на самом деле последовательность mfcc-“подвекторов” размерности M, полученных из фреймов. Так вот, DTW алгоритм должен находить дистанцию между последовательностями эти самых “подвекторов” размерности M. То есть в качестве значений матрицы расстояний должны использовать расстояния (евклидовы) между mfcc-“подвекторами” фреймов. Пример.
