すべてのプロダクト
Search
ドキュメントセンター

Intelligent Media Services:動画翻訳のパラメーターと例

最終更新日:Nov 05, 2025

このトピックでは、SubmitVideoTranslationJob API 操作のパラメーターについて説明し、例を示します。また、GetSmartHandleJob を使用して動画翻訳の結果を取得するためのパラメーターについても説明します。

説明

このサービスは、次のリージョンで利用できます:

  • 字幕レベルの翻訳: 中国 (上海)、中国 (北京)、中国 (深圳)、中国 (杭州)、アジア太平洋 SE 1 (シンガポール)、米国 (米国西部)

  • 音声レベルの翻訳: 中国 (上海)、中国 (北京)、中国 (深圳)、中国 (杭州)、アジア太平洋 SE 1 (シンガポール)、米国 (米国西部)

  • 顔レベルの翻訳: 中国 (上海)、アジア太平洋 SE 1 (シンガポール)。その他のリージョンはサポートされていません。

SubmitVideoTranslationJob パラメーター

重要

次のパラメーターを使用して、字幕レベル、音声レベル、顔レベルの翻訳を区別できます:

パラメーター

タイプ

必須

名前

説明

InputConfig

文字列

はい

入力構成

  • JSON フォーマットの文字列です。

  • ネストされたパラメーターの詳細については、次のセクションをご参照ください。

OutputConfig

文字列

はい

出力構成

  • JSON フォーマットの文字列です。

  • ネストされたパラメーターの詳細については、次のセクションをご参照ください。

EditingConfig

文字列

はい

翻訳構成

  • JSON フォーマットの文字列です。

  • ネストされたパラメーターの詳細については、次のセクションをご参照ください。

タイトル

文字列

いいえ

タイトル

説明

文字列

いいえ

説明

UserData

文字列

いいえ

JSON フォーマットのカスタム情報。最大長は 512 バイトです。

InputConfig パラメーター

パラメーター

タイプ

必須

名前

説明

Type

String

はい

入力タイプ

  • 有効値:

    • Video

    • Audio

    • Subtitle

説明
  • 字幕レベルの翻訳 (NeedSpeechTranslateNeedFaceTranslate の両方が false) の場合、Type を Video または Subtitle に設定できます。

  • 音声レベルの翻訳 (NeedSpeechTranslate が true) の場合、Type を Video または Audio に設定できます。

  • 顔レベルの翻訳 (NeedFaceTranslate が true) の場合、Type は Video にのみ設定できます。

Video

String

いいえ

動画メディアアセット ID またはアドレス

  • Type が Video に設定されている場合にこのパラメーターを指定します。

  • 次のいずれかを指定できます:

    • メディアアセット ID。

    • アカウントの OSS アドレス。

    • その他の一般公開されているアドレス。

Audio

String

いいえ

音声メディアアセット ID またはアドレス

  • Type が Audio に設定されている場合にこのパラメーターを指定します。

  • 次のいずれかを指定できます:

    • メディアアセット ID。

    • アカウントの OSS アドレス。

    • その他の一般公開されているアドレス。

    • サポートされているフォーマット: MP3 および WAV。

Subtitle

String

いいえ

字幕メディアアセット ID またはアドレス

  • Type が Subtitle に設定されている場合にこのパラメーターを指定します。

  • 次のいずれかを指定できます:

    • メディアアセット ID。

    • アカウントの OSS アドレス。

    • その他の一般公開されているアドレス。

    • サポートされているフォーマット: SRT。

OutputConfig パラメーター

パラメーター

タイプ

必須

名前

説明

OutputTarget

String

いいえ

出力タイプ

OSS または VOD に出力するかどうかを指定します。

  • デフォルト値: OSS。

  • 有効値:

    • OSS: OSS に出力します。

    • VOD: VOD に出力します。

MediaURL

String

はい

出力アドレス

  • アカウントの OSS アドレスを入力します。

  • パスにファイル拡張子を含めます。システムは拡張子に基づいて出力タイプを決定します。サポートされている拡張子:

    • InputConfig.Type が Video の場合、MP4 がサポートされます。

    • InputConfig.Type が Audio の場合、WAV がサポートされます。

    • InputConfig.Type が Subtitle の場合、SRT がサポートされます。

StorageLocation

String

いいえ

VOD ストレージの場所

  • 出力タイプが VOD の場合にこのパラメーターを指定します。

  • http:// または https:// プレフィックスを含めないでください。

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

