Objective voice-clone evaluation — metrics, graphs, and PDF reports. CLI + Python SDK.
Project description
vyonica-report
Objective voice-clone evaluation — CLI + Python SDK.
Computes ~50 objective metrics across acoustic quality, prosody, speaker identity, linguistic accuracy, and perceptual approximation. Emits:
- CSV (wide format) — stackable across many runs
- PNG graphs — waveform, pitch, energy, spectrogram, band energy
- PDF report — closeness score, verdict, all charts, metric evidence table
No LLM commentary. No database. No web server. Just metrics.
Install
pip install vyonica-report
# or, from a local checkout:
pip install /path/to/trainer/voice-cloning-result-comp/vyonica_report
Python 3.11+ required. The first run downloads ~2 GB of ML model weights
(Whisper, ECAPA, NISQA, DNSMOS); subsequent runs are cached. Use --no-heavy
to skip those models and keep the run pure-DSP (~5 s).
CLI
vyonica-report \
--original ref.wav \
--clone synth.wav \
--transcript "The quick brown fox jumps over the lazy dog." \
--language en \
--output metrics.csv \
--graphs graphs/ \
--pdf report.pdf
| Flag | Default | Purpose |
|---|---|---|
--language |
en |
ISO 639-1 transcript language |
--output / -o |
metrics.csv |
Wide-format CSV (one row per run) |
--graphs DIR |
— | Write diagnostic PNGs here |
--pdf PATH |
— | Write a PDF evaluation report here |
--run-id ID |
ISO timestamp | Label this row in the CSV |
--append |
off | Append a row instead of overwriting |
--no-heavy |
off | Skip Whisper / ECAPA / NISQA / DNSMOS / Praat |
--whisper-model |
small |
Whisper size when heavy models are on |
Python SDK
from vyonica_report import (
analyze,
to_csv,
plot_graphs,
generate_pdf,
closeness_score,
)
metrics, summary = analyze(
original_path="ref.wav",
clone_path="synth.wav",
transcript="The quick brown fox jumps over the lazy dog.",
language="en",
enable_heavy_models=True,
)
print(f"Voice closeness: {closeness_score(metrics):.1f}%")
to_csv(metrics, "metrics.csv", run_id="experiment_42")
plot_graphs(summary, "graphs/")
generate_pdf(metrics, summary, "report.pdf", run_label="experiment_42")
Each Metric has domain, name, value, unit, direction
(higher / lower / near_1 / neutral), status, and note fields.
CSV format (wide)
One row per run; columns are {domain_slug}__{metric_slug}:
run_id,timestamp,acoustic_quality__log_spectral_distance,prosody__f0_contour_correlation,speaker_identity__mfcc_timbre_similarity,...
experiment_42,2026-05-23T11:22:33,2.31,0.87,0.91,...
Use --append to stack many runs into the same CSV.
Building & publishing
From the package directory:
# build wheel + sdist into dist/
uv build # or: python -m build
# install the built wheel into another local repo for testing
pip install dist/vyonica_report-0.1.0-py3-none-any.whl
# publish to PyPI (requires a token from https://pypi.org/manage/account/token/)
pip install twine
twine upload dist/*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vyonica_report-0.0.1.tar.gz.
File metadata
- Download URL: vyonica_report-0.0.1.tar.gz
- Upload date:
- Size: 27.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
489d170bdaec59e6abdba905fad019d26a4696d6b890c160bd607dd597daf73d
|
|
| MD5 |
9e88a767da4aad5492d049ea26d6506a
|
|
| BLAKE2b-256 |
013ef4a542187672c86a1eeaa71b1d7cc262e72db7798b0a857dd8c4c059c144
|
File details
Details for the file vyonica_report-0.0.1-py3-none-any.whl.
File metadata
- Download URL: vyonica_report-0.0.1-py3-none-any.whl
- Upload date:
- Size: 26.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5238412ed5b6e5f14fa67c233c0005a1f36db30745c653060d1a062c73ff526
|
|
| MD5 |
2eafac1fe7a1b9bb52828d5b26cdfdc0
|
|
| BLAKE2b-256 |
e5721074e1261320da7d20d5abe3764bf86687d34e910227d7940cae0ba02be6
|