88API 音声 API:STT と TTS
88API の音声認識(STT)と音声合成(TTS)の統合ガイド。稼働状況、モデル、フィールド、形式、音声、サンプル、制限を説明します。
88API には独立した 2 種類の音声機能があります。入力と出力の方向に応じてエンドポイントを選び、STT と TTS のモデルやリクエスト形式を混在させないでください。
現在の提供状況(2026-08-11)
STT は本番環境で利用できます。TTS アダプターはデプロイ済みで、実際の WAV
リクエストも本番検証に合格していますが、公開モデル価格はまだ設定されていません。
価格が有効になるまで通常の API キーは 400 model_price_error となるため、TTS
を本番業務へ組み込まないでください。
機能一覧
| 機能 | エンドポイント | 公開モデル | 状態 | 出力 |
|---|---|---|---|---|
| 音声認識(STT) | POST /v1/audio/transcriptions | gemini-2.5-stt、gemini-3-stt、gemini-3.5-stt、gemini-3.6-stt | 本番利用可、実リクエスト検証済み | { "text": "..." } |
| 音声合成(TTS) | POST /v1/audio/speech | gemini-3.1-tts | デプロイ・WAV 検証済み、公開価格待ち | WAV または raw PCM |
| 音声翻訳 | /v1/audio/translations | なし | 未対応 | — |
Base URL: https://88api.ai/v1
Authorization: Bearer $API_KEY音声認識(STT)
multipart/form-data で音声を送信します。boundary は cURL または SDK に生成させ、Content-Type: multipart/form-data を手動設定しないでください。
curl --fail-with-body https://88api.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $API_KEY" \
-F "file=@./meeting.wav;type=audio/wav" \
-F "model=gemini-2.5-stt" \
-F "prompt=製品レビュー会議。人名と技術用語を正確に認識してください"{
"text": "認識された全文がここに入ります。"
}モデルとフィールド
4 つはいずれも 88API の公開モデル ID で、本番の実リクエストを検証済みです。通常は gemini-2.5-stt から開始し、他のモデルは実際の録音で比較してください。言語、アクセント、ノイズをまたいだ固定の精度順位は保証しません。
| フィールド | 必須 | 説明 |
|---|---|---|
file | はい | 音声ファイル 1 個、最大 15 MB |
model | はい | 上記 4 モデルのいずれか |
prompt | いいえ | 文脈、人名、ブランド、専門用語、希望する表記 |
対応形式は .mp3 (audio/mp3)、.wav (audio/wav)、.m4a (audio/aac)、.ogg (audio/ogg)、.flac (audio/flac)、.aiff/.aif (audio/aiff) です。拡張子と実際のエンコードを一致させてください。WAV は本番のエンドツーエンド回帰済みです。
基本 JSON 文字列のみを保証します。翻訳、話者分離、タイムスタンプ、SRT/VTT、リアルタイム配信、分割アップロード、非同期長時間音声には対応しません。
Python
from openai import OpenAI
client = OpenAI(api_key="YOUR_88API_KEY", base_url="https://88api.ai/v1")
with open("meeting.wav", "rb") as audio_file:
result = client.audio.transcriptions.create(
model="gemini-2.5-stt",
file=audio_file,
prompt="製品レビュー会議。用語: Vertex AI、NewAPI、88API",
)
print(result.text)音声合成(TTS)
公開価格の設定待ち
以下の仕様は本番へデプロイ済みで、実際の WAV
回帰にも合格しています。gemini-3.1-tts の正式価格が設定されるまで、通常の
API キーは 400 model_price_error で拒否されます。
curl --fail-with-body https://88api.ai/v1/audio/speech \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-tts",
"input": "88API 音声合成サービスへようこそ。",
"voice": "Kore",
"response_format": "wav",
"instructions": "自然で落ち着いた、明瞭な日本語ナレーション"
}' \
--output speech.wav成功レスポンスは JSON ではなく音声バイナリです。
| フィールド | 必須 | 既定値 | 説明 |
|---|---|---|---|
model | はい | — | gemini-3.1-tts |
input | はい | — | 合成するテキスト |
voice | はい | — | Gemini プリセット音声。まず Kore を推奨 |
response_format | いいえ | wav | wav または pcm のみ |
instructions | いいえ | — | 声調、感情、アクセント、速度、発音を自然言語で指定 |
speed | いいえ | 1 | 0.25–4。自然言語指示へ変換され、厳密な倍率ではありません |
結合後の input、instructions、速度指示は 8,000 UTF-8 バイト以下にしてください。
| 形式 | Content-Type | 仕様 |
|---|---|---|
wav | audio/wav | 推奨。24 kHz、16-bit、モノラル、WAV ヘッダーあり |
pcm | audio/pcm | 24 kHz、16-bit、モノラル、ヘッダーなし raw PCM |
MP3、Opus、AAC、FLAC、SSE、WebSocket、複数話者、音声クローン、参照音声、SSML は未対応です。
音声プリセット
正確なスペルを使用してください。更新は Google Gemini-TTS 公式ドキュメント を参照してください。
- 女性: Achernar、Aoede、Autonoe、Callirrhoe、Despina、Erinome、Gacrux、Kore、Laomedeia、Leda、Pulcherrima、Sulafat、Vindemiatrix、Zephyr
- 男性: Achird、Algenib、Algieba、Alnilam、Charon、Enceladus、Fenrir、Iapetus、Orus、Puck、Rasalgethi、Sadachbia、Sadaltager、Schedar、Umbriel、Zubenelgenubi
OpenAI の alloy、nova、shimmer は使用できません。
Python
import httpx
response = httpx.post(
"https://88api.ai/v1/audio/speech",
headers={"Authorization": "Bearer YOUR_88API_KEY"},
json={
"model": "gemini-3.1-tts",
"input": "88API 音声合成サービスへようこそ。",
"voice": "Kore",
"response_format": "wav",
"instructions": "自然で落ち着いた、明瞭な日本語ナレーション",
},
timeout=120,
)
response.raise_for_status()
open("speech.wav", "wb").write(response.content)主なエラー
400: 必須フィールド不足、非対応形式、長すぎる入力、無効な音声。400 model_price_error: 公開価格が未設定。同じリクエストを再試行しても解決しません。401: API Key がない、または無効。413: STT ファイルが 15 MB を超過。429: レート、残高、上流容量の制限。指数バックオフで再試行してください。500/502/503: 上流またはサーバーの一時障害。回数を制限して再試行し、継続する場合は request ID を添えてサポートへ連絡してください。