FileName

String

いいえ

VOD ファイル名

  • 出力タイプが VOD の場合にこのパラメーターを指定します。

  • ファイル名にファイル拡張子を含めます。システムは拡張子に基づいて出力タイプを決定します。サポートされている拡張子: mp4、wav、srt。

Width

Integer

いいえ

出力動画の幅 (ピクセル)

  • 出力動画の幅。例: 1080。

  • デフォルトでは、ソース動画の幅が使用されます。

Height

Integer

いいえ

出力動画の高さ (ピクセル)

  • 出力動画の高さ。例: 1920。

  • ソースに従う (デフォルト)

Video

JSONObject

いいえ

{"Crf": 27}

Crf や Codec などの出力動画ストリームの構成。

EditingConfig パラメーター

パラメーター

タイプ

必須

名前

説明

SourceLanguage

String

はい

ソース言語

  • ソース言語のコード。例: zh。

  • 有効値の詳細については、「SourceLanguage の有効値」をご参照ください。

TargetLanguage

String

はい

ターゲット言語

  • ターゲット言語のコード。例: en。カンマで区切って複数の言語コードを指定できます (例: "en,ja,id")。出力には、指定されたすべての言語の翻訳結果が含まれます。

  • 有効値の詳細については、「TargetLanguage の有効値」をご参照ください。

DetextArea

String

いいえ

字幕を削除するかどうかを指定します

  • このパラメーターを空のままにすると、字幕は削除されません。

  • 有効な値:

    • Auto: 削除するエリアを自動的に検出します。

    • [[x, y, width, height]]: 削除するエリアを指定します。これは、複数のエリアを指定できる 2 次元の配列です。

      • x: 動画の左上隅から字幕ボックスの左上隅までの水平距離 (比率)。有効値: [0, 1]。

      • y: 動画の左上隅から字幕ボックスの左上隅までの垂直距離 (比率)。有効値: [0, 1]。

      • width: 動画の幅に対する字幕ボックスの幅 (比率)。有効値: [0, 1]。

      • height: 動画の高さに対する字幕ボックスの高さ (比率)。有効値: [0, 1]。

SupportEditing

Boolean

いいえ

二次編集を有効にするかどうかを指定します。翻訳結果を修正するには、この機能を有効にします。

  • 有効値:

    • true: 有効。

    • false: 無効。

  • デフォルト値: false。

BilingualSubtitle

Boolean

いいえ

バイリンガル字幕を出力するかどうかを指定します

  • このパラメーターは、字幕レベル、顔レベル、音声レベルの翻訳でサポートされています。出力動画の字幕の種類をコントロールします。

  • 有効な値:

    • true: バイリンガル字幕を出力します。

    • false: モノリンガル字幕を出力します。

  • デフォルト値: false。

説明

出力動画に字幕を表示したくない場合は、SubtitleTrackClip.FontSize の値を 0 に設定します。

SubtitleTranslate

String

いいえ

字幕レベルの翻訳構成

  • 字幕レベルの翻訳の構成。

  • このパラメーターを指定すると、字幕レベルの翻訳が実行されます。それ以外の場合は実行されません。

  • 文字列は JSON フォーマットである必要があります。入力パラメーターの詳細については、次のセクションをご参照ください。

NeedSpeechTranslate

Boolean

いいえ

音声レベルの翻訳を実行するかどうかを指定します

  • 有効値:

    • true: はい。

    • false: いいえ。

  • デフォルト値: false。

SpeechTranslate

String

いいえ

音声レベルの翻訳構成

  • 音声レベルの翻訳の構成。

  • NeedSpeechTranslate が true に設定されている場合、またはこのパラメーターを指定した場合、音声レベルの翻訳が実行されます。それ以外の場合は実行されません。

  • 文字列は JSON フォーマットである必要があります。入力パラメーターの詳細については、次のセクションをご参照ください。

NeedFaceTranslate

Boolean

いいえ

顔レベルの翻訳を実行するかどうかを指定します

  • 有効値:

    • true: はい。

    • false: いいえ。

  • デフォルト値: false。

FaceTranslate

String

いいえ

フェイスレベルの翻訳構成

  • 顔レベルの翻訳の構成。

  • NeedFaceTranslate が true に設定されている場合、またはこのパラメーターを指定した場合、顔レベルの翻訳が実行されます。それ以外の場合は実行されません。

  • 文字列は JSON フォーマットである必要があります。入力パラメーターの詳細については、次のセクションをご参照ください。

