Added
- Add attributes `channels`, `samples`, and `duration` to `vocalpy.Sound`
[124](https://github.com/vocalpy/vocalpy/pull/124).
Fixes [90](https://github.com/vocalpy/vocalpy/issues/90).
- Add functionality to `vocalpy.segment.ava.segment` to replicate segmenting in
papers that use this method
[130](https://github.com/vocalpy/vocalpy/pull/130).
Fixes [126](https://github.com/vocalpy/vocalpy/issues/126).
- Add larger example datasets, that are downloaded with `pooch`
[130](https://github.com/vocalpy/vocalpy/pull/130).
Fixes [33](https://github.com/vocalpy/vocalpy/issues/33).
- Add `dtype` argument to `Sound.read`, that defaults to `numpy.float64`.
This means that all audio loads with this numpy DType by default,
including cbins. This makes the behavior of `vocalpy.Sound`
consistent with `soundfile`.
[132](https://github.com/vocalpy/vocalpy/pull/132).
Fixes [131](https://github.com/vocalpy/vocalpy/issues/131).
- Add `Segments` class, that represents a set of line segments returned by a segmenting algorithm
[133](https://github.com/vocalpy/vocalpy/pull/133).
As discussed in [127](https://github.com/vocalpy/vocalpy/issues/127).
- Add how-to on using segmentation metrics from information retrieval
[133](https://github.com/vocalpy/vocalpy/pull/133).
- Add `Params` class, an abstract class that represents parameters used with a method.
Parameters for specific methods are represented by sub-classes of `Params`.
This makes it possible to annotate the expected type of the `params` argument for classes
representing a workflow step as `Params` (usually, `Params | dict`).
The class also has the required methods that make it possible to unpack it
with the `**` operator.
This means any workflow-step class boils down to doing the following:
`self.callback(input, **self.params)`
[133](https://github.com/vocalpy/vocalpy/pull/133).
- Add `samplerate` attribute to `Segment` class, so feature extraction
functions can compute time-frequency representations from a `Segment`
if they need to
[138](https://github.com/vocalpy/vocalpy/pull/138).
Fixes [137](https://github.com/vocalpy/vocalpy/issues/137).
- Add `FeatureExtractor` class, that represents feature
extraction step in a workflow
[141](https://github.com/vocalpy/vocalpy/pull/141).
Fixes [94](https://github.com/vocalpy/vocalpy/issues/94).
- Add implementation of acoustic features from [soundsig](https://github.com/theunissenlab/soundsig)
[141](https://github.com/vocalpy/vocalpy/pull/141).
Fixes [27](https://github.com/vocalpy/vocalpy/issues/27).
Changed
- Rename `vocalpy.Audio` to `vocalpy.Sound`
[124](https://github.com/vocalpy/vocalpy/pull/124).
Fixes [90](https://github.com/vocalpy/vocalpy/issues/90).
- Change how we handle the number of channels in audio to be consistent
across single and multi-channel. `vocalpy.Sound.data` always has
dimensions (channel, sample), and likewise `vocalpy.Spectrogram.data`
has dimensions (channel, frequency, time), and feature extraction
functions that extract one feature value per frame return arrays with
dimensions (shape, time)
[124](https://github.com/vocalpy/vocalpy/pull/124).
Fixes [90](https://github.com/vocalpy/vocalpy/issues/90).
- Rename `vocalpy.Segmenter.segment_params` and `vocalpy.SpectrogramMaker.spect_params`
to just `params`
[133](https://github.com/vocalpy/vocalpy/pull/133).
- Rename `vocalpy.segment.ava.segment` -> `vocalpy.segment.ava`
[133](https://github.com/vocalpy/vocalpy/pull/133).
Fixed
- Fix `vocalpy.segment.ava.segment` to better replicate original function
[130](https://github.com/vocalpy/vocalpy/pull/130).
Fixes [126](https://github.com/vocalpy/vocalpy/issues/126).
- Fix `vocalpy.segment.meansquared` so it replicates behavior of original
function `segment_song` in evsonganaly. As with `vocalpy.segment.ava.segment`,
we now assume the input is by default `numpy.float64` with range [-1.0, 1.0],
and we rescale to int16 range that the original function expected.
We now test that we replicate the original behavior using oracle data from the
[evfuncs](https://github.com/NickleDave/evfuncs) package.
[132](https://github.com/vocalpy/vocalpy/pull/132).
Fixes [129](https://github.com/vocalpy/vocalpy/issues/129).
Removed
- Remove `dataset` module and `SequenceDataset` class for now
[133](https://github.com/vocalpy/vocalpy/pull/133).