Определить наличие одного аудио сигнала в другом

Захват, обработка и генерирование сигнала

Определить наличие одного аудио сигнала в другом

Postby jaxaaa on 15 Jan 2017, 23:14

Есть два аудио-сигнала .wav разной длинны, необходимо прогнать один по другому и определить содержится ли второй в первом. Строю спектр и нахожу сумму квадратов разностей.
Не уверенна что иду правильным путем, получается у меня проверится только совпадение начал этих сигналов, дальше нужно как-то сдвинуть сигнал и проверить дальше, не знаю как это реализовать.
Может уже были здесь похожие задачи
jaxaaa
interested
interested
 
Posts: 9
Joined: 14 Jan 2017, 12:40
LabVIEW Version: 13
Karma: 0

Re: Определить наличие одного аудио сигнала в другом

Postby IvanLis on 15 Jan 2017, 23:56

jaxaaa wrote:Есть два аудио-сигнала .wav разной длинны, необходимо прогнать один по другому и определить содержится ли второй в первом. Строю спектр и нахожу сумму квадратов разностей.
Не уверенна что иду правильным путем, получается у меня проверится только совпадение начал этих сигналов, дальше нужно как-то сдвинуть сигнал и проверить дальше, не знаю как это реализовать.
Может уже были здесь похожие задачи


Совпадение спектров двух сигналов может говорить о некотором совпадении, но не факт. Спектр Вы вычисляете всего сигнала, по этому и сдвигать его никуда не надо.

Вам лучше использовать конволюцию: https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 0%B8%D0%B7)

Convolution VI: http://zone.ni.com/reference/en-XX/help ... nvolution/
Можно даже положение определить.
User avatar
IvanLis
professor
professor
 
Posts: 4472
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 693
hardware VIP bloggers teachers

Re: Определить наличие одного аудио сигнала в другом

Postby jaxaaa on 16 Jan 2017, 08:44

спасибо за информацию, после работы попробую разобраться
jaxaaa
interested
interested
 
Posts: 9
Joined: 14 Jan 2017, 12:40
LabVIEW Version: 13
Karma: 0

Re: Определить наличие одного аудио сигнала в другом

Postby jaxaaa on 16 Jan 2017, 11:11

я тут почитала всякого и правильно я понимаю:если функции имеют близкие значения, то их произведение(значение свертки) большое, а если их значения здорово отличаются - то произведение маленькое
Если да, подскажите как определить величину, сравнивая свертку с которой, я могу сказать, что сигналы похожи?
взять какой-то процент от квадрата БПФ сигнала который я хочу найти?
Далека от этой темы, если что не так исправьте меня
jaxaaa
interested
interested
 
Posts: 9
Joined: 14 Jan 2017, 12:40
LabVIEW Version: 13
Karma: 0

Re: Определить наличие одного аудио сигнала в другом

Postby IvanLis on 16 Jan 2017, 11:52

jaxaaa wrote:я тут почитала всякого и правильно я понимаю:если функции имеют близкие значения, то их произведение(значение свертки) большое, а если их значения здорово отличаются - то произведение маленькое

Все верно, вот например свертка сигнала с импульсом, пик приходится на совпадение.
Снимок экрана от 2017-01-16 11-47-44.png

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

jaxaaa wrote:Если да, подскажите как определить величину, сравнивая свертку с которой, я могу сказать, что сигналы похожи?
взять какой-то процент от квадрата БПФ сигнала который я хочу найти?

По поводу сравнения спектров я уже писал.
Что касается порогового значения, то это Вы сами должны определить исходя из проведенных опытов и набранной статистики.
User avatar
IvanLis
professor
professor
 
Posts: 4472
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 693
hardware VIP bloggers teachers

Re: Определить наличие одного аудио сигнала в другом

Postby jaxaaa on 16 Jan 2017, 19:35

Спасибо за помощь,с моими файлами получилось свертка 7,6, помогите определиться с порогом на примере этих файлов
Attachments
Курсовая.rar
(781.11 KiB) Downloaded 51 times
jaxaaa
interested
interested
 
Posts: 9
Joined: 14 Jan 2017, 12:40
LabVIEW Version: 13
Karma: 0

Re: Определить наличие одного аудио сигнала в другом

Postby IvanLis on 16 Jan 2017, 20:33

jaxaaa wrote:Спасибо за помощь,с моими файлами получилось свертка 7,6, помогите определиться с порогом на примере этих файлов

