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/*
Metadata
Release files for vyonica-report 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vyonica_report-0.0.1.tar.gz | 27.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vyonica_report-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.0 kB
Release files / vyonica_report-0.0.1.tar.gz
| Download URL | vyonica_report-0.0.1.tar.gz |
|---|---|
| Size | 27.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
489d170bdaec59e6abdba905fad019d26a4696d6b890c160bd607dd597daf73d
|
|
BLAKE2b-256 checksum How to use checksums |
013ef4a542187672c86a1eeaa71b1d7cc262e72db7798b0a857dd8c4c059c144
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / vyonica_report-0.0.1-py3-none-any.whl
| Download URL | vyonica_report-0.0.1-py3-none-any.whl |
|---|---|
| Size | 26.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f5238412ed5b6e5f14fa67c233c0005a1f36db30745c653060d1a062c73ff526
|
|
BLAKE2b-256 checksum How to use checksums |
e5721074e1261320da7d20d5abe3764bf86687d34e910227d7940cae0ba02be6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|