全部产品
Search
文档中心

Intelligent Media Services:Parameter dan contoh terjemahan video

更新时间:Nov 05, 2025

Dokumen ini menjelaskan parameter untuk operasi SubmitVideoTranslationJob API serta memberikan contohnya. Juga dijelaskan parameter untuk mengambil hasil terjemahan video menggunakan GetSmartHandleJob.

Catatan

Layanan ini tersedia di wilayah berikut:

  • Terjemahan tingkat subtitle: Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Shenzhen), Tiongkok (Hangzhou), Asia Pasifik SE 1 (Singapura), dan AS (AS Barat).

  • Terjemahan tingkat ucapan: Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Shenzhen), Tiongkok (Hangzhou), Asia Pasifik SE 1 (Singapura), dan AS (AS Barat).

  • Terjemahan tingkat wajah: Tiongkok (Shanghai) dan Asia Pasifik SE 1 (Singapura). Wilayah lainnya tidak didukung.

Parameter SubmitVideoTranslationJob

Penting

Anda dapat membedakan antara terjemahan tingkat subtitle, tingkat ucapan, dan tingkat wajah menggunakan parameter berikut:

Parameter

Tipe

Diperlukan

Nama

Deskripsi

InputConfig

String

Ya

Konfigurasi input

  • Sebuah string dalam format JSON.

  • Untuk informasi lebih lanjut tentang parameter bersarang, lihat bagian berikut.

OutputConfig

String

Ya

Konfigurasi output

  • Sebuah string dalam format JSON.

  • Untuk informasi lebih lanjut tentang parameter bersarang, lihat bagian berikut.

EditingConfig

String

Ya

Konfigurasi terjemahan

  • Sebuah string dalam format JSON.

  • Untuk informasi lebih lanjut tentang parameter bersarang, lihat bagian berikut.

Judul

String

Tidak

Judul

Deskripsi

String

Tidak

Deskripsi

UserData

String

Tidak

Informasi kustom dalam format JSON. Panjang maksimum adalah 512 byte.

Parameter InputConfig

Parameter

Tipe

Diperlukan

Nama

Deskripsi

Tipe

String

Ya

Tipe input

  • Nilai valid:

    • Video

    • Audio

    • Subtitle

Catatan
  • Untuk terjemahan tingkat subtitle (kedua NeedSpeechTranslate dan NeedFaceTranslate adalah false), Anda dapat mengatur Type ke Video atau Subtitle.

  • Untuk terjemahan tingkat ucapan (NeedSpeechTranslate adalah true), Anda dapat mengatur Type ke Video atau Audio.

  • Untuk terjemahan tingkat wajah (NeedFaceTranslate adalah true), Anda hanya dapat mengatur Type ke Video.

Video

String

Tidak

ID aset media video atau alamat

  • Tentukan parameter ini ketika Type diatur ke Video.

  • Anda dapat menentukan salah satu dari berikut:

    • ID aset media.

    • Alamat OSS di bawah akun Anda.

    • Alamat lain yang dapat diakses publik.

Audio

String

Tidak

ID aset media audio atau alamat

  • Tentukan parameter ini ketika Type diatur ke Audio.

  • Anda dapat menentukan salah satu dari berikut:

    • ID aset media.

    • Alamat OSS di bawah akun Anda.

    • Alamat lain yang dapat diakses publik.

    • Format yang didukung: MP3 dan WAV.

Subtitle

String

Tidak

ID aset media subtitle atau alamat

  • Tentukan parameter ini ketika Type diatur ke Subtitle.

  • Anda dapat menentukan salah satu dari berikut:

    • ID aset media.

    • Alamat OSS di bawah akun Anda.

    • Alamat lain yang dapat diakses publik.

    • Format yang didukung: SRT.

Parameter OutputConfig

Parameter

Tipe

Diperlukan

Nama

Deskripsi

OutputTarget

String

Tidak

Tipe output

Menentukan apakah akan mengeluarkan ke OSS atau VOD.

  • Nilai default: OSS.

  • Nilai valid:

    • OSS: Keluaran ke OSS.

    • VOD: Keluaran ke VOD.

MediaURL

String

Ya

Alamat output

  • Masukkan alamat OSS di bawah akun Anda.

  • Sertakan ekstensi file dalam jalur. Sistem menentukan tipe output berdasarkan ekstensi. Ekstensi yang didukung:

    • Jika InputConfig.Type adalah Video, MP4 didukung.

    • Jika InputConfig.Type adalah Audio, WAV didukung.

    • Jika InputConfig.Type adalah Subtitle, SRT didukung.

StorageLocation

String

Tidak

Alamat penyimpanan VOD

  • Tentukan parameter ini ketika tipe output adalah VOD.

  • Jangan sertakan awalan http:// atau https://.

Contoh: outin-*****c7d2a3811eb83da00163e0*****.oss-cn-shanghai.aliyuncs.com

NamaFile

String

Tidak

Nama file VOD

  • Tentukan parameter ini ketika tipe output adalah VOD.

  • Sertakan ekstensi file dalam nama file. Sistem menentukan tipe output berdasarkan ekstensi. Ekstensi yang didukung: mp4, wav, dan srt.

Width

Integer

Tidak

Lebar video output dalam piksel

  • Lebar video output. Contoh: 1080.

  • Secara default, lebar video sumber digunakan.

Height

Integer

Tidak

