Cookieを使用しています. Cookieとブラウザストレージは、ログイン状態の維持と設定の保存に使われます。許可いただいた場合は、サイトの利用状況も計測します。はいつでも変更できます。詳しくはCookieポリシーをご覧ください。

文字起こし(STT)

エンドポイント

文字起こし(STT)

POST /audio/transcriptions で Whisper、GPT-4o Transcribe、Deepgram、Voxtral などにより音声をテキストへ変換します。multipart と JSON ボディの両方の送り方、レスポンス、料金、エラーを説明します。

プレイグラウンドで試す

Whisper、GPT-4o Transcribe、Deepgram、Voxtral などの文字起こしモデルで、音声をテキストに変換します(音声認識、STT)。エンドポイントは OpenAI の POST /audio/transcriptions に従うため、client.audio.transcriptions.create(...) が変更なしで動作します。

POST https://api14.com/api/v1/audio/transcriptions

リクエスト

音声ファイルを含む multipart/form-data(OpenAI SDK が送る形式)か、JSON ボディを送信します。

フィールド型必須説明
filefileはい音声ファイル: mp3、mp4、m4a、wav、webm、ogg、flac。
modelstringはい文字起こしモデルの ID。例: openai/whisper-1。
languagestringいいえISO-639-1 コード(en、de)。精度と速度が向上します。
promptstringいいえ語彙のヒント、または直前のセグメントのテキスト。
response_formatstringいいえjson(デフォルト)、text、srt、vtt、verbose_json(対応するモデルのみ)。
temperaturenumberいいえサンプリング温度。0 から 1。

リクエストボディの上限は、デフォルトで 25 MB です。それより大きいファイルは 413 payload_too_large を返すため、長い録音は分割してください。

cURL での multipart

curl https://api14.com/api/v1/audio/transcriptions \
  -H "Authorization: Bearer sk-api14-..." \
  -F model=openai/whisper-1 \
  -F file=@meeting.mp3 \
  -F language=en

JSON ボディ

対応するモデルでは、音声を base64 にした JSON も受け付けます。

{
  "model": "openai/whisper-1",
  "input_audio": { "data": "<base64>", "format": "mp3" },
  "language": "en"
}

例

import fs from "node:fs";
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api14.com/api/v1",
  apiKey: process.env.API14_API_KEY,
});

const result = await client.audio.transcriptions.create({
  model: "openai/whisper-1",
  file: fs.createReadStream("audio.mp3"),
});
console.log(result.text);

レスポンス

{
  "text": "Thanks everyone for joining. Let's start with the roadmap.",
  "usage": { "type": "duration", "seconds": 42, "cost": 0.0042 }
}

response_format が "text"、srt、vtt の場合、ボディは JSON ではなくプレーンテキストになります。

料金

文字起こしは、モデルの表示価格(「$ / minute」、トークン課金のモデルではトークンあたり)で課金されます。料金は usage.cost で返され、USD 残高から差し引かれます。

エラー

ステータスコード発生条件
400invalid_bodymultipart ボディを解析できなかった。
400model_requiredmodel フィールドがない。
402insufficient_balanceUSD 残高が $0。
404model_not_foundモデル ID が不明、または無効化されている。
413payload_too_largeファイルがボディのサイズ上限を超えている。

エラーを参照してください。