Rask AI API (動画の吹き替え、翻訳、文字起こし用)

動画のローカライズに必要なすべての工程を1つのAPIで実現:音声の文字起こし、翻訳、AI音声またはボイスクローンによる吹き替え、リップシンクの追加、字幕のダウンロード。一度アップロードし、言語ごとにプロジェクトを作成するだけで、動画、音声トラック、字幕、文字起こしデータを取得できます。
音声クローン
リップシンクと字幕
REST + Python SDK
three requests, start to finish
OAuth 2.0
# 1. exchange your client id and secret for a token (valid 1 hour)
curl -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" -d "grant_type=client_credentials"

# 2. upload the video - file, or a YouTube, Drive, S3, Vimeo or direct link
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"link": "https://youtu.be/...", "name": "Q3 launch"}'

# 3. create the project - transcription, translation and dubbing start
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\": \"es-mx\"}"
GET /v2/projects/{project_id}
polling, 10s
# Poll until merging_done, then collect the files
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
  | jq '{status, translated_video, voiceover, translation_srt_path}'
世界中のチームで利用されています
機能一覧

Rask AI APIでできることのすべて

1つのAPIで動画制作のすべての工程をカバーします。すべての機能が同じプロジェクト、同じ認証、同じ分単位の課金システムで動作し、機能ごとに詳細とコードを記載した専用ページが用意されています。

AI吹き替え

文字起こし、翻訳、音声、音声ミキシングを1つのプロジェクト内で実行。動画と対象言語を送信するだけで、吹き替え済みの動画が返されます。

動画翻訳

1回のアップロードで135以上の言語や地域に対応した翻訳が可能。翻訳されたテキストは、言語ごとに内容を確認できます。

音声クローン

対応言語では、「インスタントボイスクローン」を使って話者本人の声を維持したり、保存した「カスタムボイスクローン」を再利用したりできます。

リップシンク

顔のチェックを行った後、吹き替えプロジェクトの別タスクとして、口の動きを吹き替え音声に合わせることができます。動画全体を生成するごとに、個別に課金されます。

音声からテキストへの変換と動画の文字起こし

自動言語検知機能を備え、75の元言語に対応。話者ラベルやセグメントのタイムスタンプ付きで文字起こしを行います。

srtおよび.vtt形式の字幕

プレイヤー、アプリ、編集ソフトで使えるように、完成したすべてのプロジェクトでターゲット言語の字幕とスクリプトの両方の形式を提供します。

動画のローカライズ

地域ごとの言語設定や、ブランド名・承認済み翻訳の用語集を活用し、それぞれの市場に最適なバージョンを作成できます。

動画用テキスト読み上げ機能

タイムスタンプ付きの独自の原稿を送信すると、AI音声やボイスクローンを使用し、映像のタイミングに合わせたナレーションを作成できます。

制限なしで規模を拡大

レート制限、同時実行クォータ、キーごとの制限はありません。すべての作品やターゲット言語の処理を同時に実行できます。
実際の動作を見る

Rask AI APIの出力内容

1つの元動画をAPI経由で英語、フランス語、ドイツ語、ポルトガル語、スペイン語に吹き替え。話者本人のクローン音声と元の背景音を維持して出力します。
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
ワークフロー

アップロードから完成動画までの3つのステップ

Rask AI APIのすべてのワークフローは同じパターンに従っており、プロジェクトを作成すると全体の処理が開始されます。文字起こしや音声を編集した後に再生成するには、/generate エンドポイントを使用してください。
1

動画をアップロード

動画または音声ファイルをマルチパートフォームデータとして送信するか、YouTube、Googleドライブ、S3、Vimeo、または任意の直接URLからリンクを投稿します。料金が発生する前に、メディアIDとファイルメタデータを確認できます。

POST /api/library/v1/media/link
2

プロジェクトを作成する

メディアIDを video_id として指定し、翻訳先の言語を設定します。必要に応じて、独自の文字起こしや用語集を追加することもできます。すぐに処理が開始されます。

POST /v2/projects
3

出力を回収する

ステータスが merging_done になるまで待ち、完了したら、吹き替え動画、音声トラック、字幕ファイル、文字起こしデータをダウンロードします。

