ボイス
テキスト読み上げ、音声認識、リアルタイム双方向ストリーミングによるリアルタイム音声インタラクション。
テキスト読み上げ(TTS)
テキストを音声に変換します。
const audio = await client.agents.voice.tts("agent-id", {
text: "Hello! How can I help you today?",
voiceName: "aria",
language: "en",
outputFormat: "mp3",
});
// audio.data にオーディオのバイトが含まれます音声認識(STT)
音声をテキストに文字起こしします。
const result = await client.agents.voice.stt("agent-id", {
audio: base64AudioData,
audioFormat: "wav",
language: "en",
});
console.log(result.text);ライブボイスストリーミング
リアルタイム双方向音声会話。トークンを取得してから双方向ストリームを開きます。
// 1. ストリーミングトークンを取得
const token = await client.agents.voice.getToken("agent-id", {
voiceName: "aria",
userId: "user-123",
});
// 2. ライブストリームに接続
const stream = await client.agents.voice.stream(token);
// オーディオチャンクを送信
stream.sendAudio(audioChunk);
// またはエージェントが話すテキストを送信
stream.sendText("Tell me about your day");
// イベントを受信
for await (const event of stream) {
if (event.type === "audio") {
playAudio(event.data);
} else if (event.type === "transcript") {
console.log(event.text);
}
}
// セッションを終了
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);
}実践ガイド
ボイスは主にコンパニオンとエンタープライズに関連します。タスクエージェントには通常不要です——ただし電話/IVRフローを構築している場合は、エンタープライズパターンが適用されます。
キャラクターに合ったボイスを選びましょう。 voices.list() をブラウズして3〜5つを候補に絞り、コミットする前に実際のユーザーでA/Bテストします。間違ったボイスは他のどんなミスよりも早く没入感を壊します。
ライブ会話には双方向ストリームを使用。 WebSocket双方向はSTT(ユーザー入力)とTTS(エージェント返答)を並行してストリームします——ライブ電話通話のような体験の自然な形です。コンパニオンにポーリングTTSを使用しないでください。レイテンシが存在感を損ないます。
プロソディを調整。 温かみがあり表情豊かな読み上げのために stability: 0.4-0.6・clarity: 0.7-0.9 を設定します。純粋な安定性はロボットのように聞こえます。