Spotify - 搜索曲目中的静音

Spotify - searching for silences in a track

为了加深对Spotify API的理解analysis_urlaudio feature,我到处搜索都没有找到任何文档。

就我而言,它通过 segmentsbarsbeatssample ratesfade ins and outs、[= 学习音频19=]、timbremodetime_signaturetempo

我目前拥有的是:

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)

我想做的是在曲目中找到 silences,例如电子音乐中的 'drop'。

如何使用 analysis_url 来做到这一点?

分析来自一家名为EchoNest的公司,前段时间被Spotify收购。您可以找到分析文档 here.

片段包含一个 loudness_max 值,该值指示该特定音乐部分的相对响度(以 db 为单位)。标准化歌曲中的这些值并寻找相对响度较低的片段:

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 的歌曲 "Miss Jackson" 中使用它!在 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()

产量:

有了它,您可以轻松找到音乐中的低点:

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