Ну Вы же видите, что получается какая-то ерунда :wink: .
Должно быть как-то так:
Снимок экрана от 2017-01-16 20-10-51.png
Kurs.vi
lv2010 save from 2014
(16.48 KiB) Downloaded 52 times


А вот есть этот сигнал в исходном или нет, Вам лучше знать.
Но что по мне, то вероятность маленькая.

Здесь я вырезал часть сигнала из исходного, вот результаты. По графику свертки можно определить участок, который я вырезал для сравнения.
Снимок экрана от 2017-01-16 20-22-12.png

А это я наложил на него аддитивный шум с амплитудой 0.5 (это 50% от амплитуды сигнала):
Снимок экрана от 2017-01-16 20-25-17.png


Результаты свертки в принципе совпадают, но в зависимости от длины сигналов, эти значения будут изменяться.
Ради курсовика можно провести мини эксперимент и сделать выводы.
User avatar
IvanLis
professor
professor
 
Posts: 4472
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 693
hardware VIP bloggers teachers

Re: Определить наличие одного аудио сигнала в другом

Postby jaxaaa on 17 Jan 2017, 08:07

спасибо!вы очень мне помогли
jaxaaa
interested
interested
 
Posts: 9
Joined: 14 Jan 2017, 12:40
LabVIEW Version: 13
Karma: 0

Сравнение двух аудиофайлов

Postby jaxaaa on 03 Feb 2017, 20:19

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

Файлы 1 и 2 содержатся в файле 3
Файл 1 не содержится в 2
Attachments
Программа.rar
(1.68 MiB) Downloaded 55 times
jaxaaa
interested
interested
 
Posts: 9
Joined: 14 Jan 2017, 12:40
LabVIEW Version: 13
Karma: 0

Re: Сравнение двух аудиофайлов

Postby Юрий on 03 Feb 2017, 22:40

Второй цикл сделан так, что при любом входном массиве будет находиться ноль, т.е. "Доступ разрешён". А происходит это потому, что цикл не ограничен и, когда индекс элемента становится больше размерности массива, элемент не находится и значение в этом случае выдаётся по умолчанию, а именно 0.
Что касается метода наименьших квадратов, то там, чтобы получился ноль, необходимо чтобы обе функции были тождественно равны. В реальных сигналах такого никогда не бывает. Поэтому, если уж получил массив наименьших квадратов, то надо искать минимум и сравнивать его с неким числом, являющимся критерием равенства функций.
Юрий
adviser
adviser
 
Posts: 247
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2011
Karma: 52

Re: Определить наличие одного аудио сигнала в другом

Postby jaxaaa on 04 Feb 2017, 19:31

Изменила цикл второй, но чистый ноль в сумме квадратов не выходит, хотя я нарезала один файл: 2(начало 1) и 3(конец 1-при сравнении 1 и 3 на графике видно, что последнее значение сумм уходит в 0) содержатся в 1, 4 не содержится в 1.
Attachments
прога.rar
(363.13 KiB) Downloaded 43 times
jaxaaa
interested
interested
 
Posts: 9
Joined: 14 Jan 2017, 12:40
LabVIEW Version: 13
Karma: 0

Re: Сравнение двух аудиофайлов

Postby IvanLis on 05 Feb 2017, 18:06

jaxaaa wrote:Добрый вечер!
Задача прогнать малый файл по большому и по методу наименьших квадратов определить содержится ли малый файл в большом
Вроде думала все что готово,но программа мне выдает, что доступ разрешен даже если сравниваю файлы которые не должны совпадать, не могу найти ошибку.Помогите пожалуста


У вас алгоритм не верен, должно быть как-то так:
1. Вычисляете длину сигнатуры S которую будем искать - Ns
2. Вычисляете длину файла F в котором будем искать - Nf
3. Вырезаете из F кусок длиной Ns, для первого шага F[0..Ns-1]. Вычисляете расстояние по метрике, в Вашем случае МНК.
4. Затем то же самое для S и F[1..Ns].
5. И т.д. Получается, что нужно вычислить значения МНК для всех вариантов S и F[x..x+Ns-1], где x=0..Nf-Ns. Получится массив значений МНК, там где значение минимально, там максимальное совпадение. Если значение по метрике МНК=0, там полное совпадение.
6. На основании полученных значений уже принимается решение о наличии искомой сигнатуры в сигнале.
User avatar
IvanLis
professor
professor
 
Posts: 4472
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 693
hardware VIP bloggers teachers


Return to Обработка сигнала

Who is online

Users browsing this forum: No registered users and 6 guests

cron