All Products
Search
Document Center

Intelligent Media Services:Parameter terjemahan video

Last Updated:Aug 25, 2026

Gunakan SubmitVideoTranslationJob untuk mengirimkan tugas terjemahan video dan GetSmartHandleJob untuk mengambil hasilnya. Topik ini mencakup parameter permintaan dan respons untuk kedua operasi tersebut.

Ketersediaan

Jenis terjemahan

Wilayah yang didukung

Terjemahan subtitle

Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Shenzhen), Tiongkok (Hangzhou), Singapura, AS (Silicon Valley)

Terjemahan ucapan

Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Shenzhen), Tiongkok (Hangzhou), Singapura, AS (Silicon Valley)

Terjemahan lip-sync

Tiongkok (Shanghai), Singapura

SubmitVideoTranslationJob

Penting

Untuk membedakan jenis terjemahan, konfigurasikan parameter boolean berikut:

  • Terjemahan subtitle: Atur NeedSpeechTranslate dan NeedFaceTranslate ke false. Konfigurasikan pengaturan subtitle di SubtitleTranslate.

  • Terjemahan ucapan: Atur NeedSpeechTranslate ke true dan NeedFaceTranslate ke false. Konfigurasikan pengaturan ucapan di SpeechTranslate.

  • Terjemahan lip-sync: Atur NeedFaceTranslate ke true dan NeedSpeechTranslate ke false. Konfigurasikan pengaturan lip-sync di FaceTranslate.

Parameter

Tipe

Wajib

Deskripsi

InputConfig

String

Ya

Konfigurasi input sebagai string JSON.

OutputConfig

String

Ya

Konfigurasi output sebagai string JSON.

EditingConfig

String

Ya

Konfigurasi terjemahan sebagai string JSON.

Title

String

Tidak

Nama tugas.

Description

String

Tidak

Deskripsi tugas.

UserData

String

Tidak

Informasi kustom sebagai string JSON. Panjang maksimum: 512 karakter. Mendukung konfigurasi URL callback.

InputConfig

Parameter

Tipe

Wajib

Deskripsi

Type

String

Ya

Jenis input. Nilai valid: Video, Audio, Subtitle.

Video

String

Bersyarat

ID atau URL file video. Diperlukan saat Type adalah Video. Menerima ID aset media, URL OSS dalam Akun Alibaba Cloud saat ini, atau URL yang dapat diakses publik.

Audio

String

Bersyarat

ID atau URL file audio. Diperlukan saat Type adalah Audio. Menerima ID aset media, URL OSS dalam Akun Alibaba Cloud saat ini, atau URL yang dapat diakses publik. Format yang didukung: MP3, WAV.

Subtitle

String

Bersyarat

ID atau URL file subtitle. Diperlukan saat Type adalah Subtitle. Menerima ID aset media, URL OSS dalam Akun Alibaba Cloud saat ini, atau URL yang dapat diakses publik. Format yang didukung: SRT.

Batasan jenis input

Jenis terjemahan

Jenis input yang didukung

Terjemahan subtitle (NeedSpeechTranslate=false, NeedFaceTranslate=false)

Video, Subtitle

Terjemahan ucapan (NeedSpeechTranslate=true)

Video, Audio

Terjemahan lip-sync (NeedFaceTranslate=true)

Hanya Video

OutputConfig

Parameter

Tipe

Wajib

Deskripsi

OutputTarget

String

Tidak

Tujuan output. Default: OSS. Nilai valid: OSS (simpan ke OSS), VOD (simpan ke ApsaraVideo VOD).

MediaURL

String

Ya

URL OSS dalam Akun Alibaba Cloud saat ini. Jalur harus menyertakan ekstensi file. Ekstensi yang didukung: mp4 (saat InputConfig.Type=Video), wav (saat InputConfig.Type=Audio), srt (saat InputConfig.Type=Subtitle).

StorageLocation

String

Bersyarat

Diperlukan saat OutputTarget adalah VOD. Tentukan lokasi penyimpanan tanpa awalan protokol seperti http:// atau https://. Contoh: outin-***c7d2a3811eb83da00163e0***.oss-cn-shanghai.aliyuncs.com.

FileName

String

Bersyarat

Diperlukan saat OutputTarget adalah VOD. Nama file dengan ekstensi. Ekstensi yang didukung: mp4, wav, srt.

Width

Integer

Tidak

Lebar video output dalam piksel. Default mengikuti lebar video sumber.

Height

Integer

Tidak

Tinggi video output dalam piksel. Default mengikuti tinggi video sumber.

Video

JSONObject

Tidak

Konfigurasi video output seperti pengaturan CRF dan kodek. Contoh: {"Crf": 27}.

EditingConfig

Parameter

Tipe

Wajib

Deskripsi

SourceLanguage

String

Ya

Kode bahasa sumber (misalnya, zh).

TargetLanguage

String

Ya

Kode bahasa target. Pisahkan beberapa bahasa dengan koma. Contoh: en,ja,id.

DetextArea

String

Tidak

Konfigurasi penghapusan subtitle. Jika tidak ditentukan, subtitle sumber akan dipertahankan. Nilai valid: Auto (deteksi area subtitle secara otomatis), atau array dua lapis [[x, y, width, height], ...] yang menentukan satu atau beberapa area penghapusan. Dalam array tersebut, x adalah rasio jarak horizontal dari pojok kiri atas area ke pojok kiri atas video, y adalah rasio jarak vertikal, width adalah rasio lebar, dan height adalah rasio tinggi. Semua nilai berada dalam rentang 0 hingga 1.

SupportEditing

Boolean

Tidak

Aktifkan pascapengeditan untuk mengoreksi terjemahan. Default: false.

BilingualSubtitle

Boolean

Tidak

Hasilkan subtitle dwibahasa dalam video output. Didukung oleh ketiga jenis terjemahan. Default: false.

SubtitleTranslate

String

Tidak

