Страница 1 из 1

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

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

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

Добавлено: 15 янв 2017, 23:56
IvanLis
jaxaaa писал(а):Есть два аудио-сигнала .wav разной длинны, необходимо прогнать один по другому и определить содержится ли второй в первом. Строю спектр и нахожу сумму квадратов разностей.
Не уверенна что иду правильным путем, получается у меня проверится только совпадение начал этих сигналов, дальше нужно как-то сдвинуть сигнал и проверить дальше, не знаю как это реализовать.
Может уже были здесь похожие задачи
Совпадение спектров двух сигналов может говорить о некотором совпадении, но не факт. Спектр Вы вычисляете всего сигнала, по этому и сдвигать его никуда не надо.

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

Convolution VI: http://zone.ni.com/reference/en-XX/help ... nvolution/
Можно даже положение определить.

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

Добавлено: 16 янв 2017, 08:44
jaxaaa
спасибо за информацию, после работы попробую разобраться

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

Добавлено: 16 янв 2017, 11:11
jaxaaa
я тут почитала всякого и правильно я понимаю:если функции имеют близкие значения, то их произведение(значение свертки) большое, а если их значения здорово отличаются - то произведение маленькое
Если да, подскажите как определить величину, сравнивая свертку с которой, я могу сказать, что сигналы похожи?
взять какой-то процент от квадрата БПФ сигнала который я хочу найти?
Далека от этой темы, если что не так исправьте меня

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

Добавлено: 16 янв 2017, 11:52
IvanLis
jaxaaa писал(а):я тут почитала всякого и правильно я понимаю:если функции имеют близкие значения, то их произведение(значение свертки) большое, а если их значения здорово отличаются - то произведение маленькое
Все верно, вот например свертка сигнала с импульсом, пик приходится на совпадение.
Снимок экрана от 2017-01-16 11-47-44.png
Вам, можно сказать, нужен согласованный фильтр, в принципе это кросс-корреляция либо конволюция.
jaxaaa писал(а):Если да, подскажите как определить величину, сравнивая свертку с которой, я могу сказать, что сигналы похожи?
взять какой-то процент от квадрата БПФ сигнала который я хочу найти?
По поводу сравнения спектров я уже писал.
Что касается порогового значения, то это Вы сами должны определить исходя из проведенных опытов и набранной статистики.

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

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

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

Добавлено: 16 янв 2017, 20:33
IvanLis
jaxaaa писал(а):Спасибо за помощь,с моими файлами получилось свертка 7,6, помогите определиться с порогом на примере этих файлов
Ну Вы же видите, что получается какая-то ерунда :wink: .
Должно быть как-то так:
Снимок экрана от 2017-01-16 20-10-51.png
Kurs.vi
lv2010 save from 2014
(16.48 КБ) 226 скачиваний
А вот есть этот сигнал в исходном или нет, Вам лучше знать.
Но что по мне, то вероятность маленькая.

Здесь я вырезал часть сигнала из исходного, вот результаты. По графику свертки можно определить участок, который я вырезал для сравнения.
Снимок экрана от 2017-01-16 20-22-12.png
А это я наложил на него аддитивный шум с амплитудой 0.5 (это 50% от амплитуды сигнала):
Снимок экрана от 2017-01-16 20-25-17.png
Результаты свертки в принципе совпадают, но в зависимости от длины сигналов, эти значения будут изменяться.
Ради курсовика можно провести мини эксперимент и сделать выводы.

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

Добавлено: 17 янв 2017, 08:07
jaxaaa
спасибо!вы очень мне помогли

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

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

Файлы 1 и 2 содержатся в файле 3
Файл 1 не содержится в 2

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

Добавлено: 03 фев 2017, 22:40
Юрий
Второй цикл сделан так, что при любом входном массиве будет находиться ноль, т.е. "Доступ разрешён". А происходит это потому, что цикл не ограничен и, когда индекс элемента становится больше размерности массива, элемент не находится и значение в этом случае выдаётся по умолчанию, а именно 0.
Что касается метода наименьших квадратов, то там, чтобы получился ноль, необходимо чтобы обе функции были тождественно равны. В реальных сигналах такого никогда не бывает. Поэтому, если уж получил массив наименьших квадратов, то надо искать минимум и сравнивать его с неким числом, являющимся критерием равенства функций.

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

Добавлено: 04 фев 2017, 19:31
jaxaaa
Изменила цикл второй, но чистый ноль в сумме квадратов не выходит, хотя я нарезала один файл: 2(начало 1) и 3(конец 1-при сравнении 1 и 3 на графике видно, что последнее значение сумм уходит в 0) содержатся в 1, 4 не содержится в 1.

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

Добавлено: 05 фев 2017, 18:06
IvanLis
jaxaaa писал(а):Добрый вечер!
Задача прогнать малый файл по большому и по методу наименьших квадратов определить содержится ли малый файл в большом
Вроде думала все что готово,но программа мне выдает, что доступ разрешен даже если сравниваю файлы которые не должны совпадать, не могу найти ошибку.Помогите пожалуста
У вас алгоритм не верен, должно быть как-то так:
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. На основании полученных значений уже принимается решение о наличии искомой сигнатуры в сигнале.

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

Добавлено: 12 янв 2021, 23:47
ctix7
Здравствуйте!
Подскажите, пожалуйста, как реализовать ваш алгоритм действий. Через какие-то действия с массивами? Если да, то через какие?
А то я попробовал разобраться и у меня не получилось

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

Добавлено: 13 янв 2021, 14:31
IvanLis
ctix7 писал(а): 12 янв 2021, 23:47 Подскажите, пожалуйста, как реализовать ваш алгоритм действий. Через какие-то действия с массивами? Если да, то через какие?
А то я попробовал разобраться и у меня не получилось.
Если Вы имеете ввиду именно :labview: , то прочтите любую книгу, и все станет понятно. Благо сейчас нет недостатка в открытых источниках информации, например: LabVIEW в примерах и задачах и LabVIEW Справочник по функциям.
А при отсутствии желания, Вам ник-то не сможет помочь разобраться.