DEV Community

Cover image for Grok Voiceを無料で使う方法: コンソール設定、声のクローン、リアルタイム音声エージェント
Akira
Akira

Posted on • Originally published at apidog.com

Grok Voiceを無料で使う方法: コンソール設定、声のクローン、リアルタイム音声エージェント

xAIはGrok 4.3のリリースに合わせてGrok Voiceを公開しました。開発者にとって重要なのは、xAI Consoleから音声機能を無料で試せる点です。TTS、STT、リアルタイムボイスエージェント、カスタムボイスクローンを使えます。課金対象になるのは、エージェントが推論時に消費するGrok 4.3の基盤トークンです。このガイドでは、APIキー取得、音声選択、WebSocket接続、TTS呼び出し、そしてApidogでの検証手順までを実装ベースで説明します。補足として、Grok 4.3 APIガイドGroK Voice対GPT-Realtimeも参照できます。

今すぐApidogを試す

要約

  • Grok VoiceはxAI Consoleconsole.x.ai)から無料で利用できます。TTS、STT、ボイスエージェント、カスタムボイスに対して、1分あたりまたはトークンあたりの音声課金はありません。
  • フラッグシップモデルはgrok-voice-think-fast-1.0です。最初の音声までの時間は1秒未満で、xAIは最も近い競合製品より約5倍高速と説明しています。
  • 28言語で80以上のプリセット音声を利用できます。ボイスエージェント向けにはEve、Ara、Rex、Sal、Leoの5つの組み込みペルソナがあります。
  • 1分間の音声からカスタム音声をクローンできます。2分未満で利用可能なvoice_idが返されます。
  • WebSocketエンドポイントは次のとおりです。
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
Enter fullscreen mode Exit fullscreen mode
  • TTS、STT、カスタムボイスは同じAPIサーフェスで扱えます。
  • WebSocketセッションの再生、比較、デバッグにはApidogを使うと効率的です。

Grok Voiceが無料で提供するもの

xAI ConsoleでAPIキーを発行すると、音声機能を追加料金なしで試せます。まずconsole.x.aiにサインインし、キーを作成します。

Grok Voiceの機能と無料アクセス

利用できる主な機能は次の4つです。

  • ボイスエージェント:リアルタイムの音声対話。ツール利用、サーバーサイド音声活動検出、ターンテーキングを扱えます。
  • テキスト読み上げ(TTS):28言語、80以上のプリセット音声。MP3または電話向けμ-lawで出力できます。
  • 音声認識(STT):25入力言語のストリーミングおよびバッチ転写。単語レベルのタイムスタンプと話者分離を利用できます。
  • カスタムボイス:短い音声サンプルから声をクローンし、返されたvoice_idをTTSとボイスエージェントで再利用できます。

注意点は、ボイスエージェントが推論にGrok 4.3を使う場合、その基盤トークン使用量はコンソールクレジットの対象になることです。プロトタイプ検証には無料クレジットを使えますが、本番利用ではプラン確認が必要です。

ステップ1:コンソールキーを取得する

console.x.aiにアクセスし、Xアカウントでサインインします。API Keysページから、voicechatスコープを有効にしたキーを作成します。

ローカル開発では環境変数に設定します。

export XAI_API_KEY="xai-..."
Enter fullscreen mode Exit fullscreen mode

ブラウザアプリやモバイルアプリなど、クライアントに親キーを置けない場合は、サーバー側で一時トークンを発行します。コンソール設定または/v1/realtime/sessionsエンドポイントを使い、短命なトークンをクライアントに渡します。

実装方針は次のとおりです。

  1. サーバーでXAI_API_KEYを保持する。
  2. クライアントがセッション開始を要求する。
  3. サーバーが一時トークンを発行する。
  4. クライアントは一時トークンでWebSocketに接続する。
  5. 親キーはサーバー外へ出さない。

ステップ2:音声を選択する

Grok Voiceでは、プリセット音声またはカスタム音声を使います。

プリセット音声を使う

ボイスエージェントには5つの名前付きペルソナがあります。

  • Eve:女性、エネルギッシュ。明るいサポートフロー向け。
  • Ara:女性、温かい。一般的なアシスタント向け。
  • Rex:男性、自信がある。セールススクリプト向け。
  • Sal:ニュートラル、滑らか。ナレーションや長文読み上げ向け。
  • Leo:男性、権威的。コンプライアンスやフォーマルな案内向け。

TTS APIでは、より大きなプリセットライブラリを使えます。28言語、80以上の音声をvoiceパラメーターで指定します。

カスタムボイスを作成する

単一話者による約1分間のきれいなWAVファイルを用意します。ノイズ、BGM、複数話者は避けます。

curl https://api.x.ai/v1/custom-voices \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -F "name=narrator-jane" \
  -F "language=en" \
  -F "audio=@sample.wav"
Enter fullscreen mode Exit fullscreen mode

成功するとvoice_idが返ります。このIDはTTSとボイスエージェントの両方で使えます。