Konfigurasi terjemahan subtitle sebagai string JSON. Diperlukan untuk terjemahan subtitle.

NeedSpeechTranslate

Boolean

Tidak

Aktifkan terjemahan ucapan. Default: false.

SpeechTranslate

String

Tidak

Konfigurasi terjemahan ucapan sebagai string JSON. Terjemahan ucapan dijalankan saat NeedSpeechTranslate adalah true atau saat parameter ini ditentukan.

NeedFaceTranslate

Boolean

Tidak

Aktifkan terjemahan lip-sync. Default: false.

FaceTranslate

String

Tidak

Konfigurasi terjemahan lip-sync sebagai string JSON. Terjemahan lip-sync dijalankan saat NeedFaceTranslate adalah true atau saat parameter ini ditentukan.

TextSource

String

Tidak

Metode sumber subtitle.

CustomParameter

String

Tidak

Parameter kustom untuk mengontrol efek terjemahan video.

HotwordLibraryIdList

String

Tidak

ID perpustakaan hotword yang dipisahkan koma. Contoh: "**b4549d46c88681030f6e,549d46c88b4681030f6e**".

FECanvas

JSON

Tidak

Dimensi kanvas pratinjau frontend untuk penskalaan font subtitle adaptif. Contoh: {"Width": 1080, "Height": 1920}. Ukuran font yang dirender dihitung sebagai: FontSize x Math.min(outputWidth/feWidth, outputHeight/feHeight). Misalnya, dengan FECanvas={"Width": 1080, "Height": 1920}, FontSize=100, dan resolusi output 720x1280, FontSize yang dirender = 100 x Math.min(720/1080, 1280/1920) = 67.

Untuk menghasilkan video output tanpa subtitle, atur SubtitleTrackClip.FontSize ke 0.

Nilai valid SourceLanguage

Terjemahan subtitle (TextSource=OCR atau OCR_ASR)

Terjemahan subtitle (TextSource=ASR)

Sumber SRT eksternal

Terjemahan ucapan

Lip-sync Translation

zh (Tiongkok), en (Inggris)

zh (Tiongkok), en (Inggris), fr (Prancis), tr (Turki)

zh, en, ja, ko, yue, de, fr, es, ar, it, az, be, bg, bs, bn, cs, cy, da, et, fa, hi, hbs, hu, id, is, lt, lv, mi, mn, mr, ms, mt, ne, nl, no, pl, pt, ro, ru, sk, sl, sq

Sama seperti sumber SRT eksternal

Sama seperti sumber SRT eksternal

Nilai valid TargetLanguage

Terjemahan subtitle:

zh (Tiongkok), zh-tw (Tiongkok Tradisional), en (Inggris), ja (Jepang), id (Indonesia), es (Spanyol), pt (Portugis), ar (Arab), fr (Prancis), tr (Turki), yue (Kanton), de (Jerman), ko (Korea), ru (Rusia), th (Thailand), vi (Vietnam), ms (Melayu)

Dialek Tiongkok: sichuan (Sichuan), dongbei (Timur Laut), henan (Henan), shanghai (Shanghai), tianjin (Tianjin), beijing (Beijing), chongqing (Chongqing), hunan (Hunan), taiwan (Hakka Tiongkok), shanxi (Shanxi), shaanxi (Shaanxi)

Terjemahan ucapan:

zh (Tiongkok), zh-tw (Tiongkok Tradisional), en (Inggris), ja (Jepang), ko (Korea), yue (Kanton), de (Jerman), fr (Prancis), es (Spanyol), ar (Arab), tr (Turki), ru (Rusia), pt (Portugis), vi (Vietnam), ms (Melayu), th (Thailand), id (Indonesia)

Dialek Tiongkok: sichuan (Sichuan), tianjin (Tianjin)

Terjemahan lip-sync:

Hanya en (Inggris)

Nilai valid TextSource

Nilai

Deskripsi

Bawaan untuk

ASR

Kenali subtitle melalui Automatic Speech Recognition (ASR).

-

OCR

Kenali subtitle melalui Optical Character Recognition (OCR). Atur area pengenalan melalui OcrArea.

Terjemahan subtitle

OCR_ASR

Utamakan OCR. Jika OCR gagal, alihkan ke ASR. Atur area pengenalan melalui OcrArea.

Terjemahan ucapan dan lip-sync

ALL

Utamakan teks dan garis waktu hasil transkripsi ASR, lalu sempurnakan dengan OCR untuk memperbaiki ketidaktepatan. Hanya tersedia untuk terjemahan subtitle.

-

SubtitleFile

Gunakan file SRT eksternal yang ditentukan di InputConfig.Subtitle.

-

SubtitleTranslate

Parameter

Tipe

Wajib

Deskripsi

OcrArea

String

Tidak

Area pengenalan OCR. Jika tidak ditentukan, area subtitle akan dideteksi secara otomatis. Nilai valid: Auto, atau array satu lapis [x, y, width, height] di mana x adalah rasio jarak horizontal dari pojok kiri atas area ke pojok kiri atas video, y adalah rasio jarak vertikal, width adalah rasio lebar, dan height adalah rasio tinggi. Semua nilai berada dalam rentang 0 hingga 1. Berbeda dengan DetextArea, hanya satu area yang dapat ditentukan.

SubtitleConfig

String

Tidak

Gaya subtitle output sebagai string JSON. Parameter mengikuti spesifikasi SubtitleTrackClip di Timeline. Atur FontSize ke 0 untuk menyembunyikan subtitle.

SpeechTranslate

Parameter

Tipe

Wajib

Deskripsi

OcrArea

String

Tidak

Area pengenalan OCR. Format sama dengan SubtitleTranslate.OcrArea.

CustomSrtType

String

Bersyarat

Diperlukan jika InputConfig.Subtitle ditentukan. Menentukan jenis subtitle input. Nilai valid: SourceSrt (bahasa sumber), TargetSrt (bahasa target), BilingualSrtSrcFirst (dwibahasa, target di bawah sumber), BilingualSrtTgtFirst (dwibahasa, sumber di bawah target).

