本文へスキップ
Webアプリとモバイルアプリ

Webアプリとモバイルアプリ向けの音声エージェントAPI

アプリに音声エージェントを追加するには、たいてい不要な電話番号を買うか、APIキーを端末に置かないよう注意しながら、音声認識、モデル、音声を自分で組み合わせることになります。 電話回線ではなく自社のアプリの中に音声エージェントを置きたいプロダクトチーム向けです。電話に応答するのと同じエージェント、エンジン、ナレッジベース、予約受付に、ブラウザのタブやモバイルアプリからwss://api.voice.wixzel.com/v1/realtime経由でつながります。接続するものも、買う番号もありません。サーバーが使い捨てのセッションを発行するのでAPIキーがクライアントに渡ることはなく、セッションは同じエンジンの通話と同じくプリペイド残高を秒単位で消費します。

最終更新日:

大きな緑のマスコット、その上の吹き出しの挨拶、下の「話す」ボタンが表示されたスマートフォンのアプリ画面

Wixzel VoiceでWebアプリやモバイルアプリの音声エージェントを構築するには?

  1. 01
    POST /v1/agents

    エージェントを作成します。プロンプト、最初の挨拶、ナレッジベース、音声エンジンを指定します。電話の通話がつながるのと同じエージェントです。

  2. 02
    POST /v1/realtime/sessions

    サーバーからAPIキーを使って、エージェント、必要に応じて許可するブラウザのオリジンと独自のメタデータを指定すると、そのエージェントに対して1回だけ、1分間有効なclient_secretが返されます。

  3. 03
    wss://api.voice.wixzel.com/v1/realtime

    クライアントがシークレットを使ってソケットを開き、音声をストリーミングします。ブラウザでは、wixzel-voice/realtimeのRealtimeSessionがマイク、再生、割り込みを処理します。Flutterでは、wixzel_voiceパッケージのRealtimeConnectionがプロトコルを処理し、マイクとスピーカーはアプリ側で用意します。

  4. 04
    GET /v1/calls/{id}

    すべてのセッションはchannelがwebの通話記録になり、文字起こし、通話時間、費用、独自のメタデータを含みます。終了時には同じcallCompleted webhookが送られます。

  5. 05
    wixzel-voice/mascot, wixzel_voice_flutter

    任意で、エージェントが話している間にそのマスコット(アニメーションする顔)を表示できます。Webページでは、wixzel-voice/mascotのmountMascotが描画し、face.connect(session)で口の動きを同期させて通話を実行します。Flutterでは、wixzel_voice_flutterパッケージのAgentMascotViewが描画し、MascotRealtimeLinkがRealtimeConnectionと動きを合わせます。

Webアプリやモバイルアプリの音声エージェントに合う音声エンジンは?

Wixzel Voiceのgemini-liveエンジンを使います。接続1分あたり$0.0491です。1つのリアルタイムモデルが聞き取り、考え、話すため、往復の遅延はGemini自体の性能どおりで、1分あたり最も安いエンジンです。インドの言語向けのsarvamパイプラインも、特定のElevenLabsの音声が必要な場合のclassicも、ソケット経由で動きます。

Wixzel VoiceでのWebアプリやモバイルアプリの音声エージェントの費用は?

gemini-liveエンジンでの4分のセッションにかかるWixzel Voiceのエンジン時間です。一般的な発話速度で計算し、実際の使用量に応じて秒単位で課金されます。電話回線を使わないため通信費はかからず、短いセッションはそのぶん安くなります。

月間のセッション数接続時間(分)月間のエンジン費用
5002,000$98.20
2,50010,000$491
10,00040,000$1,964

プリペイド制です。$5からクレジットをチャージし、セッションがそれを消費します。自分の使い方で見積もる。

Wixzel VoiceでWebアプリやモバイルアプリの音声エージェントを構築する方法を説明したガイドは?

よくある質問

Wixzel Voiceで作った音声エージェントを自社のWebサイトやモバイルアプリに置けますか?

はい。サーバーがAPIキーでPOST /v1/realtime/sessionsを呼び出してclient_secretを受け取り、ページやアプリがそれを使ってwss://api.voice.wixzel.com/v1/realtimeを開き、音声を双方向にストリーミングします。エージェント、エンジン、プロンプト、ナレッジベースは電話の通話と同じものです。SIPトランクも電話番号も使いません。

ブラウザやアプリにAPIキーが必要ですか?

いいえ。APIキーを渡してはいけません。クライアントが持つのは、サーバーが発行したclient_secretだけで、1つのエージェントに対して1回だけ、1分間有効です。ブラウザの場合は、発行時にallowed_originsを渡すと他のサイトからのソケット接続は拒否されるため、ページからコピーされたシークレットは他の場所では使えません。

リアルタイムAPIに対応しているSDKはどれですか?

TypeScript SDK(npmのwixzel-voice)には、ブラウザ用クライアントのRealtimeSessionが含まれ、マイクの許可、音声のエンコードと再生、ユーザーによるエージェントへの割り込みを処理します。Dart SDK(pub.devのwixzel_voice)には、FlutterとDart向けのRealtimeConnectionが含まれ、プロトコルを処理し、マイクとスピーカーはアプリ側で用意します。それ以外の環境ではプロトコルを直接使います。WebSocket上のJSONフレームで、音声は8 kHzのG.711 µ-lawをbase64にしたものです。

