|
|
|
| Проходя очередное собеседование, мне задали вопрос:
"Представьте, имеется 7 терабайт файлов музыки, которые были собраны различными пользователями. Как это все можно организовать?". Под словом организовать подразумевалось, исключить повторяющие файлы и самое сложное организовать музыку, то есть например Beatles и The Beatles являются разными файлами в системе, но в реальности при прослушивании разницы как таковой нет))). И любой пользователь может, что угодно написать в имени файла и названии композиции, имени автора, названии альбома и собственно жанра. Так вот просто не представляю до сих пор как можно справиться с такой задачей?
Достаточно много было вариантом, но даже все комплексно они полностью проблему не решат. Например можно установить правила для назначения имени файла. (К примеру. Фамилия должна идти первой потом Имя. (Пример на отечественных исполнителях: Вместо Алла Пугачева. Будет Пугачева Алла).). Скажем можно установить правило писать, только латинскими буквами.
Вообщем проблему так решить и не удалось. Может кто сталкивался с подобными случаями или кто то просто знает как это можно сделать. Заранее спасибо | |
|
|
|
|
|
|
|
для: Dimka31
(18.01.2008 в 14:19)
| | Нужно проверять не только по названию, но и по содержимому...
Например, хранить в базе md5_file файлов, а при добавлении новых - проверять значение....
Но если песня будет одна и та же, а скажем, в начале нее просто вырезана 1 секунда, то хэш будет разный....
Так что тут нужно использовать комплексный подход | |
|
|
|
|
|
|
|
для: Dimka31
(18.01.2008 в 14:19)
| | Задача не такая уж сложная, если вы хоть немного знаете СИ.
1. Получаете Фурье образ дорожки
2. Рассматриваете его как точку в многомерном пространстве. Для каждой песни будет своё расположение точки.
3. Юзаете теорему Пифагора, чтобы определить расстояние между точками.
4. В пространстве Фурье образов небольшие отличия в оцифровках, случайные помехи, разница в длине файлов, и даже наложение некоторых из аудио эффектов дадут доволно малое расстояние между точками.
Только перед применением преобразования Фурье не забудте преобразовать звук к формату волны. И даже, пожалуй, стоит побеспокоится об интеграле амплитуды - привести к 0.
Стерео сливайте в моно.
Успехов! | |
|
|
|
|
|
|
|
для: Eugene77
(18.01.2008 в 18:51)
| | Не фига се алгоритм =) | |
|
|
|
|
|
|
|
для: ddhvvn
(18.01.2008 в 19:02)
| | Фигасе))). Вообще здорово. Но мало что понятно. Си не знаю, знаю Делфи не помогло))). Ладно решу стряпать портал музыки обязательно воспользуюсь. А если не секрет откуда такие знания? | |
|
|
|
|
|
|
|
для: Dimka31
(19.01.2008 в 19:31)
| | > А если не секрет откуда такие знания?
Сам придумал : )
Я ж не программист. В дипломе значится - физик.
1. Собсвенная функция звучащей струны - синусоида(с отрицательной предэкспонентой)
Это значит не меньше не больше того что если вам надо получить количественную характеристику этого процесса, то она должна выражаться в этих синусоидах - гармониках.
Два века назад уже поняли до меня.
2. Как к ним перейти? Быстрое преобразование Фурье - библиотечная функция.
3. Что делать с результатом преобразования? Это вопрос философский. Но Пифагор - классный философ! : )
4. Ну, то есть, если серьёзно, то это примерно так же как вы будете диван для квашей квартиры выбирать - возьмёте линеечку и обмерите. (в окно его заносить или в дверь войдёт) Ну и два дивана вы, сравнив их размеры, никак не перепутаете, тем более, что они вообще ничем кроме размеров, в нашем случае, характеризоваться не могут.
Хотя, конечно, если честно, есть тут и подводные камни...
Но, с другой стороны, сейчас все с кучами музыкальных файлов мучаются. Если кто напишет прогрммку для толковой систематизации - весьма к месту будет! | |
|
|
|