TextSource

String

いいえ

字幕ソースを指定するメソッド

  • Content

    • ASR: 自動音声認識 (ASR) を使用して字幕を認識します。

    • OCR: 光学文字認識 (OCR) を使用して字幕を認識します。OcrArea を使用して認識エリアを設定できます。翻訳タイプが字幕レベルの場合、デフォルト値は OCR です。

    • OCR_ASR: 字幕認識に OCR を優先します。OCR が失敗した場合、ASR が使用されます。OCR_ASR を使用する場合、OcrArea を設定することもできます。翻訳タイプが音声レベルまたは顔レベルの場合、デフォルト値は OCR_ASR です。

    • ALL: ASR の結果とそのタイムラインを主要な字幕ソースとして使用し、OCR を使用して ASR の結果を修正します (例: タイプミスの修正)。このオプションは現在、字幕レベルの翻訳でのみ利用可能です。

    • SubtitleFile: 外部の SRT ファイルを字幕ソースとして使用します。このパラメーターを SubtitleFile に設定する場合は、InputConfig.Subtitle パラメーターを指定する必要があります。

CustomParameter

String

いいえ

動画翻訳のカスタムパラメーター

  • カスタムパラメーターを使用して翻訳結果をコントロールします。パラメーターの例については、「CustomParameter の例」をご参照ください。

HotwordLibraryIdList

String

いいえ

ホットワードライブラリ ID のリスト

説明

ホットワードライブラリの特徴:

  • ホットワードのカスタム翻訳をサポートします。 特定の単語やフレーズの翻訳を指定できます。たとえば、完全なプロダクト名をその略語にマッピングできます (例: 「ApsaraVideo Intelligent Media Services」を「IMS」に)。また、スラング用語を同等の用語にマッピングすることもできます (例: 中国語のスラング「YYDS」を「The GOAT」に)。

  • 地名、プロダクト名、珍しい単語など、特定のビジネスドメインにおける固有名詞の認識精度を向上させます。また、同音異義語や一般的でない単語に関する問題の解決にも役立ちます。

FECanvas

JSON

いいえ

フロントエンドプレビューキャンバスの幅と高さの構成

  • このパラメーターを構成すると、出力動画の字幕の実際のフォントサイズは、キャンバスのディメンションと出力動画のディメンションの比率に基づいて自動的にスケーリングされます。これにより、同じ FontSize 値に対して、異なる解像度でも字幕が画面に占める割合が一定になります。

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

説明

FECanvas の使用法: FECanvas を {"Width": 1080,"Height": 1920} に、FontSize を 100 に設定し、実際の出力動画のディメンションが 720 × 1280 の場合、最終的にレンダリングされる字幕の FontSize は FontSize * Math.min(outputWidth/feWidth, outputHeight/feHeight) = 100 * Math.min(720/1080, 1280/1920) = 67 になります。

SourceLanguage の有効値

字幕レベルの翻訳

音声レベルの翻訳

フェイスレベルの翻訳

字幕ソースが光学文字認識 (OCR) の場合 (TextSource パラメーターが OCR または OCR_ASR に設定されている)

字幕ソースが自動音声認識 (ASR) の場合 (TextSource パラメーターが ASR に設定されている)

字幕ソースが SRT ファイルの場合 (InputConfig.Subtitle パラメーターが指定されている)

  • zh: 中国語

  • en: 英語

  • zh: 中国語

  • en: 英語

  • fr: フランス語

  • tr: トルコ語

  • 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: アルバニア語

  • 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: アルバニア語

  • 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: アルバニア語

TargetLanguage の有効値

字幕レベルの翻訳

音声レベルの翻訳