SubtitleTimeForce

Boolean

Tidak

Terjemahkan hanya audio dalam rentang waktu subtitle. Default: false. Hanya berlaku saat TextSource adalah OCR atau OCR_ASR.

SubtitleConfig

String

Tidak

Gaya subtitle output. Format sama dengan SubtitleTranslate.SubtitleConfig.

OriginalJobId

String

Tidak

ID tugas awal untuk pengiriman ulang pascapengeditan. Gunakan nilai SpeechTranslationJobId yang dikembalikan dari tugas awal (saat SupportEditing adalah true). Hasil terjemahan awal tersedia dari SpeechTranslatedSubtitleURL. Modifikasi file SRT dan berikan URL-nya ke InputConfig.Subtitle.

SkipSong

Integer

Tidak

Lewati terjemahan untuk bagian musik yang dinyanyikan. Nilai valid: 0 (default, terjemahkan semua ucapan yang terdeteksi termasuk vokal), 1 (identifikasi dan kecualikan vokal yang dinyanyikan). Algoritma deteksi musik tidak 100% akurat. Atur ke 1 hanya jika video sumber berisi nyanyian.

FaceTranslate

Parameter

Tipe

Wajib

Deskripsi

OcrArea

String

Tidak

Area pengenalan OCR. Format sama dengan SubtitleTranslate.OcrArea.

CustomSrtType

String

Bersyarat

Diperlukan jika InputConfig.Subtitle ditentukan. Nilai valid sama dengan SpeechTranslate.CustomSrtType.

SubtitleTimeForce

Boolean

Tidak

Perilaku sama dengan SpeechTranslate.SubtitleTimeForce.

SubtitleConfig

String

Tidak

Gaya subtitle output. Format sama dengan SubtitleTranslate.SubtitleConfig.

SpeechDurationThres

Float

Tidak

Durasi segmen minimum dalam detik untuk pemrosesan lip-sync. Segmen yang lebih pendek dari ambang batas ini akan melewati lip-sync. Default: 1. Tidak boleh melebihi durasi total video sumber.

FacialClarity

Float

Tidak

Tingkat kejelasan wajah. Rentang valid: 0 hingga 1. Default: 1 (kejelasan tertinggi). Gunakan nilai yang lebih kecil untuk video sumber beresolusi rendah.

Contoh format SRT

Untuk terjemahan Tiongkok ke Inggris:

SourceSrt (hanya bahasa sumber):

1
00:00:01,000 --> 00:00:05,000
你好,世界!

TargetSrt (hanya bahasa target):

1
00:00:01,000 --> 00:00:05,000
Hello,World!

BilingualSrtSrcFirst (target di bawah sumber):

1
00:00:01,000 --> 00:00:05,000
你好,世界!
Hello,World!

BilingualSrtTgtFirst (sumber di bawah target):

1
00:00:01,000 --> 00:00:05,000
Hello,World!
你好,世界!

CustomParameter

Nilai

Deskripsi

--add -dl

Gunakan saat audio input berisi beberapa bahasa. Misalnya, dalam tugas terjemahan Korea ke Prancis, segmen bahasa Inggris dalam input diterjemahkan ke Prancis. Untuk tugas Tiongkok ke Inggris dengan input campuran Tiongkok dan Inggris, jangan gunakan parameter ini karena input bahasa Inggris langsung digunakan dalam output.

Kode contoh

Terjemahan subtitle

Input file subtitle
Penting

Input file SRT dikenai biaya berdasarkan harga terjemahan teks.

{
  "InputConfig": {
    "Type": "Subtitle",
    "Subtitle": "https://******.oss-cn-shanghai.aliyuncs.com/ice-generated/4e1021a0720f71eeb755f6f7d6496302/snapshots/sprite/test.srt"
  },
  "EditingConfig": {
    "SourceLanguage": "zh",
    "TargetLanguage": "en"
  },
  "Title": "1735798516693.srt",
  "OutputConfig": {
    "MediaURL": "https://****.oss-cn-shanghai.aliyuncs.com/ice-generated/4e1021a0720f71eeb755f6f7d6496302/snapshots/sprite/new.srt"
  }
}
Input file video
{
  "InputConfig": {
    "Type": "Video",
    "Video": "1628ae20c36******f6f7c77a6302"
  },
  "EditingConfig": {
    "SourceLanguage": "zh",
    "TargetLanguage": "en",
    "DetextArea": [[0, 0.64, 1, 0.13]],
    "BilingualSubtitle": false,
    "SubtitleTranslate": {
      "OcrArea": [0, 0.64, 1, 0.15],
      "SubtitleConfig": {
        "Type": "Text",
        "FontSize": 95,
        "FontColorOpacity": 1,
        "Color": "#ffffff",
        "X": 0.5,
        "Y": 0.686,
        "Angle": 0,
        "Spacing": 0,
        "TextWidth": 0.9,
        "Font": "Alibaba PuHuiTi",
        "FontColor": "#ffffff",
        "FontFace": {
          "Bold": false,
          "Italic": false,
          "Underline": false
        },
        "SizeRequestType": "RealDim",
        "SubtitleEffects": [],
        "LineSpacing": 0,
        "BorderStyle": 1,
        "Outline": 0,
        "Alignment": "Center"
      }
    },
    "SupportEditing": true,
    "NeedSpeechTranslate": false
  },
  "Title": "have a test",
  "OutputConfig": {
    "MediaURL": "https://*****.oss-cn-shanghai.aliyuncs.com/ice-generated/test.mp4"
  }
}
Input file video dan subtitle
{
  "InputConfig": {
    "Type": "Video",
    "Video": "4e92fa60c995*****6f7c77a6302",
    "Subtitle": "https://*****.oss-cn-shanghai.aliyuncs.com/ice-generated/4e1021a072****5f6f7d6496302/snapshots/sprite/test.srt"
  },
  "EditingConfig": {
    "SourceLanguage": "zh",
    "TargetLanguage": "en",
    "DetextArea": [[0, 0.64, 1, 0.14]],
    "BilingualSubtitle": false,
    "SubtitleTranslate": {
      "OcrArea": "Auto",
      "SubtitleConfig": {
        "Type": "Text",
        "FontSize": 95,
        "FontColorOpacity": 1,
        "Color": "#ffffff",
        "X": 0.5,
        "Y": 0.686,
        "Angle": 0,
        "Spacing": 0,
        "TextWidth": 0.9,
        "Font": "Alibaba PuHuiTi",
        "FontColor": "#ffffff",
        "FontFace": {
          "Bold": false,
          "Italic": false,
          "Underline": false
        },
        "SizeRequestType": "RealDim",
        "SubtitleEffects": [],
        "LineSpacing": 0,
        "BorderStyle": 1,
        "Outline": 0,
        "Alignment": "Center"
      }
    },
    "SupportEditing": true,
    "NeedSpeechTranslate": false
  },
  "Title": "1735898570421.mp4",
  "OutputConfig": {
    "MediaURL": "https://****.oss-cn-shanghai.aliyuncs.com/ice-generated/******/snapshots/sprite/1735898570421.mp4"
  }
}

