//! Text-to-speech provider abstraction.
use async_trait;
use mpsc;
/// Streaming text-to-speech. Mirrors the streaming side of
/// [`crate::provider::Provider`]: the provider pushes PCM frames into
/// `pcm_tx` as they are synthesized so the caller can start playback
/// before the full utterance is finished. Returns when synthesis is
/// complete; closing `pcm_tx` is the caller's responsibility (dropping
/// the sender ends the consumer's stream cleanly).