+
Software Profile Feed

Софт для поиска audio плагиата - помогите с теорией


soft Audio Plagiary Detector sktch2 @ CoolRockBassBlock

Известно, что иногда в Сети встречаются личности, у которых хватает совести выдавать чужие треки за свои, а некоторые ещё и продают их. Самое худшее происходит тогда, когда вы ничего не подозревая, спокойно работаете дальше. Проблема появляется внезапно, как гром среди ясного неба, начинаются долгие и неприятные разборки.

Мне, как и любому покупателю музыки, хочется полностью исключить возможность столкновения с любым сплагиаченным треком в релизе. Есть музыканты и владельцы лейблов на PROMODJ, на страницах которых бываю часто, в их релизах уверен полностью, но просторы Интернета безграничны.

Очень нужны любые мнения на тему: возможна ли программа, которая сама будет искать плагиат и по какому принципу она может работать ? Или в сегодняшнее время её невозможно сделать ?

Допустим, можно ли собрать в базу данных спектры mp3 файлов и детально сравнивать их между собой, или лучше разбивать музыкальный фрагмент на множество частотных диапазонов, сравнивая его с треком в котором есть сомнения, может существуют и другие варианты ?

Пока размышлял над subj, сделал примерный набросок интерфейса подобной программы

[скрин в самом начале поста]. Скорее всего, объёмы данных будут просто огромными, потребуется хранить детальную информацию о каждой композиции. Mp3, если что, можно перевести в wav файл и работать уже с ним, тем более, это реализовано уже достаточно давно:

Например, вот исходник класса Wav файла: авторство принадлежит dar3dev1l26 (С)

public class WavFile

    {        

        public string path;

        //-----WaveHeader-----

        public char[] sGroupID; // RIFF

        public uint dwFileLength; // total file length minus 8, which is taken up by RIFF

        public char[] sRiffType;// always WAVE

        //-----WaveFormatChunk-----

        public char[] sFChunkID;         // Four bytes: "fmt "

        public uint dwFChunkSize;        // Length of header in bytes

        public ushort wFormatTag;       // 1 (MS PCM)

        public ushort wChannels;        // Number of channels

        public uint dwSamplesPerSec;    // Frequency of the audio in Hz... 44100

        public uint dwAvgBytesPerSec;   // for estimating RAM allocation

        public ushort wBlockAlign;      // sample frame size, in bytes

        public ushort wBitsPerSample;    // bits per sample

        //-----WaveDataChunk-----

        public char[] sDChunkID;     // "data"

        public uint dwDChunkSize;    // Length of header in bytes

        public byte dataStartPos;  // audio data start position

       

        public WavFile()

        {

            path = Environment.CurrentDirectory;

            //-----WaveHeader-----

            dwFileLength = 0;

            sGroupID = "RIFF".ToCharArray();

            sRiffType = "WAVE".ToCharArray();

            //-----WaveFormatChunk-----

            sFChunkID = "fmt ".ToCharArray();

            dwFChunkSize = 16;

            wFormatTag = 1;

            wChannels = 2;

            dwSamplesPerSec = 44100;

            wBitsPerSample = 16;

            wBlockAlign = (ushort)(wChannels * (wBitsPerSample / 8));

            dwAvgBytesPerSec = dwSamplesPerSec * wBlockAlign;

            //-----WaveDataChunk-----

            dataStartPos = 44;

            dwDChunkSize = 0;

            sDChunkID = "data".ToCharArray();

        }

    }

Он пишет буквально следующее: Цитата:

"Мне не нужно никаким образом менять данные в хэдере или менять размер wav файла, мне нужно изменить с помощью своего алгоритма значения в блоке данных. Поэтому я действую так: создаю экземпляр класса WavFile инициализирую его поля с помощью BinaryReader, потом копирую файл с помощью BinaryWriter (когда дохожу до блока данных я их перед записью редактирую). Таким образом я имею копию исходного файла, только с звуковыми отредактированными данными..."