参照クリップの最大長は120秒ですが、長さよりも品質が重要です。静かな部屋で、一定の音量、単一話者、ワンテイクで録音してください。

ステップ3:WebSocket経由でGrokに話させる

ボイスエージェントはWebSocketセッションとして動作します。接続後にセッション設定を送り、入力音声を追加し、サーバーから返る音声イベントを処理します。

最小構成のNode.jsクライアントは次のようになります。

import WebSocket from "ws";

const ws = new WebSocket(
  "wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0",
  {
    headers: {
      Authorization: `Bearer ${process.env.XAI_API_KEY}`,
    },
  }
);

ws.on("open", () => {
  ws.send(JSON.stringify({
    type: "session.update",
    session: {
      voice: "ara",
      instructions: "You are a friendly support agent. Keep replies under two sentences.",
      input_audio_format: "pcm16",
      output_audio_format: "pcm16",
      turn_detection: {
        type: "server_vad",
      },
    },
  }));
});

ws.on("message", (raw) => {
  const event = JSON.parse(raw.toString());

  if (event.type === "response.audio.delta") {
    process.stdout.write(Buffer.from(event.delta, "base64"));
  }

  if (event.type === "response.audio.done") {
    console.error("response completed");
  }
});
Enter fullscreen mode Exit fullscreen mode

ユーザー音声は、base64エンコードしたPCM16フレームをinput_audio_buffer.appendイベントで送信します。

概念的には次の流れです。

ws.send(JSON.stringify({
  type: "input_audio_buffer.append",
  audio: base64Pcm16Chunk,
}));
Enter fullscreen mode Exit fullscreen mode

サーバーは主に次のイベントを返します。

  • response.audio.delta:音声チャンク
  • response.audio.done:音声応答の完了
  • response.function_call_arguments.done:ツール呼び出し引数の確定
  • error:エラー

ブラウザやデスクトップアプリでは24 kHz PCM16をデフォルトにすると扱いやすいです。電話システムにブリッジする場合はμ-lawを検討します。

ステップ4:ツール使用を追加する

ボイスエージェントは関数呼び出しをサポートしています。これにより、会話中に注文検索、予約確認、ユーザー情報取得などの社内APIを呼び出せます。

セッション設定でツールを宣言します。

ws.send(JSON.stringify({
  type: "session.update",
  session: {
    tools: [
      {
        type: "function",
        name: "lookup_order",
        description: "Look up the status of a customer order by order number.",
        parameters: {
          type: "object",
          properties: {
            order_id: {
              type: "string",
            },
          },
          required: ["order_id"],
        },
      },
    ],
  },
}));
Enter fullscreen mode Exit fullscreen mode

モデルがツールを呼び出す場合、response.function_call_arguments.doneイベントを発行します。アプリ側では次の処理を行います。

  1. イベントから関数名と引数を取り出す。
  2. 自分のAPIまたはDBを呼び出す。
  3. 結果をconversation.item.createで返す。
  4. モデルが会話を再開し、音声で回答する。

ツール結果を返す例です。

ws.send(JSON.stringify({
  type: "conversation.item.create",
  item: {
    type: "function_call_output",
    call_id: event.call_id,
    output: JSON.stringify({
      status: "shipped",
      eta: "Friday",
    }),
  },
}));
Enter fullscreen mode Exit fullscreen mode

組み込みのweb_searchツールも利用できます。独自の検索レイヤーを実装せずに、新しい情報を使って回答を補強したい場合に有効です。

ステップ5:エージェントなしでTTSを使用する

会話エージェントが不要で、アプリ内アナウンス、音声プロンプト、ポッドキャストイントロなどの読み上げだけが必要な場合は、RESTのTTSエンドポイントを使います。

curl https://api.x.ai/v1/tts \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-tts-1",
    "voice": "ara",
    "input": "Welcome back to your account. Your last login was Tuesday at 3pm.",
    "format": "mp3"
  }' \
  --output greeting.mp3
Enter fullscreen mode Exit fullscreen mode

出力フォーマットは次のように使い分けます。

  • mp3:アプリ、Web、ナレーション向け
  • mulaw:8 kHz、電話回線向け

TTSエンドポイントは同期式です。WebSocketセッションを作成する必要はなく、レスポンスとして音声バイトが返ります。

ステップ6:Apidogで全フローをテストする

WebSocket APIはステートフルなため、ターミナルだけで検証するとイベントの追跡が難しくなります。Apidogを使うと、WebSocketメッセージを保存、再生、比較できます。

ApidogでのWebSocketテストフローを示すスクリーンショット

検証手順は次のとおりです。

  1. 新しいWebSocketリクエストを作成する。
  2. URLに次を設定する。
wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0
Enter fullscreen mode Exit fullscreen mode
  1. 環境変数にXAI_API_KEYを保存する。
  2. Authorizationヘッダーを設定する。
