def analyze(filename=None, y=None, sr=None):
'''Analyze a recording for all tasks.
Parameters
----------
filename : str, optional
Path to audio file
y : np.ndarray, optional
sr : number > 0, optional
Audio buffer and sampling rate
.. note:: At least one of `filename` or `y, sr` must be provided.
Returns
-------
jam : jams.JAMS
a JAMS object containing all estimated annotations
Examples
--------
>>> from crema.analyze import analyze
>>> import librosa
>>> jam = analyze(filename=librosa.util.example_audio_file())
>>> jam
<JAMS(file_metadata=<FileMetadata(...)>,
annotations=[1 annotation],
sandbox=<Sandbox(...)>)>
>>> # Get the chord estimates
>>> chords = jam.annotations['chord', 0]
>>> chords.to_dataframe().head(5)
time duration value confidence
0 0.000000 0.092880 E:maj 0.336977
1 0.092880 0.464399 E:7 0.324255
2 0.557279 1.021678 E:min 0.448759
3 1.578957 2.693515 E:maj 0.501462
4 4.272472 1.486077 E:min 0.287264
'''
_load_models()
jam = jams.JAMS()
# populate file metadata
jam.file_metadata.duration = librosa.get_duration(y=y, sr=sr,
filename=filename)
for model in __MODELS__:
jam.annotations.append(model.predict(filename=filename, y=y, sr=sr))
return jam
评论列表
文章目录