Вот его код для инициализации:

    wavFile.path = @"C:\Track.wav"; // Полный путь к нашему файлу

            FileStream fsr = new FileStream(wavFile.path, FileMode.Open, FileAccess.Read);

            BinaryReader r = new BinaryReader(fsr);            

            wavFile.sGroupID = r.ReadChars(4);   // Читаем всю структуру

            wavFile.dwFileLength = r.ReadUInt32(); 

            wavFile.sRiffType = r.ReadChars(4);    

            wavFile.sFChunkID = r.ReadChars(4);

            wavFile.dwFChunkSize = r.ReadUInt32();

            wavFile.wFormatTag = r.ReadUInt16();

            wavFile.wChannels = r.ReadUInt16();

            wavFile.dwSamplesPerSec = r.ReadUInt32();

            wavFile.dwAvgBytesPerSec = r.ReadUInt32();

            wavFile.wBlockAlign = r.ReadUInt16();

            wavFile.wBitsPerSample = r.ReadUInt16();

            wavFile.sDChunkID = r.ReadChars(4);

            wavFile.dwDChunkSize = r.ReadUInt32();            

            wavFile.dataStartPos = (byte)r.BaseStream.Position;

            r.Close();

            fsr.Close();


Plagiary Seek and Destroy @ CoolRockBassBlock

Сталкивались с плагиатом ?

нормальное
3 ▲
27 June 2014 13:09
CoolRockBassBlock

Comments

Pinned comments
Prospekt Music  27 June 2014 19:09
Разумеется, анализ ведется в бэкграунде, а результаты (как например для витрин данных) хранятся в оперативных БД для более быстрого доступа к ним.
G.A. (ex TAKE TWO)  27 June 2014 14:49
цена вопроса разработки подобного будет столь высока, что профита не будет.
и да, нормально даже простейшие полифонические партии до сих пор распознавать софт не умеет, чего уже говорить о точном распознавании всех мелодических партий внутри композиции.
этот ваш шазам-то и то ошибается, а у него задача куда проще - найти фактически идентичный файл, а не проверять, идентичны 3 нотки у скрипки в правом ряду одной вещи бэк-вокальной партии другой вещи.
я проверяю подозрительные треки Шазамом, были случаи находил под другим именем
При конкретных вопросах источнику случался нижеследующих диалог:

ХХХ12.04.14
Пересланные сообщения
Остальные не отгадал
YYY12.04.14
Оу оу оу
Черт возьми! Кто б.я на моих треках наживается!
ХХХ12.04.14
подай в суд!
YYY12.04.14
Толку сейчас мало.. след альбом буду продавать.. дабы не было такого
YYY12.04.14
Надо узнать как продавать треки на разнх маркетах
YYY12.04.14
ахаха да Noizequake этот чувак своровал у меня 6 треков
не знаю. мне пофиг.
(Atatat was here)
но мне реально пофиг.
к тому же занятие бесперспективное.
Насчёт бесперспективности: а если в виде отдельного внешнего сервиса всё оформить и попробовать продвинуть, чтобы каждый мог попробовать найти треки похожие на свой, неужели посещаемости не будет ?
цена вопроса разработки подобного будет столь высока, что профита не будет.
и да, нормально даже простейшие полифонические партии до сих пор распознавать софт не умеет, чего уже говорить о точном распознавании всех мелодических партий внутри композиции.
этот ваш шазам-то и то ошибается, а у него задача куда проще - найти фактически идентичный файл, а не проверять, идентичны 3 нотки у скрипки в правом ряду одной вещи бэк-вокальной партии другой вещи.
Мертвый проект... по крайней мере лет на 10 вперед, пока:
1. скорость интернета не станет космической
2. жесткие диски не станут вмещать тысячи терабайт.
3. не появятся программы, "умеющие" распознавать в реал тайме мелодии в разных темпах и тембрах тысяч треков одновременно.
1. Скорость интернета ни при чем.
2. Любой современный СХД.
3. Существуют сервисы, которые обрабатывают запросы в разы превышают данные.
Плохо вы знакомы с ЦОДами.
Давышто?
Наверное любой себе может позволить разместить махину у себя дома...
Какую махину, о чем вы.
2. Думаю что у всяких шазамов музло нигде и не хранится. Легкий файлик с результатами обработки трека каким то секретным алгоритмом.
Разумеется, анализ ведется в бэкграунде, а результаты (как например для витрин данных) хранятся в оперативных БД для более быстрого доступа к ним.
Есть вроде софт на смарты, записываешь фрагмент на диктофон - прога в нете находит песню по этому фрагменту, но в глаза не видел. Вообще проект серьезный, алгоритмы на базе нейронной сети, И.И., опять же...
И вот ведь никто не написал самого главного: А как собрать в одну кучу миллиарды треков? Сервисы по распознаванию музыки до сих пор не могут этого себе позволить, а тут...
Думаю будет уместен один момент из моего опыта распознавания музыки.
TrackID распознает трек Funky Deluxe - Goody (www17.zippyshare.com/v/6042324 …) как The Fatback Band - Night Fever

