Worder API

本人確認済みの実在する人の声から、プログラムで音声を生成できます。料金は生成した音声の秒数に応じた従量制です。

Worderで開発する理由

倫理的に調達された音声

すべての音声は、本人のボイスアクターがアップロードし、ビデオで本人確認を済ませています。スクレイピングしたデータは一切ありません。

1秒あたりの料金

各アクターが1秒あたりの単価を設定します。生成した音声の分だけ支払うか、サブスクリプションプランでお得に利用できます。

アクターの取り分は90%

クレジットカード手数料とAI生成費用を差し引いた後、売上の90%がボイスアクターのものになります。支払いはStripe Connectを通じて処理されます。

クイックスタート

1. APIキーを取得し、クレジットを追加する

アカウントを作成し、ダッシュボード → 開発者向けAPIでキーを作成します。クレジットを追加してください(最低$5)。各生成は、残高またはそのボイスアクターのサブスクリプションから課金されます。

2. 音声とサンプルを探す

curl https://worder.com/api/v1/voices \
  -H "Authorization: Bearer wdr_YOUR_API_KEY"

ID、サンプル、言語、1秒あたりの価格、サブスクリプションプランを含む音声の一覧を返します。またはマーケットプレイスで音声を探し、サンプルページの「APIで生成」から音声IDとサンプルIDをコピーしてください。

3. 音声を生成する

curl -X POST https://worder.com/api/v1/generate \
  -H "Authorization: Bearer wdr_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "voice_id": "VOICE_ID",
    "sample_id": "SAMPLE_ID",
    "text": "[happy] Hello, this is a test of the Worder API. [pause 1] [calm] Now let us discuss the details."
  }'

生成されたWAVの署名付きURL、生成された秒数、課金額、そして課金がサブスクリプションとクレジットのどちらから行われたかを返します。

音声の種類

シングルエモーション

録音サンプルは1つです。原稿全体が均一なトーンで生成されます。ディレクションタグは使えません。ナレーション、アナウンス、一貫したスタイルのコンテンツに最適です。

マルチエモーション

ボイスアクターが13種類の感情スタイルを収録しています。購入者は[happy]、[angry]、[calm]などのディレクションタグで、原稿の途中で感情を切り替えられます。広告、ストーリーテリング、キャラクター、変化に富んだコンテンツに最適です。

利用できるタグ:normal, excited, happy, confident, fast, calm, surprised, angry, thoughtful, sad, annoyed, scared, nervous。

APIレスポンスのvoiceTypeフィールドで、その音声の種類がわかります。descriptiveTags(「deep」「warm」「professional」など最大5つのキーワード)を使うと、特定の質感を持つ音声を検索できます。

APIリファレンス

GET/api/v1/voices

ビデオで本人確認済みで、サンプルが1つ以上ある音声を一覧します。

クエリパラメータ

language — 言語で絞り込み(例:"English")

search — 名前で検索(大文字・小文字を区別しません)

limit — 1ページあたりの件数(デフォルト20、最大100)

offset — ページネーションのオフセット

レスポンス

{
  "voices": [
    {
      "id": "...",
      "name": "Professional Narrator",
      "language": "English (United States)",
      "accent": null,
      "voiceType": "MULTI_EMOTION",
      "descriptiveTags": ["deep", "warm", "professional"],
      "samples": [
        { "id": "...", "label": "normal" },
        { "id": "...", "label": "happy" },
        { "id": "...", "label": "angry" }
      ],
      "user": {
        "id": "...",
        "name": "Sarah Mitchell",
        "pricePerSecondCents": 5,
        "volumeDiscounts": [
          { "threshold": 3600, "discountPercent": 20 }
        ],
        "storefront": { "slug": "sarahmitchell" }
      }
    }
  ],
  "total": 42,
  "limit": 20,
  "offset": 0
}
POST/api/v1/generate

音声から音声を生成します。そのボイスアクターの有効なサブスクリプションがある場合は、サブスクリプションから秒数が差し引かれます。ない場合は、アクターの1秒あたりの単価でクレジットが課金されます。

リクエストボディ(JSON)

