Перейти к содержанию

Перевод аудио

Раздел «Перевод аудио» переводит речь из аудио, видео или поддерживаемой медиассылки на другой язык. Сервис разделяет реплики по спикерам, озвучивает перевод голосами из исходной записи, когда качества и длительности голосового образца достаточно, и старается сохранить исходный тайминг.

Для аудио результатом будет WAV. Если источник содержит видеоряд, можно также получить MP4 с переведённой звуковой дорожкой.

Возможности

  • один локальный аудио- или видеофайл либо одна публичная HTTP(S)-ссылка на операцию;
  • исходные языки зависят от модели распознавания: локальные модели покрывают русский, английский, казахский, кыргызский и узбекский, а Scribe — расширенный набор языков с опубликованным WER не выше 20%;
  • автоматический выбор совместимой модели распознавания или явный выбор модели;
  • разделение речи по спикерам и отдельная озвучка их реплик;
  • отображение прогресса, отмена операции и восстановление результата после перезагрузки страницы;
  • скачивание итогового WAV и, для видео, MP4;
  • редактор сегментов с исходным текстом, переводом, спикером и таймкодами;
  • передублирование одной исправленной реплики без повторной обработки всего файла;
  • экспорт переведённых субтитров SRT/VTT и двуязычного транскрипта TXT.

Ограничения

  • исходный и целевой языки должны отличаться;
  • за одну операцию принимается только один файл или одна ссылка;
  • результат сводится в mono;
  • музыка и шум внутри речевых фрагментов могут приглушаться вместе с оригинальным голосом;
  • если для спикера недостаточно подходящей речи, его исходная реплика сохраняется без дубляжа;
  • монтаж видеоряда, несколько аудиодорожек, импорт субтитров и формат ASS не поддерживаются.

Работа в интерфейсе

  1. Откройте Playground → Перевод аудио.
  2. Загрузите файл или вставьте публичную ссылку на медиа.
  3. Выберите язык оригинала, модель распознавания и язык перевода.
  4. Для ElevenLabs Scribe оставьте число спикеров в режиме «Авто» — модель определит его сама (до 32). При необходимости задайте предел вручную. Для локальной DiariZen по умолчанию используется предел 4 спикера.
  5. Подтвердите права на использование голосов из записи.
  6. Запустите перевод и дождитесь завершения операции.
  7. При необходимости исправьте оригинал, перевод, спикера или тайминг прямо в таблице и нажмите «Сохранить правки».
  8. Для реплики, влияющей на озвучку, нажмите «Передублировать». Будет создана новая версия результата, а остальные реплики не будут синтезироваться повторно.
  9. Скачайте WAV или MP4, переведённые SRT/VTT либо двуязычный транскрипт TXT.

Правка только исходного текста сразу попадает в двуязычный транскрипт и не требует передублирования. Изменение перевода, спикера или тайминга помечает реплику как требующую передублирования. Пока новая версия готовится, предыдущий результат остаётся доступен; при ошибке он не заменяется.

Если операция была прервана после полного перевода всех реплик, интерфейс может повторить только озвучивание. Исходный файл или ссылку потребуется предоставить ещё раз.

Если сбой произошёл раньше, во время обращения к LLM, распознавание и уже готовые переводы сохраняются. Кнопка «Повторить перевод» отправляет заново только реплики без перевода; повторно выбирать файл и запускать распознавание не нужно. Временные сетевые и TLS-сбои сначала автоматически повторяются сервером.

Языки и распознавание

Список языков оригинала зависит от выбранной модели. Для ElevenLabs-Scribe-v2 используется курируемый production-набор из официальных категорий Excellent, High Accuracy и Good (опубликованный WER не выше 20%). Языки категории Moderate в него не включены. Актуальная классификация приведена в документации ElevenLabs.

Корейский доступен как ko-KR и относится к категории Good.

В режиме auto локальные модели сохраняют приоритет для основных языков:

Язык Locale Модель распознавания
Русский ru-RU SpeechExpert-STT
Английский en-US NVIDIA-FastConformer-Transducer-Large
Казахский kk-KZ GigaAM-Multilingual-Large-CTC
Кыргызский ky-KG GigaAM-Multilingual-Large-CTC
Узбекский uz-UZ GigaAM-Multilingual-Large-CTC

Для остальных языков курируемого набора, включая таджикский (tg-TJ), режим auto выбирает ElevenLabs-Scribe-v2. Эту модель также можно выбрать вручную для любого совместимого языка. Для английского дополнительно доступен SpeechExpert-STT-Turbo, для русского, казахского, кыргызского и узбекского — GigaAM-Multilingual-Large-CTC.