Tinggi video output dalam piksel

  • Tinggi video output. Contoh: 1920.

  • Mengikuti sumber (default)

Video

JSONObject

Tidak

{"Crf": 27}

Konfigurasi untuk aliran video output, seperti Crf dan Codec.

Parameter EditingConfig

Parameter

Tipe

Diperlukan

Nama

Deskripsi

BahasaSumber

String

Ya

Bahasa sumber

Bahasa Target

String

Ya

Bahasa target

  • Kode untuk bahasa target. Contoh: en. Anda dapat menentukan beberapa kode bahasa yang dipisahkan dengan koma, seperti "en,ja,id". Output akan mencakup hasil terjemahan untuk semua bahasa yang ditentukan.

  • Untuk informasi lebih lanjut tentang nilai valid, lihat Nilai valid TargetLanguage.

DetextArea

String

Tidak

Menentukan apakah akan menghapus subtitle

  • Jika Anda meninggalkan parameter ini kosong, subtitle tidak dihapus.

  • Nilai yang valid:

    • Auto: Secara otomatis mendeteksi area untuk dihapus.

    • [[x, y, width, height]]: Menentukan area untuk dihapus. Ini adalah array dua dimensi yang dapat menentukan beberapa area.

      • x: Jarak horizontal dari sudut kiri atas video ke sudut kiri atas kotak subtitle, sebagai rasio. Nilai valid: [0, 1].

      • y: Jarak vertikal dari sudut kiri atas video ke sudut kiri atas kotak subtitle, sebagai rasio. Nilai valid: [0, 1].

      • width: Lebar kotak subtitle relatif terhadap lebar video, sebagai rasio. Nilai valid: [0, 1].

      • height: Tinggi kotak subtitle relatif terhadap tinggi video, sebagai rasio. Nilai valid: [0, 1].

SupportEditing

Boolean

Tidak

Menentukan apakah akan mengaktifkan pengeditan sekunder. Untuk memperbaiki hasil terjemahan, aktifkan fitur ini.

  • Nilai valid:

    • true: Aktifkan.

    • false: Nonaktifkan.

  • Nilai default: false.

Subjudul Dua Bahasa

Boolean

Tidak

Menentukan apakah akan mengeluarkan subtitle dwibahasa

  • Parameter ini didukung untuk terjemahan tingkat subtitle, tingkat wajah, dan tingkat ucapan. Ini mengontrol jenis subtitle dalam video output.

  • Nilai yang valid:

    • true: Keluaran subtitle dwibahasa.

    • false: Keluaran subtitle monobahasa.

  • Nilai default: false.

Catatan

Jika Anda tidak ingin subtitle ditampilkan pada video output, atur nilai SubtitleTrackClip.FontSize ke 0.

SubtitleTranslate

String

Tidak

Konfigurasi terjemahan tingkat subtitle

  • Konfigurasi untuk terjemahan tingkat subtitle.

  • Jika Anda menentukan parameter ini, terjemahan tingkat subtitle akan dilakukan. Jika tidak, tidak akan dilakukan.

  • String tersebut harus dalam format JSON. Untuk informasi lebih lanjut tentang parameter input, lihat bagian berikut.

NeedSpeechTranslate

Boolean

Tidak

Menentukan apakah akan melakukan terjemahan pada tingkat ucapan

  • Nilai yang valid:

    • true: Ya.

    • false: Tidak.

  • Nilai default: false.

SpeechTranslate

String

Tidak

Konfigurasi terjemahan tingkat ucapan

  • Konfigurasi untuk terjemahan tingkat ucapan.

  • Jika NeedSpeechTranslate diatur ke true atau jika Anda menentukan parameter ini, terjemahan tingkat ucapan akan dilakukan. Jika tidak, maka tidak.

  • String tersebut harus dalam format JSON. Untuk informasi lebih lanjut tentang parameter input, lihat bagian berikut.

NeedFaceTranslate

Boolean

Tidak

Menentukan apakah akan melakukan terjemahan pada tingkat wajah

  • Nilai yang valid:

    • true: Ya.

    • false: Tidak.

  • Nilai default: false.

FaceTranslate

String

Tidak

Konfigurasi terjemahan tingkat wajah

  • Konfigurasi untuk terjemahan tingkat wajah.

  • Jika NeedFaceTranslate diatur ke true atau jika Anda menentukan parameter ini, terjemahan tingkat wajah akan dilakukan. Jika tidak, tidak akan dilakukan.

  • String tersebut harus dalam format JSON. Untuk informasi lebih lanjut tentang parameter input, lihat bagian berikut.

TextSource

String

Tidak

Metode untuk menentukan sumber subtitle

  • Content

    • ASR: Mengenali subtitle menggunakan Pengenalan Suara Otomatis (ASR).

    • OCR: Mengenali subtitle menggunakan Pengenalan Karakter Optik (OCR). Anda dapat mengatur area pengenalan menggunakan OcrArea. Ketika tipe terjemahan adalah tingkat subtitle, nilai defaultnya adalah OCR.

    • OCR_ASR: Memberikan prioritas pada OCR untuk pengenalan subtitle. Jika OCR gagal, ASR digunakan. Anda juga dapat mengatur OcrArea ketika menggunakan OCR_ASR. Ketika tipe terjemahan adalah tingkat ucapan atau tingkat wajah, nilai defaultnya adalah OCR_ASR.

    • ALL: Menggunakan hasil ASR dan timeline mereka sebagai sumber subtitle utama, lalu menggunakan OCR untuk memperbaiki hasil ASR, seperti memperbaiki kesalahan ketik. Opsi ini saat ini hanya tersedia untuk terjemahan tingkat subtitle.

    • SubtitleFile: Menggunakan file SRT eksternal sebagai sumber subtitle. Jika Anda mengatur parameter ini ke SubtitleFile, Anda harus menentukan parameter InputConfig.Subtitle.

