あらゆる市場に対応する動画ローカライズAPI

1本の元の動画から、各市場向けのローカライズ版を作成できます。適切な地域言語、一貫したブランド用語、話し手の声、字幕、オプションのリップシンクに対応しています。1つのAPIでローカライズのワークフローを実行でき、公開前にチームでスクリプトを確認できます。
135以上の言語や地域に対応
用語集とレビュー
REST + Python SDK
one source, two Spanish markets
OAuth 2.0
# 1. one Spanish glossary - it applies to every Spanish regional variant
curl -X POST https://api.rask.ai/v2/glossaries \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"name": "Brand terms", "src_lang": "en", "dst_lang": "es",
       "entries": {"Rask Studio": "Rask Studio", "onboarding": "incorporación"}}'

# 2. a localized version per market, both with the same glossary
for lang in es-mx es-es; do
  curl -X POST https://api.rask.ai/v2/projects \
    -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"$lang\", \"glossary_id\": \"$GLOSSARY_ID\"}"
done
GET /v2/projects/{project_id}/transcription
review
# Review: source and translated text, segment by segment
curl -s https://api.rask.ai/v2/projects/$ID/transcription \
  -H "Authorization: Bearer $TOKEN" \
  | jq '.segments[] | {speaker, src: .src.text, dst: .dst.text}'
世界中のチームで利用されています
機能一覧

動画ローカライズAPIの機能

ローカライズは、単に音声を翻訳するだけではありません。このAPIにより、地域ごとの言語選択、用語の管理、音声、字幕、レビューを市場ごとに1つのワークフローにまとめられます。別料金で追加できるリップシンク機能もご利用いただけます。

135以上の言語や地域に対応

特定の地域に合わせたローカライズ:es-mxまたはes-es、pt-brまたはpt-pt、fr-caまたはfr-frなどに対応しています。各プロジェクトで1つのターゲットロケールを指定すると、元の言語が自動で検出されます。

用語の管理

用語集を使用することで、どのローカライズ版でもブランド名や専門用語を統一できます。1つの用語集で言語のすべての地域バリエーションをカバーし、各プロジェクトで使用した用語集のバージョンが記録されます。

承認済みの翻訳データ

自動翻訳から始めることも、レビュー担当者がすでに承認したSRTファイルを読み込ませてRask AIに音声を生成させることも可能です。

画面上の人物に向けたリップシンク

画面に登場する人物の話し方に合わせて、口の動きをローカライズされた音声に合わせます。オプション機能であり、動画全体の生成ごとに個別に課金されます。

背景音の保持

BGM、部屋の環境音、効果音などの元の音声はローカライズされた音声の下で維持されるため、どの市場でも同じクオリティのサウンドを届けられます。

字幕とキャプション

各ローカライズ版には、SRTおよびVTT形式のキャプションが付属しており、ターゲット言語でローカライズされた音声のタイミングに合わせて表示されます。

市場をまたいだ話し手の声

インタビューや対談では、「インスタント音声クローン」により対応言語ですべての話し手の声が維持され、保存された「カスタム音声クローン」を使用すれば、同じ出演者の声を常に一貫させることができます。その他の声にはAI音声プリセットをご利用いただけます。

公開前のレビュー

レビュー担当者は元のテキストと翻訳されたテキストを並べて確認し、市場に合わない部分を修正して、変更された部分のみを再吹き替えすることができます。

制限なしで規模を拡大

利用制限や同時実行数のクォータ、キーごとの制限はありません。すべての市場に向けて一斉にリリースする際も、何百ものローカライズ版を並行して生成できます。
実際の動作を見る

1本の元の動画を4つの市場向けにローカライズ

同じクリップをフランス語、ドイツ語、ポルトガル語、スペイン語にローカライズ:元の背景音をそのまま残し、話し手のクローン音声で翻訳された音声を再生します。
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
ワークフロー

動画ローカライズの3つのステップ

ルールを一度設定するだけで、それ以降の新しい動画もすべてそのルールに従ってローカライズできます。プロジェクトを作成するとローカライズが開始されます。レビューでの編集が終わったら、/generate エンドポイントを使用してください。
1