フェイスレベル翻訳

  • zh: 中国語

  • zh-tw: 繁体字中国語

  • en: 英語

  • ja: 日本語

  • id: インドネシア語

  • es: スペイン語

  • pt: ポルトガル語

  • ar: アラビア語

  • fr: フランス語

  • tr: トルコ語

  • yue: 広東語

  • de: ドイツ語

  • ko: 韓国語

  • ru: ロシア語

  • th: タイ語

  • vi: ベトナム語

  • ms: マレー語

  • ----以下は中国語の方言です。翻訳結果には地域的な特徴があります。----

  • sichuan: 四川語

  • dongbei: 東北官話

  • henan: 河南語

  • shanghai: 上海語

  • tianjin: 天津方言

    beijing: 北京方言

  • chongqing: 重慶方言

  • hunan: 湖南語

  • taiwan: 台湾閩南語

  • shanxi: 山西方言

  • shaanxi: 陝西方言

  • zh: 中国語

  • zh-tw: 繁体字中国語

  • en: 英語

  • ja: 日本語

  • ko: 韓国語

  • yue: 広東語

  • de: ドイツ語

  • fr: フランス語

  • es: スペイン語

  • ar: アラビア語

  • tr: トルコ語

  • ru: ロシア語

  • pt: ポルトガル語

  • vi: ベトナム語

  • ms: マレー語

  • th: タイ語

  • id: インドネシア語

  • ----以下は中国語の方言です。翻訳結果には地域的な特徴があります。----

  • sichuan: 四川語

  • tianjin: 天津方言

  • en: 英語

SubtitleTranslate パラメーター

名前

タイプ

必須

名前

説明

OcrArea

String

いいえ

OCR 認識エリア

  • このパラメーターを空のままにすると、システムは字幕エリアをインテリジェントに検出します。

  • 有効な値:

  • Auto: 字幕エリアを自動的に検出します。

  • [x, y, width, height]: 字幕エリアを指定します。これは、1 つのエリアのみ指定できる 1 次元の配列です。

    • x: 動画の左上隅から字幕ボックスの左上隅までの水平距離 (比率)。有効値: [0, 1]。

    • y: 動画の左上隅から字幕ボックスの左上隅までの垂直距離 (比率)。有効値: [0, 1]。

    • width: 動画の幅に対する字幕ボックスの幅 (比率)。有効値: [0, 1]。

    • height: 動画の高さに対する字幕ボックスの高さ (比率)。有効値: [0, 1]。

SubtitleConfig

String

いいえ

字幕合成構成

  • 出力動画の字幕効果をカスタマイズします。パラメーターは、ビデオ編集のタイムラインにおける SubtitleTrackClip の字幕パラメーターと一致します。詳細については、「SubtitleTrackClip」をご参照ください。

  • 文字列は JSON フォーマットである必要があります。

  • 出力動画に字幕を表示したくない場合は、SubtitleTrackClip.FontSize の値を 0 に設定します。

SpeechTranslate パラメーター

名前

タイプ

必須

名前

説明

OcrArea

String

いいえ

OCR 認識エリア

  • このパラメーターを空のままにすると、システムは字幕エリアをインテリジェントに検出します。

  • 有効値:

  • Auto: 字幕エリアを自動的に検出します。

  • [x, y, width, height]: 字幕エリアを指定します。これは、1 つのエリアのみ指定できる 1 次元の配列です。

    • x: 動画の左上隅から字幕ボックスの左上隅までの水平距離 (比率)。有効値: [0, 1]。

    • y: 動画の左上隅から字幕ボックスの左上隅までの垂直距離 (比率)。有効値: [0, 1]。

    • width: 動画の幅に対する字幕ボックスの幅 (比率)。有効値: [0, 1]。

    • height: 動画の高さに対する字幕ボックスの高さ (比率)。有効値: [0, 1]。

CustomSrtType

String

いいえ

カスタム入力 SRT ファイルタイプ

  • このパラメーターは、字幕ソースが指定された SRT ファイルの場合 (つまり、InputConfig.Subtitle が指定されている場合) に必須です。

  • 有効値:

    • SourceSrt: モノリンガルのソース言語字幕。

    • TargetSrt: モノリンガルのターゲット言語字幕。

    • BilingualSrtSrcFirst: バイリンガル SRT 字幕。ソース言語が上で、ターゲット言語が下。

    • BilingualSrtTgtFirst: バイリンガル SRT 字幕。ターゲット言語が上で、ソース言語が下。

: 中国語から英語への翻訳。

  • 「SourceSrt」ファイルの例:

    1
    00:00:01,000 --> 00:00:05,000
    Hello, world!
  • 「TargetSrt」ファイルの例:

    1
    00:00:01,000 --> 00:00:05,000
    Hello,World!
  • 「BilingualSrtSrcFirst」ファイルの例:

    1
    00:00:01,000 --> 00:00:05,000
    Hello, world!
    Hello,World!
  • 「BilingualSrtTgtFirst」ファイルの例:

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