Список языков озвучивания отображается в поле «Язык перевода». Передавайте в API тот же BCP-47 language tag, который показывает интерфейс.

Внешняя обработка

При выборе ElevenLabs-Scribe-v2 исходное аудио передаётся ElevenLabs для распознавания. Текст распознанных реплик передаётся настроенному LLM-провайдеру для перевода. Выбранный маршрут виден в интерфейсе до запуска.

HTTP API

Запуск операции

POST /api/audio-translation/v1:translateAsync
Content-Type: multipart/form-data
Authorization: Api-Key <ваш-ключ>

Пример с локальным видео:

curl -X POST "https://api.speech.example.com/api/audio-translation/v1:translateAsync" \
  -H "Authorization: Api-Key <ваш-ключ>" \
  -F "audio=@interview.mp4" \
  -F "sourceLanguage=ru-RU" \
  -F "sourceAsrModel=auto" \
  -F "targetLanguage=en-US" \
  -F "maxSpeakers=4" \
  -F "includeVideo=true" \
  -F "confirmVoiceRights=true"
Поле Обязательно Значение по умолчанию Описание
audio условно Аудио- или видеофайл; взаимоисключающий с videoUrl
videoUrl условно Публичный HTTP(S) URL; взаимоисключающий с audio
sourceLanguage нет ru-RU Язык оригинала
sourceAsrModel нет auto Совместимая модель распознавания оригинала
targetLanguage да Язык перевода и озвучивания
maxSpeakers нет авто для ElevenLabs; 4 для DiariZen Максимум спикеров: от 1 до 32 для ElevenLabs и от 1 до 20 для DiariZen. Если параметр не передан при использовании ElevenLabs, Scribe определяет число автоматически
multiTake нет false Создать несколько вариантов реплики и выбрать лучший
emotionReference нет true Использовать подходящий фрагмент сцены как дополнительный голосовой референс
dynamicSpeechRate нет true Подбирать темп озвучивания с учётом длительности реплики
stretchQualityControl нет true Ограничивать растяжение аудио при укладке в тайминг
asrQualityControl нет false Повторно распознать озвученную реплику для проверки текста
includeVideo нет false Сформировать MP4, если источник содержит видеоряд
confirmVoiceRights да false Должно быть true; подтверждает право использовать голоса из записи

Должно быть передано ровно одно из полей audio и videoUrl. Стандартный лимит загружаемого файла — 500 MiB, ссылки — 200 MiB, длительности записи — 3 часа. Фактический лимит конкретного запроса может быть ниже и возвращается сервером через соответствующий HTTP-ответ.

После проверки запроса сервер отвечает 202 Accepted и возвращает объект операции. Сохраните его id для получения прогресса и результата.

Статус, отмена и удаление

GET  /api/audio-translation/v1/operations/{operationId}
POST /api/operations/{operationId}:cancel
POST /api/operations/{operationId}:purge

В объекте операции используйте:

Поле Описание
done true, когда операция завершена, отменена или завершилась ошибкой
metadata.status queued, running, completed, failed или cancelled
metadata.progress_percent Прогресс от 0 до 100
response Частичный или готовый результат
error Причина ошибки, если операция не завершилась успешно

Операция и её файлы доступны только владельцу. Используйте URL из ответа как есть: ссылки на WAV и MP4 могут содержать временный токен доступа.

Повтор перевода после сбоя

Если операция завершилась ошибкой или была отменена во время перевода, а в response сохранён частичный результат, можно повторить только реплики без готового перевода:

POST /api/audio-translation/v1/operations/{operationId}:resumeTranslation
Authorization: Api-Key <ваш-ключ>

Исходный файл или ссылку передавать не нужно. Сервер создаст новую асинхронную операцию, переиспользует распознавание и готовые переводы, а в LLM отправит только отсутствующие реплики. Новый checkpoint также сохраняется после каждого готового батча, поэтому повторный сбой не отменяет уже выполненную работу. Повторный запрос для того же operationId идемпотентен: вместо дублирования вызова LLM сервер вернёт уже созданную дочернюю операцию.

После успешного завершения всех переводов используйте полученный id новой операции для повторного озвучивания.

Повторное озвучивание

Если неудачная или отменённая операция успела перевести все реплики, можно повторить озвучивание без повторного распознавания и перевода:

POST /api/audio-translation/v1/operations/{operationId}:resumeSynthesis
Content-Type: multipart/form-data
Authorization: Api-Key <ваш-ключ>

