pykanto.signal.spectrogram
pykanto.signal.spectrogram#
A collection of functions used to create and manipulate spectrograms.
Functions
|
Centre crops an spectrogram to given dimensions. |
|
Cut or pad a spectrogram to be a given length. |
|
Extract windows from multiple spectrograms. |
|
Return a numba typed list containing the 2d array collapsed into one dimension. |
|
Returns a spectrogram representations of the units or the average of the units present in the vocalisations of an ID in the dataset. |
|
Parallel implementation of |
|
Get an array containing spectrograms for every unit in a given song. |
|
Returns spectrogram representations of the units present in a vocalisation (e.g. |
|
Centre pads a spectrogram to a given length. |
|
Loads an spectrogram that was saved as a numpy array. |
|
Computes and saves a melspectrogram as a numpy array using dataset parameters. |
|
Extract windows of length 'wlength' from a spectrogram. |
- pykanto.signal.spectrogram.save_melspectrogram(dataset: KantoData, key: str, dereverb: bool = True, bandpass: bool = True) Dict[str, Path] [source]#
Computes and saves a melspectrogram as a numpy array using dataset parameters.
- Parameters
dataset (KantoData) – A KantoData object.
key (str) – Reference of wav file to open.
dereverb (bool, optional) – Whether to apply dereverberation to the spectrogram. Defaults to True.
bandpass (bool, optional) – Whether to bandpass the spectrogram using the minimum and maximum frequencies of the audio segment’s bounding box. Defaults to True.
- Returns
Key and location of each spectrogram.
- Return type
Tuple[str, Path]
- pykanto.signal.spectrogram.retrieve_spectrogram(nparray_dir: pathlib.Path) numpy.ndarray [source]#
Loads an spectrogram that was saved as a numpy array.
- Parameters
nparray_dir (Path) – Path to the numpy array.
- Returns
Spectrogram.
- Return type
np.ndarray
- pykanto.signal.spectrogram.pad_spectrogram(spectrogram: np.ndarray, pad_length: int) np.ndarray [source]#
Centre pads a spectrogram to a given length.
- Parameters
spectrogram (np.ndarray) – Spectrogram to pad.
pad_length (int) – Full length of padded spectrogram
- Returns
Padded spectrogram
- Return type
np.ndarray
- pykanto.signal.spectrogram.crop_spectrogram(spectrogram: np.ndarray, crop_x: int = 0, crop_y: int = 0) np.ndarray [source]#
Centre crops an spectrogram to given dimensions.
- Parameters
spectrogram (np.ndarray) – Spectrogram to crop.
crop_x (int, optional) – Final x length, > 0. Defaults to 0 (no crop).
crop_y (int, optional) – Final y length, > 0. Defaults to 0 (no crop).
- Returns
Cropped spectrogram
- Return type
np.ndarray
- pykanto.signal.spectrogram.cut_or_pad_spectrogram(spectrogram: np.ndarray, length: int) np.ndarray [source]#
Cut or pad a spectrogram to be a given length.
- Parameters
spectrogram (np.ndarray) – Spectrogram to cut or pad.
length (int) – Final desired lenght, in frames
- Returns
Cut or padded spectrogram.
- Return type
np.ndarray
- pykanto.signal.spectrogram.get_unit_spectrograms(spectrogram: np.ndarray, onsets: np.ndarray, offsets: np.ndarray, sr: int = 22050, hop_length: int = 512) np.ndarray [source]#
Get an array containing spectrograms for every unit in a given song.
- Parameters
spectrogram (np.ndarray) – Spectrogram for a single song.
onsets (np.ndarray) – Unit onsets, in seconds.
offsets (np.ndarray) – Unit offsets, in seconds.
sr (int) – Sampling rate, in Hz
hop_length (int) – Hop length, in frames.
- Returns
An array of arrays, one per unit.
- Return type
np.ndarray
- pykanto.signal.spectrogram.get_vocalisation_units(dataset: KantoData, key: str, song_level: bool = False) Dict[str, np.ndarray | List[np.ndarray]] [source]#
Returns spectrogram representations of the units present in a vocalisation (e.g. in a song) or their average.
- Parameters
dataset (KantoData) – A KantoData object.
key (str) – Single vocalisation locator (key).
song_level (bool, optional) – Whether to return average of all units. Defaults to False.
- Returns
- Dictionary with key and
average of all its units if
song_level
= True, padded to maximum duration. Ifsong_level
= False returns a Dict with key and a list of unit spectrograms, without padding.
- Return type
Dict[str, np.ndarray | List[np.ndarray]]
- pykanto.signal.spectrogram.get_indv_units(dataset: KantoData, keys: List[str], ID: str, pad: bool = True, song_level: bool = False) Dict[str, Path] [source]#
Returns a spectrogram representations of the units or the average of the units present in the vocalisations of an ID in the dataset. Saves the data as pickled dictionary, returns its location.
- Parameters
dataset (KantoData) – Source dataset
keys (List[str]) – List of keys belonging to an ID
ID (str) – ID ID
pad (bool, optional) – Whether to pad spectrograms to the maximum lenght. Defaults to True.
song_level (bool, optional) – Whether to return the average of all units. Defaults to False.
- Returns
ID and location of its pickled dictionary.
- Return type
Dict[str, Path]
- pykanto.signal.spectrogram.get_indv_units_parallel(dataset: KantoData, pad: bool = True, song_level: bool = False, num_cpus: float | None = None) Dict[str, Dict[str, Path]] [source]#
Parallel implementation of
get_indv_units()
.
- pykanto.signal.spectrogram.window(spectrogram: np.ndarray, wlength: int) Iterator[np.ndarray] [source]#
Extract windows of length ‘wlength’ from a spectrogram. Jitted.
- Parameters
spectrogram (np.ndarray) – Spectrogram to window.
wlength (int) – Desired window length.
- Yields
Iterator[np.ndarray] – A single window.
- pykanto.signal.spectrogram.extract_windows(spectrograms: numba.typed.List[np.ndarray], wlength: int) Tuple[numba.typed.List[np.ndarray], List[int]] [source]#
Extract windows from multiple spectrograms. Jitted.
- Parameters
spectrograms (numba.typed.List[np.ndarray]) – Spectrogram to window.
wlength (int) – Desired window length.
- Returns
Contains a list with the resulting windows and a list with the window counts per spectrogram.
- Return type
Tuple[numba.typed.List[np.ndarray], List[int]]
- pykanto.signal.spectrogram.flatten_spectrograms(windows: numba.typed.List[np.ndarray]) numba.typed.List[np.ndarray] [source]#
Return a numba typed list containing the 2d array collapsed into one dimension. Jitted.
- Parameters
windows (numba.typed.List[np.ndarray]) – List of 2d spectrograms.
- Returns
The same list, now containing 1d spectrograms.
- Return type
numba.typed.List[np.ndarray]