SubtitleTimeForce

Boolean

いいえ

字幕の時間範囲内でのみ翻訳するかどうかを指定します

  • 有効にすると、音声翻訳は OCR で認識された字幕または指定された SRT ファイルの時間範囲に厳密に制限されます。デフォルト値は false です。

  • このフィールドは、TextSource が "OCR" または "OCR_ASR" に設定されている場合にのみ有効です。

SubtitleConfig

String

いいえ

字幕合成構成

  • 出力動画の字幕効果をカスタマイズします。パラメーターは、ビデオ編集のタイムラインにおける SubtitleTrackClip の字幕パラメーターと一致します。詳細については、「SubtitleTrackClip」をご参照ください。

  • 文字列は JSON フォーマットである必要があります。

  • 出力動画に字幕を表示したくない場合は、SubtitleTrackClip.FontSize の値を 0 に設定します。

OriginalJobId

String

いいえ

元のジョブ ID

  • 翻訳結果に満足できない場合は、手動で修正した字幕ファイルを InputConfig.Subtitle に、元のジョブ ID をこのフィールドに渡して、翻訳された音声を再生成できます。

  • SupportEditing が true に設定されている場合、タスク結果には SpeechTranslationJobId が含まれます。翻訳を修正する際に、この値を OriginalJobId に渡します。

  • SupportEditing が true に設定されている場合、タスク結果には翻訳された字幕ファイル SpeechTranslatedSubtitleURL が含まれます。このファイルの内容を修正し、二次編集時に InputConfig.Subtitle に渡します。

SkipSong

Integer

いいえ

アカペラの歌をスキップ

  • 有効値: 0 および 1。デフォルト値: 0。

  • 値が 1 の場合、音声翻訳は動画内のアカペラの歌を検出して翻訳をスキップします。

  • 音楽検出にはエラーがある可能性があるため、バックグラウンドミュージックがあることがわかっている場合にのみ、これを 1 に設定してください。デフォルトで 1 に設定しないでください。

FaceTranslate パラメーター

名前

タイプ

必須

名前

説明

OcrArea

String

いいえ

OCR 認識エリア

  • このパラメーターを空のままにすると、システムは字幕エリアをインテリジェントに検出します。

  • 有効値:

  • Auto: 字幕エリアを自動的に検出します。

  • [x, y, width, height]: 字幕エリアを指定します。これは、1 つのエリアのみ指定できる 1 次元の配列です。

    • x: 動画の左上隅から字幕ボックスの左上隅までの水平距離 (比率)。有効値: [0, 1]。

    • y: 動画の左上隅から字幕ボックスの左上隅までの垂直距離 (比率)。有効値: [0, 1]。

    • width: 動画の幅に対する字幕ボックスの幅 (比率)。有効値: [0, 1]。

    • height: 動画の高さに対する字幕ボックスの高さ (比率)。有効値: [0, 1]。

CustomSrtType

String

いいえ

カスタム入力 SRT ファイルタイプ

  • このパラメーターは、字幕ソースが指定された SRT ファイルの場合 (つまり、InputConfig.Subtitle が指定されている場合) に必須です。

  • 有効値:

    • SourceSrt: モノリンガルのソース言語字幕。

    • TargetSrt: モノリンガルのターゲット言語字幕。

    • BilingualSrtSrcFirst: バイリンガル SRT 字幕。ソース言語が上で、ターゲット言語が下。

    • BilingualSrtTgtFirst: バイリンガル SRT 字幕。ターゲット言語が上で、ソース言語が下。

: 中国語から英語への翻訳。

  • 「SourceSrt」ファイルの例:

    1
    00:00:01,000 --> 00:00:05,000
    Hello, world!
  • 「TargetSrt」ファイルの例:

    1
    00:00:01,000 --> 00:00:05,000
    Hello,World!
  • 「BilingualSrtSrcFirst」ファイルの例:

    1
    00:00:01,000 --> 00:00:05,000
    Hello, world!
    Hello,World!
  • 「BilingualSrtTgtFirst」ファイルの例:

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

SubtitleTimeForce

Boolean

いいえ

字幕の時間範囲内でのみ翻訳するかどうかを指定します

  • 有効にすると、音声翻訳は OCR で認識された字幕または指定された SRT ファイルの時間範囲に厳密に制限されます。デフォルト値は false です。

  • このフィールドは、TextSource が "OCR" または "OCR_ASR" に設定されている場合にのみ有効です。