CustomParameter

String

Tidak

Parameter kustom untuk terjemahan video

  • Mengontrol hasil terjemahan menggunakan parameter kustom. Untuk contoh parameter, lihat Contoh CustomParameter.

HotwordLibraryIdList

String

Tidak

Daftar ID pustaka kata panas

Catatan

Fitur Pustaka Hotword:

  • Mendukung terjemahan kustom untuk kata-kata panas. Anda dapat menentukan terjemahan untuk kata atau frasa tertentu. Misalnya, Anda dapat memetakan nama produk lengkap ke singkatannya, seperti "ApsaraVideo Intelligent Media Services" menjadi "IMS". Anda juga dapat memetakan istilah slang ke padanannya, seperti memetakan slang Cina "YYDS" menjadi "The GOAT".

  • Meningkatkan akurasi pengenalan kata benda khusus dalam domain bisnis tertentu, seperti nama tempat, nama produk, dan kata-kata langka. Ini juga membantu menyelesaikan masalah dengan homofon atau kata-kata yang tidak umum.

FECanvas

JSON

Tidak

Konfigurasi untuk lebar dan tinggi kanvas pratinjau antarmuka depan

  • Jika Anda mengonfigurasi parameter ini, ukuran font sebenarnya dari subtitle dalam video output secara otomatis diskalakan berdasarkan rasio dimensi kanvas terhadap dimensi video output. Ini memastikan bahwa subtitle menempati proporsi layar yang konsisten di seluruh resolusi yang berbeda untuk nilai FontSize yang sama.

  • Contoh: {"Width": 1080,"Height": 1920}

Catatan

Penggunaan FECanvas: Jika Anda mengatur FECanvas ke {"Width": 1080,"Height": 1920}, FontSize ke 100, dan dimensi video output sebenarnya adalah 720 × 1280, FontSize subtitle yang dirender akhirnya akan menjadi FontSize * Math.min(outputWidth/feWidth, outputHeight/feHeight) = 100 * Math.min(720/1080, 1280/1920) = 67.

Nilai valid untuk SourceLanguage

Terjemahan tingkat subtitle

Terjemahan tingkat ucapan

Terjemahan tingkat wajah

Ketika sumber subtitle adalah pengenalan karakter optik (OCR) (parameter TextSource diatur ke OCR atau OCR_ASR)

Ketika sumber subtitle adalah pengenalan suara otomatis (ASR) (parameter TextSource diatur ke ASR)

Ketika sumber subtitle adalah file SRT (parameter InputConfig.Subtitle ditentukan)

  • zh: Tiongkok

  • en: Inggris

  • zh: Tiongkok

  • en: Inggris

  • fr: Prancis

  • tr: Turki

  • zh: Tiongkok

  • en: Inggris

  • ja: Jepang

  • ko: Korea

  • yue: Kanton

  • de: Jerman

  • fr: Prancis

  • es: Spanyol

  • ar: Arab

  • it: Italia

  • az: Azerbaijan

  • be: Belarusia

  • bg: Bulgaria

  • bs: Bosnia

  • bn: Bengali

  • cs: Ceko

  • cy: Welsh

  • da: Bahasa Denmark

  • et: Estonia

  • fa: Persia

  • hi: Hindi

  • hbs: Kroasia

  • hu: Hungaria

  • id: Bahasa Indonesia

  • is: Islandia

  • lt: Lituania

  • lv: Bahasa Latvia

  • mi: Maori

  • mn: Mongolia

  • mr: Marathi

  • ms: Melayu

  • mt: Malta

  • ne: Nepali

  • nl: Belanda

  • no: Norwegia

  • pl: Polandia

  • pt: Portugis

  • ro: Rumania

  • ru: Rusia

  • sk: Slovak

  • sl: Slovenia

  • sq: Albania

  • zh: Tiongkok

  • en: Inggris

  • ja: Jepang

  • ko: Korea

  • yue: Kanton

  • de: Jerman

  • fr: Prancis

  • es: Spanyol

  • ar: Arab

  • it: Italia

  • az: Azerbaijan

  • be: Belarusia

  • bg: Bulgaria

  • bs: Bosnia

  • bn: Bengali

  • cs: Ceko

  • cy: Welsh

  • da: Bahasa Denmark

  • et: Estonia

  • fa: Persia

  • hi: Hindi

  • hbs: Kroasia

  • hu: Hungaria

  • id: Bahasa Indonesia

  • is: Islandia

  • lt: Lituania

  • lv: Bahasa Latvia

  • mi: Maori

  • mn: Mongolia

  • mr: Marathi

  • ms: Melayu

  • mt: Malta

  • ne: Nepali

  • nl: Belanda

  • no: Norwegia

  • pl: Polandia

  • pt: Portugis

  • ro: Rumania

  • ru: Rusia

  • sk: Slovak

  • sl: Slovenia

  • sq: Albania

  • zh: Tiongkok

  • en: Inggris

  • ja: Jepang

  • ko: Korea

  • yue: Kanton

  • de: Jerman

  • fr: Prancis

  • es: Spanyol

  • ar: Arab

  • it: Italia

  • az: Azerbaijan

  • be: Belarusia

  • bg: Bulgaria

  • bs: Bosnia

  • bn: Bengali

  • cs: Ceko

  • cy: Wales

  • da: Bahasa Denmark

  • et: Estonia

  • fa: Persia

  • hi: Hindi

  • hbs: Kroasia

  • hu: Hungaria

  • id: Bahasa Indonesia

  • is: Islandia

  • lt: Lituania

  • lv: Latvia

  • mi: Maori

  • mn: Mongolia

  • mr: Marathi

  • ms: Melayu

  • mt: Malta

  • ne: Nepali

  • nl: Belanda

  • no: Norwegia

  • pl: Polandia

  • pt: Portugis

  • ro: Rumania

  • ru: Rusia

  • sk: Slovak

  • sl: Slovenia

  • sq: Albania

