Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Вейвлет-пакет в задаче классификации, некоторые аспекты реализации 
:(
    Опции темы
Guest_Voland
Дата 8.5.2003, 12:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата

for(int i=0;i<all/(int)(pow(2,l));i++)
        {
          en += dabs(sg[i]);
        }



Ещё маленький вопрос, функция dabs из какой библиотеки взята ?
  Вверх
podval
Дата 8.5.2003, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



В serm хранится полный результат разложения в вейвлет-пакет. Его размер = (длина выборки)х(число уровней разложения). В sperm хранятся значения энергии вейвлет-коэффициентов.
dabs() - это abs() для аргументов типа double. Была там в "учебных" целях. Можно fabs().
PM WWW ICQ   Вверх
Воланд
Дата 8.5.2003, 19:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо. Пытаюсь расскладывать звуковые файлы длиной 32000 отсчётов, результат получается странный, завтра выложу картинки, может у меня чего не того.


А возможно на базе результата разложения в вейвлет-пакет построить типичный для вейвлетов трёхмерный график частота-аплитуда-время ?


  Вверх
podval
Дата 8.5.2003, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Цитата
32000 отсчётов
это слишком много. Максимум 1024 в этой версии.
PM WWW ICQ   Вверх
Guest_Voland
Дата 10.5.2003, 15:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(podval @ 8.5.2003, 19:48)
32000 отсчётов это слишком много. Максимум 1024 в этой версии.

А почему? Размеры массивов я подогнал... Или дело в особенностях реализации самого пакета? Можно конечно делить сигнал на кадры и проводить покадровое сравнение, но ето довольно громоздко.

Вот мои результаты:

user posted image
user posted image


Kaк я понимаю, дальше сравнение сигналов идёт именно на базе рассчёта расстояния Махаланобиса между образцом и еталонными сигналами. Или нужны ещё дополнителные преобразования ?
  Вверх
podval
Дата 10.5.2003, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Расстояние считается между вот этими штуками (средний рисунок), которые у тебя названы Veivletas. Их надо получить как для эталонов (собственно, эталоны в таком виде и хранятся), так и для сигналов.
Вообще по-английски так: wavelet.
PM WWW ICQ   Вверх
Voland_Kovno
Дата 12.5.2003, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.5.2003
Где: Литва, Каунас

Репутация: нет
Всего: нет



Понятно. Не будет проблем с разложением массива на 32 000 отсчётов при всего восьми уровнях разложения? Совсем не хочется анализировать сигнал покадрово, так как не совсем понимаю как потом из этих кадров получать вейвлет всего сигнала.
По поводу названий - просто я с такой экзотической страны, где это называется так :-)
Кстати, многотысячные значения коефициентов вейвлет-разложения это нормально? Очевидно, можно провести нормализацию и откинуть часть коефициентов.
PM MAIL   Вверх
podval
Дата 13.5.2003, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Цитата
Не будет проблем с разложением массива на 32 000 отсчётов при всего восьми уровнях разложения

Ну, судя по рисункам, получается же. Только все равно зачем так много?

Цитата
Очевидно, можно провести нормализацию и откинуть часть коефициентов.

Я об этом уже сказал. Так и надо делать.
PM WWW ICQ   Вверх
Voland_Kovno
Дата 3.6.2003, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.5.2003
Где: Литва, Каунас

Репутация: нет
Всего: нет



День добрый.

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

Вот об этом и давайте поговорим - каким образом мы преобразуем набор кадровых эталонов в эталон всего сигнала ?
PM MAIL   Вверх
podval
Дата 3.6.2003, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Цитата
имеем исходный сигнал, сканируем его кадром в 1024 отсчёта

В моей задаче этого не надо было делать, т.к. для распознавания диктора достаточно иметь подробную информацию в частотной области.
Если же все-таки думать над вопросом,
Цитата
как мы эти эталоны будем сравнивать
то надо признать, что за достоинства вейвлетов надо действительно чем-то платить smile.gif
Я бы сформировал из последовательностей матрицы и искал расстояние между ними.
PM WWW ICQ   Вверх
Voland_Kovno
Дата 4.6.2003, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.5.2003
Где: Литва, Каунас

Репутация: нет
Всего: нет



Цитата(podval @ 3.6.2003, 18:09)
В моей задаче этого не надо было делать, т.к. для распознавания диктора достаточно иметь подробную информацию в частотной области.
Я бы сформировал из последовательностей матрицы и искал расстояние между ними.

