Home / Ops / More in this area
Updated Jul 13, 2026 · Affirmology_VoicePipeline_Plan_v1.md
How the voice-voting feature gets populated, verified, tracked, and turned into real customization. The screen is Affirmology_VoiceVoting_Preview_v1.html; this is the system behind it.
About 22 seconds at a warm affirmation pace. Same line for every candidate so votes compare like to like. It deliberately includes a range test: soft open, a steady middle, and the word "enough" at the end (a common artifact trap).
"Breathe with me. You are exactly where you need to be. Nothing is missing from you. The one you are becoming is already here, in the way you breathe, in the way you choose. Let that be enough."
A second optional line for the sung/music test (for voices auditioning as music/sung voices): a short melodic phrase of the same spirit, so we can judge how a voice carries over a bed.
Two providers to start, mixed on purpose so we are not locked to one house sound: - ElevenLabs voices (the current pipeline). - Fish Audio voices. Generate one ~22s clip of the audition line per voice. Name each candidate (Selene, Cedar, Vela, Orion...) so testers bond to a name, not a voice ID. Store: name, provider, provider-voice-id, tone tags (warm/deep/airy/maternal/ceremonial, feminine/masculine/androgynous), clip URL, and the render settings used (so an approved voice is reproducible).
Every submitted clip runs these gates; only passers enter the voting rotation:
- LENGTH: 18 to 26 seconds. Reject outliers.
- LINE MATCH: transcribe the clip and fuzzy-match to the audition line; reject if words are missing or wrong.
- ARTIFACT SCAN: flag clipping, glitches, robotic prosody, and specifically the "enough" ending; borderline ones go to a human-review flag, not straight to voting.
- LOUDNESS: normalize to the fleet standard (-16 LUFS) so no voice wins just by being louder.
Status flow per candidate: new (clip received, verifying) then voting (passed, in rotation) then approved or rejected (after enough votes) then live (available to users). The admin view in the prototype shows exactly this queue.
Per candidate, track across all beta voters: keep-rate (% who loved it), pace distribution (too slow / just right / too fast), and how many have heard it (so low-sample voices are not judged early). Promotion rule proposal: a voice goes approved when keep-rate clears a threshold (say 70%) over a minimum sample (say 25 voters) AND its pace lands mostly "just right". Pace signal also feeds the render: if a great voice reads consistently "too slow", we speed its default pacing rather than dropping it.
Loved voices become that user's "Your Voices" set, and they choose what each is used for: readings, or with-music/sung. The generator reads this preference so a person's audios come in a voice they chose. This is the customization lever, and it is cheap once the fleet exists.
A teaser box now, a real feature later: the user records themselves, and we make their affirmations in their own voice (or a consented clone). Collect "notify me" interest now to size demand and to have a warm list when it opens.
Surface voice voting as a light, recurring nudge (a card in the app, and a line in the daily email once that ships), framed as "help shape the sound". Keep it a 60-second activity: hear a few, love a few, done. The more beta ears, the faster the fleet is proven, and the richer the customization becomes.