Nilai valid TargetLanguage

Terjemahan tingkat subtitle

Terjemahan tingkat ucapan

Terjemahan tingkat wajah

  • zh: Tiongkok

  • zh-tw: Tiongkok Tradisional

  • en: Inggris

  • ja: Jepang

  • id: Bahasa Indonesia

  • es: Spanyol

  • pt: Portugis

  • ar: Arab

  • fr: Prancis

  • tr: Turki

  • yue: Kanton

  • de: Jerman

  • ko: Korea

  • ru: Rusia

  • th: Thai

  • vi: Vietnam

  • ms: Melayu

  • ----Berikut ini adalah dialek Tiongkok. Hasil terjemahan akan memiliki karakteristik lokal.----

  • Sichuan: Bahasa Sichuan

  • dongbei: Mandarin Timur Laut

  • Henan: Orang Henan

  • shanghai: Shanghainese

  • tianjin: Dialek Tianjin

    beijing: Dialek Beijing

  • chongqing: Dialek Chongqing

  • hunan: Hunan

  • taiwan: Hokkien Taiwan

  • shanxi: Dialek Shanxi

  • shaanxi: Dialek Shaanxi

  • 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: Thai

  • id: Bahasa Indonesia

  • ----Berikut ini adalah dialek Tiongkok. Hasil terjemahan akan memiliki karakteristik lokal.----

  • Sichuan: Bahasa Sichuan

  • tianjin: Dialek Tianjin

  • en: Inggris

Parameter SubtitleTranslate

Nama

Tipe

Diperlukan

Nama

Deskripsi

OcrArea

String

Tidak

Area pengenalan OCR

  • Jika Anda meninggalkan parameter ini kosong, sistem secara cerdas mendeteksi area subtitle.

  • Nilai yang valid:

  • Auto: Secara otomatis mendeteksi area subtitle.

  • [x, y, width, height]: Menentukan area subtitle. Ini adalah array satu dimensi yang hanya dapat menentukan satu area.

    • x: Jarak horizontal dari sudut kiri atas video ke sudut kiri atas kotak subtitle, sebagai rasio. Nilai valid: [0, 1].

    • y: Jarak vertikal dari sudut kiri atas video ke sudut kiri atas kotak subtitle, sebagai rasio. Nilai valid: [0, 1].

    • width: Lebar kotak subtitle relatif terhadap lebar video, sebagai rasio. Nilai valid: [0, 1].

    • height: Tinggi kotak subtitle relatif terhadap tinggi video, sebagai rasio. Nilai valid: [0, 1].

SubtitleConfig

String

Tidak

Konfigurasi komposisi subtitle

  • Kustomisasi efek subtitle dalam video output. Parameter konsisten dengan parameter subtitle dalam SubtitleTrackClip dari garis waktu dalam pengeditan video. Untuk informasi lebih lanjut, lihat SubtitleTrackClip.

  • String harus dalam format JSON.

  • Jika Anda tidak ingin subtitle ditampilkan dalam video output, atur nilai dari SubtitleTrackClip.FontSize menjadi 0.

Parameter SpeechTranslate

Nama

Tipe

Diperlukan

Nama

Deskripsi

OcrArea

String

Tidak

Area pengenalan OCR

  • Jika Anda meninggalkan parameter ini kosong, sistem secara cerdas mendeteksi area subtitle.

  • Nilai valid:

  • Auto: Secara otomatis mendeteksi area subtitle.

  • [x, y, width, height]: Menentukan area subtitle. Ini adalah array satu dimensi yang hanya dapat menentukan satu area.

    • x: Jarak horizontal dari sudut kiri atas video ke sudut kiri atas kotak subtitle, sebagai rasio. Nilai valid: [0, 1].

    • y: Jarak vertikal dari sudut kiri atas video ke sudut kiri atas kotak subtitle, sebagai rasio. Nilai valid: [0, 1].

    • width: Lebar kotak subtitle relatif terhadap lebar video, sebagai rasio. Nilai valid: [0, 1].

    • height: Tinggi kotak subtitle relatif terhadap tinggi video, sebagai rasio. Nilai valid: [0, 1].

CustomSrtType

String

Tidak

