Home / Ops / More in this area
Updated Jul 12, 2026 · Affirmology_VoiceRegistry_v1.md
STANDING RULE (Jeff, 2026-06-27): LOG THIS HARD, ALWAYS. Every time any audio is rendered, record here: which voice (name + provider + exact reference_id / voice_id), the model, the speed, the music bed, and the output URL. Do not render anything without updating this file. This is the single source of truth; the FishVoice shortlist is the audition log, this is the "what we actually ship" log. No em dashes.
The TTS engines mispronounce our own name. They say "AW-firm-ology." Correct is "AH-firm-ology" (the "affirm" in "affirmation").
THE FIX: before ANY text goes to a TTS engine, find-and-replace the brand name with the phonetic respelling.
| Written | Send to TTS as |
|---|---|
Affirmology |
Ahffirmology ✅ (Jeff picked by ear, 2026-07-12; Afirmology was close 2nd) |
NAME_A_baseline (wrong) through NAME_E_uhfirm in outputs.| Voice | Provider | id / reference_id | Notes |
|---|---|---|---|
| Charlotte | ElevenLabs | "Charlotte" (Meditation & Relaxation), model eleven_turbo_v2_5 |
the female demo / Soul Song voice |
| Lily | ElevenLabs | trailer voice | per Affirmology_VoiceTools_FishAudio_Eval_v1.md |
| Sleep (male) | Fish Audio (s2) | 8a5a849eff184046ae6bdb9a1825165c |
Jeff's chosen MALE identity voice (2026-06-27). NOT the readings voice (Jeff confirmed by ear). |
| CALM-NORMAL (male) | Fish Audio (s2) | 0b74ead073f2474a904f69033535b98e |
"movie-trailer, slow + deep" |
| calm (male) | Fish Audio (s2) | f281f234a1d04a929ade9f676ed7c441 |
THE READINGS / Mirror / Dr. Young voice (Jeff identified by ear, 2026-06-27). |
| british female | Fish Audio (s2) | 32e344f53f114cfcbb7ed086f10f2403 |
"sounds like Charlotte" |
| Audio / lane | Voice | Model | Speed | Bed | Output |
|---|---|---|---|---|---|
| Demo + Origin Soul Song (foundational, female) | Charlotte (ElevenLabs) | eleven_turbo_v2_5 | 0.96 | Heavenly Circuit | demo render path; Sol's at media.affirmology.ai/library/sol_OriginSoulSong.mp3 |
| The Recognition (A/B, canonical) | Charlotte (ElevenLabs) | eleven_turbo_v2_5 | 0.96 | Heavenly Circuit | library/jeff_Recognition.mp3 |
| Jeff Origin + Recognition, MALE test | Sleep (Fish 8a5a849e...) |
Fish s2 | 0.85 | Heavenly Circuit, 6s intro + 4s fade tail | library/jeff_OriginSoulSong_male.mp3, library/jeff_Recognition_male.mp3 (2026-06-27) |
| The Mirror / readings / Dr. Young (male) | calm (Fish f281f234a1d04a929ade9f676ed7c441) |
Fish s2 | reading pace | (varies) | library/sol_Mirror.mp3, colin_Mirror.mp3, sol_WealthReading_full_clean.mp3 (72 min), jeff_ShortReading_A/B.mp3 |
| Trailer | Lily (ElevenLabs) | - | - | - | - |
| Investor video VO (male) | calm (Fish f281f234a1d04a929ade9f676ed7c441) |
Fish s2 | 0.88 | dry, no bed (bed added in CapCut) | Affirmology_InvestorVideo_VO_calm_male_v1.mp3 (2026-06-28); the readings voice, rendered per-beat and concatenated with breaths; ~8.7 min |
| Origin Soul Song, NEW FIXED CLOSE (Jeff test) | Charlotte (ElevenLabs) | eleven_turbo_v2_5 | 0.96 | Heavenly Circuit, default mix (5s offset, ~7s predictable tail) | library/jeff_OriginSoulSong_newclose.mp3 (2026-06-28). Origin formula with the open-loop close replaced by the fixed seal "Beneath all of it, one truth remains. I am [name]." Engine commit 3cebfd5 (not yet pushed). QC pass, voice 285s. |
| Jeff Mirror, Recognition form (test) | mirror-male (Fish e686ae649ee44f219a108aacba206c1a) |
Fish s1 | 0.82 | no bed (spoken, silence under voice) | JeffParkerLove_Mirror_Recognition_v1.mp3 (2026-07-09). Recognition form shaped from Jeff's stored Understanding, Sol's 7/6 feedback applied (wide pauses, isolated affirmations). Paced render, base_gap 1.05, 72s inserted silence, 65 beats, 15:09, QC PASS 0 dropouts, LUFS -22.4. Emailed to Jeff (Resend 58838ea6). Script: Affirmology_JeffMirror_Recognition_v1.md. |
VOICE ID DISCREPANCY TO RESOLVE (2026-07-09): the render pipeline (pipeline.py / audio_synthesis.py) defines mirror-male = Fish e686ae649... (s1), and the OriginSoulSong/AudioStructures synthesis docs call e686ae649... "the locked read for The Mirror." But the ship-log row above (line for sol_Mirror.mp3) records f281f234... (s2) as the Mirror voice. These are two different Fish voices, both "calm." Jeff picked e686ae649... for the 2026-07-09 Jeff Mirror render. Someone should confirm which reference_id actually rendered the Sol Recognition 10:38 Sol loved and reconcile this table with the code so we stop carrying both.
Jeff: "but it's close enough, unless or until we can find it." So USE calm f281f234a1d04a929ade9f676ed7c441 (Fish s2, male) as the readings / Mirror / Dr. Young voice for now, rendered SLOWER (~0.80-0.84, not 0.9). It is the closest by ear and matches the transcript hint "[narrator] calm | f281f234", but Jeff is not 100% it is the exact original (the original was never logged; Fish has no request-history API). PROVISIONAL until/unless the exact one surfaces. Distinct from Sleep (8a5a849e..., Jeff's identity-audio male).
--audio path, eleven_turbo_v2_5, explicit --speed (0.96 proven), Heavenly Circuit bed, audio_qc gate.POST https://api.fish.audio/v1/tts, headers Authorization: Bearer $FISH_API_KEY, Content-Type: application/json, model: s2; body {"text","reference_id","format":"mp3","mp3_bitrate":128,"prosody":{"speed":0.85}}. Square-bracket markers ([break] for pauses). Then bed-mix in ffmpeg: bed at volume 0.20, voice adelay=6000, apad=pad_dur=4 for a tail, afade out over ~3s so it never ends abruptly. (The 2026-06-27 abrupt-ending bug was amix duration=shortest with no apad: the mix ended exactly at the last word. apad fixes it.)Engine: POST https://api.elevenlabs.io/v1/music, {"prompt", "music_length_ms": 30000}, production
ELEVENLABS_API_KEY (full access). Runner: affirmology-studio/api/chant_runner.py (queue-driven,
3 takes/person, R2 chants/
Jeff Parker Love takes (all logged, all kept; "we are only scratching the surface of the usability"): - take1: https://media.affirmology.ai/chants/jeff_parker_love/take1.mp3 (v1 uniform-choir prompt) - take2: https://media.affirmology.ai/chants/jeff_parker_love/take2.mp3 (v1 prompt; Jeff's early pick) - take3: https://media.affirmology.ai/chants/jeff_parker_love/take3.mp3 (v1 prompt; liked) - take4: https://media.affirmology.ai/chants/jeff_parker_love/take4.mp3 (v2 BUILD-AND-CONVERGE) = CANON -> canonical https://media.affirmology.ai/chants/jeff_parker_love.mp3
CRAFT FINDING (Jeff by ear, 7/12): the opening solo name lands soft; THE CHOIR CONVERGING ON THE
FINAL WORD IS THE EPIC MOMENT. So the v2 house prompt makes it structural: "opens with a single
strong solo voice, more voices join phrase by phrase, and the entire choir converges in radiant,
layered, epic full harmony on the final words." v2 is now the runner's house template (every future
chant inherits it). v1 (uniform choir) kept here for reference:
"Authentic Gregorian chant, a small monastery choir of male voices in a vast stone cathedral,
reverent, slow, sacred, natural cathedral reverb, fully a cappella, absolutely no instruments. The
choir solemnly and beautifully chants these exact words as the entire text, in medieval plainchant
style, melismatic, voices layering and echoing: '