data-voice="{{ speaker.voice_formula or selected_voice or pending.voice }}" data-speed="{{ '%.2f'|format(pending.speed) }}" data-use-gpu="{{ 'true' if pending.use_gpu else 'false' }}" {% if not speaker.voice_formula %}hidden{% endif %}> Preview generated
Custom mix {{ speaker.voice_formula or '' }}
Sample paragraphs {% if sample_quotes %} {% set first_sample = sample_quotes[0] if sample_quotes|length > 0 else None %} {% set first_excerpt = first_sample.excerpt if first_sample is mapping else first_sample %} {% set first_hint = first_sample.gender_hint if first_sample is mapping else '' %}

{{ first_excerpt }}

{{ first_hint }}

{% if sample_quotes|length > 1 %} {% endif %}
{% else %}

No paragraphs captured yet. Continue from Step 2 to gather dialogue samples automatically.

{% endif %}
{% if speaker.recommended_voices %}
Suggested: {% for voice_id in speaker.recommended_voices[:6] %} {% set voice_meta = options.voice_catalog_map.get(voice_id) or {} %} {% endfor %}
{% endif %} {% endfor %} {% else %}

No additional speakers detected yet. The narrator voice will be used for all dialogue.

{% endif %}
{% with pending=pending, readonly=True, active_step='speakers' %} {% include "partials/upload_modal.html" %} {% endwith %} {% endblock %} {% block scripts %} {{ super() }} {% endblock %}