Tipe file SRT input kustom

  • Parameter ini diperlukan ketika sumber subtitle adalah file SRT yang ditentukan (yaitu, InputConfig.Subtitle ditentukan).

  • Nilai valid:

    • SourceSrt: Subtitle monolingual bahasa sumber.

    • TargetSrt: Subtitle monolingual bahasa target.

    • BilingualSrtSrcFirst: Subtitle SRT dwibahasa, dengan bahasa sumber di atas dan bahasa target di bawah.

    • BilingualSrtTgtFirst: Subtitle SRT dwibahasa, dengan bahasa target di atas dan bahasa sumber di bawah.

Contoh: Menerjemahkan dari Tiongkok ke Inggris.

  • Contoh file "SourceSrt":

    1
    00:00:01,000 --> 00:00:05,000
    Halo, dunia!
  • Contoh file "TargetSrt":

    1
    00:00:01,000 --> 00:00:05,000
    Hello, World!
  • Contoh file "BilingualSrtSrcFirst":

    1
    00:00:01,000 --> 00:00:05,000
    Halo, dunia!
    Hello, World!
  • Contoh file "BilingualSrtTgtFirst":

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

SubtitleTimeForce

Boolean

Tidak

Menentukan apakah hanya menerjemahkan dalam rentang waktu subtitle

  • Jika diaktifkan, terjemahan ucapan dibatasi secara ketat pada rentang waktu subtitle yang dikenali oleh OCR atau file SRT yang ditentukan. Nilai defaultnya adalah false.

  • Bidang ini hanya berlaku ketika TextSource diatur ke "OCR" atau "OCR_ASR".

SubtitleConfig

String

Tidak

Konfigurasi komposisi subtitle

  • Kustomisasi efek subtitle dalam video output. Parameter konsisten dengan parameter subtitle dalam SubtitleTrackClip dari garis waktu dalam pengeditan video. Untuk informasi lebih lanjut, lihat SubtitleTrackClip.

  • String harus dalam format JSON.

  • Jika Anda tidak ingin subtitle ditampilkan dalam video output, atur nilai dari SubtitleTrackClip.FontSize menjadi 0.

OriginalJobId

String

Tidak

ID pekerjaan asli

  • Jika Anda tidak puas dengan hasil terjemahan, Anda dapat memasukkan file subtitle yang dikoreksi secara manual dalam InputConfig.Subtitle dan ID pekerjaan asli dalam bidang ini untuk menghasilkan kembali ucapan yang diterjemahkan.

  • Ketika SupportEditing diatur ke true, hasil tugas akan mencakup SpeechTranslationJobId. Saat melakukan koreksi, lewati nilai ini ke OriginalJobId.

  • Ketika SupportEditing diatur ke true, hasil tugas akan mencakup file subtitle terjemahan SpeechTranslatedSubtitleURL. Ubah isi file ini dan lewatkan dalam InputConfig.Subtitle selama pengeditan sekunder.

SkipSong

Integer

Tidak

Lewati nyanyian a cappella

  • Nilai valid: 0 dan 1. Nilai default: 0.

  • Ketika nilainya 1, terjemahan ucapan akan mendeteksi dan melewati penerjemahan nyanyian a cappella dalam video.

  • Karena deteksi musik mungkin memiliki kesalahan, atur ini ke 1 hanya ketika Anda mengetahui ada musik latar. Jangan mengatur ini ke 1 secara default.

Parameter FaceTranslate

Nama

Tipe

Diperlukan

Nama

Deskripsi

OcrArea

String

Tidak

Area pengenalan OCR

  • Jika Anda meninggalkan parameter ini kosong, sistem secara cerdas mendeteksi area subtitle.

  • Nilai valid:

  • Auto: Secara otomatis mendeteksi area subtitle.

  • [x, y, width, height]: Menentukan area subtitle. Ini adalah array satu dimensi yang hanya dapat menentukan satu area.

    • x: Jarak horizontal dari sudut kiri atas video ke sudut kiri atas kotak subtitle, sebagai rasio. Nilai valid: [0, 1].

    • y: Jarak vertikal dari sudut kiri atas video ke sudut kiri atas kotak subtitle, sebagai rasio. Nilai valid: [0, 1].

    • width: Lebar kotak subtitle relatif terhadap lebar video, sebagai rasio. Nilai valid: [0, 1].

    • height: Tinggi kotak subtitle relatif terhadap tinggi video, sebagai rasio. Nilai valid: [0, 1].

CustomSrtType

String

Tidak

Tipe file SRT input kustom

  • Parameter ini diperlukan ketika sumber subtitle adalah file SRT yang ditentukan (yaitu, InputConfig.Subtitle ditentukan).

  • Nilai valid:

    • SourceSrt: Subtitle monolingual bahasa sumber.

    • TargetSrt: Subtitle monolingual bahasa target.

    • BilingualSrtSrcFirst: Subtitle SRT dwibahasa, dengan bahasa sumber di atas dan bahasa target di bawah.

    • BilingualSrtTgtFirst: Subtitle SRT dwibahasa, dengan bahasa target di atas dan bahasa sumber di bawah.

Contoh: Menerjemahkan dari Tiongkok ke Inggris.

  • Contoh file "SourceSrt":

    1
    00:00:01,000 --> 00:00:05,000
    Halo, dunia!
  • Contoh file "TargetSrt":

    1
    00:00:01,000 --> 00:00:05,000
    Halo,Dunia!
  • Contoh file "BilingualSrtSrcFirst":

    1
    00:00:01,000 --> 00:00:05,000
    Halo, dunia!
    Halo,Dunia!
  • Contoh file "BilingualSrtTgtFirst":

    1
    00:00:01,000 --> 00:00:05,000
    Halo,Dunia!
    Halo, dunia!

