[唤醒灵敏度与端点恢复]:完成唤醒提示顺序和Hybrid VAD优化,包含阈值默认值、缓冲时序和测试覆盖
This commit is contained in:
@@ -7,7 +7,7 @@ import unittest
|
||||
from owner_voice_pet.models import AudioFrame, AudioSegment, ErrorCode, ProviderError
|
||||
from owner_voice_pet.config import AppConfig
|
||||
from owner_voice_pet.stt import CloudAsrSttProvider, MetadataSttProvider, SherpaOnnxSttProvider, is_valid_transcript_text
|
||||
from owner_voice_pet.vad import EnergyVadProvider, VadRecorder
|
||||
from owner_voice_pet.vad import EnergyVadProvider, HybridVadProvider, VadRecorder
|
||||
from owner_voice_pet.wakeword import (
|
||||
KeywordWakeWordProvider,
|
||||
MissingWakeWordModelProvider,
|
||||
@@ -87,6 +87,30 @@ class WakeVadSttTests(unittest.TestCase):
|
||||
self.assertIsInstance(result, ProviderError)
|
||||
self.assertEqual(result.code, ErrorCode.VAD_TIMEOUT_NO_SPEECH)
|
||||
|
||||
def test_hybrid_vad_accepts_energy_fallback_speech(self) -> None:
|
||||
class SilentVadProvider:
|
||||
def __init__(self) -> None:
|
||||
self.loaded = False
|
||||
|
||||
def load(self) -> None:
|
||||
self.loaded = True
|
||||
|
||||
def analyze(self, frame: AudioFrame):
|
||||
return type(
|
||||
"Result",
|
||||
(),
|
||||
{"is_speech": False, "confidence": 0.1, "speech_ms": 0, "silence_ms": 20},
|
||||
)()
|
||||
|
||||
def reset(self) -> None:
|
||||
return None
|
||||
|
||||
provider = HybridVadProvider(SilentVadProvider(), EnergyVadProvider())
|
||||
provider.load()
|
||||
result = provider.analyze(make_frame(1, 0, speech=True))
|
||||
self.assertTrue(result.is_speech)
|
||||
self.assertEqual(result.speech_ms, 20)
|
||||
|
||||
def test_metadata_stt_transcribes_fixture_text(self) -> None:
|
||||
provider = MetadataSttProvider()
|
||||
provider.load()
|
||||
|
||||
Reference in New Issue
Block a user