Terjemahan ucapan

Input file video
{
  "InputConfig": {
    "Type": "Video",
    "Video": "1628ae20c36******8f6f7c77a6302"
  },
  "EditingConfig": {
    "SourceLanguage": "zh",
    "TargetLanguage": "en",
    "DetextArea": [[0, 0.64, 1, 0.15]],
    "SupportEditing": true,
    "BilingualSubtitle": false,
    "NeedSpeechTranslate": true,
    "SpeechTranslate": {
      "SubtitleTimeForce": false,
      "SubtitleConfig": {
        "Type": "Text",
        "FontSize": 95,
        "FontColorOpacity": 1,
        "Color": "#ffffff",
        "X": 0.5,
        "Y": 0.686,
        "Angle": 0,
        "Spacing": 0,
        "TextWidth": 0.9,
        "Font": "Alibaba PuHuiTi",
        "FontColor": "#ffffff",
        "FontFace": {
          "Bold": false,
          "Italic": false,
          "Underline": false
        },
        "SizeRequestType": "RealDim",
        "SubtitleEffects": [],
        "LineSpacing": 0,
        "BorderStyle": 1,
        "Outline": 0,
        "Alignment": "Center"
      }
    }
  },
  "Title": "have a test",
  "OutputConfig": {
    "MediaURL": "https://******.oss-cn-shanghai.aliyuncs.com/ice-generated/4e1021a0720f71eeb755f6f7d6496302/snapshots/sprite/1735798757385.mp4"
  }
}
Input file video dan subtitle
{
  "InputConfig": {
    "Type": "Video",
    "Video": "738d94a0ce87******af6f7c6696302",
    "Subtitle": "https://********.oss-cn-test.aliyuncs.com/test.srt"
  },
  "EditingConfig": {
    "SourceLanguage": "zh",
    "TargetLanguage": "en",
    "DetextArea": "Auto",
    "SupportEditing": true,
    "BilingualSubtitle": false,
    "NeedSpeechTranslate": true,
    "SpeechTranslate": {
      "SubtitleTimeForce": false,
      "SubtitleConfig": {
        "Type": "Text",
        "FontSize": 95,
        "FontColorOpacity": 1,
        "Color": "#ffffff",
        "X": 0.5,
        "Y": 0.686,
        "Angle": 0,
        "Spacing": 0,
        "TextWidth": 0.9,
        "Font": "Alibaba PuHuiTi",
        "FontColor": "#ffffff",
        "FontFace": {
          "Bold": false,
          "Italic": false,
          "Underline": false
        },
        "SizeRequestType": "RealDim",
        "SubtitleEffects": [],
        "LineSpacing": 0,
        "BorderStyle": 1,
        "Outline": 0,
        "Alignment": "Center"
      },
      "OcrArea": "Auto",
      "CustomSrtType": "SourceSrt"
    }
  },
  "Title": "1736485935837.mp4",
  "OutputConfig": {
    "MediaURL": "https://*****.oss-cn-***.aliyuncs.com/test.mp4"
  }
}
Input file audio
{
  "InputConfig": {
    "Type": "Audio",
    "Audio": "2f552010c8d******e7f7f4586303"
  },
  "EditingConfig": {
    "SourceLanguage": "zh",
    "TargetLanguage": "en",
    "NeedSpeechTranslate": true
  },
  "Title": "have a test",
  "OutputConfig": {
    "MediaURL": "https://******.oss-cn-shanghai.aliyuncs.com/ice-generated/4e1021a0720f***f6f7d6496302/snapshots/sprite/test.wav"
  }
}

Terjemahan lip-sync

{
  "InputConfig": {
    "Type": "Video",
    "Video": "1628ae20c36******8f6f7c77a6302"
  },
  "EditingConfig": {
    "SourceLanguage": "zh",
    "TargetLanguage": "en",
    "DetextArea": [[0, 0.64, 1, 0.15]],
    "SupportEditing": true,
    "BilingualSubtitle": false,
    "NeedFaceTranslate": true,
    "FaceTranslate": {
      "SubtitleConfig": {
        "Type": "Text",
        "FontSize": 95,
        "FontColorOpacity": 1,
        "Color": "#ffffff",
        "X": 0.5,
        "Y": 0.686,
        "Angle": 0,
        "Spacing": 0,
        "TextWidth": 0.9,
        "Font": "Alibaba PuHuiTi",
        "FontColor": "#ffffff",
        "FontFace": {
          "Bold": false,
          "Italic": false,
          "Underline": false
        },
        "SizeRequestType": "RealDim",
        "SubtitleEffects": [],
        "LineSpacing": 0,
        "BorderStyle": 1,
        "Outline": 0,
        "Alignment": "Center"
      },
      "SpeechDurationThres": 1,
      "FacialClarity": 1,
      "SubtitleTimeForce": false
    }
  },
  "Title": "have a test",
  "OutputConfig": {
    "MediaURL": "https://******.oss-cn-shanghai.aliyuncs.com/ice-generated/4e1021a0720f71eeb755f6f7d6496302/snapshots/sprite/1735798757385.mp4"
  }
}

