概要
日本語音声を送るとテキストが返ります。翻訳は常に無料。文字起こしはUTC日あたりIPごとに8時間まで。
ベースURL: https://api.jptranscribe.com
ブラウザ用プロキシ: https://jptranscribe.com/api
各IPは1日8時間(00:00 GMTにリセット)。残り時間の確認は GET /v1/free または GET /v1/account.
認証
ほとんどのエンドポイントは Authorization ヘッダーに無料APIキーが必要です:
Authorization: Bearer jpt_YOUR_API_KEY
キーは /get-key/ で発行。公開クライアントではなくバックエンドに置いてください。
クイックスタート
curl -X POST https://api.jptranscribe.com/v1/transcribe \
-H "Authorization: Bearer jpt_YOUR_KEY" \
-F "file=@sample.wav" \
-F "language=ja" \
-F "translate=true"
/v1/keys
APIキー発行
無料APIキーを即時発行。認証不要。厳しい日間発行上限なし。文字起こしは1日8時間/IP。
curl -X POST https://api.jptranscribe.com/v1/keys \
-H "Content-Type: application/json" \
-d '{}'
/v1/account
アカウントと残高
キーのワーカーオンライン状態、プールクレジット、統計。
curl https://api.jptranscribe.com/v1/account \
-H "Authorization: Bearer jpt_YOUR_KEY"
/v1/transcribe
音声の文字起こし
日本語音声をアップロード。日間IPクォータを消費 — ルーティング を参照。
リクエスト(multipart/form-data)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
file | file | file または url | WAV, MP3, M4A, FLAC, OGG |
url | string | file または url | 音声の公開HTTPS URL |
language | string | 任意 | 既定 ja |
translate | boolean | 任意 | 英訳を含める |
レスポンス例
{
"id": "tx_abc123",
"language": "ja",
"text": "こんにちは、今日は配信を始めます。",
"translation": "Hello, starting the stream today.",
"duration_seconds": 12.4,
"processed_by": "self",
"route_reason": "7.92h of 8h/day left for this IP (resets …)",
"model": "vosk-small-ja+postcorrect"
}
/v1/translate
テキスト翻訳
音声なしの日本語→英語。常にサーバーで実行。
{
"text": "今日はいい天気ですね。",
"source": "ja",
"target": "en"
}
{
"text": "It's nice weather today, isn't it?",
"source": "ja",
"target": "en"
}
/v1/health
ヘルスチェック
公開ステータスとクォータ。認証不要。ウォームASR / スロットは Oracle 容量を反映。
{
"status": "ok",
"version": "1.8.38",
"backend": {
"asr_workers": 2,
"asr_warm_target": 2,
"remote_asr": { "enabled": false },
"pool": { "workers_online": 0, "shared_free": { "transcribe_slots": 2 } }
}
}
/v1/free
共有無料プール
公開・読み取り専用。IPの残り無料秒(上限2時間/日)、グリッド容量、チャンク上限、クレジット消費率。ポーリングではオンラインになりません。
構成
api.jptranscribe.com は Oracle Ampere 上: キー、SQLite会計、ルーティング、無料ASR(ウォームVosk)。各IPはUTC日あたり8時間まで。
日間クォータ
各IPはUTC日あたり8時間の文字起こし。残り時間: GET /v1/free → shared_free.free_ip_remaining_hours. Resets at quota_resets_at_utc (00:00 GMT).
レガシーワーカーのエンドポイント
Voskで自分のCPU文字起こし。無料枠のあと、または共有グリッドが満杯のときに必要。
pip install -r requirements.txt
python worker.py --key jpt_YOUR_KEY
セットアップ全体: /worker/
ワーカーエンドポイント
worker.py が内部で使用。カスタムワーカーを作るとき以外は不要。
| メソッド | Path | 説明 |
|---|---|---|
| POST | /v1/worker/heartbeat | ワーカー登録(TTL約15分) |
| POST | /v1/pool/claim | 次のジョブを取得 |
| GET | /v1/pool/jobs/{id}/audio | ジョブ音声をダウンロード |
| POST | /v1/pool/jobs/{id}/complete | 結果を送信 |
| POST | /v1/pool/jobs/{id}/fail | 失敗を報告 |
ルーティングの仕組み
POST /v1/transcribe を呼ぶと、サーバーが次のいずれかを選びます:
| ルート | 条件 | processed_by |
|---|---|---|
server_demo | 日間IPクォータ内 | server |
server_demo | グリッドに空き · 無料2時間/IP/日以内 · チャンク30秒以内 | server_demo / server_demo_remote |
pool_credit | クレジット十分(費用 = 音声秒×1.5) | pool |
| 403 error | 日間クォータ切れ、またはサーバー混雑 | quota_exhausted / server_busy |
エラーコード
| HTTP | コード | 意味 |
|---|---|---|
| 400 | invalid_request | 不正なパラメータ |
| 400 | invalid_audio | 非対応または壊れた音声 |
| 401 | unauthorized | APIキーなし、または無効 |
| 403 | quota_exhausted | 00:00 GMT のリセットまで待つ |
| 413 | file_too_large | 10MB超 |
| 429 | rate_limited | リクエスト過多 |
| 500 | internal_error | サーバーエラー — 再試行 |
エラー形式: {"error": {"code": "…", "message": "…"}}
レート制限
| 制限 | 値 |
|---|---|
| 1分あたりのリクエスト | APIキーあたり30 |
| 日間IPクォータ | 8時間 / IP / UTC日 · 00:00 GMT にリセット |
| ライブASRチャンク上限 | 1窓あたり30秒 |
| 最大ファイルサイズ | 10 MB |
| IPあたりのキー発行 / 日 | 厳しい上限なし(レート制限で濫用対策) |
| プールクレジット | 他者処理1秒につき1秒獲得。消費は1.5倍(+50%余剰) |
Headers: X-RateLimit-Limit, X-RateLimit-Remaining. Live stats: /status/
SDKs
公式SDKはまだありません。curl、またはOpenAPIからクライアントを生成: