2016-09-05 10 views
1

Я искал везде, но не нашел никакой документации по поводу analysis_urlaudio feature на Spotify API, чтобы углубить мое понимание по этому вопросу.Spotify - поиск пауз в дорожке

Насколько я понимаю, он узнает аудио по segments, bars, beats, sample rates, fade ins and outs, keys, timbre, mode, time_signature, tempo и т.д.

то, что я до сих пор является:

def analysis_url(track_ids): 

    names = [] 
    tids = [] 

    for id_ in track_ids: 
     track_id = sp.track(id_)['uri'] 
     tids.append(track_id) 
     track_name = sp.track(id_)['name'] 
     names.append(track_name) 

    features = sp.audio_features(tids) 

    urls = [x['analysis_url'] for x in features if x] 

    for url in urls: 
     analysis = sp._get(url) 

Что бы я хотел сделать, это найти Silence в треке, таком как «капля» в электронной музыке.

Как это сделать, используя analysis_url?

ответ

0

Анализ исходит от компании EchoNest, которая была приобретена Spotify некоторое время назад. Вы можете найти документацию для анализа here.

Сегменты включают значение громкости_макса, которое указывает на относительно громкость этого конкретного раздела музыки (в дБ). Нормализация этих значений над песней и искать сегменты, которые имеют низкую относительную громкость:

def normalize_loudness(filename): 
    d = json.load(open(filename, 'r')) 
    x = [_['start'] for _ in d['segments']] 
    l = [_['loudness_max'] for _ in d['segments']] 
    min_l = min(l) 
    max_l = max(l) 
    norm_l = [(_ - min_l)/(max_l - min_l) for _ in l] 
    return (x, norm_l) 

Используя это на песне «Мисс Джексон» по Panic! At The Disco, мы можем построить нормированные значения громкости:

import json 
from matplotlib import pyplot as pp 

x, norm_l = normalize_loudness('msJackson.json') 
pp.plot(x, norm_l, 'o') 
pp.show() 
exit() 

Уступая:

Miss Jackson

С, что вы можете легко найти низкие места в музыке:

print([x[i] for i in range(len(x)) if norm_l[i] < .1]) 
[0.0, 165.86036] 
+0

удивительные , Благодарю. –