Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм выч. спектра сигнала используя вейвлеты, требуется для задачи распознавания речи 
:(
    Опции темы
Proger10
Дата 1.7.2010, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

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



Прочитал про вейвлеты. Пишут, что они точнее, быстрее и прочие хорошие вещи) Долго и упорно читал огромное собрание информации по этой теме на этом сайте и исходящих ссылок с него. Очень много узнал нового, но так и не понял, как вообще строится спектр сигнала, используя вейвлеты?

Второе, что непонятно, это - что такое вейвлет-пакеты? На этом форуме нашёл такой вопрос, где ответом было - в гугл) куда я, естественно, тоже сходил, но.. и там глухо :( Так и не понял, что называют вейвлет-пакетами?

Используя ДПФ построил уже спектр, теперь хочу получить небольшой опыт по использованию вейвлетов, разобраться что это такое и что из этого можно извлечь положительного в задачу распознавания речи. (покуда podval что-то не очень лестно отзывался о вейвлетах именно при распознавании речи). Может что-то полезное там всё-таки есть, что в купе с другими будет получен некоторый выигрыш при решении задачи?)

Это сообщение отредактировал(а) Proger10 - 1.7.2010, 00:11
PM MAIL   Вверх
W4FhLF
Дата 1.7.2010, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

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



Вообще для начала следует понять, что все инструменты хороши для определённых целей. Нет абсолютно плохих и абсолютно хороших методов.

Второе, использовать вейвлеты непосредственно для распознавания конечно же никак нельзя. Насколько я понимаю речь идёт о препроцессинге. В спектральной области мы можем подавить гармоники определённой частоты, в области вейвлетов можно подавить эффекты разного масштаба, которые заранее известно, что не связаны с речью и представляют собой некоторый шум. 

При вейвлет преобразованиях никакого спектра не строится. Главное их преимущество как раз в том, что мы остаёмся в том же пространстве во временной области, в отличии от ДПФ, где имеет место быть переход в частотную область и мы уже теряем множество информации об эффектах, которые имеют место быть в исходном сигнале. 

А чтобы лучше понять, что такое вейвлеты и как они работают на реальных примерах и задачах и советую использовать Matlab Wavelet Toolbox и пошаговое руководство, которое идёт с ним же. 




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Proger10
Дата 1.7.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

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



Да, речь о предпроцессинге идёт, а не о полном переходе на вейвлеты.

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

Вот тут не очень понятно.. Мы можем через вейвлеты как-то получать гармоники определённой частоты? Просто, если вейвлеты не позволяют строить спектра, то чего нам предлагают делать вейвлеты?)

Цитата
А чтобы лучше понять, что такое вейвлеты и как они работают на реальных примерах и задачах и советую использовать Matlab Wavelet Toolbox и пошаговое руководство, которое идёт с ним же. 

Спасибо! Поставлю Матлаб, интересно будет посмотреть их в действии, прежде, чем я сам приступлю к их кодингу)

PM MAIL   Вверх
W4FhLF
Дата 1.7.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

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



Цитата(Proger10 @  1.7.2010,  15:48 Найти цитируемый пост)
Мы можем через вейвлеты как-то получать гармоники определённой частоты? Просто, если вейвлеты не позволяют строить спектра, то чего нам предлагают делать вейвлеты?)


Ну а что мир клином на спектрах сошёлся?)

http://www.mathworks.com/access/helpdesk/h...t/ch01_in6.html -- читать здесь и следующие три страницы. 



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Proger10
Дата 1.7.2010, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

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



Хм, точно smile

Спасибо за ссылку! Многое уже прояснилось! Хотя немного что разобрал там.

Кстати, а нет ли каких готовых программ, которые строят вейвлетовые графики? smile Что-то типа вот того: http://www.mathworks.com/access/helpdesk/h...et/ch01_i30.gif
Так гораздо проще было бы понять, что из себя вейвлеты представляют. Говоришь там в микрофон, а оно тебе сразу вейвлетами график разукрашивает... smile

Вообще, график на сонограмму похож, но, чувствую, именно это меня с толку и сбивает сейчас.. Там в вейвлетах какое-то другое видение мира должно быть smile
PM MAIL   Вверх
Pavia
Дата 1.7.2010, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

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



Цитата(W4FhLF @  1.7.2010,  10:35 Найти цитируемый пост)
При вейвлет преобразованиях никакого спектра не строится. Главное их преимущество как раз в том, что мы остаёмся в том же пространстве во временной области, в отличии от ДПФ, где имеет место быть переход в частотную область и мы уже теряем множество информации об эффектах, которые имеют место быть в исходном сигнале. 