GetSmartHandleJob

Parameter respons AiResult

Bahasa target tunggal

Kategori

Parameter

Tipe

Deskripsi

Umum

EditingProjectId

String

ID proyek pascapengeditan.

MediaURL

String

URL aset media output.

MediaId

String

ID aset media output.

DetextVideoURL

String

URL video yang telah dihapus subtitenya.

DetextVideoMediaId

String

ID video yang telah dihapus subtitenya.

Terjemahan subtitle

OriginalSubtitleMediaId

String

ID file SRT sumber.

OriginalSubtitleURL

String

URL file SRT sumber.

TranslatedSubtitleMediaId

String

ID file SRT yang diterjemahkan.

TranslatedSubtitleURL

String

URL file SRT yang diterjemahkan.

TranslatedText

String

Teks yang diterjemahkan.

TranslatedTextArray

String

Array teks yang diterjemahkan untuk beberapa input subtitle.

Terjemahan ucapan

SpeechTranslatedSubtitleMediaId

String

ID file SRT untuk tampilan subtitle dalam video output.

SpeechTranslatedSubtitleURL

String

URL file SRT untuk tampilan subtitle dalam video output.

SpeechTranslatedSubtitleURLSigned

String

URL file SRT bertanda tangan untuk tampilan subtitle dalam video output.

SpeechTranslatedSubtitleMediaIdForFix

String

ID file SRT untuk koreksi terjemahan.

SpeechTranslatedSubtitleURLForFix

String

URL file SRT untuk koreksi terjemahan.

SpeechBilingualSubtitleMediaId

String

ID file SRT dwibahasa.

SpeechBilingualSubtitleURL

String

URL file SRT dwibahasa.

SpeechTranslationJobId

String

ID tugas terjemahan ucapan untuk pascapengeditan.

TranslatedAudioMediaId

String

ID file audio yang diterjemahkan.

TranslatedAudioMediaURL

String

URL file audio yang diterjemahkan.

Terjemahan lip-sync

FaceTranslationMediaId

String

ID file video hasil lip-sync.

Contoh respons:

{
  "SpeechTranslatedSubtitleURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.srt",
  "MediaId": "****9cb015bb71f0b96ff7f6d449****",
  "TranslatedAudioMediaId": "****df80e79d71efa44ae7f6c449****",
  "SpeechTranslatedSubtitleURLForFix": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test2.srt",
  "EditingProjectId": "****febec2bf4377b923cf5b1742****",
  "DetextVideoURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test3.mp4",
  "FaceTranslationMediaId": "****138015bb71f0b96ff7f6d449****",
  "SpeechTranslationJobId": "****0c827a664b4f88b33d8d46e3****"
}

Bahasa target ganda

Parameter

Tipe

Deskripsi

DetextVideoURL

String

URL video yang telah dihapus subtitenya.

DetextVideoMediaId

String

ID video yang telah dihapus subtitenya.

VideoTranslationAiResultMap

JSON

Output terjemahan dikelompokkan berdasarkan bahasa target. Setiap kunci adalah kode bahasa (misalnya, en), dan nilainya berisi parameter hasil terjemahan untuk bahasa tersebut.

VideoTranslationAiResultMap

Kategori

Parameter

Tipe

Deskripsi

Umum

MediaURL

String

URL aset media output untuk bahasa target.

MediaId

String

ID aset media output untuk bahasa target.

Terjemahan subtitle

OriginalSubtitleMediaId

String

ID file SRT sumber.

OriginalSubtitleURL

String

URL file SRT sumber.

TranslatedSubtitleMediaId

String

ID file SRT yang diterjemahkan.

TranslatedSubtitleURL

String

URL file SRT yang diterjemahkan.

TranslatedText

String

Teks yang diterjemahkan.

TranslatedTextArray

String

Array teks yang diterjemahkan untuk beberapa entri subtitle.

Terjemahan ucapan

SpeechTranslatedSubtitleMediaId

String

ID file SRT untuk tampilan subtitle dalam video output.

SpeechTranslatedSubtitleURL

String

URL file SRT untuk tampilan subtitle dalam video output.

SpeechTranslatedSubtitleURLSigned

String

URL file SRT bertanda tangan untuk tampilan subtitle dalam video output.

SpeechTranslatedSubtitleMediaIdForFix

String

ID file SRT untuk koreksi terjemahan.

SpeechTranslatedSubtitleURLForFix

String

URL file SRT bertanda tangan untuk koreksi terjemahan.

SpeechBilingualSubtitleMediaId

String

ID output dwibahasa.

SpeechBilingualSubtitleURL

String

URL output dwibahasa.

SpeechTranslationJobId

String

ID tugas terjemahan ucapan untuk pascapengeditan.

TranslatedAudioMediaId

String

ID file audio yang diterjemahkan.

TranslatedAudioMediaURL

String

URL file audio yang diterjemahkan.

Terjemahan lip-sync

FaceTranslationMediaId

String

ID file video hasil lip-sync.

Contoh respons
{
  "VideoTranslationAiResultMap": {
    "en": {
      "SpeechTranslatedSubtitleURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.srt",
      "MediaId": "****4d00087171f0bf81f6f7d44b****",
      "TranslatedAudioMediaId": "****df80e79d71efa44ae7f6c449****",
      "SpeechTranslatedSubtitleURLForFix": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test2.srt",
      "EditingProjectId": "****983759c045c387146888713d****",
      "SpeechTranslationJobId": "****33cc65164f13aace55a0f0d3****"
    },
    "es": {
      "SpeechTranslatedSubtitleURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test3.srt",
      "MediaId": "****cec0087171f09033f7f6d449****",
      "TranslatedAudioMediaId": "****a7f0085671f0bf81f6f7d44b****",
      "SpeechTranslatedSubtitleURLForFix": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test4.srt",
      "EditingProjectId": "****d16f4a874c4898d254d4b68e****",
      "SpeechTranslationJobId": "****f705193c404e9bec19859a11****"
    }
  },
  "DetextVideoURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test5.mp4"
}

