Source code for rhasspyhermes.g2p

"""Messages for looking up/guessing word pronunciations."""
import typing
from dataclasses import dataclass

from dataclasses_json import LetterCase, dataclass_json

from rhasspyhermes.base import Message


[docs]@dataclass class G2pPronounce(Message): """Get phonetic pronunciation for words. The response is sent in a :class:`G2pPhonemes` message. .. admonition:: MQTT message Topic ``rhasspy/g2p/pronounce`` Payload (JSON) .. list-table:: :widths: 10 10 80 :header-rows: 1 * - Key - Type - Description * - words - List of Strings - Words to guess pronunciations for. * - id - String (optional) - Unique id for request. Appended to reply topic (:class:`G2pPhonemes`). * - siteId - String - The id of the site where pronunciations were requested. Defaults to ``"default"``. * - sessionId - String (optional) - Id of active session, if there is one. * - numGuesses - Integer - Maximum number of guesses to return for words not in dictionary. Defaults to 5. Publish this message type with ``mosquitto_pub``: .. code-block:: shell mosquitto_pub -h <HOSTNAME> -t 'rhasspy/g2p/pronounce' -m '{"words": ["word", "sentence"], "id": "test", "siteId": "default", "sessionId": null, "numGuesses": 5}' Example ------- >>> from rhasspyhermes.g2p import G2pPronounce >>> p = G2pPronounce(words=["word", "sentence"], id="test") >>> p.payload() '{"words": ["word", "sentence"], "id": "test", "siteId": "default", "sessionId": null, "numGuesses": 5}' >>> p.topic() 'rhasspy/g2p/pronounce' Note ---- This is a Rhasspy-only message.""" words: typing.List[str] """Words to guess pronunciations for.""" id: typing.Optional[str] = None """Unique id for request. Appended to reply topic (:class:`G2pPhonemes`).""" site_id: str = "default" """Id of site to request pronunciations from.""" session_id: typing.Optional[str] = None """Id of active session, if there is one.""" num_guesses: int = 5 """Maximum number of guesses to return for words not in dictionary."""
[docs] @classmethod def topic(cls, **kwargs) -> str: """Get MQTT topic for this message type. Returns ------- str ``"rhasspy/g2p/pronounce"`` """ return "rhasspy/g2p/pronounce"
[docs]@dataclass_json(letter_case=LetterCase.CAMEL) @dataclass class G2pPronunciation: """Phonetic pronunciation for a single word.""" phonemes: typing.List[str] """Phonetic pronunciation for word.""" guessed: typing.Optional[bool] = None """``True`` if this pronunciation was guessed using a g2p model. ``False`` if it came from a pronunciation dictionary."""
[docs]@dataclass class G2pPhonemes(Message): """Response to :class:`G2pPronounce`. .. admonition:: MQTT message Topic ``rhasspy/g2p/phonemes`` Payload (JSON) .. list-table:: :widths: 10 10 80 :header-rows: 1 * - Key - Type - Description * - wordPhonemes - Dictionary - Guessed or looked up pronunciations. * - id - String (optional) - Unique id for a :class:`G2pPronounce` request. * - siteId - String - The id of the site where pronunciations were requested. Defaults to ``"default"``. * - sessionId - String (optional) - Id of active session, if there is one. Subscribe to this message type with ``mosquitto_sub``: .. code-block:: shell mosquitto_sub -h <HOSTNAME> -t 'rhasspy/g2p/phonemes' -v Note ---- This is a Rhasspy-only message.""" word_phonemes: typing.Dict[str, typing.List[G2pPronunciation]] """Guessed or looked up pronunciations.""" id: typing.Optional[str] = None """Unique id from a :class:`G2pPronounce` request.""" site_id: str = "default" """Id of site where pronunciations were requested.""" session_id: typing.Optional[str] = None """Id of active session, if there is one."""
[docs] @classmethod def topic(cls, **kwargs) -> str: """Get MQTT topic for this message type. Returns ------- str ``"rhasspy/g2p/phonemes"`` """ return "rhasspy/g2p/phonemes"
[docs]@dataclass class G2pError(Message): """Error from G2P component. .. admonition:: MQTT message Topic ``rhasspy/error/g2p`` Payload (JSON) .. list-table:: :widths: 10 10 80 :header-rows: 1 * - Key - Type - Description * - error - String - A description of the error that occurred. * - siteId - String - The id of the site where the error occurred. * - context - String - Additional information on the context in which the error occurred. * - sessionId - String (optional) - Id of active session, if there is one. Subscribe to this message type with ``mosquitto_sub``: .. code-block:: shell mosquitto_sub -h <HOSTNAME> -t 'rhasspy/error/g2p' -v Note ---- This is a Rhasspy-only message. """ error: str """A description of the error that occurred.""" site_id: str = "default" """The id of the site where the error occurred.""" context: typing.Optional[str] = None """Additional information on the context in which the error occurred.""" session_id: typing.Optional[str] = None """The id of the session, if there is an active session."""
[docs] @classmethod def topic(cls, **kwargs) -> str: """Get MQTT topic for this message type. Returns ------- str ``"rhasspy/error/g2p"`` """ return "rhasspy/error/g2p"