Text-to-speech destinations

Text-to-speech (TTS) messages are injected to destinations. Destinations determine two factors: output and mechanism.

  • Output is where the synthesized speech plays to and decides who hears the TTS message. Each destination uses one of the following outputs:

    • Local Playback - messages injected here play back locally on the user’s default render device (for example, loudspeakers or headphones).
    • Remote Transmission - messages injected here are sent to remote participants in connected sessions according to transmission policies (the same sessions that basic voice transmits to).
    • Local and Remote - messages injected here are simultaneously injected to Local Playback and Remote Transmission.
  • Mechanism is how new messages are handled when there is an ongoing message playing. Each destination uses one of the following injection mechanisms:

    • Simple - destinations using this mechanism mix together new messages and ongoing messages to play them concurrently.
    • Queue - destinations using this mechanism queue new messages in the order they are sent. When the ongoing message finishes playing, this mechanism auto-triggers the message that is next in line.
    • Replace - destinations using this mechanism cancel any ongoing message and then replaces it with the new message.

You can inject synthesized speech into the following destinations:

Note: Most destinations are independent and do not affect the behavior of any other destinations. However, the two queued destinations involving remote transmission share a queue.

  • Remote Transmission

    • Enum value: TTSDestination::RemoteTransmission
    • Output: Remote Transmission
    • Mechanism: Simple
  • Local Playback

    • Enum value: TTSDestination::LocalPlayback
    • Output: Local Playback
    • Mechanism: Simple
  • Remote Transmission with Local Playback

    • Enum value: TTSDestination::RemoteTransmissionWithLocalPlayback
    • Output: Local and Remote
    • Mechanism: Simple
  • Queued Remote Transmission

    • Enum value: TTSDestination::QueuedRemoteTransmission
    • Output: Remote Transmission
    • Mechanism: Queue
    • Caveat: Shares queue with Queued Remote Transmission with Local Playback.
  • Queued Local Playback

    • Enum value: TTSDestination::QueuedLocalPlayback
    • Output: Local Playback
    • Mechanism: Queue
  • Queued Remote Transmission with Local Playback

    • Enum value: TTSDestination::QueuedRemoteTransmissionWithLocalPlayback
    • Output: Local and Remote
    • Mechanism: Queue
    • Caveat: Shares queue with Queued Remote Transmission
  • Screen Reader

    • Enum value: TTSDestination::ScreenReader
    • Output: Local Playback
    • Mechanism: Replace

You can obtain the state and content of all messages that are playing or are enqueued in any destination by using ITextToSpeech::GetMessages(TTSDestination Destination). Queued destinations return their TArray<ITTSMessage\*> in queue order, and others in the order that speech was injected.