Contoh skenario

Terjemahan ucapan dengan pascapengeditan

Koreksi file SRT yang dihasilkan dan kirim ulang untuk menyempurnakan output terjemahan.

Penting

Terjemahan lip-sync hanya mendukung koreksi output suara. Pascapengeditan gerakan bibir tidak tersedia.

Prosedur

  1. Kirim tugas terjemahan ucapan dengan SupportEditing diatur ke true.

       {
         "InputConfig": {
           "Type": "Video",
           "Video": "*****a0052ff71efbfd4e7e6c66*****"
         },
         "OutputConfig": {
           "MediaURL": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/video.mp4"
         },
         "EditingConfig": {
           "SourceLanguage": "zh",
           "TargetLanguage": "en",
           "SupportEditing": true,
           "NeedSpeechTranslate": true
         }
       }
  2. Ambil hasil tugas. Respons mencakup:

    Field

    Deskripsi

    MediaId

    ID aset media output.

    TranslatedAudioMediaId

    ID file audio yang diterjemahkan.

    SpeechTranslatedSubtitleURL

    URL file SRT yang diterjemahkan untuk tampilan subtitle dalam video output.

    SpeechTranslatedSubtitleURLSigned

    URL bertanda tangan dari file SRT yang diterjemahkan.

    SpeechTranslatedSubtitleURLForFix

    URL bertanda tangan dari file SRT untuk koreksi terjemahan.

    SpeechTranslationJobId

    ID tugas terjemahan ucapan. Gunakan nilai ini untuk OriginalJobId dalam pengiriman ulang.

       {
         "MediaId": "*****d306b6d71efbf98f6f7f55*****",
         "TranslatedAudioMediaId": "*****d306b6d71efbf98f6f7f5*****",
         "SpeechTranslatedSubtitleURL": "http://your-bucket.oss-cn-shanghai.aliyuncs.com/video_subtitle_asr_en.srt",
         "SpeechTranslatedSubtitleURLSigned": "http://your-bucket.oss-cn-shanghai.aliyuncs.com/***.srt",
         "SpeechTranslatedSubtitleURLForFix": "http://your-bucket.oss-cn-shanghai.aliyuncs.com/***.srt",
         "SpeechTranslationJobId": "*****74f329d4c03b63e7f7dac8*****"
       }
  3. Unduh file SRT dari SpeechTranslatedSubtitleURLForFix, modifikasi kontennya, dan kirim ulang tugas tersebut. Sistem akan menghasilkan ulang output berdasarkan subtitle yang dimodifikasi.

    Penting

    Parameter InputConfig.Subtitle harus berisi file yang telah dikoreksi secara manual, yaitu versi modifikasi dari file yang berasal dari SpeechTranslatedSubtitleURLForFix.

       {
         "InputConfig": {
           "Type": "Video",
           "Video": "*****a0052ff71efbfd4e7e6c66*****",
           "Subtitle": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/new_subtitle.srt"
         },
         "OutputConfig": {
           "MediaURL": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/video.mp4"
         },
         "EditingConfig": {
           "SourceLanguage": "zh",
           "TargetLanguage": "en",
           "SupportEditing": true,
           "NeedSpeechTranslate": true,
           "SpeechTranslate": {
             "OriginalJobId": "*****b5d5d604916bb898b3066*****",
             "SubtitleConfig": {
               "Type": "Text",
               "FontSize": 95,
               "FontColorOpacity": 1,
               "Color": "#ffffff",
               "X": 0.5,
               "Y": 0.686,
               "Angle": 0,
               "Spacing": 0,
               "TextWidth": 0.9,
               "Font": "Alibaba PuHuiTi",
               "FontColor": "#ffffff",
               "FontFace": {
                 "Bold": false,
                 "Italic": false,
                 "Underline": false
               },
               "SizeRequestType": "RealDim",
               "SubtitleEffects": [],
               "LineSpacing": 0,
               "BorderStyle": 1,
               "Outline": 0,
               "Alignment": "Center"
             }
           }
         }
       }

Tanda pascapengeditan

Penting

Baris subtitle tidak boleh memiliki konten dan tanda pascapengeditan yang kosong secara bersamaan (termasuk spasi dan karakter tab). Untuk menampilkan baris kosong tanpa mengubah audio, tambahkan <--onlymodifytext> pada baris tersebut.

Mark

Efek

Deskripsi

<--copy>

Gunakan audio asli

Ganti audio dalam rentang waktu dengan audio asli dari video sumber.

<--fsttran>

Gunakan terjemahan awal

Ganti audio dalam rentang waktu dengan hasil terjemahan awal.

<--mute>

Bisukan pembicara

Bisukan suara pembicara dalam rentang waktu tersebut.

<--mute_all>

Bisukan semua audio

Bisukan semua audio dalam rentang waktu tersebut.

<--onlymodifytext>

Modifikasi hanya teks

Ubah teks subtitle yang ditampilkan tanpa mengubah audio.

Contoh file SRT:

1
00:00:01,000 --> 00:00:03,000
大家好,
<--copy>Hello everyone,

2
00:00:03,500 --> 00:00:06,000
欢迎来到今天的讲座。
<--fsttran>welcome to today's lecture.

3
00:00:07,000 --> 00:00:10,000
我们将讨论未来的技术趋势。
<--mute>We'll discuss the future technology trends.

4
00:00:11,000 --> 00:00:14,000
请大家准备好提问。
<--mute_all>Please get ready to ask questions.

