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秒で吹き替えられました。
あなたに合わせて構築

カタログにない機能をお探しですか?私たちのチームにお気軽にご相談ください。

公開カタログにまだない言語、音声、配信方法、または処理能力について、私たちのチームがお客様のご要望を確認し、最適なオプションをご提案します。

言語と音声

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

配信と連携

Webhooks、独自のキューへのプッシュ、S3への直接配信、カスタムエンドポイント。パイプラインにどのようにデータを送りたいかお知らせください。

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

バッチサイズ、アクションあたりのターゲット言語、処理の優先順位はすべて契約条件であり、固定された製品の制限ではありません。

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

データレジデンシー、SSOおよびSAML、保持ルール、セキュリティレビューのサポートは、エンタープライズ向けオンボーディングの一環として対応いたします。
ユースケース

Rask AI APIを活用するプラットフォーム

動画機能を備えたプラットフォーム

LMSやカスタマー教育プラットフォーム、クリエイター・動画プラットフォーム、ウェビナー・バーチャルイベントツール、動画ホスティング・ワークフローSaaS、デジタルアダプションプラットフォーム、ライブコマースなど。ご自身のプロダクトの機能として、他言語の吹き替え、字幕、トランスクリプトを提供できます。

ローカライズおよび制作エージェンシー

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

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

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

本物のチーム、目に見える成果

Raskを活用して動画をローカライズしている企業の導入実績を数値でご紹介します。
矢印
矢印
コード

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
Pythonが公式SDKです。Node、PHP、cURLのタブは、同じエンドポイントに対するシンプルなHTTPの例を示しています。
進捗

Rask AI APIプロジェクトの進捗状況の確認方法

どのような用途であっても、すべてのプロジェクトは同じ定義済みのステータスに沿って進行します。ユーザーには段階的なプログレスバーを表示し、3つのグループのみに対応すればOKです。

成功、ここで完了

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つの字幕ファイル、およびトランスクリプトを利用できます。対象プランでは、元のBGMを含まない翻訳された音声のみのWAVファイルも、完全なミックス版と並行して取得できます。
項目
形式
説明
translated_video
MP4
そのまま公開できる吹き替え済み動画
voiceover
WAV
独自の音声ミックス用として、対象プランで翻訳された音声のみを取得可能
translated_audio
WAV
翻訳された音声と元の背景音をミックスした音声
translation_srt_path
.srt
翻訳言語の字幕
translation_vtt_path
.vtt
Webプレイヤー用のWebVTT形式の字幕
/transcription
JSON
セグメントごとの原文、翻訳、話者ラベル、タイムスタンプ
コントロール

トランスクリプトを編集し、変更された部分のみを再生成

自動化がほとんどの作業を行いますが、最終的な確認はチームで行えます。行、タイムスタンプ、または音声を修正して再生成すると、変更されたセグメントの分だけ料金が発生します(1回の実行につき1分からの最小料金あり)。

セグメント単位の編集

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

用語集による専門用語の管理

用語集による専門用語の管理
用語集やブランド名、製品名、専門用語を追加することで、どのプロジェクトでも一貫した翻訳が適用されるか、意図的に元の言語のまま維持されます。

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に準拠して運営されています。また、セキュリティチームの確認用に、Trust Centerで現在の管理状況を公開しています。

認定資格

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)の提供元および音声クローンの提供元
新しい音声の後ろで流れるBGM
自動でミックスされます
音声の分離と独自のミキシング
リップシンク
同じプロジェクト内の別のタスク
リップシンクの提供元
.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の安全性は確保されていますか?

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

今すぐ最初のリクエストを作成し、大量利用の契約や他の誰も対応していない言語が必要な場合は、ぜひお気軽にご相談ください。