Сравнить похожесть двух сигналов
От: nen777w  
Дата: 24.02.09 09:15
Оценка:
Понадобилось дать оценку о похожести записанного с микрофона сигнала с эталонным, сигналы и эталоны могут быть любые (периодические, не преодические), практически любой длинны от 1 до 15 секунд. Нашёл в сети алгоритм быстрой кореляции. Кто его использовал? Теперь нужно разобраться с входными и выходными данными, насколько я понимаю это double значения от 0..1.
Не совсем пока что понимаю что я получу на выходе этого алгоритма.

Какие ещё методы сравнения похожести двух сигналов мне нужно посмотреть?
К сожалению времени на эту работу выделено не так много.
быстрая кореляция
Re: Сравнить похожесть двух сигналов
От: MBo  
Дата: 24.02.09 11:56
Оценка: 6 (1)
Здравствуйте, nen777w, Вы писали:

N>Понадобилось дать оценку о похожести записанного с микрофона сигнала с эталонным, сигналы и эталоны могут быть любые (периодические, не преодические), практически любой длинны от 1 до 15 секунд. Нашёл в сети алгоритм быстрой кореляции. Кто его использовал? Теперь нужно разобраться с входными и выходными данными, насколько я понимаю это double значения от 0..1.

N>Не совсем пока что понимаю что я получу на выходе этого алгоритма.

Если на пальцах — максимальные значения в массиве корреляции говорят о том, при каких временных сдвигах наблюдается близкая к линейной зависимость одного сигнала от другого ("похожесть").
Например, если сигналы — два синуса с одинаковой фазой и произвольной амплитудой, то максимум будут в точке 0 (и в точках, соответствующих целому числу периодов), а минимум — на полупериоде.
Если сигналы похожи, но один сигнал сдвинут относительно другого на время T, соответствующее M дискретам, то максимум будет в M-ом отсчете корреляции.
Re[2]: Сравнить похожесть двух сигналов
От: nen777w  
Дата: 24.02.09 12:13
Оценка:
MBo>Если на пальцах — максимальные значения в массиве корреляции говорят о том, при каких временных сдвигах наблюдается близкая к линейной зависимость одного сигнала от другого ("похожесть").
MBo>Например, если сигналы — два синуса с одинаковой фазой и произвольной амплитудой, то максимум будут в точке 0 (и в точках, соответствующих целому числу периодов), а минимум — на полупериоде.
MBo>Если сигналы похожи, но один сигнал сдвинут относительно другого на время T, соответствующее M дискретам, то максимум будет в M-ом отсчете корреляции.

А если сигналы не будут похожи?
Re[3]: Сравнить похожесть двух сигналов
От: MBo  
Дата: 24.02.09 13:23
Оценка:
Здравствуйте, nen777w, Вы писали:

N>А если сигналы не будут похожи?


То значения будут невелики, однако это относительные величины.
Например, если мы возьмем несколько наборов данных и сравним их с образцом, рассчитва корреляцию, то наибольшие значения будут для того набора, который связан с образцом линейной зависимостью (возможно, со сдвигом), поменьше — для набора, похожего на образец (например, несколько зашумленного, или в котором присутствуют не все особенности), и еще меньше — для набора, не имеющего взаимной корреляции с образцом (например, белый шум)
Re[4]: Сравнить похожесть двух сигналов
От: nen777w  
Дата: 24.02.09 14:49
Оценка:
N>>А если сигналы не будут похожи?
MBo>То значения будут невелики, однако это относительные величины.
MBo>Например, если мы возьмем несколько наборов данных и сравним их с образцом, рассчитва корреляцию, то наибольшие значения будут для того набора, который связан с образцом линейной зависимостью (возможно, со сдвигом), поменьше — для набора, похожего на образец (например, несколько зашумленного, или в котором присутствуют не все особенности), и еще меньше — для набора, не имеющего взаимной корреляции с образцом (например, белый шум)

Спасибо немного стало ясно. Единственное что я пока не пойму это как по полученным величинам дать оценку похожести сигнала. Допустим на некоторой последовательности данных и эталонном сигнале посчитали корреляцию, получили некоторый максимум в исходной последовательности, как теперь посчитать коэффициент похожести двух сигналов? Допустим от 0 до 1
Re[5]: Сравнить похожесть двух сигналов
От: MBo  
Дата: 24.02.09 15:45
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Спасибо немного стало ясно. Единственное что я пока не пойму это как по полученным величинам дать оценку похожести сигнала. Допустим на некоторой последовательности данных и эталонном сигнале посчитали корреляцию, получили некоторый максимум в исходной последовательности, как теперь посчитать коэффициент похожести двух сигналов? Допустим от 0 до 1