Передайте тот же тип источника: исходный файл в audio или ту же ссылку в videoUrl, а также confirmVoiceRights=true. Сервер создаст новую операцию и не изменит исходную.

Редактирование и точечное передублирование

Сохранить одну или несколько правок можно одним запросом:

PATCH /api/audio-translation/v1/operations/{operationId}/segments
Content-Type: application/json
Authorization: Api-Key <ваш-ключ>

{
  "revision": 1,
  "segments": [
    {
      "id": "seg-0001",
      "source_text": "Доброе утро!",
      "translated_text": "Good morning!",
      "speaker": 1,
      "start_ms": 420,
      "end_ms": 2380
    }
  ]
}

Поле revision защищает от перезаписи более свежих правок. В ответе сервер возвращает следующую ревизию и список pending_redub_segment_ids.

Чтобы передублировать одну сохранённую реплику, подтвердите права на голос и передайте актуальную ревизию:

POST /api/audio-translation/v1/operations/{operationId}/segments/{segmentId}:redub
Content-Type: application/json
Authorization: Api-Key <ваш-ключ>

{
  "revision": 2,
  "confirmVoiceRights": true
}

Сервер создаст отдельную операцию. После её завершения ответ содержит новый полный результат с обновлённой репликой; исходная версия не изменяется. Для результатов, созданных до появления редактора, правка текста и экспорт доступны, но точечное передублирование может быть недоступно.

Результат

После успешного завершения поле response содержит:

Поле Описание
audio_url URL итогового WAV
filename Имя WAV-файла
video_url URL MP4, если видео успешно сформировано
video_filename Имя MP4-файла
video_render_warning Причина отсутствия MP4; WAV при этом остаётся доступен
duration_ms Длительность результата
source_language Язык оригинала
target_language Язык перевода
segments Реплики с текстом, переводом, спикером, таймкодами и предупреждениями
revision Версия текста и параметров редактора
artifact_revision Версия собранного WAV/MP4
pending_redub_segment_ids Реплики с сохранёнными правками, которые ещё не вошли в озвучку
redub_available Доступно ли точечное передублирование для этого результата
available_speaker_ids Спикеры с сохранёнными голосовыми референсами, доступные в редакторе
unrecognized_source_regions Участки речи, для которых не удалось получить текст
requested_settings Запрошенные параметры
effective_settings Фактически применённые параметры

Сокращённый пример:

{
  "id": "operation-id",
  "done": true,
  "metadata": {
    "status": "completed",
    "progress_percent": 100
  },
  "response": {
    "schema_version": "1.0",
    "revision": 1,
    "artifact_revision": 1,
    "pending_redub_segment_ids": [],
    "redub_available": true,
    "available_speaker_ids": [1],
    "audio_url": "/api/audio-translation/v1/operations/operation-id/audio",
    "filename": "audio-translation-operation-id.wav",
    "source_language": "ru-RU",
    "target_language": "en-US",
    "duration_ms": 18500,
    "segments": [
      {
        "id": "seg-0001",
        "speaker": 1,
        "start_ms": 420,
        "end_ms": 2380,
        "source_text": "Доброе утро.",
        "translated_text": "Good morning.",
        "status": "completed",
        "dub_status": "ready"
      }
    ],
    "unrecognized_source_regions": []
  },
  "error": null
}

Для скачивания используйте audio_url и video_url из актуального ответа на запрос статуса.

Данные и права на голос

  • Запускайте клонирование только для собственного голоса или при наличии согласия каждого спикера.
  • Не используйте результат для выдачи себя за другого человека, обхода аутентификации, мошенничества или создания вводящей в заблуждение записи.
  • Исходный файл и голосовые референсы хранятся вместе с результатом в течение срока хранения операции, чтобы можно было передублировать отдельную реплику. Они не добавляются в библиотеку постоянных голосов.
  • Вызов :purge удаляет доступные результаты и производные данные операции.
  • Срок автоматического хранения результата зависит от настроек сервиса.

Ошибки

Код Когда возникает
400 Не передан источник, переданы сразу два источника, языки совпадают, неверны параметры или не подтверждены права на голоса
401 Отсутствует или неверна аутентификация
404 Операция или запрошенный файл не найдены либо недоступны пользователю
409 У пользователя уже есть активный перевод или повторное озвучивание невозможно
413 Превышен допустимый размер файла
422 Параметр несовместим с выбранным языком или режимом
429 Очередь переводов заполнена; повторите запрос позже
503 Перевод аудио или выбранный провайдер временно недоступен

Ошибка фоновой обработки записывается в объект операции: done=true, metadata.status="failed", а подробности находятся в поле error.

См. также