Skip to main content

文字转语音实体

一个文字转语音(TTS)实体使 Home Assistant 能够与您对话。

文字转语音实体源自 homeassistant.components.tts.TextToSpeechEntity

属性

tip

属性应始终仅从内存返回信息,而不进行 I/O(例如网络请求)。

名称类型默认描述
supported_languageslist[str]必需TTS 服务支持的语言。
default_languagestr必需TTS 服务的默认语言。
supported_optionslist[str]NoneTTS 服务支持的选项,例如声音、情感。
default_optionsMapping[str, Any]NoneTTS 服务的默认选项。

方法

获取支持的声音

此方法用于返回 TTS 服务某种语言的支持声音列表。

class MyTextToSpeechEntity(TextToSpeechEntity):
"""表示一个文字转语音实体。"""

@callback
def async_get_supported_voices(self, language: str) -> list[str] | None:
"""返回某种语言的支持声音列表。"""

一次性生成 TTS 音频

此方法接受一个消息和语言作为输入,并返回 TTS 音频。它可以实现为同步或异步,且必须实现。

class MyTextToSpeechEntity(TextToSpeechEntity):
"""表示一个文字转语音实体。"""

def get_tts_audio(
self, message: str, language: str, options: dict[str, Any]
) -> TtsAudioType:
"""从引擎加载 TTS 音频文件。"""

async def async_get_tts_audio(
self, message: str, language: str, options: dict[str, Any]
) -> TtsAudioType:
"""从引擎加载 TTS 音频文件。"""

生成带有消息流的 TTS 音频

大型语言模型以块的形式生成文本。可以使用一系列文本消息调用 TTS 服务,TTS 服务将分块返回音频。

此方法是可选的。当未实现时,TTS 服务将使用最终消息调用一次性方法。

class MyTextToSpeechEntity(TextToSpeechEntity):
"""表示一个文字转语音实体。"""

async def async_stream_tts_audio(
self, request: TTSAudioRequest
) -> TTSAudioResponse:
"""从传入消息生成语音。"""

TTSAudioRequestTTSAudioResponse 对象的定义如下:

@dataclass
class TTSAudioRequest:
"""获取 TTS 音频的请求。"""

language: str
options: dict[str, Any]
message_gen: AsyncGenerator[str]


@dataclass
class TTSAudioResponse:
"""包含 TTS 音频流的响应。"""

extension: str
data_gen: AsyncGenerator[bytes]