Вот с этого можно начать:
http://alglib.sources.ru/statistics/correlation.php
А вообще, если задача серьезная, то нужно по литературе по статобработке данных разбираться, но какие источники лучше — не знаю.
Re: Сравнить похожесть двух сигналов
От: Sergey Chadov Россия  
Дата: 24.02.09 18:18
Оценка:
N>Понадобилось дать оценку о похожести записанного с микрофона сигнала с эталонным,
N> сигналы и эталоны могут быть любые (периодические, не преодические), практически любой длинны от 1 до 15 секунд.

N> Нашёл в сети алгоритм быстрой кореляции. Кто его использовал? Теперь нужно разобраться с входными и выходными данными, насколько я понимаю это double значения от 0..1.

N>Не совсем пока что понимаю что я получу на выходе этого алгоритма.
Сигнал записанный с микрофона — это очень много шума плюс реальный сигнал всернутый с передаточной функцией микрофона. Что-то у меня подозрение, что простой корреляцией тут может дело не ограничиться. Хотя попробовать стоит — вдруг повезет, не зная задачи нельзя утверждатьт что-либо наверняка.
В общем случае — пропустить сигнал с микрофона через шумодавилку, потом сделать Фурье или что-то подобное и сравнить спектры. Как сравнивать спектры — зависит от характера сигналов. В простейшем случае — сравнить положения пиков, в сложнейшем — выучить страшные слова типа mel-frequency cepstral coefficients и gaussian mixture model и надеяться что это поможет
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[2]: Сравнить похожесть двух сигналов
От: Vzhyk  
Дата: 25.02.09 09:47
Оценка:
Sergey Chadov пишет:
>
> положения пиков, в сложнейшем — выучить страшные слова типа
> mel-frequency cepstral coefficients и gaussian mixture model и надеяться
> что это поможет
Все хорошо вы написали, но на кой ляд здесь MFCC?
А шумодавилку использовать — это большой вопрос в данном случае,
проверять надо в конкретной ситуации.
Но основная сложность данной темы, что мы ничего не знаем о том, что это
за сигналы, кроме того, что они периодические или не периодические, в
частности в задаче может оказаться, что искомый сигнал может быть
окрашенный шум, а может просто DTMF, а может что-то типа речевого сигнала.
Пока автор не скажет, что именно за сигналы наши советы сродни гаданию
на кофейной гуще.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Сравнить похожесть двух сигналов
От: wallaby  
Дата: 25.02.09 09:59
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Спасибо немного стало ясно. Единственное что я пока не пойму это как по полученным величинам дать оценку похожести сигнала. Допустим на некоторой последовательности данных и эталонном сигнале посчитали корреляцию, получили некоторый максимум в исходной последовательности, как теперь посчитать коэффициент похожести двух сигналов? Допустим от 0 до 1


Поделить на квадратный корень из произведения дисперсий обоих сигналов. Собственно корреляционная функция обычно и нормируется таким образом (делится на корень из произведения дисперсий) так что это безразмерная величина от -1 до 1.
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Re[3]: Сравнить похожесть двух сигналов
От: nen777w  
Дата: 25.02.09 10:26
Оценка:
V>Пока автор не скажет, что именно за сигналы наши советы сродни гаданию
V>на кофейной гуще.

Абсолютно любые, может быть синусоида а может быть и музыкальный фрагмент.
Re[3]: Сравнить похожесть двух сигналов
От: Sergey Chadov Россия  
Дата: 25.02.09 10:38
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Sergey Chadov пишет:

>>
>> положения пиков, в сложнейшем — выучить страшные слова типа
>> mel-frequency cepstral coefficients и gaussian mixture model и надеяться
>> что это поможет
V>Все хорошо вы написали, но на кой ляд здесь MFCC?
Скорее всего ни на кой Я поэтому и написал "типа MFCC". Конкретно MFCC пригодились бы если бы был человечий голос
То есть имелось ввиду некоторое преобразование входного спектра в набор коэффициентов по подобию MFCC.
Какое конкретно преобразование — не зная задачи сказать естественно нельзя.

V>А шумодавилку использовать — это большой вопрос в данном случае,

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