Не согласен. При вайвлет преобразовании мы получаем график который называется спектором.
Спектр- есть распределение чего либы не обязательно частот. Во вторых если взять в качестве базового вайвлета sin или cos то получаем настоящий спектр (вернее сонограмму) и именно имеем переход в частотную область. 


Цитата(W4FhLF @  1.7.2010,  10:35 Найти цитируемый пост)
Второе, использовать вейвлеты непосредственно для распознавания конечно же никак нельзя. Насколько я понимаю речь идёт о препроцессинге. В спектральной области мы можем подавить гармоники определённой частоты, в области вейвлетов можно подавить эффекты разного масштаба, которые заранее известно, что не связаны с речью и представляют собой некоторый шум. 

Еще как можно. 
PM MAIL   Вверх
Proger10
Дата 1.7.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

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



А что такое, кстати, вейвлет-пакеты? Пока не дошёл до определения "базовый вейвлет" smile базовый, это такой там?)
PM MAIL   Вверх
Фантом
Дата 1.7.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

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



Цитата(W4FhLF @  1.7.2010,  10:35 Найти цитируемый пост)

При вейвлет преобразованиях никакого спектра не строится. Главное их преимущество как раз в том, что мы остаёмся в том же пространстве во временной области, в отличии от ДПФ, где имеет место быть переход в частотную область и мы уже теряем множество информации об эффектах, которые имеют место быть в исходном сигнале. 

Не совсем удачно получилось. Правильнее было бы сказать, что вейвлет-преобразование - это представление исходного сигнала в виде разложения по базисным функциям некоторого "характерного" для данного сигнала вида (причем базис не обязательно будет полным). В этом смысле преобразование Фурье - фактически частный случай вейвлет-преобразования (с синусоидой в качестве "характерного" вида). Поскольку базис для преобразования Фурье полон, то теоретически при этом преобразовании ничего не теряется. А практически - потери происходят из-за использования конечного числа членов разложения.
PM   Вверх
Pavia
Дата 2.7.2010, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

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



Цитата(Фантом @  1.7.2010,  22:52 Найти цитируемый пост)
А практически - потери происходят из-за использования конечного числа членов разложения.
  Разложения Фурье для конечного числа членов однозначно, ничто не теряется. Теряется раньше, когда мы берем выборку то краевые условия фактически становятся не определенными. 
Но после любого преобразования одни признаки становятся линейно не разделимыми, другие напротив разделимыми.
PM MAIL   Вверх
Фантом
Дата 2.7.2010, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

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



Цитата(Pavia @  2.7.2010,  00:41 Найти цитируемый пост)
Разложения Фурье для конечного числа членов однозначно, ничто не теряется.

Насчет ознозначно - это верно. Но вот полным такое разложение не является. Тривиальнейший пример - возьмите один член разложения и попробуйте восстановить по нему исходный сигнал. smile
PM   Вверх
W4FhLF
Дата 2.7.2010, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

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



Ну ладно, более опытные товарищи с термионологией меня раскаталиsmile Все правы.


Цитата(Pavia @  1.7.2010,  18:46 Найти цитируемый пост)
Еще как можно. 


Как?


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Proger10
Дата 3.7.2010, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

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



Что-то совсем не пойму.. Читаю вот здесь: http://www.mathworks.com/access/helpdesk/h...10.html#1000760

Цитата
here are the five steps of an easy recipe for creating a CWT:
1. Take a wavelet and compare it to a section at the start of the original signal. 
2. Calculate a number, C, that represents how closely correlated the wavelet is with this section of the signal. The higher C is, the more the similarity. More precisely, if the signal energy and the wavelet energy are equal to one, C may be interpreted as a correlation coefficient.
3. Shift the wavelet to the right and repeat steps 1 and 2 until you've covered the whole signal.
4. Scale (stretch) the wavelet and repeat steps 1 through 3.
5. Repeat steps 1 through 4 for all scales. 


1. А откуда взять вейвлет-то этот? smile На первом шаге у меня же есть только исходный сигнал.. какой вейвлет берётся?
2. Насколько я понял по этому шагу, мы берём какой-то вейвлет) и сравниваем насколько он совпадает с нашим сигналом, что мы получим из переменной "C". Переменная двух аргументов, значит сдвиг и масштаб нам задавать самостоятельно? (подбирать, грубо говоря, чтобы максимально с сигналом совпадал?)
3. Сдвигаем правее вейвлет и получаем очередной коэффициент
4. Масштабируем и снова получаем кучу коэффициентов с шагов 1-3
5. Масштабируем, масштабируем..

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

