[LNNT] Linnet — local voice transcription, speaker diarization, meeting notes, dictation, and real-time tone annotation #31

Open
opened 2026-04-06 10:43:57 -07:00 by pyr0ball · 0 comments
Owner

Product

linnet (LNNT) — real-time tone annotation PWA for ND/autistic users (Elcor mode).

Problem

Autistic, nonverbal, and ND (neurodivergent) users face two compounding barriers in voice interactions:

  1. Tonal cues are invisible in transcripts. Frustration, warmth, sarcasm, scripted politeness are communicated through voice, not words. A raw transcript strips them entirely.
  2. Phone calls require real-time verbal production. For nonverbal or low-verbal users, this is an access barrier, not a preference.

linnet addresses both: it makes tone explicit (annotation layer) and removes the verbal production requirement (proxy layer).

Milestones

Notation — v0.1.x (in design)

Listen-only mode. Connects to any audio source and produces a live annotated transcript with Elcor-style tone labels.

[With escalating impatience:] "We have already gone over this."
[Warmly:] "Let me see what I can do."
[Reading from a script:] "I understand your frustration."

Audio sources: phone calls (via Osprey), system audio (video calls), microphone (in-person), file upload.

Issues: linnet#2–#7 · Design: 2026-04-06-notation-v0.1.x-design.md · Plan: 2026-04-06-notation-v0.1.x.md

Navigation — v0.2.x (scoped)

IVR navigation proxy. User types what they need; linnet navigates the IVR tree on their behalf. No verbal production required for automated phone systems. Issues: linnet#8–#11

Interaction — v1.0 (scoped)

Full bidirectional voice proxy for nonverbal users. User types → linnet speaks (TTS); caller speaks → linnet transcribes + annotates in real time. Issues: linnet#12–#16

Translation — v1.1 (scoped)

Cross-language tone annotation. Linnet labels persist across translation — the subtext is in the user's language even if the call is not. Issues: linnet#17–#19

Stack

  • Frontend: Vue 3 + Vite + Pinia (PWA, port 8521)
  • Backend: FastAPI + asyncio (port 8522)
  • Voice pipeline: cf-voice (standalone repo)
    • STT: faster-whisper (local, Free tier)
    • Tone: wav2vec2 SER + librosa prosody
    • Diarization: pyannote/speaker-diarization-3.1 (Navigation v0.2.x)
    • Cloud STT/TTS: cf-orch#26 (Paid tier, v1.0)

Tier mapping

Tier What you get
Free Local STT + local tone classifier + local Elcor labels (Whisper + wav2vec2)
Paid Cloud STT/TTS fallback; SignalWire telephony via CF; session pinning

Elcor labels are always generated locally — privacy constraint, not a cost decision.

ND/adaptive notes

  • Opt-in annotation sensitivity: full Elcor | shift-only alerts | off
  • Never names or diagnoses the speaker: reporter framing only
  • No urgency framing in the UI — calm, neutral presentation always
  • prefers-reduced-motion respected throughout

Repo

Circuit-Forge/linnet (placeholder — scaffold tracked in linnet#2)

## Product **linnet** (`LNNT`) — real-time tone annotation PWA for ND/autistic users (Elcor mode). ## Problem Autistic, nonverbal, and ND (neurodivergent) users face two compounding barriers in voice interactions: 1. **Tonal cues are invisible in transcripts.** Frustration, warmth, sarcasm, scripted politeness are communicated through voice, not words. A raw transcript strips them entirely. 2. **Phone calls require real-time verbal production.** For nonverbal or low-verbal users, this is an access barrier, not a preference. linnet addresses both: it makes tone explicit (annotation layer) and removes the verbal production requirement (proxy layer). ## Milestones ### Notation — v0.1.x (in design) Listen-only mode. Connects to any audio source and produces a live annotated transcript with Elcor-style tone labels. > `[With escalating impatience:]` "We have already gone over this." > `[Warmly:]` "Let me see what I can do." > `[Reading from a script:]` "I understand your frustration." Audio sources: phone calls (via Osprey), system audio (video calls), microphone (in-person), file upload. Issues: linnet#2–#7 · Design: [2026-04-06-notation-v0.1.x-design.md](https://git.opensourcesolarpunk.com/Circuit-Forge/circuitforge-plans/src/branch/main/linnet/superpowers/specs/2026-04-06-notation-v0.1.x-design.md) · Plan: [2026-04-06-notation-v0.1.x.md](https://git.opensourcesolarpunk.com/Circuit-Forge/circuitforge-plans/src/branch/main/linnet/superpowers/plans/2026-04-06-notation-v0.1.x.md) ### Navigation — v0.2.x (scoped) IVR navigation proxy. User types what they need; linnet navigates the IVR tree on their behalf. No verbal production required for automated phone systems. Issues: linnet#8–#11 ### Interaction — v1.0 (scoped) Full bidirectional voice proxy for nonverbal users. User types → linnet speaks (TTS); caller speaks → linnet transcribes + annotates in real time. Issues: linnet#12–#16 ### Translation — v1.1 (scoped) Cross-language tone annotation. Linnet labels persist across translation — the subtext is in the user's language even if the call is not. Issues: linnet#17–#19 ## Stack - Frontend: Vue 3 + Vite + Pinia (PWA, port 8521) - Backend: FastAPI + asyncio (port 8522) - Voice pipeline: [cf-voice](https://git.opensourcesolarpunk.com/Circuit-Forge/cf-voice) (standalone repo) - STT: faster-whisper (local, Free tier) - Tone: wav2vec2 SER + librosa prosody - Diarization: pyannote/speaker-diarization-3.1 (Navigation v0.2.x) - Cloud STT/TTS: cf-orch#26 (Paid tier, v1.0) ## Tier mapping | Tier | What you get | |---|---| | Free | Local STT + local tone classifier + local Elcor labels (Whisper + wav2vec2) | | Paid | Cloud STT/TTS fallback; SignalWire telephony via CF; session pinning | Elcor labels are always generated locally — privacy constraint, not a cost decision. ## ND/adaptive notes - Opt-in annotation sensitivity: full Elcor | shift-only alerts | off - Never names or diagnoses the speaker: reporter framing only - No urgency framing in the UI — calm, neutral presentation always - prefers-reduced-motion respected throughout ## Repo `Circuit-Forge/linnet` (placeholder — scaffold tracked in linnet#2)
pyr0ball added the
priority:backlog
status:concept
labels 2026-04-06 10:44:05 -07:00
pyr0ball added
status:design
and removed
status:concept
labels 2026-04-06 13:05:06 -07:00
pyr0ball added
status:alpha
and removed
status:design
labels 2026-04-06 22:18:51 -07:00
pyr0ball changed title from linnet — Real-time tone annotation for ND/autistic users (Elcor mode) to [LNNT] Linnet — local voice transcription, speaker diarization, meeting notes, dictation, and real-time tone annotation 2026-04-06 22:27:40 -07:00
Sign in to join this conversation.
No description provided.