Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Алгоритм органиции портала музыки...
 
 автор: Dimka31   (18.01.2008 в 14:19)   письмо автору
 
 

Проходя очередное собеседование, мне задали вопрос:
"Представьте, имеется 7 терабайт файлов музыки, которые были собраны различными пользователями. Как это все можно организовать?". Под словом организовать подразумевалось, исключить повторяющие файлы и самое сложное организовать музыку, то есть например Beatles и The Beatles являются разными файлами в системе, но в реальности при прослушивании разницы как таковой нет))). И любой пользователь может, что угодно написать в имени файла и названии композиции, имени автора, названии альбома и собственно жанра. Так вот просто не представляю до сих пор как можно справиться с такой задачей?
Достаточно много было вариантом, но даже все комплексно они полностью проблему не решат. Например можно установить правила для назначения имени файла. (К примеру. Фамилия должна идти первой потом Имя. (Пример на отечественных исполнителях: Вместо Алла Пугачева. Будет Пугачева Алла).). Скажем можно установить правило писать, только латинскими буквами.
Вообщем проблему так решить и не удалось. Может кто сталкивался с подобными случаями или кто то просто знает как это можно сделать. Заранее спасибо

   
 
 автор: ddhvvn   (18.01.2008 в 14:33)   письмо автору
 
   для: Dimka31   (18.01.2008 в 14:19)
 

Нужно проверять не только по названию, но и по содержимому...

Например, хранить в базе md5_file файлов, а при добавлении новых - проверять значение....

Но если песня будет одна и та же, а скажем, в начале нее просто вырезана 1 секунда, то хэш будет разный....

Так что тут нужно использовать комплексный подход

   
 
 автор: Eugene77   (18.01.2008 в 18:51)   письмо автору
 
   для: Dimka31   (18.01.2008 в 14:19)
 

Задача не такая уж сложная, если вы хоть немного знаете СИ.
1. Получаете Фурье образ дорожки
2. Рассматриваете его как точку в многомерном пространстве. Для каждой песни будет своё расположение точки.
3. Юзаете теорему Пифагора, чтобы определить расстояние между точками.
4. В пространстве Фурье образов небольшие отличия в оцифровках, случайные помехи, разница в длине файлов, и даже наложение некоторых из аудио эффектов дадут доволно малое расстояние между точками.

Только перед применением преобразования Фурье не забудте преобразовать звук к формату волны. И даже, пожалуй, стоит побеспокоится об интеграле амплитуды - привести к 0.
Стерео сливайте в моно.

Успехов!

   
 
 автор: ddhvvn   (18.01.2008 в 19:02)   письмо автору
 
   для: Eugene77   (18.01.2008 в 18:51)
 

Не фига се алгоритм =)

   
 
 автор: Dimka31   (19.01.2008 в 19:31)   письмо автору
 
   для: ddhvvn   (18.01.2008 в 19:02)
 

Фигасе))). Вообще здорово. Но мало что понятно. Си не знаю, знаю Делфи не помогло))). Ладно решу стряпать портал музыки обязательно воспользуюсь. А если не секрет откуда такие знания?

   
 
 автор: Eugene77   (19.01.2008 в 20:09)   письмо автору
 
   для: Dimka31   (19.01.2008 в 19:31)
 

> А если не секрет откуда такие знания?

Сам придумал : )

Я ж не программист. В дипломе значится - физик.
1. Собсвенная функция звучащей струны - синусоида(с отрицательной предэкспонентой)
Это значит не меньше не больше того что если вам надо получить количественную характеристику этого процесса, то она должна выражаться в этих синусоидах - гармониках.
Два века назад уже поняли до меня.
2. Как к ним перейти? Быстрое преобразование Фурье - библиотечная функция.
3. Что делать с результатом преобразования? Это вопрос философский. Но Пифагор - классный философ! : )
4. Ну, то есть, если серьёзно, то это примерно так же как вы будете диван для квашей квартиры выбирать - возьмёте линеечку и обмерите. (в окно его заносить или в дверь войдёт) Ну и два дивана вы, сравнив их размеры, никак не перепутаете, тем более, что они вообще ничем кроме размеров, в нашем случае, характеризоваться не могут.

Хотя, конечно, если честно, есть тут и подводные камни...

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования