понедельник, 16 августа 2010 г.

Из песни слова не выкинешь

... Но их можно легко забыть.

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

И вот я подумал, чтобы не лазить каждый раз по интернету в поисках нужной песни, все песни нужно собрать в одну базу данных!

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

Хотя я давно не интересовался данной темой, может быть сейчас мир изменился к лучшему. С другой стороны если я изложу свои мысли на этот счет - мир может стать еще лучше. :)

А мысли у меня, как обычно, о программировании. Задача встала нетривиальная - необходимо отличить песню от не песни. :)

Поскольку нас интересуют аккорды - можно с одной стороны сканировать интернет в поисках аккордов. А уже потом анализировать текст на предмет похожести его на песню.

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

Стих можно определить по стихотворному размеру и по рифме.

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

С рифмой все не менее сложно. Рифмоваться могут разные части строк, можно рассмотреть наиболее типичные (концы или середины строк). Кроме того проблема в том, что понятие рифмы очень расплывчато. Для рифмы иногда не обязательно даже совпадение концов слов, вернее, оно может совпадать в произношении, но различаться в написании. То есть мы опять имеем весьма нечеткую характеристику.

Вернемся снова к песням. Иногда у песен есть припевы! Повторяющиеся фрагменты стихотворного текста можно определять как припевы.

Для полноты картины осталось только определить исполнителя, год, всякие другие метаданные, которые могут использоваться для поиска. Здесь пока мыслей особо нету.

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

2 коммент.:

tvolf комментирует...

Интересная идея. Не знаю, правда, насколько она реально воплотима :)
Вообще идентификация песен, на мой взгляд, сложное дело - и исполнять песню могут в разных тональностях (транспонировать, например, под голос), то есть, аккорды могут быть разные, в принципе, и петь могут как б-г на душу положит :) Одна надежда на тексты песен )
Сам тоже увлекаюсь музыкой (когда-то даже закончил музшколу по классу фортепиано), но больше упражняюсь на дому. В принципе, могли бы пообщаться на всякие разные темы. Если интересно, дай знать )

tvolf комментирует...

Да, и еще. Наткнулся в свое время на перевод статьи Кнута на rsdn.ru о вычислении сложности песен. Тема её, конечно, далека от идентификации, но для общего развития можно почитать, если еще не видел её.
http://www.rsdn.ru/article/alg/song_complexity.xml