音声パイプライン
以下に記載されているSTTおよびTTSプロバイダーはインターフェースのみのスタブです。
プロバイダーインターフェースは定義されていますが、実装はまだ実際の音声サービスに接続されていません。 :::
Triggerfishは起動ワード検出、プッシュトゥトーク、macOS、iOS、Androidにわたるテキスト読み上げ応答を 備えた音声インタラクションをサポートします。
アーキテクチャ
音声はテキストと同じエージェント処理パイプラインを通流します。音声入力は文字起こしされ、 分類されたメッセージとしてセッションに入り、ポリシーフックを通過し、応答が音声に合成されます。
音声モード
| モード | 説明 | プラットフォーム |
|---|---|---|
| ボイスウェイク | 設定可能な起動ワードの常時リッスン | macOS、iOS、Android |
| プッシュトゥトーク | ボタンまたはキーボードショートカットによる手動起動 | macOS(メニューバー)、iOS、Android |
| トークモード | 連続的な会話型音声 | すべてのプラットフォーム |
STTプロバイダー
音声認識(STT)はあなたの声をエージェントが処理するためのテキストに変換します。
| プロバイダー | タイプ | メモ |
|---|---|---|
| Whisper | ローカル | デフォルト。デバイス上で実行、クラウド依存なし。プライバシーに最適。 |
| Deepgram | クラウド | 低レイテンシのストリーミング文字起こし。 |
| OpenAI Whisper API | クラウド | 高精度、APIキーが必要。 |
TTSプロバイダー
テキスト読み上げ(TTS)はエージェントの応答を音声に変換します。
| プロバイダー | タイプ | メモ |
|---|---|---|
| ElevenLabs | クラウド | デフォルト。音声クローンオプションを持つ自然な音声。 |
| OpenAI TTS | クラウド | 高品質、複数の音声オプション。 |
| システムボイス | ローカル | OS ネイティブの音声。クラウド依存なし。 |
プロバイダーレジストリ
TriggerfishはSTTとTTSの両方にプロバイダーレジストリパターンを使用します。対応するインターフェースを 実装することで、互換性のある任意のプロバイダーを接続できます:
typescript
interface SttProvider {
transcribe(audio: Uint8Array, options?: SttOptions): Promise<string>;
}
interface TtsProvider {
synthesize(text: string, options?: TtsOptions): Promise<Uint8Array>;
}設定
triggerfish.yamlで音声設定を行います:
yaml
voice:
stt:
provider: whisper # whisper | deepgram | openai
model: base # Whisperモデルサイズ(tiny、base、small、medium、large)
tts:
provider: elevenlabs # elevenlabs | openai | system
voice_id: "your-voice" # プロバイダー固有の音声識別子
wake_word: "triggerfish" # カスタム起動ワード
push_to_talk:
shortcut: "Ctrl+Space" # キーボードショートカット(macOS)セキュリティ統合
音声データはテキストと同じ分類ルールに従います:
- 音声入力はテキスト入力と同じように分類されます。 文字起こしされた音声はセッションに入り、 タイプされたメッセージと同様にtaintをエスカレートさせる場合があります。
- TTS出力は合成前に
PRE_OUTPUTフックを通過します。 ポリシーエンジンが応答をブロックした場合、 それは話されることはありません。 - 音声セッションはtaintを持ちます。 テキストセッションと同様です。セッション途中で音声に切り替えても taintはリセットされません。
- 起動ワード検出はローカルで実行されます。 起動ワードのマッチングのために音声がクラウドに送信される ことはありません。
- 音声録音(保持される場合)はセッションのtaintレベルで分類されます。
音声パイプラインはiOSとAndroidのBuoyコンパニオンアプリと統合し、モバイルデバイスからの
プッシュトゥトークと音声ウェイクを可能にします。Buoyはまだ利用できません。 :::