Это сообщение отредактировал(а) Proger10 - 3.7.2010, 03:02
PM MAIL   Вверх
W4FhLF
Дата 3.7.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

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



Вообще руководство по Wavelet Toolbox (к тому же без использования этого самого Wavelet Toolbox) не заменит хорошую книжку по вейвлетам. Все эти вопросы от того, что кто-то ленится прочесть читать литературу. Предлагаешь цитировать здесь то, что уже давно написано в книгах?

1. Вычислить. Вейвлет это в сущности функция, которая удовлетворяет ряду условий. Существует много видов вейвлетов и для каждой задачи следует выбирать свой. Например для распознавания пиков и ступенек в данных я использую вейвлет haar или db1. Для подавления высокочастотного шума определённого характера db4, а для подавления импульсной реакции АЦП своей системы записи Morlet. Всё зависит от задачи короче.

На С++ простейший вейвлет Haar'a может выглядеть так:

Код

// Haar wavelet
class Haar: public Wavelet {
public:
    // Construct Haar wavelet
    Haar();

    Haar(const Haar& Src);
    
    // real and imaginary part of a wavelet in Time Domain
    virtual cwt_float_t reT(cwt_float_t t) const;
    virtual cwt_float_t imT(cwt_float_t t) const;
    // real and imaginary part of a wavelet in Frequency Domain
    virtual cwt_float_t reF(cwt_float_t w) const;
    virtual cwt_float_t imF(cwt_float_t w) const;
    
     // central frequency
    virtual cwt_float_t cFreq() const;
    // boundaries of effective support
    virtual cwt_float_t effL() const;
    virtual cwt_float_t effR() const;

    virtual Wavelet* clone() const;
};

// ============================ Haar Wavelet ===============================

// default params
static const char         Haar_Name[] = "Haar";
static const cwt_float_t  Haar_Fc     = 0.0;
static const cwt_float_t  Haar_r      = 1.0;

Haar::Haar()
: Wavelet(Haar_Name)
{ }

Haar::Haar(const Haar& Src)
: Wavelet(Src)
{ }

cwt_float_t Haar::reT(cwt_float_t t) const
{
    if( t >= -1.0/2.0 && t <  0.0 )     return  1.0;
    if( t >=  0.0     && t <  1.0/2.0 ) return -1.0;
    else return 0.0; 
}

cwt_float_t Haar::imT(cwt_float_t t) const
{
    return 0.0;
}

cwt_float_t Haar::reF(cwt_float_t w) const
{
    return 0.0;
}

cwt_float_t Haar::imF(cwt_float_t w) const
{
    double s = pow(sin(w/4), 2.0);
    return 4.0 * s / w; 
}

cwt_float_t Haar::cFreq() const
{
    return Haar_Fc;
}

cwt_float_t Haar::effL() const
{
    return -Haar_r;
}

cwt_float_t Haar::effR() const
{
    return +Haar_r;
}


2. Обычно проходятся по всем значениям сигнала и на них делают вейвлет преобразование. Преобразование на каждой точке и есть преобразование с заданным сдвигом (это порядковый номер значения сигнала). Ну и делают это для разных масштабов. А вычисление С есть своего рода свёртка сигнала на заданной точке с функцией вейвлета. 




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Proger10
Дата 3.7.2010, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

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



Спасибо большое за объяснение первого кода и отдельное за пример на С++! smile

Уже накачал книжек по вейвлетам, приступаю к чтению smile
PM MAIL   Вверх
Proger10
Дата 4.7.2010, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.12.2008

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



Посмотрел несколько книг по вейвлетам... не многим понятнее стало))) Сейчас ищу тему вейвлетов по интернету, тут куда более доступным языком написано. Вот, например, отличный док по Хаару, где поэтапно расписано на примере каким образом он работает: http://dmr.ath.cx/gfx/haar/
(там же есть реализация этой процедуры на С).
Это для тех, кто будет искать подобную тему smile

Но блин... и после этого мне не понятно как применять его)) Не пойму вот что - вот есть у нас исходный сигнал (отсчёты), а как применять этого Хаара и непонятно) Я могу пройтись по этому массиву (исходного сигнала) как сказано в алгоритме Хаара. Могу пройтись несколько раз (рекурсивно, имею ввиду). Но.. где все эти сдвиги, масштабирование?) Когда мне этими терминами-то оперировать надо, на какой стадии процесса?

После каждого прохода Хаара по массиву получается новый массив, состоящий из двух половин (в левой усреднённые пары, в правой - разница пар) - это и есть вейвлет-коэффициенты? Их что ли и строят на графике?

Это сообщение отредактировал(а) Proger10 - 4.7.2010, 10:15
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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