5
00:00:15,000 --> 00:00:18,000
现在让我们开始吧。
<--onlymodifytext>Now, let's get started.

Perpustakaan hotword kustom

Gunakan EditingConfig.HotwordLibraryIdList untuk menentukan pemetaan hotword dan meningkatkan akurasi transkripsi serta terjemahan.

Cara kerja

image

Perpustakaan hotword kustom menyediakan:

  • Menentukan terjemahan istilah: Tentukan cara menerjemahkan istilah tertentu. Misalnya, petakan "Intelligent Media Services" ke "IMS", atau petakan "YYDS" (slang internet Tiongkok untuk "dewa abadi") ke "The GOAT".

  • Meningkatkan akurasi pengenalan: Tingkatkan pengenalan istilah khusus industri, termasuk lokasi geografis, nama produk, homofon, dan kata-kata yang tidak umum.

Referensi API:

Kode contoh

Dependensi Maven:

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.8</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.78</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.6.3</version>
</dependency>

Buat dan gunakan perpustakaan hotword:

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;

import static com.aliyuncs.http.ProtocolType.HTTPS;

public class VideoTranslationHotwordTest {

    // Dapatkan kredensial AccessKey dari variabel lingkungan.
    static String ak = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    static String sk = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");

    // Tentukan endpoint dan wilayah.
    static String endpoint = "ice.cn-hangzhou.aliyuncs.com";
    static String region = "cn-hangzhou";

    @Data
    @Builder
    @AllArgsConstructor
    public static class Hotword {
        @JSONField(name = "Text")
        private String text;
        @JSONField(name = "Weight")
        private Integer weight;
        @JSONField(name = "Language")
        private String language;
        @JSONField(name = "TranspositionResultList")
        private List<TranspositionResult> transpositionResultList;
    }

    @Data
    @Builder
    @AllArgsConstructor
    public static class TranspositionResult {
        @JSONField(name = "TranslatedText")
        private String translatedText;
        @JSONField(name = "TargetLanguage")
        private String targetLanguage;
    }

    public static String createHotwordLibrary(String name, String description, List<Hotword> hotwords) throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain(endpoint);
        request.setSysVersion("2020-11-09");
        request.setHttpContentType(FormatType.JSON);
        request.setSysProtocol(ProtocolType.HTTPS);

        request.setSysAction("CreateHotwordLibrary");
        request.putBodyParameter("Name", name);
        request.putBodyParameter("Description", description);
        request.putBodyParameter("Hotwords", JSONObject.parseArray(JSONObject.toJSONString(hotwords)));
        request.putBodyParameter("UsageScenario", "VideoTranslation");

        DefaultProfile profile = DefaultProfile.getProfile(region, ak, sk);
        IAcsClient ascClient = new DefaultAcsClient(profile);