GET /v2/projects/{project_id}
処理時間は、動画の長さ、話者の数、翻訳先の言語によって異なります。あるテストでは、3分47秒の動画が165秒で吹き替えられました。
あなたを中心に構築

カタログに載っていないものが必要ですか?当社のチームにお気軽にご相談ください。

公開カタログにまだ対応していない言語、音声、配信方法、または処理量がある場合、弊社のチームがお客様のご要望と利用可能な選択肢を確認いたします。

言語と音声

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

配信と連携

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

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

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

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

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

Rask AI APIを活用しているサービス

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

LMS(学習管理システム)、カスタマー教育プラットフォーム、クリエイターおよび動画プラットフォーム、ウェビナー・バーチャルイベントツール、動画ホスティングおよびワークフローSaaS、デジタルアダプションプラットフォーム、ライブコマース。自社プロダクトの機能として、多言語の吹き替え、字幕、文字起こしを提供できます。

ローカライズ・制作会社

Raskをお使いの配信パイプラインに接続できます。クライアントの動画向けに、吹き替え、音声クローン、字幕、リップシンクを行い、納品前に担当者が文字起こしを編集することが可能です。

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

国際的な小売・Eコマース、グローバル企業、メディアパブリッシャー、企業内大学。1つの連携で、あらゆる市場に向けてトレーニング、商品紹介、マーケティング動画をローカライズできます。
導入事例

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

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

Rask AI APIのコード例

各言語での基本的な一連の流れ:認証、アップロード、プロジェクトの作成、待機、ファイルの取得。各機能のページには、それぞれのワークフローの例が掲載されています。
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

async def main():
    # the client exchanges your credentials for tokens and refreshes them
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    media = await client.create_media_link(data=schemas.MediaCreateLink(link="https://youtu.be/..."))
    while media.status is enums.MediaStatus.PROCESSING:
        await asyncio.sleep(5)
        media = await client.get_media(media_id=media.id)

    job = await client.create_project(data=schemas.ProjectCreate(video_id=media.id, dst_lang="es-mx"))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)

    print(job.translated_video, job.translation_srt_path, job.translation_vtt_path)

asyncio.run(main())
github.com/braskai/rask-sdk
Python 3.8+, async
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}"}

with open("launch.mp4", "rb") as f:
    media = requests.post(f"{API}/api/library/v1/media", headers=h,
                          params={"kind": "video"}, files={"data": f}).json()
while media["status"] == "processing":
    time.sleep(5)
    media = requests.get(f"{API}/api/library/v1/media/{media['id']}", headers=h).json()

pid = requests.post(f"{API}/v2/projects", headers=h,
                    json={"video_id": media["id"], "dst_lang": "de-de"}).json()["id"]
while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
    time.sleep(10)

for field in ("translated_video", "translated_audio", "translation_srt_path"):
    print(field, p[field])   # presigned links, valid for one hour
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());

let media = await call('POST', '/api/library/v1/media/link', { link: 'https://youtu.be/...' });
while (media.status === 'processing') { await sleep(5000); media = await call('GET', `/api/library/v1/media/${media.id}`); }

let p = await call('POST', '/v2/projects', { video_id: media.id, dst_lang: 'ja-jp' });
while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }

const { translated_video, voiceover, translation_vtt_path } = p;
console.log({ translated_video, voiceover, translation_vtt_path });
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. upload by link
VIDEO_ID=$(curl -s -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"link": "https://youtu.be/..."}' | jq -r .id)

# 3. create the project once the media status is ready
ID=$(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\": \"pt-br\"}" | jq -r .id)

# 4. wait for merging_done, then read the links
until [ "$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq -r .status)" = merging_done ]; do
  sleep 10
done
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
  | jq '{translated_video, translated_audio, translation_srt_path}'
shell script
token to download
<?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']];

$media = $json($http->post('/api/library/v1/media/link', ['headers' => $h, 'json' => [
    'link' => 'https://youtu.be/...']]));
while ($media['status'] === 'processing') {
    sleep(5);
    $media = $json($http->get("/api/library/v1/media/{$media['id']}", ['headers' => $h]));
}

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

Rask AI APIプロジェクトの進捗報告の仕組み

どのような用途であっても、すべてのプロジェクトはドキュメント化された同じステータスに沿って進みます。ユーザーには段階的なプログレスバーを表示し、3つのグループのみに対応すれば問題ありません。

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

