[開発者向け]xAI「Custom Voices」全解説——声をクローンしてVoice Agent APIに組み込むまでの実装ガイド

目次

はじめに

 xAIは2026年4月30日、Grok TTSおよびVoice Agent APIに対応するカスタム音声クローン機能「Custom Voices」と、ボイスカタログを一元管理する「Voice Library」を発表しました。本稿では、発表ブログとxAI公式ドキュメントをもとに、Custom Voicesの仕組みと安全性の設計、Voice Agent APIへの実装方法をコードサンプルとともに解説します。

参考記事

メイン記事:

関連情報:

関連記事

あわせて読みたい
[開発者向け]xAI、Grok音声APIを公開——高精度STTとSpeech Tags対応TTSが競合比最安値で登場 はじめに  xAI(イーロン・マスク氏が設立したAI企業)が2026年4月17日、音声認識(STT)と音声合成(TTS)の2種類のスタンドアロンAPIを公開しました。Grok Voiceやテ...
あわせて読みたい
[開発者向け]xAI新フラッグシップ音声エージェント「Grok Voice Think Fast 1.0」——Starlinkの実運用... はじめに  xAIが2026年4月23日、最新フラッグシップ音声エージェントモデル「Grok Voice Think Fast 1.0」をAPI経由で公開しました。音声AIの業界標準ベンチマーク「τ-...

要点

  • xAIはGrok TTS・Voice Agent APIに対応するカスタム音声クローン機能「Custom Voices」を公開し、約1分の録音から2分以内に本番利用可能なボイスモデルを生成できる
  • カスタムボイス作成にはパスフレーズの読み上げによる同意確認と話者埋め込みの比較照合からなる2段階の安全検証が必須であり、既存録音や他者の声のクローンは不可能な設計である
  • カスタムボイスは1チームあたり30件まで無料で作成可能で、TTS・Voice Agent APIへの追加料金は発生しない
  • Voice Libraryでは80以上のビルトインボイスが28言語で提供されており、カスタムボイスと同一コンソールから管理できる
  • Voice Agent APIはOpenAI Realtime APIと互換性があり、ベースURLの変更のみで既存の実装から移行が可能である

詳細解説

Custom Voicesとは

 xAIの発表によれば、Custom Voicesは約1分程度の自然な発話を録音するだけで、2分以内に本番環境で使えるボイスモデルを生成する機能です。2026年4月18日に公開されたGrok TTS/STT APIに続く拡張として位置づけられており、生成されたカスタムボイスはREST形式のTTSエンドポイント、ストリーミングTTS WebSocket、Voice Agent APIのいずれでもビルトインボイスと同じように利用できます。Speech Tagsや多言語出力といった既存のTTS機能もすべて継承されます。

 なお、現時点でCustom Voicesの利用は 米国のみ に制限されています(イリノイ州を除く)。日本リージョンへの展開は今後の発表を待つ必要があります。

2段階の安全検証

 カスタムボイスの作成前に、xAIは以下の2段階の検証プロセスを必須化しています。

  1. パスフレーズ確認: 指定されたフレーズを読み上げ、STTエンジンがリアルタイムで転写・照合することで同意と本人の存在を確認する
  2. 話者類似度検証: パスフレーズクリップと本録音の話者埋め込み(speaker embeddings)を比較し、同一人物であることを確認する

 この仕組みにより、既存録音からのクローンや、第三者の声のクローンは技術的に実施できない設計となっています。

Voice Libraryとビルトインボイス

 Voice Libraryは、xAIコンソール上でカスタムボイスとビルトインボイスを一元管理できる新機能です。xAIによれば、ビルトインボイスのカタログが 80以上のボイス・28言語 に拡充されました。現在提供されているビルトインボイスは以下の5種類です。

voice_id性別トーン用途の目安
eveFemaleEnergetic・upbeatデフォルト、汎用
araFemaleWarm・friendly会話・カスタマーサポート
rexMaleConfident・clearビジネス・プロフェッショナル
salNeutralSmooth・balanced汎用・多目的
leoMaleAuthoritative・strong指示・ドキュメント読み上げ

カスタムボイスの作成手順

コンソールからの作成(推奨)

 コンソール(console.x.ai)からは、チームあたり30件まで無料でカスタムボイスを作成できます。録音のベストプラクティスは以下のとおりです。

  • 静かな環境で録音する(空調・ファンの音は除去する)
  • スクリプトを棒読みせず、自然に話す
  • 90〜120秒が推奨(30秒未満は精度が落ちる)
  • 表現豊かに話す(クローン結果がその表現力を再現するため)
  • モノラル録音、24kHz WAVが最適(MP3も可)

APIからの作成(Enterpriseプランのみ)

 以下は、参照音声ファイルからカスタムボイスを作成し、そのまま音声合成まで行う参考コードです(xAI公式ドキュメントのサンプルをもとにしています)。

import os
import requests

# 1. カスタムボイスを作成する(multipart/form-data)

with open("reference.wav", "rb") as f:
    create = requests.post(
        "https://api.x.ai/v1/custom-voices",
        headers={"Authorization": f"Bearer {os.environ['XAI_API_KEY']}"},
        files={"file": ("reference.wav", f, "audio/wav")},
        data={
            "name": "Friendly Narrator",
            "language": "en",
            "gender": "female",
            "tone": "warm",
            "use_case": "narration",
        },
    )

create.raise_for_status()
voice_id = create.json()["voice_id"]  # 例: "nlbqfwie"(8文字英数字)

# 2. 作成したボイスでテキストを音声合成する
speech = requests.post(
    "https://api.x.ai/v1/tts",
    headers={
        "Authorization": f"Bearer {os.environ['XAI_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "text": "Hello! This audio was synthesized using my custom voice.",
        "voice_id": voice_id,
        "language": "en",
    },
)

speech.raise_for_status()

with open("hello.mp3", "wb") as f:
    f.write(speech.content)

 POST /v1/custom-voices で指定できる主なフィールドを以下に示します。file のみ必須で、他はすべて省略可能です。

フィールド説明
file参照音声(最大120秒、WAV推奨)
name表示名
gendermale / female / neutral
tonewarm / casual / professional / friendly / authoritative など
use_caseconversational / narration / characters / educational など
languageISO 639(en)またはBCP-47形式(en-US、zh-CNなど)

 カスタムボイスはその後 GET /v1/custom-voices(一覧)、GET /v1/custom-voices/{voice_id}(個別取得)、PATCH /v1/custom-voices/{voice_id}(メタデータ更新)、DELETE /v1/custom-voices/{voice_id}(削除)でCRUD操作が可能です。なお音声データ自体の変更はできず、再録音が必要な場合は削除して作り直す必要があります。

Voice Agent APIへの組み込み

 Voice Agent APIはWebSocketベースのリアルタイム音声対話APIです。xAIの公式ドキュメントによれば、旧モデルの grok-voice-fast-1.0 はまもなく廃止予定となっており、2026年4月25日にリリースされた grok-voice-think-fast-1.0 への移行が強く推奨されています。

 以下は、カスタムボイスを指定してセッションを開始する基本実装です。

import asyncio
import json
import os
import websockets

async def realtime_with_custom_voice(voice_id: str):
    async with websockets.connect(
        "wss://api.x.ai/v1/realtime?model=grok-voice-think-fast-1.0",
        additional_headers={"Authorization": f"Bearer {os.environ['XAI_API_KEY']}"}
    ) as ws:
        # セッションを設定する:ボイス・システムプロンプト・発話検出モードを指定する
        await ws.send(json.dumps({
            "type": "session.update",
            "session": {
                "voice": voice_id,                   # カスタムvoice_idまたはビルトインボイス名
                "instructions": "You are a helpful assistant.",
                "turn_detection": {"type": "server_vad"}  # サーバー側VADで自動発話検出
            }
        }))

# 以降は通常のリアルタイムイベントループに続く
asyncio.run(realtime_with_custom_voice("nlbqfwie"))

 session.update で調整できる主なパラメータは以下のとおりです。

パラメータ説明
voicestringビルトインボイス名またはカスタムvoice_id
instructionsstringシステムプロンプト
toolsarray利用するツール群
turn_detection.typestring“server_vad”(自動検出)または null
turn_detection.thresholdnumberVAD感度(0.1〜0.9、デフォルト: 0.85)
turn_detection.silence_duration_msnumber発話終了とみなす無音時間(ms)
audio.input.format.typestringaudio/pcm / audio/pcmu / audio/pcma
audio.input.format.ratenumberサンプルレート(PCMのみ、デフォルト: 24000 Hz)

 音声フォーマットとしてはデフォルトの 24kHz PCM が多くのユースケースに適しています。電話連携(SIP/Twilio)では8kHz G.711(pcmu/pcma)も利用できます。

ツール連携

 Voice Agent APIは通話中に以下の5種類のツールを呼び出せます。

  • file_search: アップロードしたドキュメントコレクションの検索
  • web_search: ウェブ検索
  • x_search: X(旧Twitter)の投稿検索(allowed_x_handles で対象を絞り込み可能)
  • mcp: 外部MCPサーバーへの接続(xAI側でツール実行を管理)
  • function: JSONスキーマで定義するカスタム関数

 web_search・x_search・mcp・file_searchはサーバーサイドで実行されるため、クライアント側での応答ハンドリングは不要です。カスタム関数(function)のみ、response.function_call_arguments.done イベントを受け取り、結果を conversation.item.create で返す実装が必要です。複数の関数呼び出しが同時に発生する場合は、すべての結果を返し終えてから response.create を送る必要がある点に注意が必要です。

OpenAI Realtime API互換性

 xAIの発表によれば、Voice Agent APIはOpenAI Realtime APIと互換性があり、多くのOpenAIクライアントライブラリで、接続先URLを wss://api.x.ai/v1/realtime に変更するだけで動作します。ただし、conversation.item.retrieve・conversation.item.truncate など一部のクライアントイベントと、rate_limits.updated など一部のサーバーイベントは未対応のため、移行時は差分を確認した上で実装することが重要だと思います。

制限事項

項目
カスタムボイス数(コンソール)30件/チーム(無料)
カスタムボイス作成APIEnterpriseプランのみ
参照音声の最大長120秒
voice_idの形式8文字、小文字英数字
利用可能地域米国のみ(イリノイ州を除く)

 30件を超える利用が必要な場合は、xAIへの個別申請が可能とのことです。

まとめ

 xAIのCustom Voicesは、声のクローン作成から安全性の設計、Voice Agent APIへの統合まで一貫したパイプラインとして提供されています。OpenAI Realtime API互換の設計により既存実装からの移行コストを抑えられる点も実用的だと思います。現時点では米国限定ですが、今後の地域展開が期待されます。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次