Не совсем понял - весь сигнал помещался в 1024 отсчёта? Или вейвлет-преобразованием раскладывался не сам сигнал, а его уже готовое преобразование ?

Откровенно говоря, в результате экспериментов с данным вами кодом у меня возникло смутное подозрение что функция вейвлет-преобразования уже "настроена" на выделение особенностей речи диктора - так как при записи эталонов от одного диктора они все! получаются довольно похожими, а вот те же эталоны от другого диктора выглядят совершенно подругому. Может это я в мистику ушёл и всё дело в некорректности работы алгоритма в моих условиях ( я всё-таки раскладываю сигнал длинной ни менее 10 000 отсчётов, без увеличения уровня разложения, а одно от другого всё-таки зависит.) Просто в самой функции заданы определённые константы - явно экспериментально - так что наверно только автор сможет объяснить что это за константы и как их подбирать.

Идея с формированием матриц довольно интересная, постараюсь попробовать реализацию.

Может у кого-нибудь есть информация о работе с матрицами под с++, а то как-то лень писать функции обращения и умножения.
PM MAIL   Вверх
podval
Дата 4.6.2003, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Цитата
Не совсем понял - весь сигнал помещался в 1024 отсчёта? Или вейвлет-преобразованием раскладывался не сам сигнал, а его уже готовое преобразование ?

Из всего сигнала бралось только 1024 отсчета. Для выделения частотных особенностей этого предостаточно. И использовался не вейвлет, а ВЕЙВЛЕТ-ПАКЕТ.

Цитата
функция вейвлет-преобразования уже "настроена" на выделение особенностей речи диктора
Вейвлетов сегодня известно превеликое множество. В СПбГУ на постоянно действующем семинаре каждый раз какой-нибудь математик предложит новый, чем-то отличающийся от других и обладающий какими-нибудь интересными свойствами. У меня использован сплайн-вейвлет. И еще не могу сходу уточнить, что это был за сплайн. Копаться в черновиках надо.

Цитата
при записи эталонов от одного диктора они все! получаются довольно похожими, а вот те же эталоны от другого диктора выглядят совершенно подругому

Вот это как раз и не удивительно. Мы же хотим распознать ДИКТОРОВ, а не СЛОВА.

Цитата
я всё-таки раскладываю сигнал длинной ни менее 10 000 отсчётов, без увеличения уровня разложения, а одно от другого всё-таки зависит
Это смотря, какую задачу Вы хотите решить. Какую?
PM WWW ICQ   Вверх
Voland_Kovno
Дата 4.6.2003, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.5.2003
Где: Литва, Каунас

Репутация: нет
Всего: нет



Понятно. Дело ясное что дело тёмное. Решаемая задача - система управления голосом на базе сигнального процессора, реализованая с использованием перспективных алгоритмов распознавания. Идея немного поэкспериментировать, насколько получится "засунуть" современные эффективные алгоритмы распознавания речи в сигнальный процессор типа TI320C5x и посмотреть что это даст. В идеале должна получится дикторонезависимая система с большим набором команд для управления сложными устройствами. В реале пока получается довольно печально...
PM MAIL   Вверх
podval
Дата 5.6.2003, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



К сожалению, дикторонезависимыми системами не занимался. Рекомендую обратиться на http://dsp-book.narod.ru/
PM WWW ICQ   Вверх
Voland_Kovno
Дата 14.12.2004, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.5.2003
Где: Литва, Каунас

Репутация: нет
Всего: нет



День добрый. Возвращаюсь к давно забытым баранам.

Кратко анализируя алгоритм, предложенный уважаемым podval`ом, должен отметить что это супер замечательный алгоритм верификации диктора, но для распознавания речи он обсолютно не подходит. Дело в том, что разница между эталонами различных дикторов на порядок больше чем между эталонами одного и того-же диктора, что бы он в микрофон не бубнел. Прелесть ещё и в том что сравнение можно проводить примитивным вычитанием одного эталона из другого, потом считаем суммру результата и получаем оценку свой-чужой. При длинне 2000 отсчётов работает с такой точностью что суммарные энергии разных дикторов отличаются в 10 (!) раз от суммарных энергий одного диктора.

Знать бы как этому вейвлету мозги подкрутить...
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0966 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.