VisemeTTS

Docs

SSE contract

Production traffic uses a client_* developer JWT. Mint one from API keys after sign-in. The visemetts.com playground is origin-limited, capped at 280 characters, and does not bill credits.

getVoices

List standard VisemeTTS / xAI voices. On visemetts.com this catalog does not require auth.

GET https://us-central1-streamoji-265f4.cloudfunctions.net/getVoices?ttsEngineId=xai

previewPresetVoice

Short MP3 clip only — no visemes or word timings. Use Speak (avatar_ttsWithPoses) for the full payload.

POST https://us-central1-streamoji-265f4.cloudfunctions.net/previewPresetVoice
{ "voiceId": "eve", "ttsEngineId": "visemetts" }

avatar_ttsWithPoses

Live TTS with Oculus visemes and word clocks on each audio event.

curl -N https://ai.aitwin.me/avatar_ttsWithPoses \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer client_<jwt>' \
  -d '{
    "user_query": "Hello from VisemeTTS.",
    "ttsEngineId": "visemetts",
    "voice_id": "eve",
    "speakingRate": 1
  }'

SSE events

Viseme object

{ "symbol": "aa", "start": 0.12, "duration": 0.08 }

sil · PP · FF · TH · DD · kk · CH · SS · nn · RR · aa · E · I · O · U

Word object

{ "word": "Hello", "start": 0.02, "duration": 0.34, "phones": ["h","ə","ˈloʊ"], "oov": false }

Questions: hello@visemetts.com