SubtitleConfig

String

いいえ

字幕合成構成

  • 出力動画の字幕効果をカスタマイズします。パラメーターは、ビデオ編集のタイムラインにおける SubtitleTrackClip の字幕パラメーターと一致します。詳細については、「SubtitleTrackClip」をご参照ください。

  • 文字列は JSON フォーマットである必要があります。

  • 出力動画に字幕を表示したくない場合は、SubtitleTrackClip.FontSize の値を 0 に設定します。

SpeechDurationThres

Float

いいえ

顔翻訳の持続時間しきい値

文の持続時間がこのしきい値を下回る場合、リップシンクは実行されません。デフォルト値は 1 秒です。この値を 1 秒以上に設定してください。

最大持続時間は、入力動画の合計持続時間を超えることはできません。

FacialClarity

Float

いいえ

顔の鮮明度の設定

0 から 1 の値。デフォルトは 1 です。値が高いほど、顔が鮮明になります。ソース動画の鮮明度が低い場合は、この値を下げてください。

CustomParameter の例

音声/顔翻訳の共通パラメーター値の例

意味と使用法

--add -dl

  • ソース音声に複数の言語が含まれるケースをサポートするために、元のタスクに設定を追加します。共存する言語がない場合は、この設定を追加する必要はありません。たとえば、韓国語をフランス語に翻訳する際に、韓国語の音声に英語も含まれている場合、このパラメーターを追加すると、英語の部分もフランス語に翻訳されます。

  • ただし、中国語と英語が混在するソース音声の中国語から英語への翻訳タスクでは、このパラメーターを追加しない方が良いです。英語の部分は結果にそのまま出力され、より良い結果が得られます。

パラメーターの例

字幕レベルの翻訳

ソースファイル = 字幕ファイル

重要

SRT 字幕ファイルの翻訳は、テキスト翻訳として課金されます。詳細については、「テキスト翻訳の課金」をご参照ください。

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

ソースファイル = 動画ファイル

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

ソースファイル = 動画ファイル + 字幕ファイル

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

音声レベルの翻訳

ソースファイル = 動画ファイル

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

ソースファイル = 動画ファイル + 字幕ファイル

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

ソースファイル = 音声ファイル

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

顔レベルの翻訳

