# StreamAudio

**コントロール機能**：音声ストリームのリアルタイム収集、音声活動検出（VAD）によるトリガー、音声のアップロード、およびサーバーから返される認識テキスト結果の受信を実現します。主に音声認識のシナリオで使用されます。  
**タイプ**：コンテナーコントロール  
**親クラスコントロール**：bricks.VBox

## 初期化パラメータ

- `opts` {Object} - 設定オプションオブジェクト。VBoxから継承し、以下のプロパティを拡張：
  - `name` {string} （任意） - コントロール名。デフォルトは `'asr_text'`。
  - `height` {string} - 固定値 `'100%'`。上書き不可。
  - その他のVBoxがサポートする汎用パラメータ（例：layoutなど）。

> 注意：コンストラクタ内では自動的に `height='100%'` とデフォルトの `name` が設定され、内部のサブコントロール（ボタン、フィラー、テキスト表示など）が作成されます。

## 主なイベント

直接外部に公開されるカスタムイベントはありませんが、バインドとコールバック機構を通じて以下の動作を処理しています：

- **ボタンクリックイベント**：内部の `this.button` に `click` イベントがバインドされ、`toggle_status()` メソッドを呼び出します。これにより、音声ストリームの収録を開始または停止します。
- **音声終了イベント**：`vad.MicVAD` の `onSpeechEnd(audio)` コールバックによってトリガーされ、`handle_audio(audio)` を呼び出して音声データをエンコードして送信します。
- **データ受信イベント**：`receive_data()` 内で `reader.readline()` を使用してサーバーからのレスポンスストリームを継続的に読み取り、JSONデータを1件受信するごとに表示テキストを更新します。

---

# ASRText

**コントロール機能**：`StreamAudio` と完全に同一。意味的に音声認識テキスト出力コンポーネントを明確に示すためのエイリアスコントロールです。  
**タイプ**：コンテナーコントロール  
**親クラスコントロール**：bricks.VBox（実際の継承関係はStreamAudioと同じ）

## 初期化パラメータ

`StreamAudio` と同じ。

## 主なイベント

`StreamAudio` と同じ。