        CommonResponse commonResponse = ascClient.getCommonResponse(request);
        JSONObject data = JSONObject.parseObject(commonResponse.getData());
        String hotwordLibraryId = data.getString("HotwordLibraryId");
        System.out.println("HotwordLibraryId:" + hotwordLibraryId);
        return hotwordLibraryId;
    }

    public static String getHotwordLibrary(String hotwordLibraryId) throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain(endpoint);
        request.setSysVersion("2020-11-09");
        request.setHttpContentType(FormatType.JSON);
        request.setSysProtocol(ProtocolType.HTTPS);

        request.setSysAction("GetHotwordLibrary");
        request.putBodyParameter("HotwordLibraryId", hotwordLibraryId);
        DefaultProfile profile = DefaultProfile.getProfile(region, ak, sk);
        IAcsClient ascClient = new DefaultAcsClient(profile);
        CommonResponse commonResponse = ascClient.getCommonResponse(request);
        System.out.println(JSONObject.toJSONString(commonResponse.getData()));
        return commonResponse.getData();
    }

    public static void listHotwordLibraries() throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain(endpoint);
        request.setSysVersion("2020-11-09");
        request.setHttpContentType(FormatType.JSON);
        request.setSysProtocol(ProtocolType.HTTPS);

        request.setSysAction("ListHotwordLibraries");
        request.putBodyParameter("UsageScenario", "VideoTranslation");
        request.putBodyParameter("MaxResults", 10);
        DefaultProfile profile = DefaultProfile.getProfile(region, ak, sk);
        IAcsClient ascClient = new DefaultAcsClient(profile);
        CommonResponse commonResponse = ascClient.getCommonResponse(request);
        System.out.println(JSONObject.toJSONString(commonResponse.getData()));
    }

    public static void testCreateHotword() throws InterruptedException, ClientException {
        String hotwordList = "宋察=Song Cha;朴颂=Piao Song;万妮=Wanni;妮妮=Nini;万母=Wanni's mother;万父=Wanni's father;胡恩=Hu En;朱琳=Zhu Lin;素莎=Susha;希娜=Sheena;胡母=Mother Hu;万卡=Wanka;医院院长=Hospital director;死老头=Damn old man;缅甸=Myanmar;济岛=Ji Island;韩城=Hancheng;丘比特=Cupid;璀璨之心=The heart of brilliance;避孕药=contraceptive pill;黄豆酱汤=Soybean paste soup;接待处=Reception;贱人=bitch;虎帮=The Tiger Gang;鸿帮=The Hong Gang;混蛋=Bastart";
        String sourceLanguage = "zh";
        String targetLanguage = "en";

        List<Hotword> hotwords = new ArrayList<>();
        String[] hotwordTranslationArray = hotwordList.split(";");

        for (String hotwordTranslation : hotwordTranslationArray) {
            String originalWord = hotwordTranslation.split("=")[0];
            String translationWord = hotwordTranslation.split("=")[1];

            // Tambahkan hasil terjemahan dalam beberapa bahasa target.
            List<TranspositionResult> transpositionList = new ArrayList<>();
            transpositionList.add(TranspositionResult.builder().translatedText(translationWord).targetLanguage(targetLanguage).build());
            hotwords.add(Hotword.builder().language(sourceLanguage).weight(4).text(originalWord).transpositionResultList(transpositionList).build());
        }

        // Buat perpustakaan hotword.
        String hotwordLibraryId = createHotwordLibrary("Name", "Description", hotwords);

        // Ambil detail tentang perpustakaan hotword tertentu.
        getHotwordLibrary(hotwordLibraryId);

        // Daftar semua perpustakaan hotword.
        listHotwordLibraries();
    }

    public static void testVideoTranslation() throws ClientException {

        // Atur HotwordLibraryIdList di EditingConfig ke ID perpustakaan hotword.
        String subtitleTranslationConfigStr = "{\n" +
                "\t\"InputConfig\": {\n" +
                "        \"Type\": \"Video\",\n" +
                "        \"Video\": \"https://your-bucket.oss-cn-shanghai.aliyuncs.com/translation/your.mp4\"\n" +
                "    },\n" +
                "    \"OutputConfig\": {\n" +
                "        \"MediaURL\": \"https://your-bucket.oss-cn-shanghai.aliyuncs.com/speech_translate/your_outout.mp4\",\n" +
                "    },\n" +
                "    \"EditingConfig\": {\n" +
                "        \"SourceLanguage\": \"zh\",\n" +
                "        \"TargetLanguage\": \"en\",\n" +
                "        \"SupportEditing\": \"true\",\n" +
                "        \"TextSource\": \"OCR\",\n" +
                "        \"HotwordLibraryIdList\": \"*****00ef45f54a87a61be313a221*****\",\n" +
                "        \"SubtitleTranslate\": {\n" +
                "            \"SubtitleConfig\": {\n" +
                "                \"FontSize\": 40,\n" +
                "                \"Alignment\": \"TopCenter\",\n" +
                "                \"Y\": 0.8,\n" +
                "                \"FontColor\": \"#ffffff\",\n" +
                "                \"TextWidth\": 0.9,\n" +
                "                \"Shadow\": 2,\n" +
                "                \"BackColour\": \"#000000\",\n" +
                "                \"AdaptMode\": \"AutoWrapAtSpacesStrict\"\n" +
                "            }\n" +
                "        }\n" +
                "    }\n" +
                "}";

        // Atur HotwordLibraryIdList di EditingConfig ke ID perpustakaan hotword.
        String speechTranslationConfigStr = "{\n" +
                "\t\"InputConfig\": {\n" +
                "        \"Type\": \"Video\",\n" +
                "        \"Video\": \"https://your-bucket.oss-cn-shanghai.aliyuncs.com/translation/your.mp4\"\n" +
                "    },\n" +
                "    \"OutputConfig\": {\n" +
                "        \"MediaURL\": \"https://your-bucket.oss-cn-shanghai.aliyuncs.com/speech_translate/your_outout.mp4\",\n" +
                "    },\n" +
                "    \"EditingConfig\": {\n" +
                "        \"SourceLanguage\": \"zh\",\n" +
                "        \"TargetLanguage\": \"en\",\n" +
                "        \"SupportEditing\": \"true\",\n" +
                "        \"TextSource\": \"ASR\",\n" +
                "        \"HotwordLibraryIdList\": \"*****00ef45f54a87a61be313a221*****\",\n" +
                "        \"SpeechTranslate\": {\n" +
                "            \"SubtitleConfig\": {\n" +
                "                \"FontSize\": 40,\n" +
                "                \"Alignment\": \"TopCenter\",\n" +
                "                \"Y\": 0.8,\n" +
                "                \"FontColor\": \"#ffffff\",\n" +
                "                \"TextWidth\": 0.9,\n" +
                "                \"Shadow\": 2,\n" +
                "                \"BackColour\": \"#000000\",\n" +
                "                \"AdaptMode\": \"AutoWrapAtSpacesStrict\"\n" +
                "            }\n" +
                "        }\n" +
                "    }\n" +
                "}";
        JSONObject subtitleTranslationConfig = JSONObject.parseObject(subtitleTranslationConfigStr);
        JSONObject speechTranslationConfig = JSONObject.parseObject(speechTranslationConfigStr);

        doSubmitVideoTranslationJob(subtitleTranslationConfig.getString("InputConfig"), subtitleTranslationConfig.getString("OutputConfig"), subtitleTranslationConfig.getString("EditingConfig"));
        doSubmitVideoTranslationJob(speechTranslationConfig.getString("InputConfig"), speechTranslationConfig.getString("OutputConfig"), speechTranslationConfig.getString("EditingConfig"));
    }


    private static void doSubmitVideoTranslationJob(String inputConfig, String outputConfig, String editingConfig) throws ClientException {

        try {
            CommonRequest request = new CommonRequest();
            request.setSysMethod(MethodType.POST);
            request.setSysDomain(endpoint);
            request.setSysProtocol(HTTPS);
            request.setSysVersion("2020-11-09");
            request.setHttpContentType(FormatType.JSON);
            request.setSysAction("SubmitVideoTranslationJob");
            request.putBodyParameter("InputConfig", inputConfig);
            request.putBodyParameter("EditingConfig", editingConfig);

            if (StringUtils.isNotBlank(outputConfig)) {
                outputConfig = outputConfig.replaceAll("placeholder", "test" + System.currentTimeMillis());
                request.putBodyParameter("OutputConfig", outputConfig);
            }

            DefaultProfile profile = DefaultProfile.getProfile(region, ak, sk);
            IAcsClient ascClient = new DefaultAcsClient(profile);
            CommonResponse commonResponse = ascClient.getCommonResponse(request);

            JSONObject data = JSONObject.parseObject(commonResponse.getData());

            System.out.printf("doSubmitVideoTranslationJobBody:" + data.toJSONString());
        } catch (ClientException clientException) {
            throw clientException;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

Referensi

Penagihan

Untuk detail harga, lihat Penagihan terjemahan video.