pub mod config;
pub mod cpal_listener;
mod runtime;
pub(crate) use runtime::voice_runtime_handle;
pub mod elevenlabs_streaming_listener;
pub mod elevenlabs_stt;
pub mod elevenlabs_tts;
pub mod enrollment;
pub mod enrollment_store;
pub mod error;
pub mod events;
pub mod listener;
pub mod local_tts;
pub mod utterance;
#[cfg(target_os = "macos")]
pub mod apple_speech_stt;
#[cfg(target_os = "macos")]
pub mod apple_speech_tts;
#[cfg(feature = "diarization")]
pub mod diarization;
#[cfg(all(target_os = "macos", target_arch = "aarch64", not(car_skip_mlx)))]
pub mod kokoro_tts;
pub mod narration;
#[cfg(target_os = "macos")]
pub mod orchestrator;
#[cfg(feature = "parakeet")]
pub mod parakeet_stt;
pub mod provider;
pub mod providers_info;
pub mod push_listener;
pub mod session;
pub mod streaming_whisper;
pub mod stt;
#[cfg(all(target_os = "macos", feature = "system-audio-macos"))]
pub mod system_audio_capture;
#[cfg(all(target_os = "macos", feature = "system-audio-macos"))]
pub mod system_audio_listener;
#[cfg(target_os = "linux")]
pub mod system_audio_listener_linux;
#[cfg(target_os = "windows")]
pub mod system_audio_listener_windows;
pub mod transcript;
pub mod tts;
pub mod vad;
pub mod vad_backend;
#[cfg(target_os = "macos")]
pub mod voice_audio_mixer;
#[cfg(target_os = "macos")]
pub mod voice_processing_listener;
pub mod whisper_cpp_stt;
pub use config::{
compose_voice_context, voice_config_watch, ListenerMode, SttProvider as SttProviderKind,
TtsProvider as TtsProviderKind, VoiceConfig, VoiceConfigHandle, VoiceConfigSender,
DEFAULT_VOICE_PROMPT_OVERLAY,
};
#[cfg(target_os = "macos")]
pub use orchestrator::VoiceOrchestrator;
pub use utterance::{
bridge_phrase, classify_utterance, format_for_voice, ToolKind, UtteranceClass,
};
#[cfg(target_os = "macos")]
pub use apple_speech_stt::AppleSpeechSttProvider;
#[cfg(target_os = "macos")]
pub use apple_speech_tts::AppleSpeechSpeaker;
pub use car_engine::{DirectDataFetcher, VoiceTelemetry};
pub use cpal_listener::CpalListener;
#[cfg(feature = "diarization")]
pub use diarization::{
DiarizationConfig, DiarizationError, Diarizer, SharedDiarizer, SpeakerDiarizer,
};
pub use elevenlabs_streaming_listener::ElevenLabsStreamingListener;
pub use elevenlabs_stt::ElevenLabsSttProvider;
pub use elevenlabs_tts::{ElevenLabsSpeaker, VoiceSettings};
pub use enrollment::{
Enrollment, EnrollmentOutcome, FilterbankEmbedder, PendingEnrollment, SpeakerEmbedder,
SpeakerEmbedding, SpeakerPipeline, TranscriptRole,
};
pub use enrollment_store::{
enroll_from_pcm, enroll_from_wav, enrollment_dir, enrollment_path, list_enrollments,
load_enrollment, remove_enrollment, save_enrollment, EnrollmentInfo,
};
pub use error::VoiceError;
pub use events::VoiceEvent;
#[cfg(all(target_os = "macos", target_arch = "aarch64", not(car_skip_mlx)))]
pub use kokoro_tts::KokoroSpeaker;
pub use listener::Listener;
pub use local_tts::LocalTtsSpeaker;
#[cfg(feature = "parakeet")]
pub use parakeet_stt::{ParakeetPartial, ParakeetSttProvider};
pub use provider::{build_stt_provider, build_tts_speaker};
pub use providers_info::{
list_voice_providers, list_voice_providers_json, VoiceProviderInfo, VoiceProviderKind,
};
pub use push_listener::{PushHandle, PushListener};
pub use session::{VoiceEventSink, VoiceSession, VoiceSessionRegistry};
pub use streaming_whisper::{ChunkOverlapStreamer, StreamingConfig, StreamingPartial};
pub use stt::SttProvider;
#[cfg(all(target_os = "macos", feature = "system-audio-macos"))]
pub use system_audio_listener::SystemAudioListener;
#[cfg(target_os = "linux")]
pub use system_audio_listener_linux::{default_monitor_source, list_monitor_sources};
#[cfg(target_os = "windows")]
pub use system_audio_listener_windows::WindowsLoopbackListener;
pub use transcript::{parse_transcript, ParsedTranscript};
pub use tts::{play_audio, AudioFormat, Speaker, SynthesizedAudio};
pub use vad_backend::{EnergyVadBackend, SileroError, SileroVadBackend, VadBackend};
#[cfg(target_os = "macos")]
pub use voice_audio_mixer::{StemRole as MixerStemRole, VoiceAudioMixer, VoiceMixerHandle};
#[cfg(target_os = "macos")]
pub use voice_processing_listener::VoiceProcessingListener;
pub use whisper_cpp_stt::WhisperCppSttProvider;
pub type Result<T> = std::result::Result<T, VoiceError>;