|
Создание звукового оформления Создание звуков для игр или где их найти |
11.10.2012, 14:15
|
#1
|
ПроЭктировщик
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений (для 24 пользователей)
|
Сравнивание аудио дорожек (MP3, WAVE)
Здравствуйте!
У меня задача сделать программу какая бы загружала аудио файлы (MP3 - желательно) и сравнивала их между собой. Программа должна распознать подобные аудио треки. Например: одна и та же песня только с разным качеством, или с разной продолжительностью.
У меня вопрос к вам: - Можно ли это сделать с помощью C# XNA?
- С чего мне следовало б начать?
Раньше никогда не имел дело с программированием аудио софта...
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
|
(Offline)
|
|
17.10.2012, 09:24
|
#2
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
Первое что приходит на ум - сравнивать ID3 данные mp3 файлов (исполнителя и название песни например). По поводу сравнения самого аудиофайла ничего посоветовать не могу.
Последний раз редактировалось pax, 17.10.2012 в 11:29.
|
(Offline)
|
|
17.10.2012, 18:52
|
#3
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
Я сделал бы так:
Проанализировал с помощью графиков первый трек, и второй. Потом сравнил бы данные и поучил бы насколько они похожы между собой.
Итак начнем(сделать можно более универсально, но это в качестве примера):
1.Анализируем громкость левого и правого канала, и забиваем данные в лист.
2.Делаем тоже самое для второго трека.
3.После сравниваем положение точек на первом и втором графике, и высчитываем процент совпадений.
(делал на блицмаксе, в динамике график у меня выгядит так : anal.rar)
И вот полученый мной результат при сравнивании двух одинаковых треков:
совпадение на 96% (не 100%, возможно по той причине, что я использовал флоат пойнт...хз)
Результат на сравнение разных треков :
совпадение на 2%
Желтая линия, это левый канал, розовая - правый. красная линия - это то где треки не совпадают.
Сделал в обеденный перерыв...если уделить оптимизации то можно добится 99% результата и хорошей гибкости анализа, ну тут ты уже сам идею розвивай.
Разная продолжительность - анализируй только одинаковый отрезок времени(ориентируясь на меньший конечно).
С разным качеством пока не тестировал.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.10.2012, 20:34
|
#4
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
Сообщение от Dzirt
1.Анализируем громкость левого и правого канала,
|
А почему не спектр?
|
(Offline)
|
|
17.10.2012, 22:17
|
#5
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
Сообщение от Nerd96
А почему не спектр?
|
...потому что
|
(Offline)
|
|
18.10.2012, 07:50
|
#6
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
Dzirt, а что если два одинаковых трека имеют разную задержку в начале, например у первого 0с, а у второго 0,5с тишины?
|
(Offline)
|
|
18.10.2012, 14:31
|
#7
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
Сообщение от pax
Dzirt, а что если два одинаковых трека имеют разную задержку в начале, например у первого 0с, а у второго 0,5с тишины?
|
Сравниать нужно только начиная с участка где есть колибание в графике.
А если будут разные громкости?
Вычислить макимальную амплитуду первого трека, и подстроить данные второго трека под него...добавлять разницу к примеру.
Если копнуть еще глубже, то можно сравнивать "поведение" графиков, а не громкость определнных участков. Вообщем вариантов для развития - масса.
|
(Offline)
|
|
18.10.2012, 15:38
|
#8
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
Сообщение от pax
Dzirt, а что если два одинаковых трека имеют разную задержку в начале, например у первого 0с, а у второго 0,5с тишины?
|
Говорю же - анализу спектра кусками по 16 секунд не помешает даже лишний заполненный кусок секунды в две-три.
|
(Offline)
|
|
18.10.2012, 15:50
|
#9
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
Сообщение от Nerd96
Говорю же - анализу спектра кусками по 16 секунд не помешает даже лишний заполненный кусок секунды в две-три.
|
16 секунд-это слишком много имхо,я бы брал участками по секунд 5 для более точного результата.
Вообщем если есть желание, попробуй насколько твой способ будет точнее....особенно при сравнении двух похожих по стилю треков....на брутал дез-грайнд-коре он скорее всего загнется.)
|
(Offline)
|
|
21.11.2012, 15:09
|
#10
|
ПроЭктировщик
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений (для 24 пользователей)
|
Ответ: Сравнивание аудио дорожек (MP3, WAVE)
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:03.
|