SubtitleTimeForce

Boolean

Tidak

Menentukan apakah hanya menerjemahkan dalam rentang waktu subtitle

  • Jika diaktifkan, terjemahan ucapan dibatasi secara ketat pada rentang waktu subtitle yang dikenali oleh OCR atau file SRT yang ditentukan. Nilai defaultnya adalah false.

  • Bidang ini hanya berlaku ketika TextSource diatur ke "OCR" atau "OCR_ASR".

SubtitleConfig

String

Tidak

Konfigurasi komposisi subtitle

  • Kustomisasi efek subtitle dalam video output. Parameter konsisten dengan parameter subtitle dalam SubtitleTrackClip dari garis waktu dalam pengeditan video. Untuk informasi lebih lanjut, lihat SubtitleTrackClip.

  • String harus dalam format JSON.

  • Jika Anda tidak ingin subtitle ditampilkan dalam video output, atur nilai dari SubtitleTrackClip.FontSize menjadi 0.

SpeechDurationThres

Float

Tidak

Ambang durasi terjemahan wajah

Jika durasi kalimat di bawah ambang ini, sinkronisasi bibir tidak akan dilakukan. Nilai defaultnya adalah 1 detik. Atur nilai ini menjadi lebih besar atau sama dengan 1 detik.

Durasi maksimum tidak dapat melebihi durasi total video input.

FacialClarity

Float

Tidak

Pengaturan kejelasan wajah

Nilai dari 0 hingga 1. Defaultnya adalah 1. Nilai yang lebih tinggi menghasilkan wajah yang lebih jelas. Jika video sumber memiliki kejelasan rendah, turunkan nilai ini.

Contoh CustomParameter

Contoh nilai parameter umum untuk terjemahan ucapan/wajah

Makna dan penggunaan

--add -dl

  • Menambahkan pengaturan ke tugas asli untuk mendukung kasus di mana audio sumber berisi beberapa bahasa. Jika tidak ada bahasa yang berdampingan, Anda tidak perlu menambahkan pengaturan ini. Misalnya, ketika menerjemahkan Korea ke Prancis, jika audio Korea juga berisi Inggris, menambahkan parameter ini juga akan menerjemahkan bagian Inggris ke Prancis.

  • Namun, untuk tugas terjemahan Tiongkok ke Inggris di mana audio sumber adalah campuran Tiongkok dan Inggris, sebaiknya jangan menambahkan parameter ini. Bagian Inggris akan dikeluarkan apa adanya dalam hasil, yang menghasilkan hasil yang lebih baik.

Contoh parameter

Terjemahan tingkat subtitle

File sumber = File subtitle

Penting

Terjemahan file subtitle SRT dibebankan sebagai terjemahan teks. Untuk informasi lebih lanjut, lihat Penagihan 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"
  }
}

File sumber = 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/4e1021a0720f71eeb755f6f7d6496302/snapshots/sprite/test.mp4"
  }
}

File sumber = File video + File 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 tingkat ucapan

File sumber = 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"
  }
}

File sumber = File video + File 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"
  }
}

File sumber = 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 tingkat wajah

{
  "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"
  }
}

Parameter GetSmartHandleJob

Parameter return AiResult

Bahasa target tunggal

Jika parameter TargetLanguage diatur ke satu bahasa, AiResult mengembalikan parameter berikut:

Kategori parameter return

Parameter

Tipe

Deskripsi

Umum

EditingProjectId

String

ID proyek untuk pengeditan sekunder.

MediaURL

String

URL aset media output.

MediaId

String

ID dari aset media keluaran.

DetextVideoURL

String

URL file video setelah penghapusan subtitle.

DetextVideoMediaId

String

ID aset media video setelah penghapusan subtitle.

Terjemahan tingkat subtitle

ID Media Subtitle Asli

String

ID aset media file subtitle sumber (asli).

URL Subtitle Asli

String

URL file subtitle sumber (asli).

TranslatedSubtitleMediaId

String

ID aset media file subtitle yang diterjemahkan dalam bahasa target.

URLSubJudulDiterjemahkan

String

URL file subtitle yang diterjemahkan dalam bahasa target.

TeksDiterjemahkan

String

Teks hasil terjemahan subtitle murni.

TranslatedTextArray

String

Array teks dari hasil terjemahan subtitle murni (untuk input subtitle ganda).

Terjemahan tingkat ucapan

SpeechTranslatedSubtitleMediaId

String

ID aset media file subtitle yang digunakan untuk ditampilkan dalam video output.

URL Subtitle Terjemahan Ucapan

String

URL file subtitle yang digunakan untuk ditampilkan dalam video output.

SpeechTranslatedSubtitleURLSigned

String

URL bertanda file subtitle yang digunakan untuk ditampilkan dalam video output.

SpeechTranslatedSubtitleMediaIdForFix

String

ID aset media file subtitle untuk koreksi terjemahan sekunder.

SpeechTranslatedSubtitleURLForFix

String

URL bertanda file subtitle untuk koreksi terjemahan sekunder.

SpeechBilingualSubtitleMediaId

String

ID aset media file hasil terjemahan dwibahasa ucapan.

