feat(hass): 新增小爱音箱接入 Home Assistant Assist 的完整示例
- 新增完整的 Home Assistant 集成示例,支持文本对话与上下文会话 - 实现小爱音箱事件解析与 TTS 播报,支持实时打断功能 - 添加连续会话管理,支持区域上下文注入和会话超时结束 - 提供完整的配置系统、类型定义和错误处理 - 包含 Rust 扩展模块用于小爱音箱通信,支持音频流处理 - 添加单元测试、集成测试脚本和 Docker 部署支持 - 提供详细的使用文档和配置说明
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import math
|
||||
import struct
|
||||
|
||||
import pytest
|
||||
|
||||
from hass.vad import VadConfig, VadSegmenter
|
||||
|
||||
|
||||
def _sine_frame(sample_rate: int, freq_hz: float, frame_ms: int = 20) -> bytes:
|
||||
samples = int(sample_rate * frame_ms / 1000)
|
||||
values = [
|
||||
int(10000 * math.sin(2 * math.pi * freq_hz * i / sample_rate))
|
||||
for i in range(samples)
|
||||
]
|
||||
return struct.pack("<" + "h" * samples, *values)
|
||||
|
||||
|
||||
def _silence_frame(sample_rate: int, frame_ms: int = 20) -> bytes:
|
||||
samples = int(sample_rate * frame_ms / 1000)
|
||||
return b"\x00\x00" * samples
|
||||
|
||||
|
||||
@pytest.mark.parametrize("min_silence_ms", [40, 60])
|
||||
def test_vad_emits_utterance(min_silence_ms: int):
|
||||
config = VadConfig(
|
||||
aggressiveness=1,
|
||||
min_silence_ms=min_silence_ms,
|
||||
max_utterance_ms=2000,
|
||||
sample_rate=16000,
|
||||
)
|
||||
seg = VadSegmenter(config)
|
||||
|
||||
utterances = []
|
||||
for _ in range(6):
|
||||
utterances.extend(seg.feed(_sine_frame(16000, 440.0)))
|
||||
for _ in range(6):
|
||||
utterances.extend(seg.feed(_silence_frame(16000)))
|
||||
|
||||
assert len(utterances) >= 1
|
||||
assert len(utterances[0]) > 0
|
||||
|
||||
Reference in New Issue
Block a user