Перевод аудио¶
Раздел «Перевод аудио» переводит речь из аудио, видео или поддерживаемой медиассылки на другой язык. Сервис разделяет реплики по спикерам, озвучивает перевод голосами из исходной записи, когда качества и длительности голосового образца достаточно, и старается сохранить исходный тайминг.
Для аудио результатом будет WAV. Если источник содержит видеоряд, можно также получить MP4 с переведённой звуковой дорожкой.
Возможности¶
- один локальный аудио- или видеофайл либо одна публичная HTTP(S)-ссылка на операцию;
- при распознавании исходные языки зависят от модели: локальные модели покрывают русский, английский, казахский, кыргызский и узбекский; Gemini 3.5 Transcribe доступен для этих языков и таджикского, а Scribe v2 и Scribe v2 Medical — для расширенного набора языков с опубликованным WER не выше 20%;
- автоматический выбор совместимой модели распознавания или явный выбор модели;
- загрузка субтитров SRT на языке оригинала вместо распознавания речи;
- разделение речи по спикерам и отдельная озвучка их реплик;
- отображение прогресса, отмена операции и восстановление результата после перезагрузки страницы;
- скачивание итогового WAV и, для видео, MP4;
- редактор сегментов с исходным текстом, переводом, спикером и таймкодами;
- передублирование одной исправленной реплики без повторной обработки всего файла;
- экспорт переведённых субтитров SRT/VTT и двуязычного транскрипта TXT.
Модель озвучивания¶
В интерфейсе новый перевод по умолчанию использует ElevenLabs v4. Голосовые образцы каждого спикера из оригинала передаются в ElevenLabs для создания клона; перевод озвучивается напрямую с учётом соседних реплик. Дополнительного прохода через Higgs нет. Синтез сохраняет естественный темп, а точное воспроизведение исходной актёрской интонации не гарантируется.
Можно выбрать Higgs с прежней настройкой эмоционального референса. Эта
настройка, multiTake, dynamicSpeechRate и stretchQualityControl не применяются
к ElevenLabs v4. Проверка произнесённого текста через ASR доступна в обоих режимах;
для v4 она не запускает автоматические платные перегенерации.
API принимает synthesisEngine=eleven_v4 или synthesisEngine=higgs. Если поле
не передано, используется Higgs для совместимости со старыми клиентами. Выбранная
модель сохраняется в настройках операции и используется при продолжении озвучки
и передублировании исправленной реплики. Старые операции сохраняют свой режим.
Для v4 на сервере нужен AUDIO_TRANSLATION_ELEVENLABS_API_KEY с доступом к
созданию голосов и синтезу; если он не задан, используется ELEVENLABS_API_KEY.
Ключ не передаётся в браузер. Загрузка исходного SRT, редактор переводов и
скачивание WAV/MP4 доступны в обоих режимах.
Ограничения¶
- исходный и целевой языки должны отличаться;
- за одну операцию принимается только один медиафайл или одна ссылка; к источнику можно дополнительно приложить один SRT-файл;
- результат сводится в mono;
- в новых миксах исходная mono-дорожка сохраняется: во время исходной речи и фактически звучащего продолжения дубляжа она приглушается на 18 дБ, а вне этих участков её громкость не меняется;
- музыка, шум и голос оригинала не разделяются: музыка остаётся тихим фоном вместе с иностранной речью, которую тоже может быть слышно;
- если для спикера недостаточно подходящей речи, его исходная реплика сохраняется без дубляжа на полной громкости;
- монтаж видеоряда, несколько аудиодорожек и импорт субтитров VTT/ASS не поддерживаются.
Контекст перевода¶
Короткая сцена переводится целиком: LLM получает диалог с идентификаторами спикеров и сохраняет соответствие каждой исходной реплике. Длинные записи делятся по бюджету входного текста и ответа модели, а не по фиксированному числу реплик. Каждый пакет получает окружающий диалог и, если удалось построить сводку, общий контекст персонажей и терминов. При возобновлении учитываются уже готовые переводы.
Сначала создаётся полный смысловой перевод без сокращения под тайминг. После проверки и возможных исправлений его формулировки адаптируются для озвучивания. Контекст помогает выбрать значение многозначных слов, передать метафоры, намерения и временные формы, различить говорящего, адресата и того, о ком идёт речь. Пол персонажа берётся только из подтверждающего текста: номер спикера его не обозначает. Если род неизвестен, модель получает указание выбирать естественную нейтральную форму, когда она позволяет сохранить смысл. Неполный или ошибочный оригинал всё ещё может требовать ручной проверки.
Проверка смысла перевода¶
По умолчанию полный перевод проходит отдельную смысловую проверку до адаптации под озвучивание. Проверяющий запрос получает оригинал и перевод, без глоссария и объяснений первого прохода. Он оценивает сохранение смысла, род и референтов, время действия, отрицания, полноту и естественность речи. Проверка выполняется настроенной master-моделью перевода в отдельном запросе.
Исправляются только реплики с замечаниями, затем результат проверяется снова. Допускается не более двух циклов исправления и повторной проверки. Если замечания остались, исходный текст неоднозначен или проверка недоступна, перевод сохраняется с диагностикой для ручной проверки. Это не означает, что задача завершилась ошибкой, и не гарантирует безошибочность перевода.
Каждая изменённая при адаптации формулировка отдельно сравнивается с принятым переводом. Если проверка её отклоняет, используется принятая формулировка. Это относится и к сокращению после измерения длительности озвучки: кандидат проверяется до нового синтеза, а при отклонении сохраняется уже готовый дубль. Замечания и служебные статусы хранятся отдельно от текста реплики и не озвучиваются. Сохранённые пользователем правки автоматически не переписываются.
После генерации перевода всех реплик и начальной адаптации выполняется отдельная проверка связанного диалога. Модель получает хронологические окна до 32 реплик с перекрытием до 4 реплик, включая оригинал и перевод соседних реплик. Это помогает проверять связь вопроса с ответом, продолжение фразы, референтов и согласованность смысла между репликами.
Связанные исправления принимаются всей группой только после повторной
проверки окна; если группа не прошла проверку, её предыдущий текст сохраняется.
Если повторная проверка обнаруживает дополнительную связанную реплику,
группа может расшириться ко второй попытке в пределах размера окна.
Лимит для каждой затронутой реплики остаётся равным двум попыткам исправления.
Идентификаторы реплик,
спикеры и тайминги остаются прежними. При продолжении операции уже сохранённые
и пользовательские формулировки защищены от изменений: их можно проверять,
но группа с защищённой репликой и нерешённой ошибкой остаётся с замечанием
needs_review. Реплики с замечанием source_uncertain от предыдущей проверки
также защищены от автоматического переписывания. Это модельная оценка согласованности перевода, а не
доказательство его точности; она не проверяет произношение и сама не запускает
новый синтез речи.
Серверные настройки:
| Переменная | По умолчанию | Назначение |
|---|---|---|
LLM_DUBBING_REVIEW_ENABLED |
true |
Включить смысловую проверку перевода и изменений при адаптации |
LLM_DUBBING_REVIEW_MAX_REPAIRS |
2 |
Число циклов исправления, от 0 до 2; 0 оставляет проверку без автоматических исправлений |
LLM_DUBBING_CONNECTED_REVIEW_ENABLED |
true |
Включить проверку связанного диалога после начальной адаптации; действует только при включённом LLM_DUBBING_REVIEW_ENABLED |
Для проверки и исправления используется LLM_DUBBING_MASTER_MODEL, та же
модель, что для полного перевода. Проверка произношения через
asrQualityControl остаётся отдельной настройкой: она сверяет уже озвученный
текст, а не смысл перевода.
Естественная укладка реплик¶
Новые операции с распознаванием объединяют соседние незавершённые фрагменты одного спикера в
фразы: пауза не более 650 мс, общая длительность не более 12 секунд, текст не
более 400 символов. Чужая/нераспознанная речь, пересечения и явное окончание
предложения блокируют объединение. source_refs сохраняет связь фразы с
исходными фрагментами распознавания; старые checkpoint и правки редактора
не перегруппировываются. При загрузке SRT сохраняются границы его реплик.
Границы исходных реплик служат опорными точками. Более длинная озвучка сначала использует свободную паузу до следующей речи (с защитным интервалом 40 мс). Лимита «только 500 мс дополнительной паузы» больше нет. Если этого времени недостаточно, полный дубль всё равно включается в микс: возможны наложения соседних реплик, а последняя фраза может продлить аудиодорожку за конец исходного файла. Это аудиоукладка, а не анализ движения губ или монтажных склеек видео.
Higgs синтезирует с обычным темпом. Готовая речь не ускоряется и не замедляется для заполнения окна; короткая реплика оставляет паузу. Если запись не помещается, LLM получает измеренную длительность и доступное время, предлагая более компактную формулировку без потери смысла. Выполняется не более двух локальных переадаптаций с проверкой смысла и повторным синтезом принятых кандидатов. Выбранный текст сохраняется в checkpoint и редакторе. При каждой попытке модель получает неизменный принятый перевод как смысловую опору: подгонка должна сохранять выбранное значение слов, род адресата, время, отрицания и эмоциональный смысл. Это сокращение текста на том же целевом языке: оригинал и непереведённые соседние реплики в этот шаг не передаются, чтобы многозначное исходное слово не запускало перевод заново.
При передублировании отдельной реплики текст из редактора озвучивается без автоматического переписывания. Если он не помещается, сохраняется полный дубль с пометкой «Проверьте тайминг»; сократить формулировку можно в редакторе.
В новых результатах (settings.timing_policy = natural_phrase_keep_all_v1)
каждый готовый полный дубль включается в итоговый микс, даже если уложить его
в доступное окно не удалось. Слова не обрезаются, речь не ускоряется, а исходная
реплика на полной громкости не подставляется вместо перевода из-за тайминга.
Приглушённая исходная дорожка с музыкой и голосом остаётся под дубляжом.
UI показывает «Проверьте тайминг» (timing_needs_review): это рекомендация
прослушать возможное наложение, а не признак пропущенной или устаревшей озвучки.
При необходимости сократите перевод или измените границы, сохраните правки и
нажмите «Передублировать». Только такие изменения требуют новой озвучки.
Старые результаты не пересобираются автоматически. В них пометка «Не включена в микс» по-прежнему означает, что дубль сохранён отдельно, но исключён из дорожки. Если такой результат уже содержит приглушённый оригинал, в пропущенном окне остаётся этот тихий фон, а не перевод.
Работа в интерфейсе¶
- Откройте Playground → Перевод аудио.
- Загрузите файл или вставьте публичную ссылку на медиа.
- Выберите язык оригинала и язык перевода. Для текста оригинала выберите распознавание речи с нужной моделью либо загрузите SRT-файл на языке оригинала.
- При использовании SRT спикеры определяются по исходному аудио через Nemotron. Для Gemini 3.5 Transcribe число спикеров определяется автоматически: поле «Авто» нельзя изменить. Для ElevenLabs Scribe также доступно «Авто» (до 32 спикеров), но при необходимости можно задать предел вручную. Для Nemotron число участников определяется автоматически в пределах выбранного максимума; по умолчанию предел — 8 спикеров.
- Подтвердите права на использование голосов из записи.
- Запустите перевод и дождитесь завершения операции.
- При необходимости исправьте оригинал, перевод, спикера или тайминг прямо в таблице и нажмите «Сохранить правки».
- Для реплики, влияющей на озвучку, нажмите «Передублировать». Будет создана новая версия результата, а остальные реплики не будут синтезироваться повторно.
- Скачайте WAV или MP4, переведённые SRT/VTT либо двуязычный транскрипт TXT.
Правка только исходного текста сразу попадает в двуязычный транскрипт и не требует передублирования. Изменение перевода, спикера или тайминга помечает реплику как требующую передублирования. Пока новая версия готовится, предыдущий результат остаётся доступен; при ошибке он не заменяется.
Если операция была прервана после полного перевода всех реплик, интерфейс может повторить только озвучивание. Исходный файл или ссылку потребуется предоставить ещё раз.
Если оригинал был загружен в SRT, при повторе перевода или озвучивания повторно загружать субтитры не нужно: их текст и таймкоды сохраняются в операции.
Если сбой произошёл раньше, во время обращения к LLM, распознавание и уже готовые переводы сохраняются. Кнопка «Повторить перевод» отправляет заново только реплики без перевода; повторно выбирать файл и запускать распознавание не нужно. Временные сетевые и TLS-сбои сначала автоматически повторяются сервером.
Субтитры вместо распознавания¶
SRT-файл заменяет только получение текста оригинала. Аудио, видео или медиассылка по-прежнему обязательны: из исходной записи определяются спикеры, берутся образцы их голосов и формируется звуковая дорожка. Перевод текста, озвучивание, укладка по времени, редактор и экспорт работают как обычно.
Загрузите SRT на том же языке, который выбран в поле «Язык оригинала», с таймкодами именно этой записи. Язык SRT автоматически не определяется. Поддерживаются UTF-8 (с BOM или без него) и UTF-16 с BOM, не более 2 MiB и 5000 реплик. Реплики должны идти в порядке начала и содержать номер, таймкоды и непустой текст; блоки разделяются пустой строкой. Интервал каждой реплики должен находиться внутри исходной записи. Ошибки формата отклоняются при загрузке, а соответствие таймкодов длительности медиа проверяется во время обработки.
В этом режиме модель распознавания оригинала не используется. Разделение спикеров
выполняет Nemotron, которая различает до 8 спикеров; в интерфейсе можно выбрать
предел от 1 до 8. API также принимает maxSpeakers от 9 до 20 для совместимости,
но это не увеличивает число различаемых голосов. Метки спикеров из текста SRT
не заменяют анализ голосов.
Одна реплика должна соответствовать одному говорящему. Если её таймкоды не
пересекаются с обнаруженной речью или одинаково покрывают несколько спикеров,
операция сообщит об ошибке: исправьте таймкоды или разделите реплику.
Пропущенная в SRT речь не восстанавливается распознаванием.
Плата за распознавание оригинала не начисляется. Перевод и озвучивание
выполняются по обычным правилам сервиса.
Языки и распознавание¶
При распознавании речи список языков оригинала зависит от выбранной модели. Для
ElevenLabs-Scribe-v2 и ElevenLabs-Scribe-v2-Medical используется общий
курируемый production-набор из 75 языков официальных
категорий Excellent, High Accuracy и Good (опубликованный WER не выше
20%). Языки категории Moderate в него не включены. Актуальная классификация
приведена в документации ElevenLabs.
У провайдера обе модели поддерживают 90+ языков. Medical специализируется на
медицинской и клинической речи, использует model_id=scribe_v2_medical и тот же
API и тариф, что Scribe v2
(официальный справочник).
Для основных языков сервиса опубликованы следующие категории качества Scribe v2.
Медицинские улучшения Medical измерены на английском, французском и немецком;
отдельные клинические результаты для русского, казахского, кыргызского,
узбекского и таджикского не опубликованы
(FAQ ElevenLabs):
| Языки | Locale | Категория Scribe v2 |
|---|---|---|
| Русский, английский | ru-RU, en-US |
Excellent: WER ≤5% |
| Казахский | kk-KZ |
High Accuracy: WER >5% и ≤10% |
| Кыргызский, узбекский, таджикский | ky-KG, uz-UZ, tg-TJ |
Good: WER >10% и ≤20% |
Корейский доступен как ko-KR и относится к категории Good.
В режиме auto локальные модели сохраняют приоритет для основных языков:
| Язык | Locale | Модель распознавания |
|---|---|---|
| Русский | ru-RU |
SpeechExpert-STT-RU |
| Английский | en-US |
Parakeet-EN |
| Казахский | kk-KZ |
GigaAM-Multilingual-Large-CTC |
| Кыргызский | ky-KG |
GigaAM-Multilingual-Large-CTC |
| Узбекский | uz-UZ |
SpeechExpert-STT-UZ |
Для остальных языков курируемого набора, включая таджикский (tg-TJ), режим
auto выбирает ElevenLabs-Scribe-v2. Для любого совместимого языка можно
вручную выбрать Scribe v2 или ElevenLabs-Scribe-v2-Medical; Medical не
выбирается автоматически. Для английского дополнительно доступен
Whisper-Large-v3-Turbo, для русского, казахского и кыргызского —
GigaAM-Multilingual-Large-CTC, для узбекского — SpeechExpert-STT-UZ.
gemini-3.5-transcribe можно выбрать явно для русского (ru-RU), английского
(en-US), казахского (kk-KZ), кыргызского (ky-KG), узбекского (uz-UZ)
и таджикского (tg-TJ). Это набор языков Gemini, доступный в данном сервисе.
Режим auto продолжает выбирать модели по таблице выше.
Список языков озвучивания отображается в поле «Язык перевода». Передавайте в API тот же BCP-47 language tag, который показывает интерфейс.
Внешняя обработка
При выборе gemini-3.5-transcribe исходное аудио передаётся Google,
а при выборе ElevenLabs-Scribe-v2 или ElevenLabs-Scribe-v2-Medical — ElevenLabs. Текст распознанных реплик
передаётся настроенному LLM-провайдеру для перевода. Выбранный маршрут
виден в интерфейсе до запуска.
Разделение спикеров¶
Gemini 3.5 Transcribe и ElevenLabs Scribe возвращают собственные метки спикеров
и таймкоды. Для них дополнительное разделение через Nemotron не запускается,
отдельная доплата за диаризацию не начисляется. Для остальных моделей
используется NVIDIA Nemotron 3 Diarization, которая автоматически определяет
до восьми спикеров, включая одновременную речь. Без maxSpeakers число
участников определяется автоматически. Явный предел от 2 до 7 ограничивает
допустимый результат: если обнаружено больше спикеров, операция сообщит об
ошибке, не объединяя разные голоса. Значение 1 объединяет всю найденную речь
под одним ID без разделения участников. Значения от 8 до 20 принимаются для
совместимости с прежним API, но модель всё равно различает не более восьми
спикеров.
Gemini определяет число спикеров автоматически, поддерживает до восьми;
разделение трёх и более участников у провайдера имеет экспериментальный статус.
Параметр maxSpeakers для Gemini нужно полностью исключить из запроса: ручное
значение отклоняется. Если распознавание Gemini завершится ошибкой, операция
сообщит об ошибке, без автоматического перехода на Nemotron. Ограничения
описаны в справочнике Gemini 3.5 Transcribe.
Таймкоды и назначение спикеров — результат распознавания. Они служат опорой для укладки дубляжа; точное совпадение границ слов и безошибочное разделение участников не гарантируются. Проверьте спорные реплики в редакторе и при необходимости исправьте спикера или границы. Подробнее о разметке — в документации Google.
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 "includeVideo=true" \
-F "confirmVoiceRights=true"
| Поле | Обязательно | Значение по умолчанию | Описание |
|---|---|---|---|
audio |
условно | — | Аудио- или видеофайл; взаимоисключающий с videoUrl |
videoUrl |
условно | — | Публичный HTTP(S) URL; взаимоисключающий с audio |
sourceSubtitles |
нет | — | SRT-файл на языке оригинала; заменяет распознавание текста, но не исходное медиа. До 2 MiB и 5000 реплик, UTF-8 либо UTF-16 с BOM |
sourceLanguage |
нет | ru-RU |
Язык оригинала |
sourceAsrModel |
нет | auto |
Совместимая модель распознавания оригинала; для Gemini передайте gemini-3.5-transcribe, для Medical — ElevenLabs-Scribe-v2-Medical. При загрузке sourceSubtitles не используется |
targetLanguage |
да | — | Язык перевода и озвучивания |
synthesisEngine |
нет | higgs |
eleven_v4 — прямая озвучка ElevenLabs v4 с клонами исходных голосов и контекстом диалога; higgs — прежний режим. В интерфейсе для новых запусков выбран v4 |
maxSpeakers |
нет | авто | Для Gemini поле не передаётся. Для ElevenLabs можно передать от 1 до 32. Nemotron, в том числе при загрузке SRT, определяет до 8 спикеров; 1 объединяет речь, предел 2–7 проверяется после разделения голосов, 8–20 принимаются для совместимости без увеличения вместимости модели |
multiTake |
нет | false |
Только Higgs: создать несколько вариантов реплики и выбрать лучший |
emotionReference |
нет | true |
Только Higgs: использовать подходящий фрагмент сцены как дополнительный голосовой референс |
voiceReferenceMode |
нет | speaker_identity |
Только Higgs: speaker_identity — голосовой образец спикера, source_phrase — текущая исходная реплика |
dynamicSpeechRate |
нет | false |
Устаревший параметр совместимости; естественная укладка не меняет темп |
stretchQualityControl |
нет | false |
Устаревший параметр совместимости; растяжение готовой речи отключено |
asrQualityControl |
нет | false |
Повторно распознать озвученную реплику для проверки текста |
includeVideo |
нет | false |
Сформировать MP4, если источник содержит видеоряд |
confirmVoiceRights |
да | false |
Должно быть true; подтверждает право использовать голоса из записи |
Пример с явным выбором Gemini и автоматическим определением спикеров:
curl -X POST "https://api.speech.example.com/api/audio-translation/v1:translateAsync" \
-H "Authorization: Api-Key <ваш-ключ>" \
-F "audio=@interview.wav" \
-F "sourceLanguage=ru-RU" \
-F "sourceAsrModel=gemini-3.5-transcribe" \
-F "targetLanguage=en-US" \
-F "confirmVoiceRights=true"
Пример с готовыми субтитрами оригинала:
curl -X POST "https://api.speech.example.com/api/audio-translation/v1:translateAsync" \
-H "Authorization: Api-Key <ваш-ключ>" \
-F "audio=@interview.mp4" \
-F "sourceSubtitles=@interview.ru.srt" \
-F "sourceLanguage=ru-RU" \
-F "targetLanguage=en-US" \
-F "includeVideo=true" \
-F "confirmVoiceRights=true"
Должно быть передано ровно одно из полей audio и videoUrl. Стандартный лимит
загружаемого файла — 500 MiB, ссылки — 200 MiB. Для Gemini длительность исходной
записи ограничена 30 минутами, поскольку в аудиопереводе используются
таймкоды и диаризация; это также ограничение провайдера.
Для остальных моделей и режима SRT стандартный предел — 3 часа. Ограничение
длительности действует и при загрузке файла, и при передаче ссылки. Фактический лимит
конкретного запроса может быть ниже; превышение длительности при фоновой
обработке отражается в ошибке операции.
После проверки запроса сервер отвечает 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. Сервер создаст новую операцию и
не изменит исходную. Если текст оригинала получен из SRT, поле sourceSubtitles
повторно не передаётся: используются сохранённые реплики.
Редактирование и точечное передублирование¶
Сохранить одну или несколько правок можно одним запросом:
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 |
Участки речи, для которых не удалось получить текст |
settings.source_transcript_mode |
asr для распознавания речи или srt для загруженных субтитров; в старых результатах поле может отсутствовать |
settings.model |
Модель распознавания оригинала; null при использовании SRT |
settings.source_audio_mode |
ducked_original для миксов с сохранённой приглушённой исходной дорожкой; в старых результатах поле может отсутствовать |
settings.source_speech_gain_db |
Ослабление оригинала на участках речи, в новых миксах -18 дБ |
settings.timing_policy |
natural_phrase_keep_all_v1: полный дубль сохраняется в миксе независимо от доступного окна; возможны наложения и удлинение аудиодорожки |
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 из актуального ответа на
запрос статуса.
Диагностика смысловой проверки¶
В готовой и частично переведённой реплике может присутствовать
response.segments[].translation_review. Поле необязательно: в старых
результатах или при отсутствии проверки оно может отсутствовать либо быть
null. Отсутствие отчёта не означает успешную проверку.
| Поле отчёта | Значение |
|---|---|
status |
passed — проверка пройдена; corrected — перевод исправлен и повторно проверен; needs_review — остались замечания; unavailable — проверку не удалось выполнить |
repair_attempts |
Число выполненных циклов исправления |
issues |
Замечания к исходному тексту или переводу |
adaptation |
Необязательный результат проверки начальной адаптации: status (passed, rejected или unavailable) и issues |
timing_adaptation |
Необязательный результат последней проверки сокращения после измерения длительности дубля; те же status и issues |
connected |
Необязательный отчёт проверки связанного диалога: status (passed, corrected, needs_review или unavailable), repair_attempts, issues, related_refs — идентификаторы связанных реплик, context_refs — идентификаторы реплик из проверенных контекстных окон; при недоступности исправления может присутствовать repair_unavailable |
Диагностика сохраняется вместе с репликой для продолжения обработки.
needs_review и unavailable описывают состояние проверки, а не статус всей
операции. В quality_warning готовой реплики могут появиться дополнительные
коды, разделённые точкой с запятой:
| Код | Значение в интерфейсе |
|---|---|
translation_needs_review |
Проверьте смысл перевода: остались замечания к исходному тексту или переводу |
translation_review_unavailable |
Проверка смысла недоступна; проверьте перевод вручную |
timing_adaptation_rejected |
Сокращение отклонено при проверке смысла; сохранена принятая формулировка |
Значения connected.status="needs_review" и connected.status="unavailable" вызывают те же
предупреждения о смысле перевода, даже если отдельная реплика получила
status="passed". Одинаковые коды не дублируются; замечания к адаптации
сохраняются независимо от результата проверки связанного диалога.
Эти замечания не заменяют source_text или translated_text и не добавляются
в озвучку.
Изменение оригинала, перевода, спикера или тайминга в редакторе сбрасывает прежний отчёт и связанные с ним смысловые предупреждения для этой реплики: они описывали предыдущий вариант. Другие предупреждения, например о тайминге или коротком голосовом референсе, сохраняются. Само сохранение правок не означает, что новый текст прошёл автоматическую проверку.
У соседних реплик, чья проверка связанного диалога использовала изменённую
строку, сбрасывается только connected. Зависимость определяется по
context_refs, а в отчётах без этого поля — по related_refs. Остальные
проверки этих реплик и предупреждения об аудио сохраняются. Сохранение тех же
значений без фактических изменений не сбрасывает диагностику.
Автоматическое изменение текста при подгонке длительности после проверки
диалога также сбрасывает connected изменённой реплики и зависимых соседей.
Отдельная проверка перевода по оригиналу и проверка сокращения по принятому
тексту сохраняются. Повторный связанный проход после озвучивания не выполняется.
Данные и права на голос¶
- Запускайте клонирование только для собственного голоса или при наличии согласия каждого спикера.
- Не используйте результат для выдачи себя за другого человека, обхода аутентификации, мошенничества или создания вводящей в заблуждение записи.
- Исходный файл и голосовые референсы хранятся вместе с результатом в течение срока хранения операции, чтобы можно было передублировать отдельную реплику. В режиме ElevenLabs v4 сервис создаёт временные клоны у провайдера. Продолжение и переозвучка используют те же клоны; после удаления последней связанной операции сервис удаляет их из ElevenLabs. Если провайдер недоступен, идентификатор остаётся в очереди очистки до успешного удаления. Ранее созданные вручную голоса не удаляются.
- Вызов
:purgeудаляет доступные результаты и производные данные операции. Удаление родительской задачи v4 отклоняется, пока её продолжение или переозвучка выполняется. - Срок автоматического хранения результата зависит от настроек сервиса.
Ошибки¶
| Код | Когда возникает |
|---|---|
400 |
Не передан источник, переданы сразу два источника, языки совпадают, неверны параметры или формат SRT, не подтверждены права на голоса |
401 |
Отсутствует или неверна аутентификация |
404 |
Операция или запрошенный файл не найдены либо недоступны пользователю |
409 |
У пользователя уже есть активный перевод или повторное озвучивание невозможно |
413 |
Превышен допустимый размер файла |
422 |
Параметр несовместим с выбранным языком или режимом, например передан maxSpeakers для Gemini |
429 |
Очередь переводов заполнена; повторите запрос позже |
503 |
Перевод аудио или выбранный провайдер временно недоступен |
Ошибка фоновой обработки записывается в объект операции: done=true,
metadata.status="failed", а подробности находятся в поле error.