merging_done
すべての出力ファイルの準備が整いました。プロジェクトをもう一度取得すると、1時間有効なダウンロードリンクが表示されます。

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

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
および一致する項目 _done 状態は、進捗状況の画面にわかりやすく反映されます。

失敗、停止、レポート

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">
出力

1つのプロジェクトから、動画、音声、字幕、文字起こしを取得

完了したプロジェクトからは、吹き替え動画、2つの音声トラック、2つの字幕ファイル、および文字起こしを利用できます。対象プランでは、元の背景音を含まない翻訳された音声のみのWAVファイルもフルミックスと並行して取得できます。
項目
形式
説明
translated_video
MP4
公開用に準備された吹き替え動画
voiceover
WAV
対象プランで利用可能な、独自のミックス用の翻訳音声のみのデータ
translated_audio
WAV
翻訳音声と元の背景音声をミックスしたもの
translation_srt_path
.srt
翻訳された言語の字幕
translation_vtt_path
.vtt
ウェブプレイヤー用のWebVTT形式の字幕
/transcription
JSON
セグメントごとの原文、翻訳、話者ラベル、タイムスタンプ
コントロール

文字起こしを編集し、変更した部分だけを再生成

自動化がほとんどの作業を行いますが、最終的な確認はお客様のチームで行えます。セリフ、タイムスタンプ、音声を修正して再生成し、変更したセグメント分のみお支払いいただきます(実行ごとに1分からの最低料金が適用されます)。

部分ごとの編集

部分ごとの編集
すべてのプロジェクトで文字起こしがアドレス指定可能なセグメントとして公開されるため、修正は新しいプロジェクトの作成ではなく、1つのパッチリクエストで行えます。
文字起こしとその部分を取得する
元のテキストを修正すると、AIが再翻訳します
翻訳されたテキストを直接修正して、お好みの表現に保つ
タイムスタンプの調整、部分の追加・削除
話者に割り当てられた音声を変更する

用語集

用語集
用語集やブランド名、商品名、専門用語を追加することで、どのプロジェクトでも同じように翻訳されるか、意図的に元の言語のまま維持されます。

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

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

7種類の動画形式と4種類の音声形式に対応しており、YouTube、Googleドライブ、S3、Vimeoのリンクや直接の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 AI APIと、他社ツールを組み合わせたシステムの比較

文字起こし、翻訳、音声、リップシンク、字幕は、通常は別々の提供元から提供されます。ここでは、同じ動画処理のワークフローを2つの方法で比較しています。
必要なもの
Rask API
パーツを組み合わせた場合
話者ラベル付きの文字起こし
含まれる
音声文字起こしAPI
135以上の言語や地域への翻訳に対応
含まれる
翻訳用API
AI音声と音声クローン
含まれる
音声合成(TTS)の提供元と音声クローンの提供元
新しい音声に合わせた背景の音声
自動でミックス
音源の分離と手動による独自のミキシング
リップシンク
同じプロジェクト内での別の処理
リップシンクの提供元
srtおよび.vtt形式の字幕
含まれる
自社開発のファイルライター
1行だけの修正
変更した部分だけを再生成
ファイル全体の処理をやり直す
用語の管理
用語集
カスタム後処理
料金請求
動画の分数に応じたシンプルな料金体系
提供元ごとに異なる、文字数・時間・リクエスト数に応じた複雑な料金
レート制限
なし
各提供元が定めるそれぞれのルール
こちらのフォームにご記入ください。Rask AI のチームから、まもなくご連絡いたします!
よくあるご質問

Rask AI APIに関するよくある質問

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

Rask AI APIとは何ですか?

Rask AI APIにはどのようなAPIが含まれていますか?

Rask AI APIを利用するにはどうすればよいですか?

認証の仕組みはどのようになっていますか?

SDKは提供されていますか?

APIはどの言語に対応していますか?

Rask AI APIの料金はどのように決まりますか?

利用制限(レートリミット)はありますか?

APIはウェブフックに対応していますか?

どのようなファイル形式をアップロードできますか?

独自の文字起こしや翻訳を使用できますか?

APIはリアルタイムで動作しますか?

Rask AI APIの安全性は確保されていますか?

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

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