ドキュメント対応リンクと文字起こしの設定
対応リンクと文字起こしの設定
使える動画リンクとURL形式を確認し、字幕・AI文字起こし・話者分離・言語を設定します。
動画のリンクを指定するか、音声・動画ファイルをアップロードして文字起こしできます。YouTube、X、TikTok、Instagram、Facebook、Blueskyのほか、下の表にあるプラットフォームの公開動画にも対応しています。対象は録画済みの動画です。
取得方法はsource、話者分離はdiarize、言語はlanguageで設定します。いずれもPOST /v1/transcriptionsのリクエストボディに指定する任意のフィールドです。
使える動画リンク
動画のリンクをurlに指定してください。プラットフォームはAPIが自動で判定するため、platformは省略できます。指定する場合は、リンクと同じプラットフォームにしてください。
| プラットフォーム | 対応するURL・投稿 |
|---|---|
YouTube(youtube) | 動画のURLを指定します。使える形式は次のセクションにまとめています。 |
X(x) | x.comまたはtwitter.comの動画投稿です。例:https://x.com/user/status/1234567890。 |
TikTok(tiktok) | tiktok.comの動画投稿を指定します。vm.tiktok.com、vt.tiktok.com、www.tiktok.com/t/の短縮リンクも使えます。 |
Instagram(instagram) | instagram.comのReelsや動画投稿に対応します。パスは/reel/、/reels/、/p/、/tv/です。ユーザー名を含むReels・投稿のURLも使えます。 |
Facebook(facebook) | facebook.comの動画・Reelsのリンクを指定します。watch形式のURLと、fb.watch、/share/v/、/share/r/の短縮リンクも使えます。 |
Bluesky(bluesky) | bsky.appの動画投稿です。例:https://bsky.app/profile/user.example/post/3l3w4b5c6d7e2。 |
Twitch(twitch) | 配信終了後のVODはtwitch.tv/videos/<id>または/<channel>/v/<id>で指定します(videoも使えます)。クリップはclips.twitch.tv/<slug>、twitch.tv/<channel>/clip/<slug>、/clip/<slug>です。対応ホストはtwitch.tv、www、m、go、clips.twitch.tvです。 |
Dailymotion(dailymotion) | dailymotion.com/video/<id>、/embed/video/<id>、dai.ly/<id>を使えます。_titleは省略できます。ホストはwww.dailymotion.comとtouch.dailymotion.comにも対応します。 |
Pinterest(pinterest) | pinterest.comまたはwww.pinterest.comに直接投稿された動画ピンを指定します。パスは/pin/<id>/または/pin/<slug>--<id>/です。最初のネイティブ動画ブロックだけを使います。外部埋め込み動画、画像、ボード、pin.it、地域別ドメインは対象外です。 |
LinkedIn(linkedin) | linkedin.comまたはwww.linkedin.comの公開動画投稿を指定します。パスは/posts/<slug>-<activity-id>-<four-character-suffix>または/feed/update/urn:li:activity:<id>/です。プロフィール、LinkedIn Learning、イベント、lnkd.inは対象外です。 |
Snapchat Spotlight(snapchat) | snapchat.comまたはwww.snapchat.comのSpotlight動画を/spotlight/<id>で指定します。ストーリーやプロフィールは使えません。 |
Twitch、Dailymotion、Pinterest、LinkedIn、Snapchat Spotlightの5つではHTTPSが必須です。URLに認証情報や独自のポート番号は指定できません。使えるのは公開されている録画の個別リンクだけです。非公開・ログイン必須の投稿、ライブ配信、処理中の配信、プロフィール、フィード、コレクションは対象外です。
取得時にアカウントのCookieは渡しません。URLで開始時刻などを指定しても、動画をその位置で切り取ることはありません。TwitchのクリップとSnapchat Spotlightでは、media_idの文字列から内部のIDや構造を読み取れるとは限りません。URLからIDを組み立てず、返された文字列をそのまま保持してください。
X、TikTok、Instagram、Facebook、Blueskyは公開投稿に対応します。複数の動画を含む投稿では、最初の動画だけを使います。プロフィール、ストーリー、ライブ配信ページ、TikTokの写真投稿は使えません。ログインが必要ならlogin_required、音声トラックがなければno_audioで失敗します。どちらの場合も課金しません。
字幕を使えるのは、YouTube、X、TikTok、Bluesky、Dailymotion、LinkedInです。動画の元の言語のトラックが必要で、使える字幕があるかは動画によって異なります。Instagram、Facebook、Twitch、Pinterest、Snapchatでは、autoまたはsttを指定してAI文字起こしを使います。captions(字幕のみ)は指定できません。プラットフォームやファイルによる単価の違いはなく、実際の長さを測って分数に応じて課金します。
短縮リンクは、表にある形式だけ使えます。送信時に投稿IDがわからないSNSの共有リンクは、過去の文字起こしとの照合対象になりません。以前の文字起こしを再利用する場合は、投稿のフルURLを指定してください。
| 字幕を取得するプラットフォーム | 取得できる字幕とタイムスタンプ |
|---|---|
| YouTubeとX | 既存の字幕トラックを取得します。単語ごとのタイムスタンプも取得できるのは、YouTubeの自動生成字幕だけです。 |
| TikTok | 動画に付属するVTT・SRT字幕を取得します。タイムスタンプはセグメント単位です。 |
| Bluesky | 対応対象の信頼済みPDS上にあるネイティブ動画の字幕だけを取得します。それ以外のサーバー、引用動画、外部動画は対象外です。タイムスタンプはセグメント単位です。 |
| Dailymotion | SRT字幕を直接取得します。字幕プレイリストは使いません。タイムスタンプはセグメント単位です。en-auto/fr-autoと判定したトラックではauto_generatedを返します。 |
| LinkedInに直接投稿された公開動画のVTT字幕を取得します。LinkedIn Learningは対象外です。タイムスタンプはセグメント単位です。 |
YouTubeで使えるURL形式
YouTubeの動画は、次のURL形式で指定できます。www.の有無は問いません。urlにURLを入れ、platformは省略するかyoutubeにしてください。
| URLの形式 | 指定例 |
|---|---|
| 通常の視聴ページ | https://www.youtube.com/watch?v=dQw4w9WgXcQ |
| 共有用の短縮URL | https://youtu.be/dQw4w9WgXcQ |
| Shorts | https://www.youtube.com/shorts/dQw4w9WgXcQ |
| 埋め込み用URL | https://www.youtube.com/embed/dQw4w9WgXcQ |
| Live形式 | https://www.youtube.com/live/dQw4w9WgXcQ |
| モバイル版・音楽向けドメイン | https://m.youtube.com/watch?v=dQw4w9WgXcQ、https://music.youtube.com/watch?v=dQw4w9WgXcQ |
t、list、siなどの追加クエリは無視します。URLの形式が違っても、同じ動画なら同じものとして扱います。指定するのは必ず完全なURLにしてください。11文字の動画IDだけでは受け付けません。
チャンネルのページ、プレイリストだけを指すURL、非対応のリンクには422 invalid_urlを返します。platformに未知の値を指定した場合は、422 unsupported_platformと、対応する値の一覧supported_platformsを返します。
取得できるのは公開・限定公開の動画です。非公開動画はmedia_private、年齢制限付き動画はage_restricted、ライブ配信はlive_streamで失敗します。手元に自分のファイルがある場合は、アップロードを使ってください。
字幕とAI文字起こしを切り替える
字幕からテキストを取得するか、音声を文字起こしするかはsourceで選びます。
| 指定する値 | テキストの取得方法 |
|---|---|
auto(デフォルト) | YouTube、X、TikTok、Bluesky、Dailymotion、LinkedInでは、動画の元の言語の字幕を優先します。使える字幕がなければ、AIが音声を文字起こしします。 |
captions(字幕のみ) | 字幕に対応するプラットフォームから字幕だけを取得します。音声のダウンロードもAI文字起こしも行いません。使える字幕がなければno_captionsで失敗し、課金しません。字幕の内容を取得できなかった場合はfetch_failedです。字幕に対応しないプラットフォームで指定すると、422 invalid_requestを返します。 |
stt | 字幕は使わず、必ずAIが音声を文字起こしします。 |
アップロードしたファイルでは、常に音声認識を使います。sourceに指定できるのはautoとsttです。captions(字幕のみ)を指定すると422 invalid_requestを返します。
字幕トラックは指定した言語と一致する必要があります。languageがautoなら、動画の元の言語を選びます。YouTubeでは、その言語で投稿者がアップロードした字幕や、YouTubeが生成した字幕を使います。自動翻訳のトラックは使いません。
YouTubeの字幕は、投稿者がアップロードしたもの、作成元が不明なもの、自動生成字幕の順で優先します。作成元が不明なトラックを、投稿者が作成した字幕として扱わないでください。Xでは利用できるVTTトラックを使います。自動生成字幕でも、タイムスタンプはセグメント単位だけで、単語ごとのタイムスタンプはありません。
autoでは、字幕の内容を取得・解析できない場合にSTTへ切り替えることがあります。ただし、ルーティング、ストレージ、プログラム側の障害では切り替えません。sttなら、字幕の有無にかかわらず音声を使います。
話者分離を使う
誰が話しているかを区別するには、diarizeを有効にします。デフォルトはfalseです。
- 話者分離には音声認識が必要です。
sourceがautoでも、diarize: trueを指定すると字幕を使わず、直接AI文字起こしを始めます。 source: "captions"とdiarize: trueは併用できません。指定すると422 invalid_requestを返します。- 話者には
Speaker 1、Speaker 2のようなラベルが付きます。JSONではtranscript.speakersと各セグメントのspeakerを確認します。text・srt形式では発言の前にSpeaker 1:が付き、vtt形式では<v Speaker 1>というvoiceタグを使います。
{ "platform": "youtube", "url": "https://youtu.be/dQw4w9WgXcQ", "source": "stt", "diarize": true }言語を指定する
言語の指定を省略すると、languageはautoになります。明示する場合は、autoか、en、de、esなどの2文字のISO 639-1コードを指定してください。
- 字幕を使う場合:取得するトラックの言語を選びます。
autoでは動画の元の言語を使います。 - 音声認識を使う場合:音声認識プロバイダーへ言語のヒントとして渡します。
autoでは自動で言語を判定し、各セグメントのlanguageにその部分の言語を返します。
文字起こし全体で主に使われている言語は、文字起こしオブジェクトのlanguageで確認できます。
テキストの取得元とデータの違い
テキストをどの方法で取得したかはtranscript_sourceに入ります。値はyoutube_captions、x_captions、tiktok_captions、bluesky_captions、dailymotion_captions、linkedin_captions、speech_to_textのいずれかです。
字幕の種類はcaption_kindで確認します。manual、auto_generated、作成元が不明ならnullです。nullを投稿者がアップロードした字幕と見なさないでください。
youtube_captionsでcaption_kindがmanual | youtube_captionsでcaption_kindがauto_generated | speech_to_text | |
|---|---|---|---|
| セグメントの区切り | 字幕キューごとに1つです。 | 字幕キューごとに1つです。 | 話者・言語の切り替わり、文末の句読点、または15秒の上限で区切ります。 |
include=wordsで取得する単語ごとのタイムスタンプ | ありません(wordsはnullです)。 | 開始時刻を返します。各単語の終了時刻は、次の単語の開始時刻になります。 | 開始・終了時刻とconfidenceを返します。 |
| 話者分離の有無 | 使えません。 | 使えません。 | diarizeがtrueなら使えます。 |
| 言語の単位 | 字幕トラック単位です。 | 字幕トラック単位です。 | セグメント単位です。 |
YouTubeの字幕は、[Music]などのタグも削らず、公開されたとおりのテキストを保持します。音声認識で処理できる長さは5時間までです。それを超えるとmedia_too_longで失敗します。
Xの字幕(x_captions)と、TikTok、Bluesky、Dailymotion、LinkedInの字幕で取得できるタイムスタンプはセグメント単位だけです。自動生成字幕も同じで、include=wordsを付けても、各セグメントの値はwords: nullです。話者分離も使えません。
AIによる単語ごとのタイムスタンプが必要ならsource: "stt"を指定します。話者分離が必要なら、autoまたはsttとdiarize: trueを使ってください。
字幕とAI文字起こしの料金
どちらを選んでも、メディアの長さ1分につき1クレジットです。分未満の端数は切り上げます。字幕から取得するか、AIで音声を文字起こしするかで料金は変わりません。詳しくは料金と制限を確認してください。
最終更新 2026年10月20日