# 音声認識 APIで、音声・動画ファイルをアプリに取り込みます

> 音声認識 APIに音声・動画をアップロードすると、タイムスタンプ付きで文字起こしできます。話者分離も選べます。1リクエストは95MB、分割送信は2GBまで。1分あたり1クレジットです。

Canonical: https://transcript1.com/ja/features/onsei-ninshiki-api
Language: ja
Last updated: 2026-10-19

音声認識 APIに録音や動画を送ると、タイムスタンプとセグメントごとの言語が付いた文字起こしを取得できます。話者分離も選べます。95MBまでは1リクエスト、2GBまでは再開できる分割アップロードを使います。

- 95MBまでは1リクエストで送信
- 2GBまで分割して送信・再開
- 処理終了から24時間後にメディアを削除

## まずはファイルサイズに合わせて送信方法を選びます

### 音声も動画も、そのまま送れます

mp3、wav、m4a、flac、ogg、opus、mp4、mov、webm、mkvに対応します。動画には音声トラックが必要です。

### 95MBまではmultipartで送信します

POST /v1/transcriptionsにmultipart/form-dataでファイルを送ります。小さな録音をサーバーから送る場合は、この方法で始められます。

### 大きなファイルは分割して送ります

アップロードを予約し、約8MiBずつ送ってから完了を通知します。2GBまで対応し、通信が切れても残りから再開できます。

### 録音の長さは5時間までです

AI文字起こしは5時間までの音声・動画を処理します。超えた場合はmedia_too_longになり、課金しません。ファイルサイズとは別の制限です。

### 元のファイルを長期間保持しません

文字起こしの処理が終了してから24時間後に、アップロードしたメディアを削除します。文字起こしテキストは、自分で削除するまでアカウントに残ります。

## 小さな録音は1リクエストで送れます

multipartのfileにファイル本体を指定します。language、diarize、source、webhook_urlもフォームフィールドで渡せます。[送信例](https://transcript1.com/ja/docs/uploads#one-shot-upload)と、完了を受け取る[Webhook](https://transcript1.com/ja/features/mojiokoshi-webhook)を確認してください。

HTTPクライアントにmultipartのboundaryを設定させます。JSONにローカルのパスを書くだけでは送信できません。必要なのは実際のファイルのバイト列です。空のファイルや未対応の拡張子は、送信前に確認してください。同じ内容を再送しても解決しません。

送信方法はバイト数で選び、録音の長さは別に確認します。圧縮した録音は95MB未満でも5時間を超えることがあります。反対に、高画質の短い動画は95MBを超え、分割アップロードが必要になることがあります。

### cURL

```
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F file=@interview.m4a \
  -F language=auto
```

## 大きな録音はアップロードを予約します

ファイル名とサイズを指定すると、送信するチャンクの一覧と、そのアップロード専用のX-Upload-Tokenが返ります。手順全体は[分割アップロード](https://transcript1.com/ja/docs/uploads#chunked-upload)にまとめています。

チャンクの位置とサイズは、返ってきた一覧に従います。指定されたオフセットから指定バイト数を読み出し、最後のチャンクだけ短くなる場合も、そのサイズで送ります。トークンはバイナリのPUTリクエストに使います。有効期間は1時間で、他のアップロードや通常のAPI操作には使えません。

予約を再試行する可能性がある場合は、同じIdempotency-Keyを使います。トークンが切れたら、同じキーと同じパラメーターで予約リクエストを再送し、既存のアップロード用に新しいトークンを受け取ります。通信が切れるたびに新規予約を作る必要はありません。

### アップロードを予約するリクエスト

```
curl -X POST "https://api.transcript1.com/v1/transcriptions" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Idempotency-Key: interview-2026-10-13" \
  -H "Content-Type: application/json" \
  -d '{"upload":{"filename":"interview.m4a","size":48210334,"mime_type":"audio/mp4"}}'
```

## 不足しているチャンクだけ送り、完了を通知します

各チャンクを指定URLにPUTし、すべて送ったら完了リクエストを送ります。チャンクの確認が済むと文字起こしがキューに入ります。[アップロードAPI](https://transcript1.com/ja/docs/api-reference#uploads)で進捗確認と完了処理を実装できます。

再開前にGET /v1/transcriptions/:id/uploadを呼び、received_chunksを元の一覧と照合します。不足分だけ送信してください。同じチャンクを再送すると置き換わりますが、本文のサイズは計画どおりである必要があります。401ならトークンの期限も確認します。

完了時に409 upload_incompleteが返ったら、示されたインデックスのチャンクを送ります。キューに入った後は文字起こしのステータスを確認するか、Webhookを待ちます。アプリの画面でも「アップロード中」と「文字起こし中」を分けて表示すると、進捗を正しく伝えられます。

### チャンクを送信し、アップロードを完了する例

```
curl -X PUT "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/chunks/0" \
  -H "X-Upload-Token: t1u_..." \
  -H "Content-Type: application/octet-stream" \
  --data-binary @chunk-0.bin

curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/complete" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY"
```

## アップロード完了と文字起こし完了を分けて扱います

awaiting_uploadはファイルを待っている状態で、文字起こしはまだ始まっていません。送信、チャンクの確認、メディアの処理の順に進みます。完了リクエスト後に接続が切れた場合も、まず既存のジョブを読み、現在の状態を確かめます。

チームごとに未完了のアップロード予約を20件まで持てます。24時間以内に完了しない予約はキャンセルされ、チャンクも削除されます。処理を終えたメディアは、その終了から24時間後に削除します。後で音声を再生するアプリでは、元のファイルを自分で保管してください。

利用者向けのアップロード画面なら[録音の準備と確認](https://transcript1.com/ja/features/onsei-mojiokoshi-muryo)、調査用の連携なら[インタビューの整理方法](https://transcript1.com/ja/use-cases/intabyu-mojiokoshi)も参考になります。ファイル送信の実装と、文字起こしを読み返すための設計は、それぞれ必要です。

## よくある質問

### どのファイル形式に対応していますか？

mp3、wav、m4a、flac、ogg、opus、mp4、mov、webm、mkvです。音声トラックが必要です。未対応の拡張子は422 unsupported_mediaになります。

### ファイルサイズの上限は？

1リクエストでは95MB、分割アップロードでは最大2GBです。プランによって上限が低くなる場合があります。超えた場合は413 media_too_largeになります。

### アップロードした録音はいつ消えますか？

文字起こしの処理終了から24時間後に削除します。24時間以内に送信が完了しないアップロードもキャンセルし、チャンクを削除します。文字起こしテキストは自分で削除するまで残ります。

### ファイルの文字起こしでも話者を分けられますか？

はい。diarize=trueを指定すると、Speaker 1、Speaker 2のようなラベルが付きます。アップロードしたファイルは、常にAIが音声から文字起こしします。

## あわせて読む

- [話者分離](https://transcript1.com/ja/features/washa-bunri-mojiokoshi)
- [音声をテキストに](https://transcript1.com/ja/features/onsei-mojiokoshi-muryo)
- [ファイルのアップロード （ドキュメント）](https://transcript1.com/ja/docs/uploads)
- [動画をテキストに](https://transcript1.com/ja/features/douga-mojiokoshi)
