@sonoba/voice-client
v0.1.1
Published
Voice Pipeline SDK — WebSocket, VAD, audio playback
Downloads
244
Readme
@sonoba/voice-client
日本語特化 Voice Pipeline の Core SDK。WebSocket 接続・クライアントサイド VAD(Silero)・音声再生をワンパッケージで提供します。
インストール
npm install @sonoba/voice-clientクイックスタート
import { SonobaVoiceClient } from '@sonoba/voice-client';
const client = new SonobaVoiceClient({
serverUrl: 'wss://your-server.com/ws',
});
client.on('transcript:user', ({ text }) => console.log('あなた:', text));
client.on('transcript:agent', ({ text }) => console.log('AI:', text));
client.on('status:change', (status) => console.log('状態:', status));
await client.connect();オプション
const client = new SonobaVoiceClient({
serverUrl: 'wss://your-server.com/ws', // 必須
vad: true, // クライアントサイド VAD(デフォルト: true)
vadModelUrl: '/silero_vad.onnx', // VAD モデルのパス
halfDuplex: true, // TTS 再生中は VAD を無視(デフォルト: true)
bargeInThreshold: 400, // 割り込みまでの閾値 ms(デフォルト: 400)
reconnect: {
maxRetries: 5,
minDelay: 1000,
maxDelay: 10000,
},
});メソッド
| メソッド | 説明 |
|---------|------|
| connect(config?) | サーバーに接続。マイク・VAD・音声再生を初期化 |
| disconnect() | 切断 |
| setMuted(muted) | マイクのミュート切り替え |
| sendText(text) | テキストをサーバーに送信 |
| bargeIn() | TTS 再生を中断して割り込み |
イベント一覧
client.on('status:change', (status) => {}); // 接続状態の変化
client.on('transcript:user', ({ text }) => {}); // ユーザー発話の認識結果
client.on('transcript:agent', ({ text }) => {}); // AI の返答テキスト
client.on('audio:tts_start', (data) => {}); // AI 音声再生開始
client.on('audio:tts_end', (data) => {}); // AI 音声再生終了
client.on('vad:start', () => {}); // 発話開始検出
client.on('vad:end', () => {}); // 発話終了検出
client.on('mic:muted', (muted) => {}); // ミュート状態変化
client.on('error', (err) => {}); // エラーライセンス
MIT © sonoba
