音声ボット開発
音声ボットは、@metatell/bot-sdkと@metatell/bot-realtimeを組み合わせて実装します。
ルームの音声は16ビットPCMフレームとして受け取り、生成したPCMをボットの音声として送信できます。
インストール
npm install @metatell/bot-sdk @metatell/bot-realtime
音声を使う前に通常のクライアント接続を完了させてください。
音声を有効にする
import {
createMetatellClient,
enableVoice,
} from "@metatell/bot-sdk";
const client = createMetatellClient({
serverUrl: "wss://metatell.app",
roomId: "YOUR_ROOM_ID",
username: "VoiceBot",
});
await client.connect();
const voice = await enableVoice(client, {
transport: { type: "livekit" },
sampleRate: 48000,
channels: 1,
frameDurationMs: 20,
handlers: {
onRemotePcm: async (frame, { fromIdentity }) => {
console.log(fromIdentity, frame.length);
},
},
});
enableVoice()はLiveKitトランスポートへ接続し、SDKクライアントと音声ハンドラーを結び付けます。
| 設定 | 現在利用する値 | 説明 |
|---|---|---|
sampleRate | 48000 | PCMのサンプルレートです。 |
channels | 1 | モノラル音声を指定します。 |
frameDurationMs | 20 | 1フレームの長さです。 |
autoStartPublish | 真偽値 | 接続後に音声送信を自動で開始するかを指定します。 |
enableTopicAutoAdd | 真偽値 | 音声トピックの自動追加を指定します。 |
transport.type | auto、livekit、mock | 音声トランスポートを指定します。 |
現行のLiveKit接続では、16ビット、48kHz、モノラルのPCMを使用します。
sampleRate、channels、frameDurationMsは上表の値から変更しないでください。
1フレームは20ms、960サンプルです。
mockはテスト用です。
通常のルーム接続ではautoまたはlivekitを使用してください。
標準環境以外では、環境に対応するLiveKit URLをMETATELL_REALTIME_URLへ設定できます。
値は運用環境の管理者から入手してください。