{
  "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 パラメーター

AiResult の戻りパラメーター

単一のターゲット言語

TargetLanguage パラメーターが単一の言語に設定されている場合、AiResult は次のパラメーターを返します:

戻りパラメーターのカテゴリ

パラメーター

タイプ

説明

共通

EditingProjectId

String

二次編集用のプロジェクトの ID。

MediaURL

String

出力メディアアセットの URL。

MediaId

String

出力メディアアセットの ID です。

DetextVideoURL

String

字幕削除後の動画ファイルの URL。

DetextVideoMediaId

String

字幕削除後の動画のメディアアセット ID。

字幕レベルの翻訳

OriginalSubtitleMediaId

String

ソース (元の) 字幕ファイルのメディアアセット ID。

OriginalSubtitleURL

String

ソース (元の) 字幕ファイルの URL。

TranslatedSubtitleMediaId

String

ターゲット言語の翻訳済み字幕ファイルのメディアアセット ID。

TranslatedSubtitleURL

String

ターゲット言語の翻訳済み字幕ファイルの URL。

TranslatedText

String

純粋な字幕翻訳結果のテキスト。

TranslatedTextArray

String

純粋な字幕翻訳結果のテキストの配列 (複数の字幕入力の場合)。

音声レベルの翻訳

SpeechTranslatedSubtitleMediaId

String

出力動画で表示に使用される字幕ファイルのメディアアセット ID。

SpeechTranslatedSubtitleURL

String

出力動画で表示に使用される字幕ファイルの URL。

SpeechTranslatedSubtitleURLSigned

String

出力動画で表示に使用される字幕ファイルの署名付き URL。

SpeechTranslatedSubtitleMediaIdForFix

String

二次翻訳修正用の字幕ファイルのメディアアセット ID。

SpeechTranslatedSubtitleURLForFix

String

二次翻訳修正用の字幕ファイルの署名付き URL。

SpeechBilingualSubtitleMediaId

String

バイリンガル音声翻訳結果ファイルのメディアアセット ID。

SpeechBilingualSubtitleURL

String

バイリンガル音声翻訳結果ファイルの URL。

SpeechTranslationJobId

String

音声翻訳のジョブ ID (音声の二次修正に使用)。

TranslatedAudioMediaId

String

翻訳済み音声ファイルのメディアアセット ID。

TranslatedAudioMediaURL

String

翻訳済み音声ファイルの URL。

表層レベルの翻訳

FaceTranslationMediaId

String

リップシンクされた動画ファイルのメディアアセット ID。

戻りパラメーターの例
{
  "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****"
}

複数のターゲット言語

TargetLanguage パラメーターが複数のターゲット言語に設定されている場合、AiResult は次のパラメーターを返します:

パラメーター

タイプ

説明

DetextVideoURL

String

字幕削除後の動画ファイルの URL。

DetextVideoMediaId

String

字幕削除後の動画のメディアアセット ID。

VideoTranslationAiResultMap

JSON

  • 異なるターゲット言語の翻訳結果。

  • JSON フィールドの説明:

    • key: ターゲット言語のコード (例: "en")。

    • value: 対応する言語の翻訳結果。

  • パラメーターの例については、「戻りパラメーターの例」をご参照ください。

VideoTranslationAiResultMap の value の説明

戻りパラメーターのカテゴリ

パラメーター

タイプ

名前

共通

MediaURL

String

単一言語の出力メディアアセットの URL。

MediaId

String

単一言語の出力メディアアセットの ID。

字幕レベルの翻訳

OriginalSubtitleMediaId

String

ソース (元の) 字幕ファイルのメディアアセット ID。

OriginalSubtitleURL

String

ソース (元の) 字幕ファイルの URL。

TranslatedSubtitleMediaId

String

ターゲット言語の翻訳済み字幕ファイルのメディアアセット ID。

TranslatedSubtitleURL

String

ターゲット言語の翻訳済み字幕ファイルの URL。

TranslatedText

String

純粋な字幕翻訳結果のテキスト。

TranslatedTextArray

String

純粋な字幕翻訳結果のテキストの配列 (複数の字幕入力の場合)。

音声レベルの翻訳

SpeechTranslatedSubtitleMediaId

String

出力動画で表示に使用される字幕ファイルのメディアアセット ID。

SpeechTranslatedSubtitleURL

String

出力動画で表示に使用される字幕ファイルの URL。

SpeechTranslatedSubtitleURLSigned

String

出力動画で表示に使用される字幕ファイルの署名付き URL。

SpeechTranslatedSubtitleMediaIdForFix

String

二次翻訳修正用の字幕ファイルのメディアアセット ID。

SpeechTranslatedSubtitleURLForFix

String

二次翻訳修正用の字幕ファイルの署名付き URL。

SpeechBilingualSubtitleMediaId

String

バイリンガル音声翻訳結果ファイルのメディアアセット ID。

SpeechBilingualSubtitleURL

String

バイリンガル音声翻訳結果ファイルの URL。

SpeechTranslationJobId

String

音声翻訳のジョブ ID (音声の二次修正に使用)。

TranslatedAudioMediaId

String

翻訳済み音声ファイルのメディアアセット ID。

TranslatedAudioMediaURL

String

翻訳済み音声ファイルの URL。

表層レベルの翻訳

FaceTranslationMediaId

String

リップシンクされた動画ファイルのメディアアセット ID。

戻りパラメーターの例
{
  "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"
}

シナリオの例

音声翻訳 - 手動修正

バックグラウンド

音声翻訳の結果に満足できない場合は、字幕ファイルを手動で修正し、タスクを再送信して翻訳を修正できます。

手順

重要
  • 音声翻訳の手動修正を有効にするには、初めて動画翻訳タスクを送信する際に SupportEditing パラメーターを 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
    }
}

最初の音声翻訳送信の結果は次のとおりです:

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

パラメーターは次のように説明されます:

  1. MediaId: 出力動画のメディアアセット ID。

  2. TranslatedAudioMediaId: 音声翻訳からの音声のメディアアセット ID。

  3. SpeechTranslatedSubtitleURL: 音声翻訳からの字幕ファイルの URL。このファイルは出力動画での表示に使用されます。

  4. SpeechTranslatedSubtitleURLSigned: 音声翻訳からの字幕ファイルの署名付き URL。このファイルは出力動画での表示に使用されます。

  5. SpeechTranslatedSubtitleURLForFix: 二次翻訳修正用の字幕ファイルの署名付き URL。

  6. SpeechTranslationJobId: 音声翻訳のジョブ ID。この値は、手動修正を実行する際に OriginalJobId パラメーターに必要です。

