crates/ that handle audio capture, transcription and meeting detection. It helps you know which code drives which documented behavior. The end-to-end flow is described in Architecture.
In the Cargo.toml files, these crates are referenced by the workspace alias syntheo-<name> (for example syntheo-audio-actual), except owhisper-client, owhisper-interface and openai-transcription, which keep their name.
Main chain
apps/desktop/src-tauricreates the audio provider:syntheo-audio-actual(ActualAudio), orsyntheo-audio-mockin a development build.plugins/transcriptiongoes throughsyntheo-transcription-core, which re-exportssyntheo-listener-core(live listening) andsyntheo-listener2-core(batch import).- Both listeners talk to the STT server through
owhisper-client, which relies onopenai-transcriptionandsyntheo-ws-client. syntheo-transcriptassembles the received words into segments and speakers.plugins/dictationreusessyntheo-audioandowhisper-clientfor dictation.
Audio capture
crates/audio-actual
- Role: the only audio provider in published builds.
apps/desktop/src-tauri/src/lib.rs(create_audio_provider) instantiates it, unlessMOCK_AUDIOis set in adevordevtoolsbuild. - API:
ActualAudio,AudioInput,AudioOutput,AudioSource,AudioStream; re-exportsAudioProvider,CaptureConfig,CaptureFrame,CaptureStreamfromcrates/audio. - System audio capture:
src/speaker/contains one implementation per platform. On Linux, it relies on PulseAudio (libpulse-binding) and PipeWire; on Windows, onwasapi; on macOS, oncidre. The output chosen in the settings is used, otherwise the default output. - Capture:
src/capture/combines microphone and system audio (joiner.rs), applies echo cancellation (echo_gate.rs) and handles recovery after errors (recovery.rs). - Internal dependencies:
aec,audio,audio-device,audio-interface,audio-sync,audio-utils,resampler. - Affected doc pages: /en/meetings, /en/troubleshooting (audio on Linux and Windows), /en/data-and-privacy (audio never kept).
Voice activity detection
Affected doc pages: /en/meetings for
vad-masking; none for vad and onnx taken on their own.
Listening sessions
crates/listener-core
- Role: live listening engine. Actors (
src/actors/) manage the session (session/), the audio source (source/, with mutes and device tracking), the STT connection (listener/), the audio sweep (audio_sweep.rs) and reading a file at real-time pace (file_stream/). - API:
State,Snapshot,TranscriptionMode,StartSessionError,DegradedError, the events (events.rs) and live transcription (live_transcript). - Guarantee: the
supervisor_writes_no_audio_to_session_dirtest checks that no audio file appears in the session folder. - Internal dependencies:
audio,audio-device,audio-utils,device-monitor,language,storage,supervisor,transcript,vad-masking,owhisper-client,owhisper-interface. - Affected doc pages: /en/meetings, /en/automatic-capture, /en/data-and-privacy, /en/offline, /en/troubleshooting.
crates/listener2-core
- Role: batch transcription of an imported file.
src/batch/offers a simple mode and a progressive mode;upload.rssplits the audio into in-memory MP3 segments before sending. - API:
BatchRuntime,BatchParams,BatchEvent,BatchRunMode;is_supported_languages_live/_batch,suggest_providers_for_languages_live/_batch,list_documented_language_codes_batch; subtitle reading and export (parse_subtitle_from_path,export_words_to_vtt_file). - Internal dependencies:
audio-utils,language,mp3,user-error,owhisper-client,owhisper-interface. - Affected doc pages: /en/import-recordings, /en/languages.
crates/transcription-core
- Role: single facade for
plugins/transcription. Thelistenerandlistener2modules re-exportlistener-coreandlistener2-core. Therealtime_filemodule imports a file through the real-time stream: in-memory decoding, passing throughfile_stream, then rendering in batch format, without writing anything to disk. - Internal dependencies:
listener-core,listener2-core,owhisper-interface. - Affected doc pages: /en/meetings, /en/import-recordings.
crates/supervisor
- Role: actor supervision: restart budget (
RestartBudget,RestartTracker), retry with strategy (RetryStrategy,spawn_with_retry), dynamic supervisor (dynamic). - Used by:
listener-core(audio source restart). - Affected doc pages: /en/meetings (recovery without restarting the capture).
STT clients
Affected doc pages: /en/ai-setup, /en/meetings, /en/dictation, /en/import-recordings, /en/offline, /en/troubleshooting, /en/conformite/rgpd.
Transcription and languages
crates/transcript
- Role: turns the words received from STT into a transcript: processing (
TranscriptProcessor), post-processing, segments (build_segments), speaker labels (SpeakerLabeler,render_speaker_label), speaker context, post-batch refinement (batch_refine), live materialization and rendering. - Internal dependencies:
template-app,owhisper-interface. - Used by:
listener-core,plugins/transcription,agent-access(CLI and MCP server). - Affected doc pages: /en/meetings, /en/notes, /en/contacts, /en/reference/cli, /en/reference/mcp.
crates/language
- Role: ISO 639-1 language codes (
ISO639,Language), lists of supported languages (whisper_multilingual,parakeet_tdt_v3_languages), detection (detect, throughwhatlang) and dominant language of a text (dominant_language). - Internal dependencies:
whisper(whisperfeature, enabled by default). - Used by:
detect,listener-core,listener2-core,owhisper-client,owhisper-interface,plugins/tantivy,plugins/template(dominant_languagecommand),plugins/transcription. - Affected doc pages: /en/languages.
crates/whisper
No Whisper model: the crate only contains the Language enum of the Whisper tokenizer’s languages (whisper_index). Only crates/language uses it. Affected doc pages: none.
Meeting detection
crates/detect
- Role: watches the computer to trigger automatic capture. Modules behind features:
mic(microphone used by another app; PulseAudio on Linux),list(installed apps),app,zoom,sleep(sleep mode),screen(screen capture throughxcap),language.meeting_axreads macOS accessibility. - API:
Detector,DetectEvent,DetectCallback,new_callback,BackgroundTask. - Internal dependencies:
language;bundleon macOS. - Used by:
plugins/detect(featuresmic,list,language,sleep,screen). - Affected doc pages: /en/automatic-capture.
macOS-specific crates
No macOS build is published (see Architecture). These crates call Swift code throughswift-rs and only have an effect on macOS.
Affected doc pages: none, as long as macOS is not distributed.
Auxiliary crates
Pointers for the documentation
- Change of audio platform, device or system capture:
crates/audio-actual,crates/audio-device,crates/device-monitor. Update /en/meetings and /en/troubleshooting. - New STT protocol or provider:
crates/owhisper-client. Update /en/ai-setup, /en/conformite/rgpd and /en/architecture. - Change of import formats or batch transcription:
crates/listener2-core,crates/transcription-core. Update /en/import-recordings. - Change of supported languages:
crates/language,crates/listener2-core. Update /en/languages. - Any audio write to disk contradicts /en/data-and-privacy and the architecture guarantees.