ローカライズのルールを設定する

言語ペアごとに用語集を作成し、よく登場する出演者のカスタムボイスを保存し、配信するマーケットごとに地域のロケールを選択します。

POST /v2/glossaries
2

マーケットごとにバージョンを作成する

元動画を一度アップロードし、用語集やSRTから読み込んだ承認済みの翻訳を使用して、ターゲットロケールごとにプロジェクトを作成します。

POST /v2/projects
3

確認して公開する

翻訳されたテキストを並べて確認し、修正が必要な箇所を編集し、変更した部分のみの音声を再生成して、ローカライズされた動画と字幕をダウンロードします。

GET /v2/projects/{id}/transcription
処理時間はプロジェクトによって異なります。確認後の音声の再生成は、変更された部分の合計時間に基づいて課金され(1回につき最低1分)、費用が発生します。
あなたを中心に構築

大量の動画をローカライズしますか? 当社チームとワークフローを計画しましょう

定期的な大量の動画処理、複数のレビュアー、自社のCMSやLMSの利用など、当社チームがローカライズワークフローの設計、用語や確認プロセスの設定、チームで全動画を確認できない場合の人間による品質チェック(QA)の追加をサポートします。

言語と音声

公開カタログにない言語や音声が必要ですか?要件や利用可能なオプションについて、お気軽に弊社のチームにご相談ください。

配信と連携

ウェブフック、お客様のキューへのプッシュ、S3への直接配信、カスタムエンドポイントなどに対応しています。パイプラインに必要なデータ配信方法をお知らせください。

ボリュームとスループット

バッチサイズ、1回あたりの翻訳言語数、処理の優先順位は契約内容によって異なり、固定の制限ではありません。

セキュリティとホスティング

データの保存場所、SSOやSAML、データ保持ルール、セキュリティ審査のサポートなどは、エンタープライズ向けの導入プロセスの一環として対応いたします。
ユースケース

ビデオローカライズAPIを利用するユーザー

動画を活用するプラットフォーム

LMSおよび顧客教育プラットフォーム、クリエイターおよび動画プラットフォーム、ウェビナーおよびバーチャルイベントツール、動画ホスティングおよびワークフローSaaS、デジタルアダプションプラットフォーム、ライブコマース。自社プロダクト内に各地域の言語オプション付きのローカライズ版を提供することで、ユーザーがプラットフォームから離れることなく、世界中のオーディエンスや新しいマーケットにアプローチできるようにします。

ローカライズ・制作会社

ブランドごとの用語集とプロジェクトごとの確認ステップを使用して、複数のクライアント向けのローカライズを実行します。言語専門家が承認したSRTファイルの翻訳を取り込み、1つのビデオローカライズワークフローから、吹き替え付き動画、キャプション、必要に応じたリップシンクを提供します。

社内での継続的な動画制作

グローバルな小売・Eコマース、グローバル企業、メディアパブリッシャー、企業内大学。マーケティング動画、動画広告、eラーニング、商品紹介動画を各地域に合わせて一貫したブランド用語でローカライズし、元動画が変更された際にはアップデート版を作成します。
導入事例

実際のチームによる、確かな実績

Rask AIを活用した企業の動画ローカライズ実績を数字でご紹介します。
arrow
arrow
コード

ビデオローカライズAPIのコード例

各言語の完全なサンプル:用語集を作成し、1本の元動画を2つのスペイン語圏のマーケット向けにローカライズし、確認用に翻訳されたテキストを読み取ります。
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

MARKETS = ["es-mx", "es-es"]

async def localize(client, video_id, locale, glossary_id):
    job = await client.create_project(data=schemas.ProjectCreate(
        video_id=video_id, dst_lang=locale, glossary_id=glossary_id))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    return job

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    glossary = await client.create_glossary(data=schemas.GlossaryCreate(
        name="Brand terms", src_lang="en", dst_lang="es",
        entries={"Rask Studio": "Rask Studio", "onboarding": "incorporación"}))

    jobs = await asyncio.gather(*(localize(client, VIDEO_ID, m, glossary.id) for m in MARKETS))

    for job in jobs:   # review before publishing
        script = await client.get_project_transcription(project_id=job.id)
        for seg in script.segments[:3]:
            print(job.dst_lang, seg.speaker, seg.src.text, "->", seg.dst.text)

