本文へスキップ
ガイド

Wixzel Voiceのsarvamエンジンで作るヒンディー語とマラヤーラム語の電話エージェント

Wixzel Voice上に、ヒンディー語とマラヤーラム語をそれぞれ話す2つの電話エージェントができます。どちらもsarvamエンジンで動き、Sarvamの音声認識Saaras、言語モデルSarvam-105B、音声Bulbulが1つのパイプラインになっています。SIPトランクを接続済みなら、cURLで約20分です。sarvamエンジンは接続1分あたり$0.0617、3分の通話で約$0.19で、前払い残高から秒単位で課金され、これに通信事業者の回線料金が加わります。

執筆 · 公開日 · 更新日

所要時間
トランクが接続済みなら約20分
エンジン
sarvam
エンジン利用時間
接続1分あたり$0.0617

始める前に何が必要ですか?

  • クレジットのあるWixzel VoiceのAPIキー。WIXZEL_API_KEYとして環境変数に設定しておきます。
  • SIPトランクとそのトランク上の番号。インドの番号には、ExotelやVobizなどの通信事業者を使い、KYCと必要なDLT登録を済ませておきます。これらが済んでいないアカウントは、残高があってもすべての発信が通信事業者に拒否されることがあります。
  • curl、jq、uuidgen。

Wixzel Voiceでこれを構築する手順は?

  1. 01エンジンが対応する言語と音声を確認する

    どちらのリストもハードコードせず、APIに問い合わせます。

    shell
    curl https://api.voice.wixzel.com/v1/engines/sarvam/languages \
      -H "Authorization: Bearer $WIXZEL_API_KEY"
    
    curl https://api.voice.wixzel.com/v1/engines/sarvam/voices \
      -H "Authorization: Bearer $WIXZEL_API_KEY"

    言語のエンドポイントは現在11個のコードを返します。en-IN、hi-IN、bn-IN、gu-IN、kn-IN、ml-IN、mr-IN、od-IN、pa-IN、ta-IN、te-INです。ヒンディー語はhi-IN、マラヤーラム語はml-INです。音声はpriya、kavya、shubhのようなBulbul v3の話者名です。Sarvamが公開しているのは名前だけなので、選ぶ前に実際に聞いて確かめてください。

  2. 02ヒンディー語のエージェントを作成する

    言語は3つの設定で決まります。voice.stt.languageは音声認識と音声合成をヒンディー語に固定し、エージェントのlanguageはモデルにその言語で返答させ、プロンプトと冒頭のあいさつはエージェントに話させたい言葉づかいで書きます。3つの段はすべてSarvamのモデルです。音声認識のプロバイダーがパイプラインを決め、残りの2つは同じファミリーのものである必要があるためです。

    shell
    curl https://api.voice.wixzel.com/v1/agents \
      -H "Authorization: Bearer $WIXZEL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "Hindi reception",
        "language": "hi-IN",
        "system_prompt": "You answer the phone for Sharma Dental Clinic, in Hindi. Speak the everyday Hindi callers use, English words included. Keep replies to one or two short sentences.",
        "opening_message": "नमस्ते, शर्मा डेंटल क्लिनिक में आपका स्वागत है। बताइए, मैं आपकी क्या मदद करूँ?",
        "voice": {
          "stt": { "model": "sarvam/saaras-v3-realtime", "language": "hi-IN" },
          "llm": { "model": "sarvam/sarvam-105b" },
          "tts": { "model": "sarvam/bulbul-v3", "voice": "priya" }
        }
      }'

    レスポンスのidをHINDI_AGENT_IDとして控えておきます。エンジンが対応していない言語や音声を指定すると、エージェントの作成時に拒否され、エラーに有効な値が一覧されます。

  3. 03マラヤーラム語のエージェントを作成する

    同じ形で、2か所をml-INにし、冒頭のあいさつをマラヤーラム語にします。

    shell
    curl https://api.voice.wixzel.com/v1/agents \
      -H "Authorization: Bearer $WIXZEL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "Malayalam reception",
        "language": "ml-IN",
        "system_prompt": "You answer the phone for a dental clinic in Kochi, in Malayalam. Speak the everyday Malayalam callers use, English words included. Keep replies to one or two short sentences.",
        "opening_message": "നമസ്കാരം, കൊച്ചി ഡെന്റൽ ക്ലിനിക്കിലേക്ക് സ്വാഗതം. ഞാൻ എങ്ങനെ സഹായിക്കാം?",
        "voice": {
          "stt": { "model": "sarvam/saaras-v3-realtime", "language": "ml-IN" },
          "llm": { "model": "sarvam/sarvam-105b" },
          "tts": { "model": "sarvam/bulbul-v3", "voice": "kavya" }
        }
      }'

    このidはMALAYALAM_AGENT_IDとして控えておきます。1つのエージェントが話すのは1つの言語です。sarvamエンジンには自動判定モードがないため、両方の言語の発信者に対応するには、着信では言語ごとに番号を分け、発信では通話ごとにエージェントを選びます。

  4. 04着信を割り当てる、または発信する

    番号の着信をヒンディー語のエージェントに割り当てるか、マラヤーラム語のエージェントで相手に電話をかけます。

    shell
    # Inbound: calls to this number reach the Hindi agent
    jq -n --arg agent "$HINDI_AGENT_ID" '{inbound_agent_id: $agent}' |
      curl -X PATCH https://api.voice.wixzel.com/v1/phone-numbers/$NUMBER_ID \
        -H "Authorization: Bearer $WIXZEL_API_KEY" \
        -H "Content-Type: application/json" \
        -d @-
    
    # Outbound: the Malayalam agent rings $TO (E.164, for example +91 and ten digits)
    jq -n --arg to "$TO" --arg agent "$MALAYALAM_AGENT_ID" --arg from "$NUMBER_ID" \
      '{to: $to, agent_id: $agent, from_number_id: $from}' |
      curl https://api.voice.wixzel.com/v1/calls \
        -H "Authorization: Bearer $WIXZEL_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d @-

    POST /v1/callsではIdempotency-Keyが必須です。同じキーで再試行すると、二重に発信せずに最初の通話が返されます。

  5. 05実際の発信者の話し方でテストする

    ほとんどの発信者は、ヒンディー語やマラヤーラム語に英語を混ぜて話します。日付、数字、ブランド名、「appointment」や「cancel」のような単語です。Sarvamのモデルは、モデルが扱える範囲で、ヒングリッシュのような言語が混在した話し方に対応できます。プロンプトではそれを禁止せず、許容するように書いてください。

    エージェントにできないのは、発信者が完全に別のインドの言語に切り替えたときに追従することです。音声認識は通話開始時にvoice.stt.languageに固定されるためです。実際のトラフィックをつなぐ前に、実際の言い回しで何度か電話をかけ、GET /v1/calls/{id}の文字起こしで何が聞き取られたかを確認してください。