翻訳結果に満足できない場合は、SpeechTranslatedSubtitleURLForFix パラメーターで提供される URL から SRT 字幕ファイルをダウンロードし、その内容を修正してから、音声翻訳タスクを再度送信できます。音声は、修正された字幕内容に基づいて再生成されます。

説明

SpeechTranslatedSubtitleURLForFix の SRT ファイルに特別な命令を設定して、音声翻訳の修正に影響を与えることができます。詳細については、「音声修正マーカーパラメーター」をご参照ください。

次の例は、二次修正のパラメーターを示しています。パラメーターには、元の動画、修正された字幕ファイル、元の音声翻訳ジョブ ID、および字幕スタイル構成が含まれます:

重要

二次翻訳修正タスクを送信する際は、InputConfig.Subtitle パラメーターが 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"
      }
    }
  }
}

音声修正マーカーパラメーター

重要

字幕ファイルの行には、空のコンテンツと空の修正マーカーの両方を含めることはできません (スペースやタブを含む)。これにより、音声修正が失敗する可能性があります。字幕行を空にする必要がある場合は、音声修正マーカーを使用して音声の処理方法を指定する必要がありますたとえば音声を変えずに字幕の行全体を削除するには、<--onlymodifytext> マーカーを使用します。

音声修正マーカー

命令名

説明

<--copy>

元の音声を使用

現在の字幕行のタイムスタンプ範囲内の音声は、動画の元の音声に置き換えられます。

<--fsttran>

最初の翻訳結果を使用

現在の字幕行のタイムスタンプ範囲内の音声は、最初の翻訳結果の音声に置き換えられます。

<--mute>

話者をミュート

現在の字幕行のタイムスタンプ範囲内で話者の声がミュートされます。

<--mute_all>

すべてミュート

現在の字幕行のタイムスタンプ範囲内ですべての音がミュートされます。

<--onlymodifytext>

テキストのみ修正

現在の字幕行のタイムスタンプ範囲内で字幕の内容のみが修正されます。音声は変更されません。

次の例は、音声修正マーカーの標準的な使用法を示す SRT 字幕ファイルです:

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

2
00:00:03,500 --> 00:00:06,000
Welcome to today's lecture.
<--fsttran>welcome to today's lecture.

3
00:00:07,000 --> 00:00:10,000
We'll discuss future technology trends.
<--mute>We'll discuss the future technology trends.

4
00:00:11,000 --> 00:00:14,000
Please get ready to ask questions.
<--mute_all>Please get ready to ask questions.

5
00:00:15,000 --> 00:00:18,000
Now, let's get started.
<--onlymodifytext>Now, let's get started.

カスタムホットワードライブラリの使用

バックグラウンド

EditingConfig.HotwordLibraryIdList パラメーターを構成して、次の操作を実行できます:

  • ホットワードの転置結果を指定します。

  • 特定の音声認識シナリオにおけるホットワードの認識率を向上させます。

OpenAPI インタラクションフロー

図には、次のホットワード関連の API 操作が示されています:

SDK 呼び出しの例

コードの実行に必要な 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>

コード例

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 {

    // 環境変数から AccessKey ID と AccessKey secret を取得します。
    static String ak = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    static String sk = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");

    // エンドポイントとリージョンを実際の値に置き換えます。
    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 = "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];
            
            // 複数のターゲット言語を指定できます。
            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());
        }

        // ホットワードライブラリを作成します。
        String hotwordLibraryId = createHotwordLibrary("Test Hotword Name", "Test Hotword Description", hotwords);

        // ホットワードライブラリの情報を照会します。
        getHotwordLibrary(hotwordLibraryId);

        // ホットワードライブラリを一覧表示します。
        listHotwordLibraries();
    }

    public static void testVideoTranslation() throws ClientException {

        // EditingConfig の HotwordLibraryIdList を、最初のステップで作成したホットワードライブラリの ID に設定します。
        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" +
                "}";

        // EditingConfig の HotwordLibraryIdList を、最初のステップで作成したホットワードライブラリの ID に設定します。
        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);
        }
    }
}

リファレンス

課金

課金の詳細については、「動画翻訳の課金情報」をご参照ください。