Изменений, конечно, практически никаких (в ремиксе), но все же...
Обратил внимание на то что тему MIDI затронули здесь уже несколько раз, и вспомнил, что несколько лет назад, когда плотно интересовался
этим основополагающим стандартом, находил программу, которая могла перевести WAV в MIDI. Это было что-то невероятное и конечно-же разработанное
выходцами из СССР! Но, к сожалению, на той версии (вроде 2.7) не получалось толком перевести ни один свой трек.
Сейчас решил посмотреть, продолжили ли эти, без сомнения, одарённые программисты свою работу ?
Оказалось что да. Может быть кто-то из Вас ей постоянно пользуется и я окажусь капитаном-очевидностью, но другие, возможно, заинтересуются:

Встречайте: WIDI - Music Recognition System v3.3 и v4.00



Вот что пишут авторы о самой интересной части - об алгоритме:

"На первом вычисляются спектральные данные специального вида, этот этап называется преобразованием "Звук->Тон". В настоящее время в программе имеются три различных алгоритма, осуществляющих это преобразование; каждый из них имеет свои достоинства и недостатки.

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

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



Возможности. Цитирую сопроводительную документацию:
"Основная задача программы TS-WIDI Pro это преобразование оцифрованных музыкальных полифонических записей в файлы MIDI и распознавание музыки в реальном времени.

Исходные данные

Полифонические и монофонические записи в форматах MP3, WAVE, AIF, SND, AU, SF и аудио CD-треки *.
Звук поступающий с микрофона в реальном времени.
Поддерживаются также сжатые файлы WAVE.

Основные особенности распознавания

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

Возможности редактирования

Возможно выделить для распознавания любую часть музыкальной записи.
Использование редактора TrueTone (tm) позволяет эффективно повысить качество распознавания.

Работа в реальном времени

Вы можете распознавать ноты "на лету", управляя MIDI-синтезатором непосредственно из модуля распознавания в реальном времени.

Представление результата

На выходе получается многоканальный, отсортированный по громкости файл MIDI.
Есть возможность выбрать один из большего списка инструментов, чтобы использовать его в результирующем файле MIDI.

Дополнительные возможности:

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



Где найти shareware:

www.mymusictools.com/rus/midi_ …

и здесь: (freeSOFT является участником программы Kaspersky White List.)

freesoft.ru/tswidi_pro_russian …
Установив программу, решил посмотреть, распознает ли она мой трек: CoolRockBassBlock_-_A Secret Jet Propulsion Lab (Headphones mix)

Обращал внимание на то, что за инструмент будет использован для проигрывания результата:



С тем небольшим фрагментом, где звучит только Lead-группа, WIDI справилась на удивление успешно, но всё остальное звучало весьма далеко от истины.



Исходя из чего были сделаны следующие выводы: хотя над алгоритмом разработчики работали весьма продолжительное время, для распознавания
современной музыки его эффективность нельзя назвать особенно высокой, но даже при всех её недостатках WIDI - это редкая и, безусловно, интересная разработка,
остро нуждающаяся в дальнейшем развитии.
Please, sign up (it's quick!) or sign in, to post comments and do more fun stuff.