API 利用にあたっての重要事項

これらを理解した上でご利用ください。

1. アクセストークンを取得する

標準 TTS API を利用するには アクセストークン(64 文字) が必要です。アカウント登録後、設定ページから取得できます。

  1. 音読さんに登録 / ログイン
  2. アクセストークン取得ページ を開く
  3. 「アクセストークン」欄に表示されている 64 文字の文字列をコピー

取り扱い注意: アクセストークンは他人と共有しないでください。第三者があなたになりすまして利用できてしまいます。漏洩した場合は設定ページから再発行できます。

このページのサンプルでは環境変数 ONDOKU_TOKEN にトークンが入っている前提で書いています。

2. エンドポイント・リクエスト仕様

POST https://ondoku3.com/text_to_speech_api/

ヘッダー

ヘッダー
Content-Typeapplication/json
tokenアクセストークン(64 文字)

ボディ(JSON)

フィールド説明
voicestring音声 ID(例: ja-JP-NanamiNeural)。音声リストを参照
textstring読み上げるテキスト
speednumber速度(有効範囲: 0.34.0、例: 1.0)。範囲外は既定値 1.0 として処理されます
pitchnumberピッチ(有効範囲: -2020、例: 0.0)。範囲外は既定値 0 として処理されます

レスポンス

成功時は application/json で生成音声の URL と履歴 ID が返ります。MP3 バイナリは url にアクセスして取得してください。

{
  "text": "こんにちは、音読さんです。",
  "url": "https://storage.googleapis.com/ondoku3/voice/...",
  "pk": 12345,
  "share": 1
}
フィールド説明
textstring読み上げに使用されたテキスト
urlstring生成された音声ファイルの URL。クエリ文字列を除いた URL が返る
pknumber生成履歴(Sentence)の ID
sharenumber共有可否フラグ。通常は 1、一部のエラー用音声では 0

失敗時は多くの場合 JSON で {"error": "..."} が返ります。レート制限時のみ reset_in が追加されます。

HTTP エラーにならない案内レスポンス: 月間利用文字数が不足している場合など、一部の経路では HTTP 200 のまま上記と同じ形の JSON が返り、url には案内音声の URL が入ります。HTTP ステータスだけで成功判定せず、返却された text / url の内容も確認してください。

3. サンプルコード

curl -X POST https://ondoku3.com/text_to_speech_api/ \
  -H "Content-Type: application/json" \
  -H "token: $ONDOKU_TOKEN" \
  -d '{
    "voice": "ja-JP-NanamiNeural",
    "text": "こんにちは、音読さんです。",
    "speed": 1.0,
    "pitch": 0.0
  }' \
  | tee response.json
curl -L "$(jq -r .url response.json)" -o output.mp3
import os
import requests

resp = requests.post(
    "https://ondoku3.com/text_to_speech_api/",
    headers={
        "Content-Type": "application/json",
        "token": os.environ["ONDOKU_TOKEN"],
    },
    json={
        "voice": "ja-JP-NanamiNeural",
        "text": "こんにちは、音読さんです。",
        "speed": 1.0,
        "pitch": 0.0,
    },
    timeout=60,
)
resp.raise_for_status()

data = resp.json()
mp3 = requests.get(data["url"], timeout=60).content
with open("output.mp3", "wb") as f:
    f.write(mp3)
print(f"saved: output.mp3 ({len(mp3)} bytes), pk={data['pk']}")
import { writeFile } from "node:fs/promises";

const token = process.env.ONDOKU_TOKEN!;

const res = await fetch("https://ondoku3.com/text_to_speech_api/", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    token,
  },
  body: JSON.stringify({
    voice: "ja-JP-NanamiNeural",
    text: "こんにちは、音読さんです。",
    speed: 1.0,
    pitch: 0.0,
  }),
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);

type StandardTTSResponse = {
  text: string;
  url: string;
  pk: number;
  share: number;
};

const data = (await res.json()) as StandardTTSResponse;
const audioRes = await fetch(data.url);
if (!audioRes.ok) throw new Error(`audio HTTP ${audioRes.status}: ${await audioRes.text()}`);
const buf = Buffer.from(await audioRes.arrayBuffer());
await writeFile("output.mp3", buf);
console.log(`saved: output.mp3 (${buf.byteLength} bytes), pk=${data.pk}`);

4. エラー・案内レスポンス

HTTP原因
200{"text": "...", "url": "...", "pk": ..., "share": ...}文字数不足などの案内音声 JSON。url の音声内容を確認
400Token does not existstoken ヘッダー未指定 / 64 文字でない
400Token does not match無効なトークン
400voice parameter is requiredvoice 未指定 / 文字列でない
400"speed" and "pitch" must be finite numbersspeed / pitch が NaN・Infinity
429Rate limit exceeded60 秒 / 30 リクエスト超過
500Internal server errorサーバー側エラー(時間を置いて再試行)

5. レート制限と利用上限

プラン詳細・価格は 料金ページ を参照してください。

6. 使用上の注意事項

アクセストークンの管理

入力テキスト・生成音声の取り扱い

リトライ指針

HTTP対応
429 (Rate limit)retry_after 秒、または最低 2 秒待ってから再試行
5xxexponential backoff(1 秒 → 2 秒 → 4 秒 → 8 秒、最大 3 回)
4xx(400・401 等)リトライしない。リクエスト内容を修正してください
ネットワークタイムアウト2 〜 3 回までリトライ。同じテキスト・voice なら同じ音声が返ります

同時実行・並列度

タイムアウト推奨値

CORS(ブラウザから直接叩く場合)

コンテンツポリシー

以下の用途での利用を禁止します:

詳細は 利用規約 を確認してください。

生成音声の著作権・商用利用

7. 問い合わせ前に

不具合や予期しない挙動を確認したら、まず以下を試してください:

  1. エラー・案内内容を確認: エラー・案内レスポンス 表で対応を確認
  2. リトライ: 一時的なネットワーク・サーバー側エラーの可能性
  3. 残文字数を確認: 設定ページ で月間文字数の消費量を確認
  4. 最小ペイロードで疎通テスト: {"voice":"ja-JP-NanamiNeural","text":"テスト","speed":1.0,"pitch":0.0} で 200 が返るか
  5. トークン再発行: 認証エラーが解消しない場合、設定ページから新しいトークンを発行

上記で解消しない場合は お問い合わせ からご連絡ください。再現に必要な以下の情報を添えていただけるとスムーズです:

変更履歴について: このページは API 仕様の変更があった際に更新します。大きな変更は 音読さんトップ 等でアナウンスする場合がありますが、軽微な変更はサイレントに行われることがあります(重要事項に記載の通り)。