Mean Average Precision over words or n-grams with speech features
Compute the Mean Average Precision (MAP) with speech features.
This is the MAP@R from equation (3) of https://arxiv.org/abs/2003.08505.
Installation
This package is available on PyPI:
pip install speech-map
The naive PyTorch backend for the k-NN is enough to compute the MAP over words quickly.
You might want to use the Faiss backend if you compute the MAP over n-grams or if you have a large number of embeddings. On Linux, install one of the two extras:
pip install "speech-map[faiss-cpu]"
pip install "speech-map[faiss-gpu]" # x86_64 only
Do not install both: faiss-cpu and faiss-gpu provide the same faiss module.
The extras install nothing on macOS: the Faiss and PyTorch wheels from PyPI each bundle their own OpenMP runtime, and the process crashes when both are loaded. Use the PyTorch backend there.
Usage
CLI
❯ python -m speech_map --help
usage: __main__.py [-h] [--pooling {MEAN,MAX,MIN,HAMMING}] [--frequency FREQUENCY] [--backend {FAISS,TORCH}] features jsonl
Mean Average Precision over n-grams / words with speech features
positional arguments:
features Path to the directory with pre-computed features
jsonl Path to the JSONL file with annotations
options:
-h, --help show this help message and exit
--pooling {MEAN,MAX,MIN,HAMMING}
Pooling (default: MEAN)
--frequency FREQUENCY
Feature frequency in Hz (default: 50 Hz)
--backend {FAISS,TORCH}
KNN (default: TORCH)
Python API
You most probably need only two functions: build_embeddings_and_labels and mean_average_precision.
Use them like this:
from speech_map import build_embeddings_and_labels, mean_average_precision
embeddings, labels = build_embeddings_and_labels(path_to_features, path_to_jsonl)
print(mean_average_precision(embeddings, labels))
In this example, path_to_features is a path to a directory containing features stored in individual PyTorch
tensor files, and path_to_jsonl is the path to the JSONL annotations file.
You can also use those functions in a more advanced setting like this:
from speech_map import Pooling, build_embeddings_and_labels, mean_average_precision
embeddings, labels = build_embeddings_and_labels(
path_to_features,
path_to_jsonl,
pooling=Pooling.MAX,
frequency=100,
feature_maker=my_model,
file_extension=".wav",
)
print(mean_average_precision(embeddings, labels))
This is a minimal package, and you can easily go through the code in src/speech_map/core.py if you want to check the details.
Data
We distribute in data the words and n-grams annotations for LibriSpeech evaluation subsets. Decompress them with zstd.
We have not used the n-grams annotations recently; there is probably too much samples and they would need some clever subsampling.
References
MAP for speech representations:
@inproceedings{carlin11_interspeech,
title = {Rapid evaluation of speech representations for spoken term discovery},
author = {Michael A. Carlin and Samuel Thomas and Aren Jansen and Hynek Hermansky},
year = {2011},
booktitle = {Interspeech 2011},
pages = {821--824},
doi = {10.21437/Interspeech.2011-304},
issn = {2958-1796},
}
Data and original implementation:
@inproceedings{algayres20_interspeech,
title = {Evaluating the Reliability of Acoustic Speech Embeddings},
author = {Robin Algayres and Mohamed Salah Zaiem and Benoît Sagot and Emmanuel Dupoux},
year = {2020},
booktitle = {Interspeech 2020},
pages = {4621--4625},
doi = {10.21437/Interspeech.2020-2362},
issn = {2958-1796},
}
Metadata
Release files for speech-map 0.1.3
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 |
|---|---|---|---|---|
| speech_map-0.1.3.tar.gz | 7.3 kB | With provenance | Details for speech_map-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| speech_map-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for speech_map-0.1.3-py3-none-any.whl |
Total release size: 15.5 kB
Release files / speech_map-0.1.3.tar.gz
| Download URL | speech_map-0.1.3.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a9f72a197d8bfe7d530dfe359fec8481ddff4ca70bffaebfd2d0975d42460161
|
|
BLAKE2b-256 checksum How to use checksums |
42df81ac5509ee1962c17846541627b474a0947bd1eb1d181cf1db0fc24c37ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logRelease files / speech_map-0.1.3-py3-none-any.whl
| Download URL | speech_map-0.1.3-py3-none-any.whl |
|---|---|
| Size | 8.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6582f8e8c5424eaeed0e14454e21fec72462dcba41358364c9de0c00a79969b2
|
|
BLAKE2b-256 checksum How to use checksums |
4d8d44e1e7a3f3a22478625763554076e09959b29d88a2a4326a6f7f2cd6bb7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logSecurity for speech-map 0.1.3
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for speech_map-0.1.3.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logA 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.