+1.
Re[4]: Сравнить похожесть двух сигналов
От: Vzhyk  
Дата: 25.02.09 13:38
Оценка:
nen777w пишет:
>
>
> V>Пока автор не скажет, что именно за сигналы наши советы сродни гаданию
> V>на кофейной гуще.
>
> Абсолютно любые, может быть синусоида а может быть и музыкальный фрагмент.
Ну так вот в первом случае, думаю, герцель вам поможет хорошо, а во
втором... от кросскорреляции (думаю мало поможет), до HMM. (но вот на
каких параметрах делать не скажу, не знаю).
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Сравнить похожесть двух сигналов
От: Vzhyk  
Дата: 25.02.09 13:40
Оценка: +1
Sergey Chadov пишет:
>
> V>Все хорошо вы написали, но на кой ляд здесь MFCC?
> Скорее всего ни на кой Я поэтому и написал "типа MFCC". Конкретно MFCC
> пригодились бы если бы был человечий голос
Просто шкала mel основано на особенностях нашего слуха.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Сравнить похожесть двух сигналов
От: Sergey Chadov Россия  
Дата: 25.02.09 13:44
Оценка:
Здравствуйте, Vzhyk, Вы писали:


V>Просто шкала mel основано на особенностях нашего слуха.


Я как бы в курсе, просто написал для примера первое что пришло в голову и чем пользовался сам
Re[6]: Сравнить похожесть двух сигналов
От: Vzhyk  
Дата: 25.02.09 14:19
Оценка:
Sergey Chadov пишет:
>
> Я как бы в курсе, просто написал для примера первое что пришло в голову
> и чем пользовался сам
Ну извини, не хотел наезжать.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Сравнить похожесть двух сигналов
От: nen777w  
Дата: 26.02.09 12:12
Оценка:
>> Абсолютно любые, может быть синусоида а может быть и музыкальный фрагмент.
V>Ну так вот в первом случае, думаю, герцель вам поможет хорошо, а во
V>втором... от кросскорреляции (думаю мало поможет), до HMM. (но вот на

Что такое HMM ? Hidden Markov model ?
Есть ли приложения которые могут сравнить похожесть двух wave файлов и дать оценку ?
Хоть что то есть?

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

Хелп кто чем может?
Re[6]: Сравнить похожесть двух сигналов
От: Vzhyk  
Дата: 26.02.09 13:18
Оценка:
nen777w пишет:
>
>
> Что такое HMM ? Hidden Markov model ?
Они родимые. Но тут можно извращаться и далее, например TDNN .
> Есть ли приложения которые могут сравнить похожесть двух wave файлов и
> дать оценку ?
comp, например.
> Хоть что то есть?
Что-то точно есть.
>
> Сдеал сравнение кореляцией если патерн брался из оригинального сигнала и
> немного модифицировался (например добавили эхо) это работает. Но если
> патерн и сигнал записывались отдельно и ничего кроме как общей
> информационной оставляющей не имеют то кореляция уже не канает.
Что значит общая информационная составляющая?
Сейчас ты уперся в то, что тебе говорили с самого начала, для каждого
типа сигнала свой подход.
Например, при распознавании речи корреляция не проканает и не только ее.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Сравнить похожесть двух сигналов
От: nen777w  
Дата: 26.02.09 14:32
Оценка:
>> Что такое HMM ? Hidden Markov model ?
V>Они родимые. Но тут можно извращаться и далее, например TDNN .

Ясно. А не встречались ли вам хорошые алгоритмические выкладки с примерами, по HMM / TDNN ?

>> Есть ли приложения которые могут сравнить похожесть двух wave файлов и

>> дать оценку ?
V>comp, например.

Поиск в google по типа "comp audio compare utility" ничего не дал.

V>Что значит общая информационная составляющая?

V>Сейчас ты уперся в то, что тебе говорили с самого начала, для каждого
V>типа сигнала свой подход.
V>Например, при распознавании речи корреляция не проканает и не только ее.

На всякий случай отчитаюсь о своих эксперементах.

Да Я немного поспешил. Первый раз пробовал записать через микрофон свой голос котрый в сигнале и в патерне называл одну и ту же цифру, действительно ничего не вышло. Корреляция была ниже 0.2 да и не совсем с того в что в исходном сигнале.
Второй раз попробовал записать через микрофон с другого источника музыкальный фрагмент: для сигнала — длинный музыкальный фрагмент, а для патерна какой то кусочек его, и не смотря на то что сигналы были записаны независимо друг от друга корреляция получилась близкой к 1-це.

Хотя если попробовать в качестве патерна взять кусочек из оригинальногго файла и выполнить корреляцию с записаным через микрофон сигналом, коэфициент кореляции получается уже плохой. Насколько я понял меня может выручить тут свёртка патерна с откликом системы микрофон->звуковая карточка. Только нужно каким то образом записать этот отклик.
Re[8]: Сравнить похожесть двух сигналов
От: Vzhyk  
Дата: 26.02.09 17:22
Оценка:
nen777w пишет:
>
> Ясно. А не встречались ли вам хорошые алгоритмические выкладки с
> примерами, по HMM / TDNN ?
Ты издеваешься. Вводишь в гугле распознавание речи и пользуешь этот
подход для твоих сигналов, смотри, чтоб не получилось из пушки по
воробьям. Ну и как как промежуточный шаг — DTW.

> V>comp, например.

>
> Поиск в google по типа "comp audio compare utility" ничего не дал.
help comp в командной строке. (Стёб был с comp)

> Да Я немного поспешил. Первый раз пробовал записать через микрофон свой

> голос котрый в сигнале и в патерне называл одну и ту же цифру,
> действительно ничего не вышло. Корреляция была ниже 0.2 да и не совсем с
> того в что в исходном сигнале.
Не обижайся, но ты "псих" . Неужто сам не знаешь, что тут
распознавание речи в чистом виде. MFCC + DTW|HMM.

> Второй раз попробовал записать через микрофон с другого источника

> музыкальный фрагмент: для сигнала — длинный музыкальный фрагмент, а для
> патерна какой то кусочек его, и не смотря на то что сигналы были
> записаны независимо друг от друга корреляция получилась близкой к 1-це.
Правильно. Но только на фрагменте. есть все шансы, что такой же или
очень похожий фрагмент встретится в другой музыке.

>

> Хотя если попробовать в качестве патерна взять кусочек из оригинальногго
> файла и выполнить корреляцию с записаным через микрофон сигналом,
> коэфициент кореляции получается уже плохой.
Это значит, что у тебя приличные мультипликативные и аддивные помехи.
Вот тут-то и начинается развлечение с принятием решений и вероятностями,
а также различнейшими трюками с шумоочисткой. А это немерянное поле для
экспериментов на многие лета вперед.
Posted via RSDN NNTP Server 2.1 beta
Re[9]: Сравнить похожесть двух сигналов
От: Аноним  
Дата: 07.04.09 11:07
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>nen777w пишет:

>>
>> Ясно. А не встречались ли вам хорошые алгоритмические выкладки с
>> примерами, по HMM / TDNN ?
V>Ты издеваешься. Вводишь в гугле распознавание речи и пользуешь этот
V>подход для твоих сигналов, смотри, чтоб не получилось из пушки по
V>воробьям. Ну и как как промежуточный шаг — DTW.

>> V>comp, например.

>>
>> Поиск в google по типа "comp audio compare utility" ничего не дал.
V>help comp в командной строке. (Стёб был с comp)

>> Да Я немного поспешил. Первый раз пробовал записать через микрофон свой

>> голос котрый в сигнале и в патерне называл одну и ту же цифру,
>> действительно ничего не вышло. Корреляция была ниже 0.2 да и не совсем с
>> того в что в исходном сигнале.
V>Не обижайся, но ты "псих" . Неужто сам не знаешь, что тут
V>распознавание речи в чистом виде. MFCC + DTW|HMM.

>> Второй раз попробовал записать через микрофон с другого источника

>> музыкальный фрагмент: для сигнала — длинный музыкальный фрагмент, а для
>> патерна какой то кусочек его, и не смотря на то что сигналы были
>> записаны независимо друг от друга корреляция получилась близкой к 1-це.
V>Правильно. Но только на фрагменте. есть все шансы, что такой же или
V>очень похожий фрагмент встретится в другой музыке.

>>

>> Хотя если попробовать в качестве патерна взять кусочек из оригинальногго
>> файла и выполнить корреляцию с записаным через микрофон сигналом,
>> коэфициент кореляции получается уже плохой.
V>Это значит, что у тебя приличные мультипликативные и аддивные помехи.
V>Вот тут-то и начинается развлечение с принятием решений и вероятностями,
V>а также различнейшими трюками с шумоочисткой. А это немерянное поле для
V>экспериментов на многие лета вперед.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.