Python librosa 模块,frames_to_time() 实例源码

我们从Python开源项目中,提取了以下6个代码示例,用于说明如何使用librosa.frames_to_time()

项目:catchy    作者:jvbalen    | 项目源码 | 文件源码
def get_mfcc(x, sr, n_mfcc=20):
    """Compute MFCC features from raw audio, using librosa.
    Librosa must be installed.

    Args:
        x (1d-array) audio signal, mono
        sr (int): sample rate
        n_mfcc (int): number of coefficients to retain

    Returns:
        2d-array: MFCC features
    """
    mfcc_all = librosa.feature.mfcc(x, sr)
    n_coeff, n_frames = mfcc_all.shape
    t = librosa.frames_to_time(np.arange(n_frames), sr=sr, hop_length=512)

    return t, mfcc_all[:n_mfcc].T
项目:catchy    作者:jvbalen    | 项目源码 | 文件源码
def get_beats(x, sr):
    """Track beats in an audio excerpt, using librosa's standard
        beat tracker.

    Args:
        x (1d-array) audio signal, mono
        sr (int): sample rate

    Returns:
        2d-array: beat times and beat intervals
    """

    _, beat_frames = librosa.beat.beat_track(x, sr=sr)
    beat_times = librosa.frames_to_time(beat_frames, sr=sr)

    t = beat_times[:-1,]
    beat_intervals = np.diff(beat_times)

    return t, beat_intervals
项目:catchy    作者:jvbalen    | 项目源码 | 文件源码
def get_onsets(x, sr):
    """Compute inter-onset intervals (IOI) from audio, using librosa.

    Args:
        x (1d-array) audio signal, mono
        sr (int): sample rate

    Returns:
        2d-array: onset times and IOI
    """

    onset_frames = librosa.onset.onset_detect(x, sr=sr)
    onset_times = librosa.frames_to_time(onset_frames, sr=sr)

    t = onset_times[:-1,]
    onset_intervals = np.diff(onset_times)

    return t, onset_intervals
项目:pumpp    作者:bmcfee    | 项目源码 | 文件源码
def decode_events(self, encoded):
        '''Decode labeled events into (time, value) pairs

        Parameters
        ----------
        encoded : np.ndarray, shape=(n_frames, m)
            Frame-level annotation encodings as produced by ``encode_events``.

            Real-valued inputs are thresholded at 0.5.

        Returns
        -------
        [(time, value)] : iterable of tuples
            where `time` is the event time and `value` is an
            np.ndarray, shape=(m,) of the encoded value at that time
        '''
        if np.isrealobj(encoded):
            encoded = (encoded >= 0.5)
        times = frames_to_time(np.arange(encoded.shape[0]),
                               sr=self.sr,
                               hop_length=self.hop_length)

        return zip(times, encoded)
项目:Mash-Up    作者:poke19962008    | 项目源码 | 文件源码
def _crossFadeRegion(self): # Computes the cross fade region for the mixed song
        Na = self.beats['in'].shape[0]-1

        scores = [self._score(i, Na) for i in xrange(2, int(Na/4))]
        noBeats = np.argmax(scores)+2

        inDuration = librosa.get_duration(y=self.Yin, sr=self.sr)
        fadeInStart = librosa.frames_to_time(self.beats['in'], sr=self.sr)[-int(noBeats/2)]
        fadeIn = inDuration - fadeInStart

        fadeOut = librosa.frames_to_time(self.beats['out'], sr=self.sr)[int(noBeats/2)]

        print "Best Power Corelation Scores=", np.max(scores)
        print "Number of beats in cross fade region=", noBeats
        print "fadeInStart=", fadeInStart
        print "fadeOutEnd=", fadeOut
        print "Cross Fade Time=", fadeIn+fadeOut

        self.crossFade = [fadeInStart*1000, fadeOut*1000] # In milliseconds
项目:MusicNet    作者:vidursatija    | 项目源码 | 文件源码
def calculateFeatures(filename):
    y, sr = librosa.load(filename)
    hop_length = 512
    section_length = 30
    permit_length = 0 #No overlap
    n_paras = 4

    tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
    n_beats = len(beat_frames)
    y_harmonic, _ = librosa.effects.hpss(y)
    beat_times = librosa.frames_to_time(beat_frames, sr=sr)
    mfcc = librosa.feature.mfcc(y=y, sr=sr, hop_length=hop_length, n_mfcc=1)
    mfcc_delta = librosa.feature.delta(mfcc)
    beat_mfcc_delta = librosa.util.sync(np.vstack([mfcc, mfcc_delta]), beat_frames)

    chromagram = librosa.feature.chroma_cqt(y=y_harmonic, sr=sr)
    beat_chroma = librosa.util.sync(chromagram, beat_frames, aggregate=np.median)

    delta_rms = np.square(beat_mfcc_delta[1])

    prev_delta_sums = np.empty((n_beats-section_length+1))
    total_sum = np.sum(delta_rms[:section_length])
    prev_delta_sums[0] = total_sum
    for pos in range(n_beats-section_length):
        total_sum = total_sum - delta_rms[pos] + delta_rms[pos+section_length]
        prev_delta_sums[pos+1] = total_sum

    prev_delta_sums_delta = librosa.feature.delta(prev_delta_sums)
    para_init_locs = []
    for n_p in range(n_paras):
        lowest = 50
        lowest_loc = 0
        for loc, each_sum_delta in enumerate(prev_delta_sums_delta):
            #Check valid loc
            valid_loc = True
            for each_loc in para_init_locs:
                if loc > each_loc - (section_length - permit_length) and loc < each_loc + (section_length - permit_length):
                    valid_loc = False
                    break

            if each_sum_delta <= lowest and valid_loc:
                lowest = each_sum_delta
                lowest_loc = loc

        para_init_locs.append(lowest_loc)

    para_init_locs.sort()
    #print(para_init_locs)

    all_features = np.empty((n_paras*section_length, 2)) #0 - mfcc, 1 - chroma
    for n_p in range(n_paras):
        all_features[n_p*section_length:(n_p+1)*section_length, 0] = beat_mfcc_delta[0][para_init_locs[n_p]:para_init_locs[n_p]+section_length] / 250
        all_features[n_p*section_length:(n_p+1)*section_length, 1] = np.argmax(beat_chroma[:, para_init_locs[n_p]:para_init_locs[n_p]+section_length], axis=0)/11

    return all_features.reshape((n_paras*section_length*2))