Skip to main content
Sonzai Docs

ボイス

テキスト読み上げ、音声認識、リアルタイム双方向ストリーミングによるリアルタイム音声インタラクション。

テキスト読み上げ(TTS)

テキストを音声に変換します。

const audio = await client.voice.tts("agent-id", {
  text: "Hello! How can I help you today?",
  voiceName: "aria",
  language: "en",
  outputFormat: "mp3",
});
// audio.data contains the audio bytes

音声認識(STT)

音声をテキストに書き起こします。

const result = await client.voice.stt("agent-id", {
  audio: base64AudioData,
  audioFormat: "wav",
  language: "en",
});
console.log(result.text);

ライブ音声ストリーミング

リアルタイムの双方向音声会話。トークンを取得してから双方向ストリームを開きます。

// 1. Get a streaming token
const token = await client.voice.getToken("agent-id", {
  voiceName: "aria",
  userId: "user-123",
});

// 2. Connect to live stream
const stream = await client.voice.stream(token);

// Send audio chunks
stream.sendAudio(audioChunk);

// Or send text for the agent to speak
stream.sendText("Tell me about your day");

// Receive events
for await (const event of stream) {
  if (event.type === "audio") {
    playAudio(event.data);
  } else if (event.type === "transcript") {
    console.log(event.text);
  }
}

// End session
stream.endSession();

WebSocketトランスポート

ライブストリーミングはWebSocketで動作し、リアルタイムの双方向音声をサポートします。クライアントはマイク音声チャンクをアップストリームに送信しながら、同時に合成音声とトランスクリプトをダウンストリームで受信し、自然な会話フローを実現します。

ボイスカタログの閲覧

利用可能なボイスの一覧を表示します。

const voices = await client.voices.list({
  language: "en",
  gender: "female",
});

for (const voice of voices.items) {
  console.log(voice.name, voice.language, voice.gender);
}