voice_id 必須 — 音声ID

sample_id — タグのないテキストに使うデフォルトのサンプル(省略時は最初のサンプル)

text 必須 — 合成するテキスト(30文字以上、5,000文字以内)。ディレクションタグとポーズタグに対応しています(下記参照)。

ディレクションタグ

原稿の一部を、その音声のサンプルラベルに一致するタグ名の角括弧で囲みます。Worderは各セクションを対応するサンプルで生成し、音声をつなぎ合わせます。

"text": "[happy] Welcome to the show! [confident] Now let's talk business."

利用できるタグは音声ごとに異なります。/api/v1/voicesのsamples[].labelフィールドを確認してください。タグのないテキストには、指定したsample_id、または最初のサンプルが使われます。マルチエモーション音声で、どのサンプルにも一致しないタグを使うと、その音声で利用できるタグとともに422が返され、何も生成・課金されません。13種類の標準タグで書かれた原稿は、それらを提供するどの音声でも動作します。

ポーズタグ

セクション間に無音を挿入します。長さは秒で指定します(整数または小数、最大30)。ポーズの後のテキストは、直前のタグのスタイルで続きます。

"text": "[excited] Big news! [pause 2] [calm] But let's take it one step at a time."
"text": "[calm] Take a breath. [pause 1.5] Now continue."
"text": "[happy] Hola! [pausa 3] [calm] Ahora hablemos con calma."

[pause N]と[pausa N]のどちらも使えます(言語を問いません)。

強調タグ

[emphasize]を使うと、次のセクションの音量が上がります。音声のスタイルは変わらず、直前のタグと同じサンプルが使われます。[emphasize]の後のテキストは、直前のタグのスタイルで続きます。

"text": "[calm] Take a deep breath. [emphasize] Now give it everything you've got!"

次も使えます:[emphasis]、[enfatizar]、[énfasis]。

発音の指定

{written|spoken}を使って、特定の単語の発音を指定できます。TTSエンジンには「spoken(読み方)」側が渡され、品質チェックでは「written(表記)」側と比較されます。

"text": "{Pulse|Pols} es la energía que necesitas. {Nike|Naiki} también lo sabe."

ブランド名、外国語の単語、TTSが読み間違える専門用語に便利です。

セグメントの要件

タグで区切られた各セクションは30文字以上必要です。短いセグメントは音声が不安定になります。短すぎるセクションが複数ある場合、APIはすべてのエラーをまとめて返します。

生成後、WorderはWhisperで出力を文字起こしし、入力と比較します。一致率が90%未満の場合、生成は拒否され(422)、課金されません。

レスポンス

{
  "audio_url": "https://...",
  "voice_id": "...",
  "sample_id": "...",
  "seconds_generated": 12,
  "cost_cents": 60,
  "charged_via": "credits",
  "subscription_id": null,
  "balance_cents": 9940
}

エラーコード

400 — バリデーションエラー(テキストが短すぎる、言語の不一致、セグメントが短すぎる)。改行で区切られた複数のエラーを含むことがあります。

401 — APIキーが無効または未指定

402 — クレジット不足(レスポンスにrequired_cents、balance_centsを含みます)

404 — 音声またはサンプルが見つかりません

422 — 品質チェック不合格(レスポンスにsimilarity、transcript、quality_failed: trueを含みます)。課金されません。

502 — 生成失敗(TTSサービスのエラー)

料金

1秒あたりの料金 — 各ボイスアクターが自分の単価を設定します(最低$0.01/秒)。実際に生成された音声の秒数分だけ支払います。

サブスクリプション — 月単位で秒数の枠(1時間、10時間、100時間)を契約すると、1秒あたりの単価から20〜60%割引になります。サブスクリプションはUIで購入し、API呼び出し時に自動的に適用されます。

クレジット — アカウントへの1回限りのチャージで、最低$5です。サブスクリプションで賄えない生成にクレジットが課金されます。

収益の分配 — クレジットカード決済手数料とAI生成費用を先に差し引きます。残りのうち90%がボイスアクター(Stripe Connect経由で支払い)、10%がWorderの取り分です。