def evaluate(ref_time, ref_freq, est_time, est_freq, **kwargs):
    """Evaluate two melody (predominant f0) transcriptions, where the first is
    treated as the reference (ground truth) and the second as the estimate to
    be evaluated (prediction).

    Examples
    --------
    >>> ref_time, ref_freq = mir_eval.io.load_time_series('ref.txt')
    >>> est_time, est_freq = mir_eval.io.load_time_series('est.txt')
    >>> scores = mir_eval.melody.evaluate(ref_time, ref_freq,
    ...                                   est_time, est_freq)

    Parameters
    ----------
    ref_time : np.ndarray
        Time of each reference frequency value
    ref_freq : np.ndarray
        Array of reference frequency values
    est_time : np.ndarray
        Time of each estimated frequency value
    est_freq : np.ndarray
        Array of estimated frequency values
    kwargs
        Additional keyword arguments which will be passed to the
        appropriate metric or preprocessing functions.

    Returns
    -------
    scores : dict
        Dictionary of scores, where the key is the metric name (str) and
        the value is the (float) score achieved.

    """
    # Convert to reference/estimated voicing/frequency (cent) arrays
    (ref_voicing, ref_cent,
     est_voicing, est_cent) = util.filter_kwargs(
         to_cent_voicing, ref_time, ref_freq, est_time, est_freq, **kwargs)

    # Compute metrics
    scores = collections.OrderedDict()

    (scores['Voicing Recall'],
     scores['Voicing False Alarm']) = util.filter_kwargs(voicing_measures,
                                                         ref_voicing,
                                                         est_voicing, **kwargs)

    scores['Raw Pitch Accuracy'] = util.filter_kwargs(raw_pitch_accuracy,
                                                      ref_voicing, ref_cent,
                                                      est_voicing, est_cent,
                                                      **kwargs)

    scores['Raw Chroma Accuracy'] = util.filter_kwargs(raw_chroma_accuracy,
                                                       ref_voicing, ref_cent,
                                                       est_voicing, est_cent,
                                                       **kwargs)

    scores['Overall Accuracy'] = util.filter_kwargs(overall_accuracy,
                                                    ref_voicing, ref_cent,
                                                    est_voicing, est_cent,
                                                    **kwargs)
    return scores
Evaluate two melody (predominant f0) transcriptions, where the first is
    treated as the reference (ground truth) and the second as the estimate to
    be evaluated (prediction).

    Examples
    --------
    >>> ref_time, ref_freq = mir_eval.io.load_time_series('ref.txt')
    >>> est_time, est_freq = mir_eval.io.load_time_series('est.txt')
    >>> scores = mir_eval.melody.evaluate(ref_time, ref_freq,
    ...                                   est_time, est_freq)

    Parameters
    ----------
    ref_time : np.ndarray
        Time of each reference frequency value
    ref_freq : np.ndarray
        Array of reference frequency values
    est_time : np.ndarray
        Time of each estimated frequency value
    est_freq : np.ndarray
        Array of estimated frequency values
    kwargs
        Additional keyword arguments which will be passed to the
        appropriate metric or preprocessing functions.

    Returns
    -------
    scores : dict
        Dictionary of scores, where the key is the metric name (str) and
        the value is the (float) score achieved.