app
Adom TTS: Text to Speech
Public Made by Adomby adom
Adom's shared voice service. Reads your AI's answers back to you while you drive, and renders perfectly-timed voiceover tracks for your demo videos, so you never record your own voice.
← Commit history
Open-source release: source + README + hero + skills (v0.2.0)
5 files changed
+107
completions/adom-tts.bashadded+13@@ -0,0 +1,13 @@+_adom_tts() {+ local cur="${COMP_WORDS[COMP_CWORD]}"+ local prev="${COMP_WORDS[COMP_CWORD-1]}"+ case "$prev" in+ --surface) COMPREPLY=($(compgen -W "hydrogen pup" -- "$cur")); return ;;+ esac+ if [[ "$cur" == --* ]]; then+ COMPREPLY=($(compgen -W "--play --surface --wait --out --voice --rate --history --no-pronunciations --show" -- "$cur"))+ return+ fi+ COMPREPLY=($(compgen -W "health version config say voices pronunciations install serve push play pron" -- "$cur"))+}+complete -F _adom_tts adom-tts
docs/hero.pngadded⋯ 1 unchanged line ⋯
docs/hero.svgadded+94@@ -0,0 +1,94 @@+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1280" height="720" viewBox="0 0 1280 720" font-family="Liberation Sans, DejaVu Sans, sans-serif">+ <defs>+ <linearGradient id="bg" x1="0" y1="0" x2="0.6" y2="1">+ <stop offset="0" stop-color="#001a3f"/>+ <stop offset="0.45" stop-color="#00142f"/>+ <stop offset="1" stop-color="#0a0e16"/>+ </linearGradient>+ <radialGradient id="glowL" cx="0.18" cy="-0.05" r="0.6">+ <stop offset="0" stop-color="#0061EF" stop-opacity="0.32"/>+ <stop offset="1" stop-color="#0061EF" stop-opacity="0"/>+ </radialGradient>+ <radialGradient id="glowR" cx="1.0" cy="0" r="0.6">+ <stop offset="0" stop-color="#8C6BF7" stop-opacity="0.28"/>+ <stop offset="1" stop-color="#8C6BF7" stop-opacity="0"/>+ </radialGradient>+ <linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">+ <stop offset="0" stop-color="#0061EF"/>+ <stop offset="0.5" stop-color="#00B8B1"/>+ <stop offset="1" stop-color="#8C6BF7"/>+ </linearGradient>+ <linearGradient id="card" x1="0" y1="0" x2="0" y2="1">+ <stop offset="0" stop-color="#161b22" stop-opacity="0.95"/>+ <stop offset="1" stop-color="#0e131a" stop-opacity="0.95"/>+ </linearGradient>+ <linearGradient id="eqg" x1="0" y1="0" x2="0" y2="1">+ <stop offset="0" stop-color="#00B8B1"/>+ <stop offset="1" stop-color="#0061EF"/>+ </linearGradient>+ <clipPath id="shotclip"><rect x="56" y="540" width="812" height="148" rx="12"/></clipPath>+ </defs>++ <rect width="1280" height="720" fill="url(#bg)"/>+ <rect width="1280" height="720" fill="url(#glowL)"/>+ <rect width="1280" height="720" fill="url(#glowR)"/>+ <rect width="1280" height="6" fill="url(#accent)"/>++ <!-- header -->+ <g transform="translate(56,46)">+ <rect x="0" y="22" width="6" height="16" rx="3" fill="url(#eqg)"/>+ <rect x="11" y="4" width="6" height="34" rx="3" fill="url(#eqg)"/>+ <rect x="22" y="14" width="6" height="24" rx="3" fill="url(#eqg)"/>+ <rect x="33" y="0" width="6" height="38" rx="3" fill="url(#eqg)"/>+ <rect x="44" y="24" width="6" height="14" rx="3" fill="url(#eqg)"/>+ <text x="66" y="36" font-size="42" font-weight="700" letter-spacing="-1" fill="#ffffff">adom<tspan fill="#00B8B1">-tts</tspan></text>+ </g>+ <g transform="translate(1224,46)" text-anchor="end">+ <rect x="-372" y="6" width="372" height="40" rx="20" fill="#ffffff" fill-opacity="0.03" stroke="#2b3a52"/>+ <text x="-22" y="32" font-size="17" fill="#9fb3c8"><tspan fill="#8FD3D4" font-weight="600">service-tts</tspan> · one shared voice for all of Adom</text>+ </g>++ <!-- lede -->+ <text x="58" y="148" font-size="25" fill="#c4d2e3">The Adom voice service — <tspan fill="#ffffff" font-weight="700">it talks so you don't have to.</tspan></text>++ <!-- left card: DRIVING -->+ <rect x="56" y="178" width="571" height="338" rx="20" fill="url(#card)" stroke="#243049"/>+ <rect x="56" y="178" width="571" height="338" rx="20" fill="none" stroke="#00B8B1" stroke-opacity="0.18"/>+ <g>+ <!-- speaker + sound waves icon -->+ <polygon points="92,238 104,238 116,228 116,260 104,250 92,250" fill="#00B8B1"/>+ <path d="M124,231 A16,16 0 0 1 124,257" fill="none" stroke="#00B8B1" stroke-width="3" stroke-linecap="round"/>+ <path d="M132,224 A25,25 0 0 1 132,264" fill="none" stroke="#00B8B1" stroke-width="3" stroke-opacity="0.7" stroke-linecap="round"/>+ </g>+ <text x="92" y="305" font-size="15" letter-spacing="2.5" font-weight="700" fill="#00B8B1">WHEN YOU'RE DRIVING</text>+ <text x="92" y="342" font-size="29" font-weight="700" fill="#ffffff">It reads your AI</text>+ <text x="92" y="376" font-size="29" font-weight="700" fill="#ffffff">answers back to you.</text>+ <text x="92" y="416" font-size="18.5" fill="#aebed2">Hands on the wheel — just ask, and</text>+ <text x="92" y="443" font-size="18.5" fill="#aebed2"><tspan fill="#e6edf3" font-weight="600">adom-tts speaks the reply aloud.</tspan></text>+ <text x="92" y="470" font-size="18.5" fill="#aebed2">No screen, no typing.</text>+ <rect x="92" y="492" width="3" height="22" fill="#00B8B1"/>+ <text x="106" y="509" font-size="17" fill="#8FD3D4">"Read me your last answer, I'm driving."</text>++ <!-- right card: DEMO -->+ <rect x="653" y="178" width="571" height="338" rx="20" fill="url(#card)" stroke="#243049"/>+ <rect x="653" y="178" width="571" height="338" rx="20" fill="none" stroke="#8C6BF7" stroke-opacity="0.20"/>+ <g>+ <!-- film/play icon -->+ <rect x="689" y="222" width="54" height="40" rx="8" fill="none" stroke="#8C6BF7" stroke-width="3"/>+ <polygon points="708,232 708,252 726,242" fill="#8C6BF7"/>+ </g>+ <text x="689" y="305" font-size="15" letter-spacing="2.5" font-weight="700" fill="#b7a4ff">WHEN YOU'RE MAKING A DEMO</text>+ <text x="689" y="342" font-size="29" font-weight="700" fill="#ffffff">It voices the video —</text>+ <text x="689" y="376" font-size="29" font-weight="700" fill="#ffffff">with exact timing.</text>+ <text x="689" y="416" font-size="18.5" fill="#aebed2">Feed it your script; get a</text>+ <text x="689" y="443" font-size="18.5" fill="#aebed2"><tspan fill="#e6edf3" font-weight="600">perfectly-timed narration track.</tspan></text>+ <text x="689" y="470" font-size="18.5" fill="#aebed2">No recording booth, no retakes.</text>+ <rect x="689" y="492" width="3" height="22" fill="#8C6BF7"/>+ <text x="703" y="509" font-size="17" fill="#c5b3ff">Script in → finished voiceover out.</text>++ <!-- proof band: real Playground screenshot -->+ <rect x="55" y="539" width="814" height="150" rx="12" fill="none" stroke="#2b3a52"/>+ <text x="895" y="582" font-size="18" fill="#7e8ea3"><tspan fill="#00B8B1">●</tspan> the live <tspan fill="#8FD3D4" font-weight="600">TTS Playground</tspan></text>+ <text x="895" y="610" font-size="18" fill="#7e8ea3">Andrew Neural voice · Adom</text>+ <text x="895" y="634" font-size="18" fill="#7e8ea3">pronunciations · instant cache</text>+</svg>
docs/screenshots/playground-thumb.pngadded⋯ 1 unchanged line ⋯
docs/screenshots/playground.pngadded⋯ 1 unchanged line ⋯