Webやアプリのセッションの音質はどの程度ですか?

電話と同じ品質です。セッションは通話と同じメディア経路を通るため、音声は双方向とも電話回線と同じ8 kHzのG.711 µ-lawです。会話には十分ですが、ブラウザの音声が広帯域のプラットフォームと比べると実際の制約です。後から気づくことがないよう、ここに明記しています。

Webやアプリのセッションはどのように課金されますか?

同じエンジンの電話の通話とまったく同じです。1分あたりの価格も同じで、同じプリペイド残高から秒単位で課金され、GET /v1/usage/eventsで明細を確認できます。電話回線がないため通信料はかかりません。セッションはアカウントの同時通話数の上限(デフォルトは5)に数えられます。セッションの発行は無料なので、ページを開いてマイクを許可しなかったユーザーに費用はかかりません。

セッションはどのくらい続けられますか?

デフォルトは10分です。セッション発行時にmax_duration_secondsを10秒から1時間の範囲で指定すると、その時点でサーバーがセッションを終了します。エージェントやクライアントから終了することもできます。

Flutterで動きますか?

はい。Dart SDKのRealtimeConnectionがソケットとプロトコルを処理します。アプリは任意の録音プラグインで16ビットPCM・8 kHzの音声を録音し、SDKのヘルパーでµ-lawに変換し、エージェントの音声を任意のPCMプレーヤーで再生します。エコーキャンセルを有効にしてください。そうしないと、エージェントがスピーカーから出る自分の声を聞いてしまいます。

エージェントが話している間、アプリにその顔を表示できますか?

はい。Wixzel Voiceのすべてのエージェントにはマスコットがあります。エージェントのmascotフィールドにある小さな仕様から描かれる、アニメーションする顔です。Webページでは、wixzel-voice/mascot(npmのwixzel-voice 0.10.0)のmountMascotがキャンバスに描画し、face.connect(session)でリアルタイム通話を開始すると、エージェントの音声に合わせて口が動きます。Flutterでは、pub.devのwixzel_voice_flutterパッケージのAgentMascotViewで描画し、MascotRealtimeLinkでRealtimeConnectionに合わせて聞く・考える・話す動きをさせます。Flutterではどちらも音声の録音や再生は行いません。Webのヘルパーは両方を行います。

コードをまったく書かなくてよい方法はありますか?

Webサイトであれば、マスコットウィジェットがあります。エージェントでウィジェットを有効にし、embed_originsにサイトを登録して、scriptタグを1つ貼り付けると、訪問者がページの隅からエージェントに電話できます。内部では同じリアルタイムAPIを使い、課金も同じです。「Webサイト用のAI音声アシスタント」を参照してください。

代理店や開発者はWixzel Voiceでほかに何を構築していますか?

予約受付

電話に出て空き状況を確認し、予約を入れるエージェントを、自社のSIPトランク上で構築できます。予約はAPI経由で書き戻されます。

発信によるリード選別

リードをアップロードしてキャンペーンを開始すると、エージェントが自社のSIPトランク経由で1件ずつ電話をかけ、選別のための質問をします。各通話はステータスと文字起こし付きの記録になり、リードに紐づきます。

着信サポート窓口

アップロードしたナレッジベースを参照するエージェントでサポート番号に応答し、よくある質問に対応して、すべての通話の文字起こしを残します。

インドの言語

インドの言語のために作られたモデルで電話エージェントを動かせます。sarvamエンジンが音声認識、言語モデル、音声合成を一貫して担います。

Webサイトの音声アシスタント

scriptタグ1つで、話すAIアシスタントをWebサイトに置けます。サイトの内容から作ったエージェントと、訪問者がブラウザから電話できるアニメーションのマスコット、発信者情報、電話できる人の設定、1日の上限を備えています。

AIエージェントからの電話

Claude Code、Codex、Cursorなど任意のMCPクライアントをアカウントに接続すると、AIエージェントが通信事業者の接続、音声エージェントの構築、発信、キャンペーンの実行、文字起こしの確認を行えます。費用が発生するツールは、すべて実行前に確認を求めます。

低コストのAI通話

1分あたり数セントでAI通話を実行できます。プリペイドのクレジットから秒単位で課金され、サブスクリプションや最低料金はなく、自社のSIPトランクを使うので通信料の上乗せもなく、すべての料金が明細化されます。

話すAIアバター

音声エージェントに顔を付けられます。エージェントに合わせて口が動くアニメーションのアバターを、Webサイト、共有リンク、Webアプリ、Flutterアプリで使え、アバターの料金はかかりません。

代理店向け

クライアントごとに、そのクライアントのアカウントと通信事業者で、クライアントの言語の電話エージェントを構築し、秒単位で課金される費用に対して月額の保守料を設定できます。

Wixzel Voiceのすべてのファクト

運営者、価格、上限、返金、データの保存場所を1ページにまとめています。

最初の音声エージェントを構築