Wixzel Voiceでこの構築にかかる費用は?

sarvamエンジンで3分の通話を行った場合のエンジン利用料で、接続1分あたり$0.0617、1通話あたり約$0.19です。 電話回線はお客様自身のトランクを通信事業者の料金で使うため、ここには含まれません。

このガイドの構築にかかる月額のエンジン費用
月間の通話数接続時間(分)月額のエンジン費用
5001,500$92.55
2,5007,500$463
10,00030,000$1,851

sarvamエンジンはオーケストレーション料金込みで接続1分あたり$0.0617です。比較すると、classicエンジンは$0.0867なので、Sarvamでのヒンディー語やマラヤーラム語の1分は、classicでの英語の1分より安くなります。各段は通話中にそれぞれの単位で計測されるため、発話の少ない通話は見積もりより安く、多い通話は高くなります。回線料金は通信事業者から別途請求されます。

前払い制で、サブスクリプションも無料プランもありません。$5からクレジットを追加すると、使用量に応じて消費されます。自分の使い方で見積もる。

この構築に関係するWixzel Voiceの制限は?

  • エージェント1つにつき1言語です。sarvamエンジンには自動言語判定がないため、発信者が完全に別の言語に切り替えると追従できません。
  • Sarvamは通話中、音声とテキストをインド国内で処理します。通話ログ、文字起こし、録音はインド国内のサーバーに保存されます。
  • Bulbulの音声は名前だけで提供され、性別やアクセントの説明はありません。試聴するにはテスト通話が必要で、実際の電話が鳴りクレジットを消費します。
  • インドの通信事業者は、発信をKYCや、多くの場合DLT登録の完了を条件にしています。その理由で通信事業者が拒否した通話は通信事業者側で失敗し、プラットフォーム側では解決できません。
  • デフォルトでは、1アカウントあたり同時に5件まで通話でき、申請により引き上げられます。

