Frechet Audio Distance in PyTorch
A lightweight library of Frechet Audio Distance (FAD) calculation.
Currently, we support:
-
FAD score, with embeddings from:
-
VGGishby S. Hershey et al. -
PANNby Kong et al. -
CLAPby Wu et al. -
EnCodecby Defossez et al.
-
-
CLAP score, for text and audio matching
Installation
pip install frechet_audio_distance
Example
For FAD:
from frechet_audio_distance import FrechetAudioDistance
# to use `vggish`
frechet = FrechetAudioDistance(
model_name="vggish",
sample_rate=16000,
use_pca=False,
use_activation=False,
verbose=False
)
# to use `PANN`
frechet = FrechetAudioDistance(
model_name="pann",
sample_rate=16000,
use_pca=False,
use_activation=False,
verbose=False
)
# to use `CLAP`
frechet = FrechetAudioDistance(
model_name="clap",
sample_rate=48000,
submodel_name="630k-audioset", # for CLAP only
verbose=False,
enable_fusion=False, # for CLAP only
)
# to use `EnCodec`
frechet = FrechetAudioDistance(
model_name="encodec",
sample_rate=48000,
channels=2,
verbose=False,
)
fad_score = frechet.score(
"/path/to/background/set",
"/path/to/eval/set",
dtype="float32"
)
You can also have a look at this notebook for a better understanding of how each model is used.
For CLAP score:
from frechet_audio_distance import CLAPScore
clap = CLAPScore(
submodel_name="630k-audioset",
verbose=True,
enable_fusion=False,
)
clap_score = clap.score(
text_path="./text1/text.csv",
audio_dir="./audio1",
text_column="caption",
)
For more info, kindly refer to this notebook.
Save pre-computed embeddings
When computing the Frechet Audio Distance, you can choose to save the embeddings for future use.
This capability not only ensures consistency across evaluations but can also significantly reduce computation time, especially if you're evaluating multiple times using the same dataset.
# Specify the paths to your saved embeddings
background_embds_path = "/path/to/saved/background/embeddings.npy"
eval_embds_path = "/path/to/saved/eval/embeddings.npy"
# Compute FAD score while reusing the saved embeddings (or saving new ones if paths are provided and embeddings don't exist yet)
fad_score = frechet.score(
"/path/to/background/set",
"/path/to/eval/set",
background_embds_path=background_embds_path,
eval_embds_path=eval_embds_path,
dtype="float32"
)
Result validation
Test 1: Distorted sine waves on vggish (as provided here) [notes]
FAD scores comparison w.r.t. to original implementation in google-research/frechet-audio-distance
| baseline vs test1 | baseline vs test2 | |
|---|---|---|
google-research |
12.4375 | 4.7680 |
frechet_audio_distance |
12.7398 | 4.9815 |
Test 2: Distorted sine waves on PANN
| baseline vs test1 | baseline vs test2 | |
|---|---|---|
frechet_audio_distance |
0.000465 | 0.00008594 |
To contribute
Contributions are welcomed! Kindly raise a PR and ensure that all CI checks are passed.
NOTE: For now, the CI only checks for vggish as PANN takes a long time to download.
References
VGGish in PyTorch: https://github.com/harritaylor/torchvggish
Frechet distance implementation: https://github.com/mseitzer/pytorch-fid
Frechet Audio Distance paper: https://arxiv.org/abs/1812.08466
PANN paper: https://arxiv.org/abs/1912.10211
Metadata
Release files for frechet-audio-distance 0.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| frechet_audio_distance-0.3.4.tar.gz | 25.9 kB | Without provenance | Details for frechet_audio_distance-0.3.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| frechet_audio_distance-0.3.4-py3-none-any.whl | Python 3 | none | any | Details for frechet_audio_distance-0.3.4-py3-none-any.whl |
Total release size: 49.9 kB
Release files / frechet_audio_distance-0.3.4.tar.gz
| Download URL | frechet_audio_distance-0.3.4.tar.gz |
|---|---|
| Size | 25.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ce982b5f6ac98226d1f00e0d4ed94e2da626dc7e7c022460d0d84d2280e9abdf
|
|
BLAKE2b-256 checksum How to use checksums |
afc504b0723f264421d5f779d312a7f1ec54c9b393ee48fddff65377ff449969
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.10
|
Release files / frechet_audio_distance-0.3.4-py3-none-any.whl
| Download URL | frechet_audio_distance-0.3.4-py3-none-any.whl |
|---|---|
| Size | 24.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
06c60fd1fee7ff086617864c8d709836c30f87e3686b9c87864ff3217fb7ff9f
|
|
BLAKE2b-256 checksum How to use checksums |
18a89579ace5c37ab9bbfe246ba3cdbe31683e9bf91f4fc25de423cc822df2c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.10
|
Security for frechet-audio-distance 0.3.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.