视频翻译算子,可高效、精准地将视频内容从源语言转换为一种或多种目标语言,服务范围不仅包含字幕翻译,还涉及语音翻译、面容翻译,最终输出配音后的视频以及相应语言的字幕文件。
算子 ID:las_video_translate
场景 | 描述 |
|---|---|
短剧出海 | 为短剧提供多语言翻译与配音,助力海外发行 |
课程培训 | 培训视频的多语言本地化,支持全球客户学习 |
营销材料 | 广告视频、产品介绍、宣传片的国际化传播 |
lip_translate_param.lip_fuzzy_matching 模糊匹配,实现译后语音与人物口型同步;适用于原视频语音与口型不完全匹配的场景。语言代码 | 语言名称 | 输入支持情况 | 输出支持情况 | 输出视频支持的字幕字体 ID |
|---|---|---|---|---|
ar-SA | 阿拉伯语 | ✅ | ✅ |
|
bn-BD | 孟加拉语 | ✅ | ❌ | 不涉及 |
da-DK | 丹麦语 | ❌ | ✅ |
|
de-DE | 德语 | ✅ | ✅ |
|
el-GR | 希腊语 | ✅ | ✅ |
|
en-US | 英语 | ✅ | ✅ |
|
es-MX | 西班牙语 | ✅ | ✅ |
|
fi-FI | 芬兰语 | ❌ | ✅ |
|
fil-PH | 菲律宾语 | ✅ | ✅ |
|
fr-FR | 法语 | ✅ | ✅ |
|
he-IL | 希伯来语 | ❌ | ✅ |
|
hi-IN | 印地语 | ❌ | ✅ |
|
id-ID | 印尼语 | ✅ | ✅ |
|
it-IT | 意大利语 | ✅ | ✅ |
|
ja-JP | 日语 | ✅ | ✅ |
|
km-KH | 高棉语 | ❌ | ✅ |
|
ko-KR | 韩语 | ✅ | ✅ |
|
lo-LA | 老挝语 | ❌ | ✅ |
|
ms-MY | 马来语 | ✅ | ✅ |
|
my-MM | 缅甸语 | ❌ | ✅ |
|
ne-NP | 尼泊尔语 | ✅ | ❌ | 不涉及 |
nl-NL | 荷兰语 | ✅ | ✅ |
|
no-NO | 挪威语 | ❌ | ✅ |
|
pl-PL | 波兰语 | ✅ | ✅ |
|
pt-BR | 葡萄牙语 | ✅ | ✅ |
|
ro-RO | 罗马尼亚语 | ✅ | ❌ | 不涉及 |
ru-RU | 俄语 | ✅ | ✅ |
|
sv-SE | 瑞典语 | ❌ | ✅ |
|
sw-KE | 斯瓦希里语 | ❌ | ✅ |
|
th-TH | 泰语 | ✅ | ✅ |
|
tr-TR | 土耳其语 | ✅ | ✅ |
|
uk-UA | 乌克兰语 | ✅ | ❌ | 不涉及 |
vi-VN | 越南语 | ✅ | ✅ |
|
yue-CN | 粤语 | ✅ | ✅ |
|
zh-CN | 中文(简体) | ✅ | ✅ |
|
细分项 | 性能影响说明 |
|---|---|
最大 RPM | 600 |
最大并发度 | 10 |
耗时 | 耗时与输入视频时长正相关。
实际处理时长可能因视频内容复杂度、输出语言以及服务负载等因素而有所波动。 |
细分 | 详细要求 |
|---|---|
支持的输入数据模态 |
|
输入格式:视频 |
|
输入路径要求 | 通过请求参数
|
细分 | 详细要求 |
|---|---|
输出数据模态 |
|
输出格式:视频 |
|
输出格式:文本 |
|
输出格式:音频 |
|
输出路径:TOS | 通过请求参数
|
计费标准
细分项 | 计费标准说明 |
|---|---|
计费项 | 按输入视频的时长统计用量进行计费,每翻译生成一个新语种的视频计费一次。每个语种的翻译任务,费用包含两部分:
|
计费类型 | 按量计费,单位: |
单价 | 视频翻译、面容翻译的单价不同。
|
计费详情
计费公式:总费用 = (视频翻译单价 * 输入视频时长 + 面容翻译单价 * 面容翻译时长)* 翻译生成的新语种视频数
计费示例
总费用 = 1.5 元/分钟 * 10 分钟 * 3 = 45 元出账计费单元
当前调用本算子产生的费用账单,在账单明细中展示的计费单元为“视频智能剪辑”,您在查看账单时可关注下此差异。
细分项 | 注意与前提 |
|---|---|
开通 LAS |
|
费用 | 调用算子前,您需先了解使用算子时的模型调用费用,详情请参见大模型调用计费。 |
鉴权(API Key) | 调用算子前,您需要先生成算子调用的API Key,并建议将API Key配置为环境变量,便于更安全地调用算子,详情请参见获取 API Key 并配置。 |
BaseURL | 调用算子前,您需要先根据您当前使用的LAS服务所在地域,了解算子调用的BaseURL,用于配置算子调用路径参数取值。 |
Submit 接口提交任务获得任务的 task_id,再通过 Poll 接口获取对应任务(task_id)运行状态,并获取算子处理结果。task_id 有效期为 3 天,超过 3 天后即无法通过此 task_id 来获取算子处理结果。提交 las_video_translate 算子视频翻译任务,任务完成后可获取目标语种字幕、配音后视频,以及可选的纯配音音频。
名称 | 类型 | 示例值 | 描述 |
|---|---|---|---|
metadata | metadata | 请求元信息。 | |
task_id | string | task-xxx | 异步任务 ID。 |
task_status | string | COMPLETED | 异步任务状态:PENDING、RUNNING、COMPLETED、FAILED、TIMEOUT。应结合 task_status=COMPLETED 与 business_code=0 判断任务成功完成。 |
submit_time | string | 2026-08-18T16:04:06+08:00 | 任务提交时间,ISO 8601 时间戳。 |
end_time | string | 2026-08-18T16:04:10+08:00 | 任务结束时间,ISO 8601 时间戳。 |
business_code | string | 0 | 业务码,处理成功时通常为 0。 |
error_msg | string | 异常信息。 | |
data | SpatialPerceptionResult | 任务成功完成时返回的空间感知结果。 | |
clazz | string | las_spatial_perception | 结果类型标识(如有)。 |
frame_count | integer | 60 | 模型实际完成处理的采样帧数。已处理但未识别到对象的帧仍计入;未实际传播的帧不计入。视频结果中该值等于 manifest 的 frame_count 和 frames 数组长度。 |
prompt_frame_count | integer | 120 | 计费数量,表示各有效 Prompt 目标实际处理的采样帧数之和。文本 Prompt 按每条统计;同一 target 的 point/box 合并为一个有效目标。 hand_pose_estimation 按请求 fps 选择 5、7 或 10 fps 档位,按 ceil(frame_count × 档位 fps ÷ 请求 fps) 折算,因此可高于或低于 frame_count:fps ≤ 5 使用 5 fps 档,5 < fps ≤ 10 使用 7 fps 档,10 < fps ≤ 30 使用 10 fps 档。robot_arm_segmentation 返回实际处理的有效 prompt-frame 累计值,没有选中机械臂时可为 0,帧费按该值计收。 |
video_duration | float | 12.0 | 仅视频返回,源视频时长,单位为秒。 |
resolution | string | 1920x1080 | 源媒体分辨率,格式为 宽x高。 |
frames | array of SpatialFrame | 仅图片返回。图片的检测、分割或手部姿态结果直接包含在接口返回内容中,无需另外下载结果文件。 | |
source_frame_index | integer | 0 | 源媒体帧序号,图片固定为 0。 |
timestamp | float | 0.0 | 相对视频开头的秒数,图片固定为 0。 |
objects | array of SpatialObject 或 HandPoseObject | 当前帧识别到的对象。普通检测/分割任务和 robot_arm_segmentation 返回 SpatialObject;hand_pose_estimation 返回 HandPoseObject。模型已处理但未识别到对象时返回空数组。 | |
object_id | string | obj_000_001 | 对象实例标识。同一 Prompt 产生多个对象时用于区分实例。普通视频检测/分割任务中,同一对象跨帧保持一致; robot_arm_segmentation 的标识仅在约 3 秒的处理窗口内有效,不代表跨窗口稳定身份。其中 unclear 表示部件归属未确定,不能根据这类标识的数量推断画面中的机械臂总数。 |
prompt_index | integer | 0 | 表示目标对应的 Prompt 序号,从 0 开始。同一 target 的多条 point/box Prompt 会合并用于一个目标,返回首条序号。例如,prompts 依次为 box(cup)、box(bottle)、point(bottle)、point(plate) 时,cup、bottle、plate 的 prompt_index 为 0、1、3;两条 bottle Prompt 会合并,不会返回 prompt_index=2 的对象。robot_arm_segmentation 不返回该字段。 |
bbox | array of float | [233,178,393,409] | 源媒体像素坐标 [x0,y0,x1,y1]。 |
label | string | robot_arm | 对象标签。 robot_arm_segmentation 固定返回 robot_arm;其他任务仅在模型提供标签时返回。 |
track_id | string | track_000_001 | 普通视频检测/分割对象的跨帧轨迹标识。 robot_arm_segmentation 不返回该字段。 |
mask | SpatialRleMask | segment 和 robot_arm_segmentation 返回的实例分割掩码。 | |
format | string | rle | 固定为 rle,表示 COCO compressed RLE。 |
size | array of integer | [480,640] | [height,width],使用源媒体分辨率网格。 |
counts | string | WkX13... | 可直接写入 JSON 的 ASCII 压缩字符串。使用 pycocotools 解码前需转换为 ASCII bytes。 |
mask_area | integer | 12477 | 仅有 mask 时返回,mask 的前景像素数。 |
object_id | string | hand_000_001 | 手部实例标识。同一只手在视频帧间保持一致。 |
bbox | array of float | [233,178,393,409] | 手部检测框,源媒体像素坐标 [x0,y0,x1,y1]。当 observation=infilled 时可能不返回。 |
label | string | left_hand | 手部标签,取值为 left_hand 或 right_hand。 |
score | float | 0.92 | 手部检测置信度,范围 [0,1]。当 observation=infilled 时可能不返回。 |
track_id | string | track_000_001 | 仅视频返回,跨帧手部轨迹标识。 |
bbox_space | string | source_pixel | bbox 坐标空间,返回时固定为 source_pixel。当 observation=infilled 时可能不返回。 |
handedness | string | left | 手性,取值为 left 或 right。 |
handedness_score | float | 0.98 | 手性置信度,范围 [0,1]。 |
observation | string | observed | 观测状态。 observed 表示当前帧直接检测到手部;bbox_interpolated 表示检测框由相邻帧插值得到;infilled 表示姿态由时序补全得到。 |
pose | HandPose | 21 点手部姿态。 | |
skeleton | string | hand_21 | 骨架类型,固定为 hand_21。 |
joint_names | array of string | ["wrist","thumb_cmc",...] | 21 个关键点名称,顺序与 keypoints_2d.values、keypoints_3d.values 和 keypoints_3d_camera.values 一致。 |
edges | array of array | [[0,1],[1,2]] | 骨架连线,元素为关键点下标对。 |
root_joint_index | integer | 0 | 根关节下标,固定为 0。 |
keypoints_2d | HandKeypoints2D | 源媒体像素坐标系下的 2D 手部关键点。 | |
space | string | source_pixel | 坐标空间,固定为 source_pixel。 |
values | array of array | [[320.5,240.0],...] | 21 个 [x,y] 关键点坐标,使用源媒体像素坐标。 |
in_frame | array of boolean | [true,true,...] | 每个 2D 关键点是否位于源媒体画面范围内。 |
keypoints_3d | HandKeypoints3D | 以手腕为原点、相机轴方向为参考的 3D 手部关键点。 | |
space | string | wrist_relative_camera_axes | 坐标空间。 keypoints_3d 固定为 wrist_relative_camera_axes;keypoints_3d_camera 为 virtual_camera 或 camera。 |
unit | string | model_meter_estimate | 坐标单位,可能为 meter、meter_estimate 或 model_meter_estimate。相机坐标系关键点当前通常返回 model_meter_estimate。 |
metric_calibrated | boolean | false | 是否经过真实米制标定。相机内参只能确定投影几何,不能消除单目手部尺度的不确定性,因此提供内参时该值仍可能为 false。 |
values | array of array | [[0.0,0.0,0.0],...] | 21 个 [x,y,z] 关键点坐标。 |
keypoints_3d_camera | HandKeypoints3D | 相机坐标系下的 21 个 3D 手部关键点,包含手在相机前的位置,不以手腕归零。使用默认虚拟内参时 space 为 virtual_camera;实际使用调用方提供或服务端估计的有效内参时为 camera。当前单目尺度未做真实米制标定,不能将坐标值直接作为测量级距离。旧版本后端未返回该字段时省略。 | |
result_manifest_url | string | https://example.com/manifest.json | 仅视频返回。未指定 output.destination 时为有效期 259200 秒的 LAS 托管签名 HTTPS;指定时返回对应的 TOS URI。 |
token_usage | object of SpatialTokenUsage | {"doubao-seed-2-1-turbo-260628":{"prompt_tokens":4458,"completion_tokens":249,"total_tokens":4707}} | 仅 robot_arm_segmentation 返回。按模型名汇总本次任务中所有 VLM 调用的 token 用量,包括首次调用以及格式校验失败后触发的补试。 |
prompt_tokens | integer | 4458 | 输入 token 数。服务未返回该项时省略,不补为 0。 |
completion_tokens | integer | 249 | 输出 token 数。服务未返回该项时省略,不补为 0。 |
total_tokens | integer | 4707 | 总 token 数。服务未返回该项时省略,不补为 0。 |
cached_tokens | integer | 2872 | 缓存命中的输入 token 数,仅在服务返回时提供。 |
token_usage_complete | boolean | true | 仅 robot_arm_segmentation 返回。表示所有 VLM 调用是否都提供了 prompt_tokens、completion_tokens 和 total_tokens;不表示识别准确或任务处理成功。 |
SpatialPerceptionManifest | object | 视频 manifest 结构。 | |
version | string | 1.0 | manifest 版本,当前固定为 1.0。 |
frame_count | integer | 60 | 实际完成处理的帧数,等于 frames 数组长度。 |
video_duration | float | 12.0 | 源视频时长,单位为秒。 |
resolution | string | 640x480 | 源视频分辨率,格式为 宽x高。 |
frames | array of SpatialFrame | 实际完成处理的逐帧结果。没有识别到对象的已处理帧保留为 objects: []。 |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
metadata | metadata | 请求元信息 | |
task_id | string | task-xxx | 异步模式下的任务 ID,用于作业状态查询。 |
task_status | string | PENDING | 异步模式下的任务状态。
|
business_code | string | 0 | 业务码。 |
error_msg | string | 如有异常,会返回详细的异常信息。 |
请求示例:
示例 1:常规视频翻译
# 示例 1:常规视频翻译 # 请将 INPUT_PATH 设置为 保存在本账号下的视频文件TOS路径 export INPUT_PATH="tos://xxxx/sample.mp4" # 请将 OUTPUT_PATH_TEMPLATE 设置为本账号上可写入的tos路径 export OUTPUT_PATH_TEMPLATE="tos://xxxx/output/" # 发起算子服务请求 curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" \ --header "Content-Type: application/json" \ --header "Authorization: Bearer $LAS_API_KEY" \ --data '{ "operator_id": "las_video_translate", "operator_version": "v1", "callback": { "url": "https://example.com/callback" }, "data": { "video_url": "$INPUT_PATH", "audio_language": "zh-CN", "output_languages": ["en-US"], "caption_formats": [".srt", ".ass"], "dubbing_mode": "emotion", "output_dubbing_audio": false, "lip_translate": false, "burn_translated_subtitles": true, "subtitle_font_by_language": ["NotoSans-Regular"], "subtitle_font_size": 40, "subtitle_font_color": "#FFFFFF", "subtitle_outline_color": "#000000", "subtitle_outline_width": 2, "subtitle_top_margin_ratio": 0.77, "output_tos_path": "$OUTPUT_PATH_TEMPLATE" } }'
示例 2:面容翻译
# 示例 2:面容翻译 { "operator_id": "las_video_translate", "operator_version": "v1", "data": { "video_url": "tos://xxxx/sample.mp4", "audio_language": "zh-CN", "output_languages": ["en-US"], "output_tos_path": "tos://xxxx/output/", "lip_translate": true } }
示例3:面容翻译-语音口型模糊匹配
# 示例 3:面容翻译-语音口型模糊匹配 # 以下示例仍会执行字幕翻译和 TTS,但使用语音口型模糊匹配,适用于输入视频语音与口型不同步的情况: { "operator_id": "las_video_translate", "operator_version": "v1", "data": { "video_url": "tos://xxxx/sample.mp4", "audio_language": "zh-CN", "output_languages": ["en-US"], "output_tos_path": "tos://xxxx/output/", "lip_translate": true, "lip_translate_param": { "lip_fuzzy_matching": true } } }
示例4:面容翻译-外部配音换口型
# 示例 4:面容翻译-外部配音换口型 # 以下示例使用指定音频替换输入视频音轨,并生成与该配音同步口型的视频: { "operator_id": "las_video_translate", "operator_version": "v1", "data": { "video_url": "tos://xxxx/sample.mp4", "output_tos_path": "tos://xxxx/output/", "lip_translate": true, "lip_translate_param": { "dubbing_audio": { "source": "url", "url": "tos://xxxx/dubbing.wav", "language": "en-US" } } } }
示例5:面容翻译-使用视频自身音轨换口型
# 示例 5:面容翻译-使用视频自身音轨换口型 { "operator_id": "las_video_translate", "operator_version": "v1", "data": { "video_url": "tos://xxxx/sample.mp4", "audio_language": "zh-CN", "output_tos_path": "tos://xxxx/output/", "lip_translate": true, "lip_translate_param": { "dubbing_audio": { "source": "video" } } } }
返回示例:
{ "metadata": { "task_id": "task-20251125163544-abc123", "task_status": "PENDING", "business_code": "0", "error_msg": "" } }
HttpStatusCode | 错误码 | 错误信息 | 描述 |
|---|---|---|---|
400 | Parameter.Invalid | The parameter is invalid. | 参数不合法 |
401 | Authorization.Missing | Missing Authorization. | 缺少鉴权 |
401 | ApiKey.InValid | The api key is invalid. | API不合法 |
查询视频翻译任务的执行状态和结果。
名称 | 类型 | 是否必选 | 示例值 | 描述 |
|---|---|---|---|---|
operator_id | string | 是 | las_video_translate | 算子 ID |
operator_version | string | 是 | v1 | 算子版本 |
task_id | string | 是 | task-xxx | 任务 ID |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
metadata | metadata | 请求元信息。 | |
data | VideoTranslateResponse | 返回数据。 |
请求示例:
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/poll" \ --header "Content-Type: application/json" \ --header "Authorization: Bearer $LAS_API_KEY" \ --data "{ \"operator_id\": \"las_video_translate\", \"operator_version\": \"v1\", \"task_id\": \"task-20251125163544-abc123\" }"
返回示例:
{ "metadata": { "task_id": "task-20260323153012-abc123", "task_status": "COMPLETED", "submit_time": "2026-07-21T16:04:06+08:00", "end_time": "2026-07-21T16:04:06+08:00", "business_code": "0", "error_msg": "" }, "data": { "video_url": "tos://path/to/video_translate_demo.mp4", "video_duration": 12.05, "translated_captions": [ { "language": "en-US", "type": "translated_caption", "format": ".srt", "tos_path": "tos://xxx/output/video_translate_demo_en-US_caption.srt", "presigned_url": "https://xxx/output/video_translate_demo_en-US_caption.srt" }, { "language": "en-US", "type": "translated_caption", "format": ".ass", "tos_path": "tos://xxx/output/video_translate_demo_en-US_caption.ass", "presigned_url": "https://xxx/output/video_translate_demo_en-US_caption.ass" } ], "translated_videos": [ { "language": "en-US", "type": "translated_video", "tos_path": "tos://xxx/output/video_translate_demo_en-US.mp4", "presigned_url": "https://xxx/output/video_translate_demo_en-US.mp4" } ] } }
HttpStatusCode | 错误码 | 错误信息 | 描述 |
|---|---|---|---|
400 | Operator.VersionInvalid | the operator version is invalid | 算子版本不支持。 |
400 | Connection.TooMany | Exceed max connections. | 并发过高触发限流。 |
400 | Parameter.Missing | Missing required parameter. | 缺少必填参数,例如 |
400 | Parameter.Invalid | Invalid parameter. | 参数不合法,例如语言码、字幕格式、 |
400 | Tos.AccessFailed | Failed to access TOS path with provided credentials | TOS 路径访问或写入校验失败。 |
400 | Video.DownloadFailed | Video download failed. | 输入视频下载失败,可能由 URL 不可达、鉴权失败、签名过期、网络超时或存储服务异常引起。 |
400 | Video.Invalid | Invalid video file. | 视频文件损坏、下载不完整,或无法读取视频信息。 |
400 | Video.FormatUnsupported | Video format not supported | 视频格式不支持,仅支持 |
400 | Video.FileTooLarge | Video file is too large. | 视频文件大小超过 10 GB。 |
400 | Video.DurationTooShort | Video duration is too short | 视频时长不足 10 秒。 |
400 | Video.DurationTooLong | Video duration is too long | 视频时长超过 4 小时。 |
400 | Video.AudioMissing | Video has no audio track | 视频无音轨,无法生成字幕和配音。 |
400 | Video.AudioSeparationFailed | Audio separation failed | 人声与背景音分离失败。 |
400 | Video.AsrFailed | ASR processing failed | ASR 调用或处理失败。 |
400 | Video.AsrNoSpeech | No recognizable speech in audio | 音频中未识别到可转写语音。 |
400 | Video.FrameExtractionFailed | Video frame extraction failed | 视频帧提取失败。 |
400 | Video.RefineFailed | Refine VLM call failed | 多模态字幕精修调用或解析失败。 |
400 | Video.TranslateFailed | Translate VLM call failed | 目标语言翻译或配音文本改写失败。 |
400 | Video.CaptionUploadFailed | Caption file upload failed | 字幕文件上传失败。 |
400 | Video.DubbingInitFailed | Dubbing initialization failed | 配音模型、音色校验模型或相关依赖初始化失败。 |
400 | Video.DubbingFailed | Dubbing processing failed | 配音生成、音色校验、时长对齐或调速处理失败。 |
400 | Video.ComposeFailed | Video composition failed | 配音音频与视频合成、面容匹配或口型同步处理失败;指定配音换口型时,全部语音区间均未找到匹配人脸也会返回该错误码。 |
400 | Video.Timeout | Video processing timed out | 面容翻译、配音语音识别或结果下载超时。 |
400 | Video.OutputUploadFailed | Output upload failed | 音频、视频等产物上传失败。 |
400 | Video.ResourceInsufficient | Video processing resources are temporarily insufficient | 处理资源暂时不足,请稍后重试。 |
400 | Task.NotFound | Task not found. | 任务不存在。 |
401 | Authorization.Missing | Missing Authorization. | 缺少鉴权。 |
401 | ApiKey.InValid | The api key is invalid. | API Key 不合法。 |
500 | InternalError | Internal error | 服务内部错误。 |