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

Захват, обработка и генерирование сигнала
Ответить
jaxaaa
interested
interested
Сообщения: 9
Зарегистрирован: 14 янв 2017, 12:40
Версия LabVIEW: 13

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

Сообщение jaxaaa »

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

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5077
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 14 раз
Поблагодарили: 25 раз

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

Сообщение 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/
Можно даже положение определить.
jaxaaa
interested
interested
Сообщения: 9
Зарегистрирован: 14 янв 2017, 12:40
Версия LabVIEW: 13

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

Сообщение jaxaaa »

спасибо за информацию, после работы попробую разобраться
jaxaaa
interested
interested
Сообщения: 9
Зарегистрирован: 14 янв 2017, 12:40
Версия LabVIEW: 13

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

Сообщение jaxaaa »

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

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5077
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 14 раз
Поблагодарили: 25 раз

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

Сообщение IvanLis »

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

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

Сообщение jaxaaa »

Спасибо за помощь,с моими файлами получилось свертка 7,6, помогите определиться с порогом на примере этих файлов
Вложения
Курсовая.rar
(781.11 КБ) 149 скачиваний
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5077
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 14 раз
Поблагодарили: 25 раз

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

Сообщение IvanLis »

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

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

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

Сообщение jaxaaa »

спасибо!вы очень мне помогли
jaxaaa
interested
interested
Сообщения: 9
Зарегистрирован: 14 янв 2017, 12:40
Версия LabVIEW: 13

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

Сообщение jaxaaa »

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

Файлы 1 и 2 содержатся в файле 3
Файл 1 не содержится в 2
Вложения
Программа.rar
(1.68 МБ) 188 скачиваний
Юрий
professional
professional
Сообщения: 393
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 3 раза

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

Сообщение Юрий »

Второй цикл сделан так, что при любом входном массиве будет находиться ноль, т.е. "Доступ разрешён". А происходит это потому, что цикл не ограничен и, когда индекс элемента становится больше размерности массива, элемент не находится и значение в этом случае выдаётся по умолчанию, а именно 0.
Что касается метода наименьших квадратов, то там, чтобы получился ноль, необходимо чтобы обе функции были тождественно равны. В реальных сигналах такого никогда не бывает. Поэтому, если уж получил массив наименьших квадратов, то надо искать минимум и сравнивать его с неким числом, являющимся критерием равенства функций.
jaxaaa
interested
interested
Сообщения: 9
Зарегистрирован: 14 янв 2017, 12:40
Версия LabVIEW: 13

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

Сообщение jaxaaa »

Изменила цикл второй, но чистый ноль в сумме квадратов не выходит, хотя я нарезала один файл: 2(начало 1) и 3(конец 1-при сравнении 1 и 3 на графике видно, что последнее значение сумм уходит в 0) содержатся в 1, 4 не содержится в 1.
Вложения
прога.rar
(363.13 КБ) 126 скачиваний
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5077
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 14 раз
Поблагодарили: 25 раз

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

Сообщение 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. На основании полученных значений уже принимается решение о наличии искомой сигнатуры в сигнале.
ctix7
interested
interested
Сообщения: 1
Зарегистрирован: 11 янв 2021, 03:08
Версия LabVIEW: 17

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

Сообщение ctix7 »

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

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5077
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 14 раз
Поблагодарили: 25 раз

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

Сообщение IvanLis »

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

Вернуться в «Обработка сигнала»