Participant source
The server knows which authenticated device emitted each transcript event. Remote participants with one device per audio channel are directly attributable.
A deeply researched design for opt-in, multi-device conversation capture. Speech becomes text on each device. A shared room aligns, attributes, consolidates, and turns that text into durable notes—without sending raw audio to the server.
The viable privacy-first baseline is local speech recognition plus server-side fusion of text, time, device identity, and low-risk acoustic quality metadata. It can suppress duplicates and infer a likely speaker. It cannot guarantee diarization from distant, overlapping microphones. Preserve uncertainty and offer stronger capture modes when attribution matters.
A room can consolidate local transcripts deterministically. Reliable identity depends on the capture topology, not merely the number of phones listening.
The server knows which authenticated device emitted each transcript event. Remote participants with one device per audio channel are directly attributable.
In one physical room, several phones hear the same voice. Proximity, normalized SNR, timing, and ownership form evidence—not proof.
Overlapping hypotheses can be time-clustered, aligned, ranked, and revisioned without a server LLM. Original device versions remain auditable.
| Topology | What identifies the speaker | Expected attribution | Primary failure | Recommendation |
|---|---|---|---|---|
| Remote one participant per channel |
Authenticated media/text channel | High | Shared device or account handoff | Use channel identity as authoritative. |
| Co-located phone near each owner |
Owner prior + normalized acoustic evidence | Conditional | Phones move; automatic gain control distorts loudness. | Calibrate, score, and allow “unknown.” |
| Co-located phones scattered on table |
Relative location and signal only | Low–medium | Nearest phone is not necessarily the speaker’s phone. | Do not attach names automatically. |
| Hybrid room plus remote channels |
Remote channel identity + room inference | Mixed | Remote playback is re-captured by room devices. | Use one room renderer and suppress echo copies. |
| Close-talk headset/lapel per person |
Authenticated personal microphone | Highest | Hardware friction and battery | Use for decisions, interviews, or regulated use. |
Published multi-microphone systems improve recognition by synchronizing and processing audio streams, often with diarization and speech enhancement. One study using 11 distributed microphones reduced character error rate from 38.2% for a center-table microphone to 28.7%. That result demonstrates the value of diverse channels, but it does not validate a text-only fusion design because the research pipeline used audio synchronization, separation, and diarization. 10
The architecture becomes tractable when capture, attribution, consensus, and knowledge are modeled independently.
Capture, audio buffering, speech recognition, and incremental audio disposal remain on device. The server receives text and bounded metadata. The system should still work when external AI services are unavailable.
Once transcript events enter a room, text is server-visible unless a client-side coordinator performs fusion. The product must say “audio stays on device,” not imply that all conversation data stays local.
On-device speech recognition is itself model-based. In this architecture, the boundary means no server-side audio model and no per-participant LLM in the live recognition path. A governed room-level model may later summarize stable, consented shared state. This distinction should appear in consent language and product claims.
Apple documents background recording when the app declares the audio background mode, but that is not a promise of invisible or unlimited capture. Production behavior still needs explicit permission and recording state, interruption and route-change recovery, incremental finalization, and battery/thermal testing. 21
Android exposes an on-device recognizer constructor, while also warning that the general speech-recognition service may use remote servers and is not intended for continuous recognition. Treat Android as a verified adapter per device and language—not as an automatic parity promise. 05
Text-only server fusion cannot separate two people whom each on-device recognizer merged into one hypothesis. The baseline should mark overlapping or contradictory spans as disputed. Source separation belongs in an optional, explicitly consented capture tier.
“Signal strength” should mean acoustic quality relative to each device’s own noise floor—not raw volume and not network RSSI.
| Signal | Computed where | What it contributes | Limit | Baseline? |
|---|---|---|---|---|
| Authenticated participant/device ID | Identity + room service | Provenance and owner prior | Device owner may not be current speaker. | Yes |
| Audio time range | On-device transcriber | Cross-device temporal alignment | Clocks need offset and uncertainty estimates. | Yes |
| Transcription confidence | On-device transcriber | Ranks competing hypotheses | Confidence is engine-specific and may be miscalibrated. | Yes |
| SNR above rolling noise floor | Local DSP | Proximity/clarity evidence | AGC, cases, orientation, and pockets change gain. | Yes |
| VAD / speech-active range | OS speech detector or local DSP | Segments speech and avoids silence traffic | Overlapping speech remains one active interval. | Yes |
| Playback-active marker | Local app | Flags likely echo contamination | Cannot identify audio played by another app/device. | Yes |
| Route / AEC / clipping state | Local audio session | Quality penalties and diagnostics | Availability and effectiveness vary by device. | Yes |
| Cross-correlation / TDOA | Requires comparable audio features | Spatial delay and source location | Needs tight synchronization and richer audio-derived data. | No |
| Speaker embedding | Optional on-device model | Voice identity verification | It is biometric ML, needs enrollment and stronger governance. | Later tier |
SpeechTranscriber can provide tentative results plus finalized results, and its result attributes include audio time ranges and transcription confidence. These are exactly the local signals the room protocol needs. 02 03
Different microphones, gain control, cases, placement, and audio routes make absolute levels incomparable. Compare speech energy with that device’s rolling noise floor, track clipping, and calibrate scores against recorded test rooms.
Send bounded scalars for each finalized span: normalized SNR, noise floor, clipping ratio, VAD coverage, transcriber confidence, clock uncertainty, route class, AEC state, playback state, and local finalization latency. Do not send spectrograms, embeddings, or audio fingerprints in the default privacy tier.
The immutable transcript path and the collaborative note path are related by provenance, but they use different consistency models.
Transcript hypotheses are append-only events. The fusion service alone emits canonical revisions. This prevents concurrent clients from independently “correcting” history and preserves auditability.
Notes, decisions, and action items are user-editable shared objects. Yjs and Automerge are designed to merge concurrent edits; Yjs providers commonly organize synchronization by room name. 16 17
WebSocket provides a two-way channel over one connection. Socket.IO adds acknowledgements, retries, rooms, and connection recovery, but default delivery is at-most-once and recovery can fail. Persist events, use idempotency keys and offsets, and resynchronize after reconnect. 13 14 15
A device can identify audio that its own app renders. It cannot reliably know that another phone, television, or unrelated app produced a sound.
Android describes AEC as removing the remote party’s received signal from captured input. Apple exposes a preference for echo-cancelled input, and browsers expose an echo-cancellation constraint whose exact behavior is user-agent controlled. 04 07 08
If another device plays sound, the listener lacks the exact playback reference. The server can infer contamination from coordinated playback windows, but external media remains acoustically indistinguishable from a human source without richer local analysis.
For hybrid rooms, route remote audio to headsets or a single designated speaker. Avoid several phones playing the same remote audio. The best echo-removal strategy is to prevent duplicate acoustic output before attempting to classify it.
The server should never concatenate every local transcript. It forms temporal clusters, compares hypotheses, computes attribution, and emits a single revisioned canonical span.
| Source | Local result | Normalized SNR | STT confidence | Owner prior |
|---|---|---|---|---|
| Alice’s phone | “Ship it Friday after legal review.” | +18 dB | 0.91 | Yes |
| Bob’s phone | “Ship it Friday after the legal review.” | +10 dB | 0.94 | No |
| Cara’s phone | “Ship Friday after legal review.” | +7 dB | 0.82 | No |
| Canonical revision | Alice · “Ship it Friday after legal review.” | Text agreement: high · speaker claim: inferred · source count: 3 | ||
Several devices running the same recognizer in the same room produce correlated errors. De-duplicate engine/environment correlation before calculating support. Rank by calibrated quality and token agreement, then retain dissenting alternatives.
Begin with a transparent scoring model using ownership, normalized SNR, clock uncertainty, AEC/playback state, clipping, and consistency. Learn thresholds from labeled pilot rooms. Show “unknown” below the release threshold.
ROVER aligns multiple recognition outputs and votes over competing word hypotheses. Newer meeting-output fusion work combines timing and speaker labels, while asynchronous microphone research explicitly includes synchronization, diarization, recognition, and duplicate reduction. These sources support the decomposition, but the proposed metadata-only baseline remains an engineering hypothesis that must be validated. 12 11 09
The protocol should carry finalized text as durable events. Provisional text is ephemeral UI state unless product requirements demand replay.
type ConfidenceBand = "high" | "medium" | "low" | "unknown";
type SpeakerBasis =
| "remote-channel"
| "near-device-inference"
| "human-confirmed"
| "unresolved";
interface TranscriptObservationV1 {
schema: "roomnote.observation.v1";
eventId: string; // UUIDv7; idempotency key
roomId: string;
participantId: string; // authenticated contributor
deviceId: string; // registered device, rotated by policy
segmentId: string; // stable across provisional revisions
revision: number;
localMonotonicStartMs: number;
localMonotonicEndMs: number;
estimatedServerStartMs: number;
estimatedServerEndMs: number;
clockUncertaintyMs: number;
text: string;
locale: string;
isFinal: boolean;
sttConfidence?: number; // engine-specific; calibrate before mixing
quality: {
snrAboveNoiseFloorDb?: number;
clippingRatio?: number;
vadCoverage?: number;
audioRoute: "built-in" | "headset" | "bluetooth" | "unknown";
aecActive: boolean | "unknown";
playbackActive: boolean;
playbackEventIds?: string[];
};
privacy: {
rawAudioUploaded: false;
consentEpoch: string; // ties capture to active consent
};
}
interface CanonicalTranscriptRevisionV1 {
schema: "roomnote.canonical.v1";
canonicalId: string;
revision: number;
supersedes?: number;
text: string;
sourceEventIds: string[];
speaker?: {
participantId?: string;
label: string; // may be "Unknown speaker"
basis: SpeakerBasis;
confidence: number;
band: ConfidenceBand;
};
textConfidence: number;
disputed: boolean;
createdAt: string;
algorithmVersion: string;
}
Persist locally before emit. Retry until acknowledged. The server commits by event ID and returns the durable offset. A duplicate event is success, not an error.
On-device finalization creates a higher revision. Canonical fusion creates its own revision stream. Human corrections attach separate patches and attribution.
UUIDv7 provides sortable uniqueness. Monotonic time protects local duration from wall-clock changes. Estimated server time aligns devices, while clockUncertaintyMs prevents the fusion engine from pretending that alignment is exact. For audio-level spatial processing, device sampling clocks drift and require substantially more sophisticated synchronization than ordinary socket timestamps. Distributed-array research treats this as a first-class problem. 18
Do not let a summary overwrite what people actually said. Build small collaborative objects that cite transcript ranges and expose who or what created them.
A concise fact or context statement. May be created manually, deterministically, or by AI.
Decision text, owner, effective time, status, and supporting transcript citations.
Verb, owner, due date, status, confidence, source spans, and confirmation state.
Open issue, accountable party, next checkpoint, and links to contradictory evidence.
De-duplicate transcript spans, detect explicit “I will”/“we decided” phrases, resolve mentioned participants from room identity, group topic windows, and invite human confirmation. Rules can create candidates without presenting them as settled facts.
Send only newly stabilized canonical spans plus current open-note state. Hash the input window, cache outputs, and skip unchanged windows. Run at end-of-room or explicit checkpoints, not once per device or partial token.
Ten people should not trigger ten summaries. The room owns one canonical transcript and one atomic knowledge state. AI operates over deltas to those shared artifacts.
The text-only baseline is the best first implementation. It is not the highest-accuracy technical option.
| Option | Server receives | Speaker accuracy | Privacy | Complexity | Verdict |
|---|---|---|---|---|---|
| A · Text + scalar metadata | Text, time, confidence, normalized quality | Conditional | Strongest practical | Medium | Recommended V1 |
| B · On-device speaker verification | Text + local identity claim | Potentially high | Biometric model/enrollment | High | Optional, governed tier |
| C · Ephemeral encrypted audio snippets | Selected audio windows | Higher ceiling | Breaks no-audio boundary | Very high | Reject for baseline |
| D · Client-elected fusion coordinator | Encrypted relay only | Same as client model | Server-blind possible | Very high | Future confidential rooms |
| E · One close-talk mic per person | Text + known channel | Highest without server audio | Strong | Hardware/ops | Accuracy tier for serious use |
Socket.IO vs raw WebSocket, Yjs vs Automerge, fusion thresholds, Postgres schema details, UI confidence bands, and checkpoint frequency can change behind versioned contracts.
Whether raw audio crosses the boundary, whether voice identity is treated as biometric data, whether the server can read room text, and whether historical observations can be mutated define the trust model. Decide these first.
Messaging Layer Security provides group keying with forward secrecy and post-compromise security, but a server that must read text to fuse hypotheses is intentionally inside the trust boundary. An E2EE room requires fusion on an elected client or trusted execution environment, with coordinator failover and deterministic replay. MLS is relevant for the confidential-room alternative, not a magic layer that leaves server computation unchanged. 19
The product must continuously communicate what is captured, what leaves each device, who can see it, and how to stop or delete it.
Show participants, purpose, data types, retention, AI policy, and whether speaker inference is enabled. Joining does not silently start capture.
Use system microphone indicators plus an in-app “Recording locally · sharing text” state. Each person can pause their contribution without leaving the room.
Expose contributors, source spans, retention deadline, export, correction, and deletion controls. Record consent withdrawal as an event.
| Threat | Control | Evidence / audit |
|---|---|---|
| Unauthorized room join | Short-lived identity-bound room token; membership rechecked on connect and every privileged event. | Join/leave/deny events without transcript contents. |
| Cross-room data leak | Tenant + room authorization in storage keys, subscriptions, queries, and background jobs. | Isolation tests and policy decision logs. |
| Replay or duplicate event | Signed session, schema version, UUID event ID, monotonic revision, idempotent commit. | Duplicate count and original durable offset. |
| Socket abuse | WSS, origin allowlist, message schema validation, size limits, rate limits, heartbeat, backpressure. | Security events; never log full transcript payloads. 20 |
| AI over-sharing | Room AI policy, stable-delta minimization, approved model gateway, purpose-bound prompt, output provenance. | Input hash, model/version, policy decision, output link. |
| False speaker attribution | Confidence threshold, unknown state, participant correction, disputed label, no biometric claim in V1. | Algorithm version, evidence vector, correction history. |
Apple’s privacy guidance explicitly frames data minimization, on-device processing, transparency and control, and security protections as design pillars. 06
This architecture is not legal advice. Enterprise deployment needs a jurisdiction-aware consent policy, purpose/retention rules, labor and works-council review where applicable, and an explicit prohibition on covert capture.
The first deliverable should be a measurement harness, not a polished meeting assistant.
| Gate | Proposed target | Why it matters | Release response |
|---|---|---|---|
| Raw audio egress | 0 bytes in packet capture | Validates the central privacy claim. | Hard stop on any failure. |
| Duplicate suppression | ≥ 98% on non-overlap speech | Prevents multi-device transcript inflation. | Tune clustering before UX pilot. |
| Speaker precision | ≥ 95% when a name is auto-shown | Precision matters more than labeling every span. | Raise threshold; emit more “unknown.” |
| Speaker coverage | Measure, do not pre-commit | Reveals how often the system can be confidently useful. | Choose hardware or local-model tier from evidence. |
| Wording improvement | ≥ 10% relative WER reduction vs median single device | Tests whether text consensus adds value. | Otherwise select best channel instead of fusing. |
| Reconnect integrity | 0 lost finalized events in 30-second outage | Conversation data cannot silently disappear. | Fix durable local spool/offset replay. |
| Canonical latency | p95 ≤ 2.5 s after local finalization | Keeps shared notes conversational. | Profile transport, clustering window, and storage. |
Targets above are proposed product gates, not published performance claims. They must be adjusted after the first labeled dataset.
Consent, capture, pause, speaker uncertainty, transcript, and recovery must remain understandable with one thumb and enlarged text.
Test model installation, airplane mode, hours-long capture, thermal pressure, memory bounds, screen lock, interruptions, route changes, and finalization.
Swap phones, put devices in pockets, move speakers, play recorded voices, interrupt consent, join late, and speak simultaneously.
Each phase has a distinct learning goal and a stop condition.
Implement bounded AVAudioEngine capture, SpeechAnalyzer results, local DSP vector, incremental persistence, consent epoch, route/interruption handling, and exportable labeled test sessions. Exit: raw audio egress is zero and on-device events are replayable.
Add identity-bound Socket.IO rooms, durable offsets, time synchronization, event log, clustering, best-channel selection, consensus, confidence bands, and human speaker correction. Exit: pilot gates for duplicate suppression and named-speaker precision pass.
Add note/decision/action/question entities, CRDT synchronization, transcript citations, authorship, conflict UI, offline edits, and export. Exit: users can reconstruct why every important atom exists.
Introduce stable-delta AI calls through a policy gateway, evaluation datasets, prompt/version lineage, participant review, and cost telemetry. Exit: summaries improve task completion without changing source evidence or exceeding the room AI budget.
If high-precision attribution labels too little of the conversation, do not quietly lower the threshold. Choose close-talk hardware, optional on-device speaker verification, client-side audio fusion, or an explicitly less ambitious “speaker unknown” product.
Build Phase 0 as a research instrument. Capture a small, diverse, consented dataset in three room types. Use it to answer one question: When each phone stays near its owner, how often can normalized local evidence label a speaker at ≥95% precision? That result determines whether Roomnote is primarily a collaborative transcript, an attributed meeting system, or a hardware-assisted capture product.
Research was refreshed on 21 July 2026. Primary platform documentation, standards, and original research were preferred. Recommendations and proposed pilot targets are explicitly labeled.
Realistic user prompt: “Create a deeply researched, self-contained architecture guide for a privacy-first ‘multiplayer notes’ system. Multiple opted-in participants join a room. Every device performs continuous speech-to-text locally and sends only attributed text plus minimal acoustic metadata to a shared service. Determine how the service can align overlapping captures, distinguish live input from device output, infer which person spoke, consolidate a canonical transcript, and maintain atomic shared notes, decisions, and action items. Minimize server AI use; reserve AI for governed summarization of stable shared state. Compare text-only fusion, on-device speaker verification, server audio processing, close-talk microphones, and client-coordinated alternatives. Include data contracts, socket/recovery design, privacy boundaries, failure modes, pilot metrics, implementation phases, evidence quality, limitations, and direct sources. Deliver one mobile-first, accessible, offline-readable HTML file whose core content works without JavaScript.”
Support an architecture decision and feasibility pilot. Primary audiences are a solution architect, mobile engineers, collaboration/backend engineers, privacy/security reviewers, and product owners.
Focus: on-device recognition, multi-user rooms, metadata-only fusion, speaker confidence, collaborative notes, AI minimization. Excluded: covert capture, production legal advice, biometric speaker recognition implementation, and server-side raw-audio processing in the baseline.
A text-plus-metadata room can improve transcript quality and infer speakers conditionally, but it must not claim robust diarization. Evidence that would change the recommendation: high-precision attribution failing even with near-owner phones, or text consensus failing to outperform best-channel selection.
Facts are sourced. Architecture choices are recommendations. Cross-source extrapolations are inferences. Numeric product gates are proposals. Research using raw audio is not treated as proof for metadata-only fusion.