{% if request.user.is_authenticated %}

Voxhelm operator transcript console

Route media, inspect transcripts, export once.

Audio URLs and uploaded audio run through the sync transcription path. Video URLs stay on the existing batch job path and surface their transcript artifacts here when ready.

{% csrf_token %}

Submit Transcript

Provide exactly one input. Uploaded video is intentionally out of scope for this slice.

{% if form.non_field_errors %}
    {% for error in form.non_field_errors %}
  • {{ error }}
  • {% endfor %}
{% endif %}
{% csrf_token %}
{{ form.audio_url }} {% for error in form.audio_url.errors %}
{{ error }}
{% endfor %}
{{ form.video_url }} {% for error in form.video_url.errors %}
{{ error }}
{% endfor %}
{{ form.audio_file }} {% for error in form.audio_file.errors %}
{{ error }}
{% endfor %}
{{ form.language }}

Selected Result

{% if selected_job %}

{{ selected_job.dispatch_mode|title }} route · {{ selected_job.state|title }} · {{ selected_job.created_at }}

{% if selected_job.input_data.kind == "upload" %}

Source: {{ selected_job.input_data.filename }}

{% else %}

Source: {{ selected_job.input_data.url }}

{% endif %} {% if selected_job_artifacts %} {% endif %} {% if selected_job.state == "succeeded" %}
{{ selected_job.result_text }}
{% else %}

This transcript is not finished yet. Refresh the page to pick up batch progress.

{% endif %} {% else %}

No transcripts yet.

{% endif %}
{% else %}

Voxhelm operator login

Transcript operations stay inside Voxhelm.

Sign in with the operator account to run local audio and video transcript flows through the existing Voxhelm service boundary.

Sign In

{% if login_form.non_field_errors %} {% endif %}
{% csrf_token %}
{{ login_form.username }}
{{ login_form.password }}
{% endif %}