🎧 Objective Voice Analysis

{% if status.status == 'running' %} Analyzing… {% elif status.status == 'error' %} Analysis failed {% else %} Ready {% endif %}
{% if status.status == 'running' %}

Analysis in progress. This can take a minute while speaker embeddings are computed. This page refreshes automatically.

{% elif report is none %}

No analysis yet. Click "Run Analysis" to compute objective metrics from the generated voice references.

{% else %}
{{ report.summary.passed }}/{{ report.summary.total }}
Voices passing
{{ report.summary.failed }}
Failing
{{ report.summary.near_duplicate_count|default(0) }}
Near-duplicate pairs
{{ report.voices|length }}
Speakers analyzed
{% if report.errors %}
{% for name, err in report.errors.items() %}

âš  {{ name }}: {{ err }}

{% endfor %}
{% endif %} {% if report.near_duplicates %}
Near-duplicate voices {% for pair in report.near_duplicates %}
{{ pair.a }} ↔ {{ pair.b }} {{ '%.1f%%'|format(pair.similarity * 100) }}
{% endfor %}
{% endif %} {% for name, voice in report.voices.items() %} {% set feats = voice.features %} {% set reqs = voice.requirements %} {% endfor %}
Speaker Duration Sample Rate Mean Pitch Pitch Range Voiced % Energy Nearest Voice Status
{{ name }} {{ '%.1f'|format(feats.duration) }}s {{ feats.sample_rate }} {% if not reqs.sample_rate.passed %}!{% endif %} {% if feats.mean_pitch_hz %} {{ '%.0f'|format(feats.mean_pitch_hz) }} Hz {% else %}—{% endif %} {% if feats.pitch_std_hz %} ±{{ '%.0f'|format(feats.pitch_std_hz) }} Hz {% else %}—{% endif %} {{ '%.0f'|format(feats.voiced_ratio * 100) }}% {{ '%.3f'|format(feats.rms) }} {% if reqs.uniqueness.nearest_neighbor %} {{ reqs.uniqueness.nearest_neighbor }} ({{ '%.0f'|format(reqs.uniqueness.value * 100) }}%) {% else %}—{% endif %} {% if voice.passed %} PASS {% else %} FAIL {% endif %}

Metrics: duration ≥ 20s, sample rate = 24000 Hz, mean pitch via librosa pyin, uniqueness = ECAPA-TDNN speaker-embedding similarity (< 0.90 required). Generated {{ report.generated_at }}.

{% endif %}