SpeechBilingualSubtitleURL

String

URL file hasil terjemahan dwibahasa ucapan.

SpeechTranslationJobId

String

ID pekerjaan untuk terjemahan ucapan (digunakan untuk koreksi sekunder ucapan).

IdMediaAudioTerjemahan

String

ID aset media file audio yang diterjemahkan.

URLMediaAudioTerjemahan

String

URL file audio yang diterjemahkan.

Terjemahan tingkat wajah

FaceTranslationMediaId

String

ID aset media file video dengan sinkronisasi bibir.

Contoh parameter return
{
  "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

Jika parameter TargetLanguage diatur ke beberapa bahasa target, AiResult mengembalikan parameter berikut:

Parameter

Tipe

Deskripsi

DetextVideoURL

String

URL file video setelah penghapusan subtitle.

DetextVideoMediaId

String

ID media video setelah penghapusan subtitle.

VideoTranslationAiResultMap

JSON

  • Hasil terjemahan untuk bahasa target yang berbeda.

  • Deskripsi bidang JSON:

    • key: Kode bahasa target, seperti "en".

    • value: Hasil terjemahan untuk bahasa yang sesuai.

  • Untuk contoh parameter, lihat Contoh parameter return.

Deskripsi value dalam VideoTranslationAiResultMap

Kategori parameter kembali

Parameter

Tipe

Nama

Umum

MediaURL

String

URL aset media output untuk satu bahasa.

MediaId

String

ID aset media output untuk satu bahasa.

Terjemahan tingkat subtitle

OriginalSubtitleMediaId

String

ID aset media file subtitle sumber (asli).

OriginalSubtitleURL

String

URL file subtitle sumber (asli).

TranslatedSubtitleMediaId

String

ID aset media file subtitle yang diterjemahkan dalam bahasa target.

TranslatedSubtitleURL

String

URL file subtitle yang diterjemahkan dalam bahasa target.

TranslatedText

String

Teks hasil terjemahan subtitle murni.

TranslatedTextArray

String

Array teks dari hasil terjemahan subtitle murni (untuk input subtitle ganda).

Terjemahan tingkat ucapan

SpeechTranslatedSubtitleMediaId

String

ID aset media file subtitle yang digunakan untuk ditampilkan dalam video output.

SpeechTranslatedSubtitleURL

String

URL file subtitle yang digunakan untuk ditampilkan dalam video output.

SpeechTranslatedSubtitleURLSigned

String

URL bertanda file subtitle yang digunakan untuk ditampilkan dalam video output.

SpeechTranslatedSubtitleMediaIdForFix

String

ID aset media file subtitle untuk koreksi terjemahan sekunder.

SpeechTranslatedSubtitleURLForFix

String

URL bertanda file subtitle untuk koreksi terjemahan sekunder.

SpeechBilingualSubtitleMediaId

String

ID aset media file hasil terjemahan dwibahasa ucapan.

SpeechBilingualSubtitleURL

String

URL file hasil terjemahan dwibahasa ucapan.

SpeechTranslationJobId

String

ID pekerjaan untuk terjemahan ucapan (digunakan untuk koreksi sekunder ucapan).

TranslatedAudioMediaId

String

ID aset media file audio yang diterjemahkan.

TranslatedAudioMediaURL

String

URL file audio yang diterjemahkan.

Terjemahan tingkat wajah

FaceTranslationMediaId

String

ID aset media file video dengan sinkronisasi bibir.

Contoh parameter return
{
  "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 - Koreksi manual

Latar belakang

Jika Anda tidak puas dengan hasil terjemahan ucapan, Anda dapat memperbaiki file subtitle secara manual dan menyerahkan tugas kembali untuk merevisi terjemahan.

Prosedur

Penting
  • Untuk mengaktifkan koreksi manual untuk terjemahan ucapan, Anda harus mengatur parameter SupportEditing menjadi true ketika Anda menyerahkan tugas terjemahan video untuk pertama kali.

  • Catatan: Versi saat ini dari terjemahan tingkat wajah mendukung koreksi sekunder hanya untuk ucapan. Tidak mendukung koreksi sekunder untuk gerakan bibir karakter dalam video.

Contoh berikut menunjukkan parameter lengkap untuk menyerahkan tugas terjemahan tingkat ucapan untuk pertama kalinya:

{
    "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
    }
}

Hasil pengiriman terjemahan ucapan pertama adalah sebagai berikut:

{
    "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*****"
}

Parameter dijelaskan sebagai berikut:

  1. MediaId: ID aset media video output.

  2. TranslatedAudioMediaId: ID aset media audio dari terjemahan ucapan.

  3. SpeechTranslatedSubtitleURL: URL file subtitle dari terjemahan ucapan. File ini digunakan untuk ditampilkan dalam video output.

  4. SpeechTranslatedSubtitleURLSigned: URL bertanda file subtitle dari terjemahan ucapan. File ini digunakan untuk ditampilkan dalam video output.

  5. SpeechTranslatedSubtitleURLForFix: URL bertanda file subtitle untuk koreksi terjemahan sekunder.

  6. SpeechTranslationJobId: ID pekerjaan untuk terjemahan ucapan (digunakan untuk koreksi sekunder ucapan).

Jika Anda tidak puas dengan hasil terjemahan, Anda dapat mengunduh file subtitle SRT dari URL yang disediakan dalam parameter SpeechTranslatedSubtitleURLForFix, memodifikasi isinya, dan kemudian menyerahkan tugas terjemahan ucapan lagi. Audio kemudian dibuat ulang berdasarkan isi subtitle yang telah dimodifikasi.

Catatan

Anda dapat mengatur instruksi khusus dalam file SRT dari SpeechTranslatedSubtitleURLForFix untuk memengaruhi koreksi terjemahan ucapan. Untuk informasi lebih lanjut, lihat Parameter Penanda Koreksi Ucapan.

Contoh berikut menunjukkan parameter untuk koreksi sekunder. Parameter mencakup video asli, file subtitle yang telah dikoreksi, ID pekerjaan terjemahan audio asli, dan konfigurasi gaya subtitle:

Penting

Saat menyerahkan tugas koreksi terjemahan sekunder, pastikan bahwa parameter InputConfig.Subtitle melewati subtitle dwibahasa yang telah dikoreksi 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"
      }
    }
  }
}