Authorization: Bearer {{XAI_API_KEY}}
Enter fullscreen mode Exit fullscreen mode
  1. 送信メッセージとしてsession.updateを保存する。
  2. フィクスチャ音声をinput_audio_buffer.appendとして送る。
  3. response.createを送信して応答を開始する。
  4. 返ってくるイベントをツリーで確認する。
  5. 音声、プロンプト、ツール定義を変えて再実行し、結果を比較する。

Apidogをダウンロードすれば、TTSとSTTのRESTリクエストも同じプロジェクトで管理できます。ステートフルAPIのテスト設計については、QAエンジニア向けのAPIテストツールも参考になります。

無料枠の制限

xAI Consoleでは音声機能自体に1分あたりまたはトークンあたりの料金はありません。ただし、開発時に意識すべき制限があります。

  • レート制限:悪用防止のため、各エンドポイントには1分あたりのリクエスト上限があります。開発やデモには十分ですが、本番負荷テストでは上限に注意してください。
  • カスタム音声クォータ:1アカウントが保持できるカスタム音声クローン数には上限があります。不要な音声を削除してスロットを空けられます。
  • 推論トークン:ボイスエージェントがGrok 4.3で推論する場合、コンソールクレジットの対象になります。無料クレジットはプロトタイプ向けであり、本番では有料プランの確認が必要です。

レート制限に当たる場合は、リクエストのバッチ化、リトライ間隔の調整、有料ティアへの移行を検討します。APIの呼び出し形式は変わらず、主に上限が変わります。

音声を比較する

本番投入前に、同じテキストを複数の音声で読み上げて比較します。音声ごとにトーンの解釈が異なるため、短いテストセットを用意するとミスマッチを早く見つけられます。

最低限、次の3種類を試してください。

  • 2文の挨拶
  • 確認フレーズ(例:「承知いたしました、すべて設定済みです」)
  • 数字、日付、コンマを含む長い文

さらに、同じプロンプトを次の3つの指示で読み上げると、イントネーションの差を確認できます。

  • 落ち着いて
  • 通常
  • 緊急

Grokのプリセット音声は、ベンチマークした多くのTTSエンジンよりもこの変化を扱いやすいですが、本番前には必ずユースケースごとに聴取テストを行ってください。

FAQ

APIは本当に無料ですか?隠れた上限はありますか?

音声機能(TTS、STT、ボイスエージェント、カスタムボイス)には、コンソール上で1分あたりまたはトークンあたりの音声課金はありません。ただし、ボイスエージェントが使う基盤推論モデルはコンソールクレジットの対象です。無料クレジットはプロトタイピングには十分ですが、本番利用ではプラン確認が必要です。

X(Twitter)アカウントは必要ですか?

はい。xAI ConsoleへのサインインにはXアカウントを使用します。

ブラウザからGrok Voiceを使用できますか?

はい。一時トークンを使えば可能です。サーバー側で/v1/realtime/sessionsから短命なトークンを発行し、そのトークンをブラウザに渡してWebSocket接続します。親APIキーはサーバー外に出しません。

どのような音質を期待できますか?

TTS出力は高音質MP3または8 kHz μ-lawです。ボイスエージェントは内部で24 kHz PCM16を使用します。音質は主要な商用TTSエンジンと同等であり、レイテンシーが大きな差別化要因です。

電話回線で動作しますか?

はい。μ-law出力はSIPおよびPSTNブリッジで一般的なフォーマットです。ただし、SIPプロバイダーは別途必要です。xAIは現在、独自のSIPゲートウェイを提供していません。

他のツールと比較してクローン品質はどうですか?

クローン品質は、音声の長さより参照オーディオの品質に強く依存します。静かな部屋で録音したきれいな60秒のサンプルは、ノイズの多い120秒のサンプルより良い結果になりやすいです。生成されたvoice_idは、再クローンなしでTTSとボイスエージェントの両方に使えます。

Grok VoiceをゲームのAIキャラクターに使用できますか?

はい。TTSエンドポイントはランタイム生成に使えます。カスタムボイスを使えば、キャラクターごとに異なる声を持たせられます。長いセリフではレイテンシーに注意し、必要に応じてテキストをチャンク化して生成します。

まとめ

Grok Voiceは、リアルタイムボイスエージェントを試すための実装しやすい選択肢です。xAI Consoleでは音声機能自体に1分あたりの料金がなく、プリセット音声、TTS、STT、カスタムボイス、WebSocketベースの会話セッションを一通り検証できます。

最短の検証手順は次のとおりです。

  1. xAI ConsoleでAPIキーを作る。
  2. grok-voice-think-fast-1.0にWebSocket接続する。
  3. session.updateで音声と指示を設定する。
  4. サンプル音声を送って応答イベントを確認する。
  5. Apidogでセッションを保存し、音声やプロンプトを変えて比較する。

Grok 4.3の推論APIと組み合わせる場合は、Grok 4.3 APIガイドを参照してください。OpenAIのスタックと比較したい場合は、Grok Voice vs GPT-Realtimeが参考になります。

Top comments (0)