mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Rename WakeWord.ww_id to WakeWord.id (#100903)
* Rename WakeWord.ww_id to WakeWord.wake_word_id * Revert unrelated changes * Rename to id * Correct rebase
This commit is contained in:
parent
074eb966dd
commit
734c4e8e32
@ -6,7 +6,7 @@ from dataclasses import dataclass
|
|||||||
class WakeWord:
|
class WakeWord:
|
||||||
"""Wake word model."""
|
"""Wake word model."""
|
||||||
|
|
||||||
ww_id: str
|
id: str
|
||||||
name: str
|
name: str
|
||||||
|
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ class WakeWord:
|
|||||||
class DetectionResult:
|
class DetectionResult:
|
||||||
"""Result of wake word detection."""
|
"""Result of wake word detection."""
|
||||||
|
|
||||||
ww_id: str
|
wake_word_id: str
|
||||||
"""Id of detected wake word"""
|
"""Id of detected wake word"""
|
||||||
|
|
||||||
timestamp: int | None
|
timestamp: int | None
|
||||||
|
@ -46,8 +46,7 @@ class WyomingWakeWordProvider(wake_word.WakeWordDetectionEntity):
|
|||||||
wake_service = service.info.wake[0]
|
wake_service = service.info.wake[0]
|
||||||
|
|
||||||
self._supported_wake_words = [
|
self._supported_wake_words = [
|
||||||
wake_word.WakeWord(ww_id=ww.name, name=ww.name)
|
wake_word.WakeWord(id=ww.name, name=ww.name) for ww in wake_service.models
|
||||||
for ww in wake_service.models
|
|
||||||
]
|
]
|
||||||
self._attr_name = wake_service.name
|
self._attr_name = wake_service.name
|
||||||
self._attr_unique_id = f"{config_entry.entry_id}-wake_word"
|
self._attr_unique_id = f"{config_entry.entry_id}-wake_word"
|
||||||
@ -111,7 +110,7 @@ class WyomingWakeWordProvider(wake_word.WakeWordDetectionEntity):
|
|||||||
queued_audio = [audio_task.result()]
|
queued_audio = [audio_task.result()]
|
||||||
|
|
||||||
return wake_word.DetectionResult(
|
return wake_word.DetectionResult(
|
||||||
ww_id=detection.name,
|
wake_word_id=detection.name,
|
||||||
timestamp=detection.timestamp,
|
timestamp=detection.timestamp,
|
||||||
queued_audio=queued_audio,
|
queued_audio=queued_audio,
|
||||||
)
|
)
|
||||||
|
@ -184,18 +184,18 @@ class MockWakeWordEntity(wake_word.WakeWordDetectionEntity):
|
|||||||
@property
|
@property
|
||||||
def supported_wake_words(self) -> list[wake_word.WakeWord]:
|
def supported_wake_words(self) -> list[wake_word.WakeWord]:
|
||||||
"""Return a list of supported wake words."""
|
"""Return a list of supported wake words."""
|
||||||
return [wake_word.WakeWord(ww_id="test_ww", name="Test Wake Word")]
|
return [wake_word.WakeWord(id="test_ww", name="Test Wake Word")]
|
||||||
|
|
||||||
async def _async_process_audio_stream(
|
async def _async_process_audio_stream(
|
||||||
self, stream: AsyncIterable[tuple[bytes, int]], wake_word_id: str | None
|
self, stream: AsyncIterable[tuple[bytes, int]], wake_word_id: str | None
|
||||||
) -> wake_word.DetectionResult | None:
|
) -> wake_word.DetectionResult | None:
|
||||||
"""Try to detect wake word(s) in an audio stream with timestamps."""
|
"""Try to detect wake word(s) in an audio stream with timestamps."""
|
||||||
if wake_word_id is None:
|
if wake_word_id is None:
|
||||||
wake_word_id = self.supported_wake_words[0].ww_id
|
wake_word_id = self.supported_wake_words[0].id
|
||||||
async for chunk, timestamp in stream:
|
async for chunk, timestamp in stream:
|
||||||
if chunk.startswith(b"wake word"):
|
if chunk.startswith(b"wake word"):
|
||||||
return wake_word.DetectionResult(
|
return wake_word.DetectionResult(
|
||||||
ww_id=wake_word_id,
|
wake_word_id=wake_word_id,
|
||||||
timestamp=timestamp,
|
timestamp=timestamp,
|
||||||
queued_audio=[(b"queued audio", 0)],
|
queued_audio=[(b"queued audio", 0)],
|
||||||
)
|
)
|
||||||
|
@ -292,7 +292,7 @@
|
|||||||
'data': dict({
|
'data': dict({
|
||||||
'wake_word_output': dict({
|
'wake_word_output': dict({
|
||||||
'timestamp': 2000,
|
'timestamp': 2000,
|
||||||
'ww_id': 'test_ww',
|
'wake_word_id': 'test_ww',
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
'type': <PipelineEventType.WAKE_WORD_END: 'wake_word-end'>,
|
'type': <PipelineEventType.WAKE_WORD_END: 'wake_word-end'>,
|
||||||
|
@ -281,7 +281,7 @@
|
|||||||
'wake_word_output': dict({
|
'wake_word_output': dict({
|
||||||
'queued_audio': None,
|
'queued_audio': None,
|
||||||
'timestamp': 1000,
|
'timestamp': 1000,
|
||||||
'ww_id': 'test_ww',
|
'wake_word_id': 'test_ww',
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
@ -379,7 +379,7 @@
|
|||||||
dict({
|
dict({
|
||||||
'wake_word_output': dict({
|
'wake_word_output': dict({
|
||||||
'timestamp': 0,
|
'timestamp': 0,
|
||||||
'ww_id': 'test_ww',
|
'wake_word_id': 'test_ww',
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
@ -41,8 +41,8 @@ class MockProviderEntity(wake_word.WakeWordDetectionEntity):
|
|||||||
def supported_wake_words(self) -> list[wake_word.WakeWord]:
|
def supported_wake_words(self) -> list[wake_word.WakeWord]:
|
||||||
"""Return a list of supported wake words."""
|
"""Return a list of supported wake words."""
|
||||||
return [
|
return [
|
||||||
wake_word.WakeWord(ww_id="test_ww", name="Test Wake Word"),
|
wake_word.WakeWord(id="test_ww", name="Test Wake Word"),
|
||||||
wake_word.WakeWord(ww_id="test_ww_2", name="Test Wake Word 2"),
|
wake_word.WakeWord(id="test_ww_2", name="Test Wake Word 2"),
|
||||||
]
|
]
|
||||||
|
|
||||||
async def _async_process_audio_stream(
|
async def _async_process_audio_stream(
|
||||||
@ -50,12 +50,12 @@ class MockProviderEntity(wake_word.WakeWordDetectionEntity):
|
|||||||
) -> wake_word.DetectionResult | None:
|
) -> wake_word.DetectionResult | None:
|
||||||
"""Try to detect wake word(s) in an audio stream with timestamps."""
|
"""Try to detect wake word(s) in an audio stream with timestamps."""
|
||||||
if wake_word_id is None:
|
if wake_word_id is None:
|
||||||
wake_word_id = self.supported_wake_words[0].ww_id
|
wake_word_id = self.supported_wake_words[0].id
|
||||||
|
|
||||||
async for _chunk, timestamp in stream:
|
async for _chunk, timestamp in stream:
|
||||||
if timestamp >= 2000:
|
if timestamp >= 2000:
|
||||||
return wake_word.DetectionResult(
|
return wake_word.DetectionResult(
|
||||||
ww_id=wake_word_id, timestamp=timestamp
|
wake_word_id=wake_word_id, timestamp=timestamp
|
||||||
)
|
)
|
||||||
|
|
||||||
# Not detected
|
# Not detected
|
||||||
@ -157,7 +157,7 @@ async def test_config_entry_unload(
|
|||||||
|
|
||||||
@freeze_time("2023-06-22 10:30:00+00:00")
|
@freeze_time("2023-06-22 10:30:00+00:00")
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("ww_id", "expected_ww"),
|
("wake_word_id", "expected_ww"),
|
||||||
[
|
[
|
||||||
(None, "test_ww"),
|
(None, "test_ww"),
|
||||||
("test_ww_2", "test_ww_2"),
|
("test_ww_2", "test_ww_2"),
|
||||||
@ -167,7 +167,7 @@ async def test_detected_entity(
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
tmp_path: Path,
|
tmp_path: Path,
|
||||||
setup: MockProviderEntity,
|
setup: MockProviderEntity,
|
||||||
ww_id: str | None,
|
wake_word_id: str | None,
|
||||||
expected_ww: str,
|
expected_ww: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test successful detection through entity."""
|
"""Test successful detection through entity."""
|
||||||
@ -181,7 +181,7 @@ async def test_detected_entity(
|
|||||||
# Need 2 seconds to trigger
|
# Need 2 seconds to trigger
|
||||||
state = setup.state
|
state = setup.state
|
||||||
assert state is None
|
assert state is None
|
||||||
result = await setup.async_process_audio_stream(three_second_stream(), ww_id)
|
result = await setup.async_process_audio_stream(three_second_stream(), wake_word_id)
|
||||||
assert result == wake_word.DetectionResult(expected_ww, 2048)
|
assert result == wake_word.DetectionResult(expected_ww, 2048)
|
||||||
|
|
||||||
assert state != setup.state
|
assert state != setup.state
|
||||||
@ -283,7 +283,7 @@ async def test_list_wake_words(
|
|||||||
assert msg["success"]
|
assert msg["success"]
|
||||||
assert msg["result"] == {
|
assert msg["result"] == {
|
||||||
"wake_words": [
|
"wake_words": [
|
||||||
{"ww_id": "test_ww", "name": "Test Wake Word"},
|
{"id": "test_ww", "name": "Test Wake Word"},
|
||||||
{"ww_id": "test_ww_2", "name": "Test Wake Word 2"},
|
{"id": "test_ww_2", "name": "Test Wake Word 2"},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,6 @@
|
|||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
'timestamp': 0,
|
'timestamp': 0,
|
||||||
'ww_id': 'Test Model',
|
'wake_word_id': 'Test Model',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
@ -25,7 +25,7 @@ async def test_support(hass: HomeAssistant, init_wyoming_wake_word) -> None:
|
|||||||
assert entity is not None
|
assert entity is not None
|
||||||
|
|
||||||
assert entity.supported_wake_words == [
|
assert entity.supported_wake_words == [
|
||||||
wake_word.WakeWord(ww_id="Test Model", name="Test Model")
|
wake_word.WakeWord(id="Test Model", name="Test Model")
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user