asyncio.run(main())
github.com/braskai/rask-sdk
async, typed models
import time, requests

AUTH = "https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token"
API  = "https://api.rask.ai"
token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
                      data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}

glossary = requests.post(f"{API}/v2/glossaries", headers=h, json={
    "name": "Brand terms", "src_lang": "en", "dst_lang": "es",
    "entries": {"Rask Studio": "Rask Studio", "onboarding": "incorporación"}}).json()

ids = [requests.post(f"{API}/v2/projects", headers=h, json={
          "video_id": VIDEO_ID, "dst_lang": locale, "glossary_id": glossary["id"]}).json()["id"]
       for locale in ["es-mx", "es-es"]]

for pid in ids:
    while requests.get(f"{API}/v2/projects/{pid}", headers=h).json()["status"] != "merging_done":
        time.sleep(10)
    script = requests.get(f"{API}/v2/projects/{pid}/transcription", headers=h).json()
    for seg in script["segments"][:3]:
        print(seg["src"]["text"], "->", seg["dst"]["text"])
requests + polling
no SDK required
// no dependencies, Node 18+ global fetch
const API = 'https://api.rask.ai';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const auth = await fetch('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token', {
  method: 'POST',
  headers: { Authorization: 'Basic ' + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`) },
  body: new URLSearchParams({ grant_type: 'client_credentials' }),
}).then((r) => r.json());
const h = { Authorization: `Bearer ${auth.access_token}`, 'Content-Type': 'application/json' };
const call = (method, path, body) => fetch(API + path, { method, headers: h, body: body && JSON.stringify(body) }).then((r) => r.json());

const glossary = await call('POST', '/v2/glossaries', {
  name: 'Brand terms', src_lang: 'en', dst_lang: 'es',
  entries: { 'Rask Studio': 'Rask Studio', onboarding: 'incorporación' },
});

for (const dst_lang of ['es-mx', 'es-es']) {
  let p = await call('POST', '/v2/projects', { video_id: VIDEO_ID, dst_lang, glossary_id: glossary.id });
  while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }
  const { segments } = await call('GET', `/v2/projects/${p.id}/transcription`);
  segments.slice(0, 3).forEach((s) => console.log(dst_lang, s.src.text, '->', s.dst.text));
}
fetch, Node 18+
plain HTTP
# 1. token (valid 1 hour - cache and reuse it)
TOKEN=$(curl -s -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" -d "grant_type=client_credentials" | jq -r .access_token)

# 2. import the translation your reviewers approved (source and translated .srt)
TRANSCRIPT_ID=$(curl -s -X POST "https://api.rask.ai/v2/transcriptions/srt?src_lang=en&dst_lang=es-mx" \
  -H "Authorization: Bearer $TOKEN" \
  -F "src=@source_en.srt" -F "dst=@approved_es-mx.srt" | jq -r .id)

# 3. create the localized version from it - Rask voices the approved script
curl -s -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"es-mx\", \"transcript_id\": \"$TRANSCRIPT_ID\"}"
POST /v2/transcriptions/srt
approved translation from SRT
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);
$json = fn($r) => json_decode($r->getBody(), true);
$auth = $json((new Client)->post('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret], 'form_params' => ['grant_type' => 'client_credentials']]));
$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$glossary = $json($http->post('/v2/glossaries', ['headers' => $h, 'json' => [
    'name' => 'Brand terms', 'src_lang' => 'en', 'dst_lang' => 'es',
    'entries' => ['Rask Studio' => 'Rask Studio', 'onboarding' => 'incorporación'],
]]));

foreach (['es-mx', 'es-es'] as $locale) {
    $p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
        'video_id' => $videoId, 'dst_lang' => $locale, 'glossary_id' => $glossary['id']]]));
    while ($p['status'] !== 'merging_done') {
        sleep(10);
        $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
    }
    $script = $json($http->get("/v2/projects/{$p['id']}/transcription", ['headers' => $h]));
    echo $locale, ': ', $script['segments'][0]['dst']['text'], PHP_EOL;
}
Guzzle 7
plain HTTP
公式SDKはPythonです。Node、PHP、cURLのタブには、同じエンドポイントに対する通常のHTTPの例が記載されています。
進捗

ローカライズ版の進捗状況の確認方法

マーケットごとのバージョンはそれぞれ独自のステータスを持つプロジェクトであるため、複数のマーケットにわたるリリース全体の進捗を1つの画面で追跡できます。対応が必要なのは3つのグループのみです。

完了(ここで処理を終了)

merging_done
ローカライズが完了しました。プロジェクトを再度取得して、利用可能なダウンロードリンクを取得します。

進行中(ポーリングを継続)

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
および一致する項目 _done 状態、マーケットバージョンごとに1つのシーケンス。

失敗、停止、レポート

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words および forbidden_link は、ユーザーに直接表示するのに十分な情報が含まれています。
Observed run, 3:47 source video, en → es-mx
GET /v2/projects/{project_id}
   0s  created
  11s  transcription_started
  87s  translation_started
  99s  voiceover_started
 154s  merging_started
 165s  merging_done

または、ポーリングを完全にスキップする

Webhookのエンドポイントを指定すると、状態の切り替えごとにPOSTリクエストが送信されるため、変更が発生した瞬間にキューが反応します。Webhookの配信は、エンタープライズプランに含まれています。
ドキュメントを読む
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
出力

マーケットごとのローカライズされた動画、音声、字幕

各マーケットバージョンには、ローカライズされた動画とSRTおよびVTT形式のキャプションが返されます。対象プランでは、独自の編集や配信のために、ローカライズされた音声のみ、または元の音声とミックスした音声のダウンロードも可能です。
項目
形式
説明
translated_video
MP4
すぐに公開できるローカライズされた動画
voiceover
WAV
独自のミックス用、ローカライズされた音声のみ
translated_audio
WAV
翻訳音声と元の背景音声をミックスしたもの
translation_srt_path
.srt
翻訳された言語の字幕
translation_vtt_path
.vtt
WEBプレーヤー用のWebVTT形式の字幕
original_video
MP4
参照用に保存された元のファイル
コントロール

どのマーケットでもブランド用語と言いまわしを統一する

ローカライズの品質は確認プロセスから生まれます。レビュアーが各セグメントを確認し、マーケットに合わない表現を修正し、該当するセグメントのみ音声を再生成します。用語集を使用することで、その決定事項が次の動画にも引き継がれ、マーケット間でブランドの一貫性が保たれます。

部分ごとの編集

部分ごとの編集
すべてのプロジェクトで、音声起こしが元言語と翻訳テキストのセグメントとして表示されるため、確認者による修正は1回のリクエストで完了します。
文字起こしとその部分を取得する
元のテキストを修正すると、AIが再翻訳します
翻訳されたテキストを直接修正して、お好みの表現に保つ
タイムスタンプの調整、部分の追加・削除
話者に割り当てられた音声を変更する

用語集

用語集
プロジェクトごとに用語集を追加することで、ブランド名や製品名がすべてのローカライズ版で同じように翻訳されるようにしたり、意図的に元の言語のままに保つことができます。

1つの用語集は1つの言語ペアに対応し、そのターゲット言語のすべての地域バリエーションに適用されるため、1つのスペイン語の用語集で以下をカバーできます es-mx および es-es 同様に。プロジェクトの記録 glossary_versionのため、後から編集しても完成した作業が勝手に変更されることはありません。
入力

対応しているファイル形式

7種類の動画フォーマットと4種類の音声フォーマットのいずれかをアップロードするか、URLを送信してください。ポッドキャストなどの音声のみのコンテンツもローカライズできます。リップシンクは画面に顔が映っている映像に適用されます。

動画

7種類の形式
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

音声

4種類の形式
.mp3
.wav
.flac
.m4a

利用前の詳細情報

メディアエンドポイントは、再生時間、ファイルサイズ、ビデオコーデック、フレームレート、解像度、オーディオコーデック、サンプルレート、チャンネルレイアウトを返します。ローカライズは分単位で課金されるため、事前にファイルを検証し、各市場向けバージョンのコストを見積もることができます。
セキュリティとコンプライアンス

あらゆる市場での調達に対応

Brask IncはSOC 2 Type IIを取得し、GDPRに準拠して運営されており、トラストセンターで稼働状況を公開しています。データの保存場所の選択肢は、エンタープライズ向けオンボーディングの一環として提供されます。

認証

SOC 2 Type II
GDPR
CAIおよびC2PAのメンバー

暗号化

通信中のTLS 1.2
保存時のAES-256
SSE-S3管理キー
少なくとも12か月ごとのキーローテーション

お客様のコンテンツ

クローズドなAI環境
汎用モデルのトレーニングには不使用
完全なエクスポート、ベンダーの縛りなし

アクセス

SSOおよびSAML
ロールベースのアクセス制御
OAuth 2.0クライアント認証情報

エンタープライズ

データの保管場所の選択肢
カスタムSLA
専任のアカウントマネージャー

音声の権利

利用権付きの合成音声
同意に基づく音声クローン
AIの安全性管理、人間の確認
比較

Rask APIと、ご自身で構築するローカライズワークフローの比較

動画のローカライズにより、翻訳、音声、字幕、用語、確認作業が1つの制作ワークフローに統合されます。以下は、同じワークフローを2つの方法で構築した場合の比較です。
必要なもの
Rask API
パーツを組み合わせた場合
地域の言語オプション
135以上の言語や地域に対応
ベンダーによって異なるロケールサポート
すべてのバージョンにおけるブランド用語
言語ペアごとのバージョン管理された用語集
ご自身で維持管理する検索・置換スクリプト
確認者が承認した翻訳
SRTとしてインポート後、音声化
動画への手動によるタイミング合わせ
市場をまたいだ話し手の声
インスタントおよびカスタム音声クローン
言語ごとの個別の音声ベンダー
背景の音楽と効果音
ローカライズされた音声の下に保持
独自に構築する音声分離のステップ
.srtおよび.vtt形式のキャプション
含まれる
独自のタイミングデータから生成
画面上の人物に向けたリップシンク
オプション、完全な動画生成ごとに課金
別の外部ベンダー
確認後のセリフの修正
変更されたセグメントのみを再アフレコ
バージョン全体の再レンダリング
レート制限
なし
ベンダーの最も厳格な適用基準
ワークフローの設計と人間の手による品質確認
チームによるサポートが利用可能です
個別で依頼・管理されます
よくあるご質問

動画ローカライゼーションAPI:よくある質問

お探しのものが見つかりませんか?営業部までお問い合わせください。

動画ローカライゼーションAPIとは何ですか?

動画ローカライゼーションと動画翻訳の違いは何ですか?

同じ言語を話す複数の地域に向けて、1つの動画をローカライズできますか?

ローカライズされたバージョン間でブランド名の統一感を保つにはどうすればよいですか?

すでに承認済みの翻訳を使用できますか?

APIは文化的背景の表現に対応していますか?

APIで画面上のテキストも翻訳できますか?

どの言語や地域に対応していますか?

すべての市場において、話し手の元の声を維持できますか?

ローカライゼーションのワークフローにおいて、リップシンクはどのように機能しますか?

動画ローカライゼーションの費用はいくらかかりますか?

Raskは動画編集や翻訳の流れを作るサポートをしてくれますか?

API アクセスと API キーを取得するにはどうすればよいですか?

半日で吹き替えを始めましょう

まずは今日最初の依頼を試してみませんか?大量の利用や、他にはない言語についての相談もお気軽にお問い合わせください。