| --- |
| license: apache-2.0 |
| library_name: pytorch |
| pipeline_tag: audio-classification |
| base_model: |
| - justinchuby/Perch-onnx |
| - wrice/perch-v2-efficientnet-b3 |
| tags: |
| - audio |
| - bioacoustics |
| - bird-classification |
| - das |
| - embeddings |
| --- |
| |
| # PERCH 2 PyTorch |
|
|
| PyTorch implementation of the complete PERCH 2 waveform model for |
| bioacoustic classification and 1536-dimensional audio embeddings. |
|
|
| ## Load From Hugging Face |
|
|
| ```python |
| import torch |
| |
| model = torch.hub.load("janclemenslab/perch2_torch", "perch_v2").eval() |
| waveform = torch.zeros(5 * 32_000) # Mono 32 kHz audio. |
| |
| with torch.no_grad(): |
| outputs = model(waveform) |
| |
| index = outputs["label"][0].argmax() |
| print(model.labels[index]) |
| ``` |
|
|
| This call downloads `perch_v2_torch.pt` from this Hugging Face repository and |
| caches it locally. |
|
|
| Inputs are mono, 32 kHz waveforms with shape `(time,)` or `(batch, time)`. |
| Audio longer than five seconds is processed in overlapping windows and pooled. |
|
|
| ## Outputs |
|
|
| - `embedding`: `(batch, 1536)` global embedding |
| - `spatial_embedding`: `(batch, time, frequency, 1536)` unpooled embedding |
| - `spectrogram`: log-mel spectrogram |
| - `label`: `(batch, 14795)` uncalibrated class logits |
|
|
| `model.labels[index]` maps a logit index to its embedded class name. Thresholds |
| should be calibrated for the target data. |
|
|
| ## Reproducibility |
|
|
| The conversion code, demo notebook, and verification command are available in |
| [janclemenslab/perch2_torch](https://github.com/janclemenslab/perch2_torch). |
|
|
| ## Attribution And License |
|
|
| Derived from the Apache-2.0 [PERCH ONNX model](https://huggingface.co/justinchuby/Perch-onnx) |
| and Apache-2.0 [wrice EfficientNet-B3 checkpoint](https://huggingface.co/wrice/perch-v2-efficientnet-b3). |
| The class taxonomy comes from the Apache-2.0 [PERCH model release](https://huggingface.co/cgeorgiaw/Perch). |
|
|