よくある質問

Wixzel Voiceでヒンディー語の電話エージェントを作るにはどうすればよいですか?

sarvamエンジンでエージェントを作成し、voice.stt.languageとエージェントのlanguageをhi-INに設定し、ヒンディー語の冒頭のあいさつとBulbulの音声を指定します。そのうえで番号にinbound_agent_idを設定するか、POST /v1/callsで発信します。ご自身のSIPトランク経由の電話や、WebSocket経由のWebアプリ・モバイルアプリでのセッションで、接続1分あたり$0.0617でヒンディー語の会話ができます。

AI電話エージェントはマラヤーラム語を話せますか?

はい。sarvamのエージェントでvoice.stt.languageとエージェントのlanguageをml-INに設定し、冒頭のあいさつをマラヤーラム語で書き、Bulbulの音声を選びます。音声認識、言語モデル、音声のすべてが、インドの言語向けに作られたSarvamのモデルで動きます。

1つのエージェントでヒンディー語とマラヤーラム語の両方を話せますか?

いいえ。音声認識の言語は通話開始時にエージェントごとに固定され、sarvamエンジンには判定モードがありません。言語ごとにエージェントを作り、各番号や各発信を適切なエージェントに割り当ててください。

Wixzel Voiceのsarvamエージェントはヒングリッシュを理解しますか?

Sarvamのモデルが扱える範囲で、理解します。ヒンディー語の文の中に英語の単語が入るような、言語が混在した話し方に対応できます。本番の前に実際の発信者の言い回しでテストし、文字起こしで何が聞き取られたかを確認してください。

インドの通話データはインド国内に保管されますか?

Sarvamは通話の間、音声とテキストをインド国内で処理します。通話ログ、文字起こし、録音はインド国内に保存されます。プライバシーポリシーとDPAに、すべての処理者とその所在地が記載されています。

さらに詳しく

  • 音声エンジンドキュメント

    2種類の音声の形、音声の一覧、言語のエンドポイント。

  • 音声エンジンを組み合わせるドキュメント

    ファミリー、モデルID、組み合わせたエンジンの1分あたりの料金の計算方法。

  • SIPトランクドキュメント

    ExotelとVobizのセットアップ、KYCとDLTの確認事項。

  • エージェントドキュメント

    エージェントのすべてのフィールドと、有効な値の出どころ。

エージェント型電話のためのAPI

Wixzel Voiceについて

Wixzel Voiceは、自社のSIPトランク経由で実際の電話を発信・着信するAIエージェントや、Webアプリやモバイルアプリの中で人と話すAIエージェントを構築するための音声AI APIです。1つのAPIキーと1つの前払い残高ですべての音声エンジンを利用でき、実際の使用量に応じて秒単位で課金されます。

Wixzel VoiceのMCPサーバーでClaudeに実際の電話回線を持たせる

Claude Codeまたはclaude.aiのClaudeが、ご自身のSIPトランク経由で実際に電話をかけ、文字起こしを読み上げます。発信の前には必ず確認が入ります。

Wixzel VoiceとNode.jsでTwilioのAI受付を作る

Node.jsで作った、既存のTwilio番号に応答してAPIに予約を登録するAI受付。

Wixzel VoiceでWebSocket経由のFlutter音声エージェントを追加する

ユーザーがWebSocket経由で音声エージェントと話せるFlutterアプリ。APIキーはサーバーに置いたままで、電話番号は使いません。

Wixzel VoiceのAPIでGemini Liveを実際の電話につなぐ

4つのcURLリクエストで、ご自身のSIPトランク経由で実際の電話を鳴らすGemini Liveのエージェントと、文字起こしと料金を含むその通話記録。

Wixzel VoiceでAIによるリード選別キャンペーンを実行する

ご自身のSIPトランク経由で、同時通話数の上限に合わせたバッチでエージェントが発信したリードの一覧と、各通話のステータスと文字起こし。

Wixzel VoiceでWebサイトに話すAIマスコットを追加する

Webサイトの隅にいて、訪問者がブラウザから通話できる話すマスコット。指定したドメインと1日の上限の範囲内で動き、すべての発信者が一覧されます。

Wixzel VoiceのエージェントのマスコットをFlutterアプリに表示する

リアルタイム通話中にエージェントの声に合わせて口を動かすマスコットを表示するFlutterの画面。APIキーはサーバーに置いたままです。

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