Parameter penanda koreksi ucapan

Penting

Satu baris dalam file subtitle tidak boleh memiliki konten dan penanda koreksi ucapan yang sama-sama kosong, termasuk spasi dan tab, karena hal ini dapat menyebabkan kegagalan koreksi ucapan. Jika Anda perlu membuat baris subtitle kosong, gunakan penanda koreksi ucapan untuk menentukan cara penanganan audio. Sebagai contoh, untuk menghapus seluruh baris subtitle tanpa mengubah audio, gunakan penanda <--onlymodifytext>.

Penanda koreksi ucapan

Nama instruksi

Deskripsi

<--copy>

Gunakan audio asli

Audio dalam rentang waktu subtitle saat ini akan diganti dengan audio asli dari video.

<--fsttran>

Gunakan hasil terjemahan pertama

Audio dalam rentang waktu subtitle saat ini akan diganti dengan audio dari hasil terjemahan pertama.

<--mute>

Bisukan speaker

Suara pembicara akan dibisukan dalam rentang waktu subtitle saat ini.

<--mute_all>

Bisukan Semua

Semua suara akan dibisukan dalam rentang waktu subtitle saat ini.

<--onlymodifytext>

Ubah teks saja

Hanya isi subtitle yang akan diubah dalam rentang waktu subtitle saat ini. Audio tidak akan berubah.

Contoh berikut menunjukkan file SRT subtitle dengan penggunaan standar penanda koreksi ucapan:

1
00:00:01,000 --> 00:00:03,000
Halo semua,
<--copy>Halo semua,

2
00:00:03,500 --> 00:00:06,000
Selamat datang di kuliah hari ini.
<--fsttran>selamat datang di kuliah hari ini.

3
00:00:07,000 --> 00:00:10,000
Kita akan membahas tren teknologi masa depan.
<--mute>kita akan membahas tren teknologi masa depan.

4
00:00:11,000 --> 00:00:14,000
Silakan siapkan untuk bertanya.
<--mute_all>silakan siapkan untuk bertanya.

5
00:00:15,000 --> 00:00:18,000
Sekarang, mari kita mulai.
<--onlymodifytext>sekarang, mari kita mulai.

Menggunakan pustaka kata panas kustom

Latar belakang

Anda dapat mengonfigurasi parameter EditingConfig.HotwordLibraryIdList untuk melakukan operasi berikut:

  • Tentukan hasil transposisi untuk kata-kata panas.

  • Tingkatkan tingkat pengenalan kata-kata panas dalam skenario pengenalan ucapan tertentu.

Alur interaksi OpenAPI

Operasi API terkait kata panas berikut ditampilkan pada gambar:

Contoh pemanggilan SDK

Dependensi Maven yang diperlukan untuk menjalankan kode

<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>

Contoh kode

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 AccessKey ID dan Rahasia AccessKey dari variabel lingkungan.
    static String ak = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    static String sk = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");

    // Ganti endpoint dan wilayah dengan nilai sebenarnya Anda.
    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 ini berisi pasangan kunci-nilai yang dipisahkan oleh titik koma untuk pemetaan kata panas.
        String hotwordList = "Alex=Alex;Ben=Ben;Catherine=Catherine;Dr. Smith=Dr. Smith;CEO=Chief Executive Officer;LA=Los Angeles;NYC=New York City;ASAP=As soon as possible;FYI=For your information;Big Apple=New York City;The City=San Francisco;Old Blue Eyes=Frank Sinatra;The King=Elvis Presley;The Bard=William Shakespeare;The Iron Lady=Margaret Thatcher;bachelor=single man;scoundrel=villain";
        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];
            
            // Anda dapat menentukan 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 pustaka kata panas.
        String hotwordLibraryId = createHotwordLibrary("Nama Pustaka Kata Panas Uji", "Deskripsi Pustaka Kata Panas Uji", hotwords);

        // Kueri informasi pustaka kata panas.
        getHotwordLibrary(hotwordLibraryId);

        // Daftar pustaka kata panas.
        listHotwordLibraries();
    }

    public static void testVideoTranslation() throws ClientException {

        // Atur HotwordLibraryIdList dalam EditingConfig ke ID pustaka kata panas yang dibuat pada langkah pertama.
        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 dalam EditingConfig ke ID pustaka kata panas yang dibuat pada langkah pertama.
        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 informasi lebih lanjut tentang penagihan, lihat Informasi Penagihan untuk Terjemahan Video.