Skip to main content

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


Download files

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

Source Distribution

vyonica_report-0.0.1.tar.gz (27.4 kB view details)

Uploaded Source

Built Distribution

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

vyonica_report-0.0.1-py3-none-any.whl (26.6 kB view details)

Uploaded Python 3

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

Hashes for vyonica_report-0.0.1.tar.gz
Algorithm Hash digest
SHA256 489d170bdaec59e6abdba905fad019d26a4696d6b890c160bd607dd597daf73d
MD5 9e88a767da4aad5492d049ea26d6506a
BLAKE2b-256 013ef4a542187672c86a1eeaa71b1d7cc262e72db7798b0a857dd8c4c059c144

See more details on using hashes here.

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

Hashes for vyonica_report-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f5238412ed5b6e5f14fa67c233c0005a1f36db30745c653060d1a062c73ff526
MD5 2eafac1fe7a1b9bb52828d5b26cdfdc0
BLAKE2b-256 e5721074e1261320da7d20d5abe3764bf86687d34e910227d7940cae0ba02be6

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