Add stt entity (#91230)
* Add stt entity * Update demo platform * Rename ProviderEntity to SpeechToTextEntity * Fix get method * Run all init tests for config entry setup * Fix and test metadata from header * Test config entry unload * Rename get provider entity * Test post for non existing provider * Test entity name before addition * Test restore state * Use register shutdown * Update deprecation comment
This commit is contained in:
parent
22a1a6846d
commit
473cbf7f9b
8 changed files with 582 additions and 50 deletions
|
@ -13,8 +13,11 @@ from homeassistant.components.stt import (
|
|||
SpeechMetadata,
|
||||
SpeechResult,
|
||||
SpeechResultState,
|
||||
SpeechToTextEntity,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
|
||||
SUPPORT_LANGUAGES = ["en", "de"]
|
||||
|
@ -29,6 +32,60 @@ async def async_get_engine(
|
|||
return DemoProvider()
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Demo speech platform via config entry."""
|
||||
async_add_entities([DemoProviderEntity()])
|
||||
|
||||
|
||||
class DemoProviderEntity(SpeechToTextEntity):
|
||||
"""Demo speech API provider entity."""
|
||||
|
||||
@property
|
||||
def supported_languages(self) -> list[str]:
|
||||
"""Return a list of supported languages."""
|
||||
return SUPPORT_LANGUAGES
|
||||
|
||||
@property
|
||||
def supported_formats(self) -> list[AudioFormats]:
|
||||
"""Return a list of supported formats."""
|
||||
return [AudioFormats.WAV]
|
||||
|
||||
@property
|
||||
def supported_codecs(self) -> list[AudioCodecs]:
|
||||
"""Return a list of supported codecs."""
|
||||
return [AudioCodecs.PCM]
|
||||
|
||||
@property
|
||||
def supported_bit_rates(self) -> list[AudioBitRates]:
|
||||
"""Return a list of supported bit rates."""
|
||||
return [AudioBitRates.BITRATE_16]
|
||||
|
||||
@property
|
||||
def supported_sample_rates(self) -> list[AudioSampleRates]:
|
||||
"""Return a list of supported sample rates."""
|
||||
return [AudioSampleRates.SAMPLERATE_16000, AudioSampleRates.SAMPLERATE_44100]
|
||||
|
||||
@property
|
||||
def supported_channels(self) -> list[AudioChannels]:
|
||||
"""Return a list of supported channels."""
|
||||
return [AudioChannels.CHANNEL_STEREO]
|
||||
|
||||
async def async_process_audio_stream(
|
||||
self, metadata: SpeechMetadata, stream: AsyncIterable[bytes]
|
||||
) -> SpeechResult:
|
||||
"""Process an audio stream to STT service."""
|
||||
|
||||
# Read available data
|
||||
async for _ in stream:
|
||||
pass
|
||||
|
||||
return SpeechResult("Turn the Kitchen Lights on", SpeechResultState.SUCCESS)
|
||||
|
||||
|
||||
class DemoProvider(Provider):
|
||||
"""Demo speech API provider."""
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue