Skip to main content

A lightweight library of Frechet Audio Distance calculation.

Project description

Frechet Audio Distance in PyTorch

A lightweight library of Frechet Audio Distance (FAD) calculation.

Currently, we support:

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frechet_audio_distance-0.3.4.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

frechet_audio_distance-0.3.4-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

Details for the file frechet_audio_distance-0.3.4.tar.gz.

File metadata

  • Download URL: frechet_audio_distance-0.3.4.tar.gz
  • Upload date:
  • Size: 25.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.10

File hashes

Hashes for frechet_audio_distance-0.3.4.tar.gz
Algorithm Hash digest
SHA256 ce982b5f6ac98226d1f00e0d4ed94e2da626dc7e7c022460d0d84d2280e9abdf
MD5 18b56928c828f11fbcf56766e8127cc2
BLAKE2b-256 afc504b0723f264421d5f779d312a7f1ec54c9b393ee48fddff65377ff449969

See more details on using hashes here.

File details

Details for the file frechet_audio_distance-0.3.4-py3-none-any.whl.

File metadata

File hashes

Hashes for frechet_audio_distance-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 06c60fd1fee7ff086617864c8d709836c30f87e3686b9c87864ff3217fb7ff9f
MD5 14b9ae54e9db8bed3d7d1c6deca8a607
BLAKE2b-256 18a89579ace5c37ab9bbfe246ba3cdbe31683e9bf91f4fc25de423cc822df2c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page