- Text-to-speech —
tts.create,tts.stream,voices,models,health, and the OpenAI-compatible/v1/audio/speech. - Speech-to-text —
stt.transcribe(bytes or URL),stt.models,stt.estimateCredits, and the OpenAI-compatible/v1/audio/transcriptions. - Plus CORS for browser callers, a typed SDK, and a CLI (
say,transcribe,voices,models).
More output formats
Native MP3, Opus, and 8 kHz µ-law (telephony) alongside WAV/PCM, via theresponse_format parameter — smaller payloads and no client-side transcoding. Until then, convert with ffmpeg.
Today synthesis returns WAV (24 kHz, PCM16); the OpenAI-compatible endpoint also supports raw pcm. Transcription already accepts any container ffmpeg reads on the way in.
Punctuation & truecasing
Transcripts today are lowercase and unpunctuated — not stripped, but a property of the model’s 70-character output vocabulary, which contains neither capitals nor punctuation. Restoring both is a separate modelling step. Today: plan for lowercase, unpunctuated text, or post-process it yourself.Character timestamps and diarization
Word-level timestamps for speech-to-text shipped — see word-level timestamps. Still ahead: sub-word (character) alignment, alignment on the text-to-speech side for highlight-as-it-speaks UIs, and speaker diarization so multi-party recordings can be attributed.Python SDK
Ageko Python package mirroring this SDK’s surface (geko.tts.create(...), geko.stt.transcribe(...)), for Python-first backends and agents.
Today the official SDK is TypeScript/JavaScript (@gekoai/sdk); Python callers can use the OpenAI-compatible endpoints or raw HTTP.
Chunked-causal streaming
Live streaming transcription has shipped. What is still ahead is making it cheaper: today a partial transcript is kept current by re-decoding the uncommitted audio on every update, which is why streaming is priced above file transcription. A cache-aware, chunked-causal encoder would decode each frame once instead, bringing streaming cost close to batch. That needs a fine-tune with chunked attention masking and a fresh accuracy benchmark, so it is a project rather than a patch.Speaker diarization
Labelling who spoke each segment, for multi-party calls and meetings.More languages & voices
Tokay speaks Kazakh; Seta hears Kazakh and Russian. New languages and voices appear on the same endpoints —GET /v1/models and GET /v1/voices are the source of truth, so code that reads them adapts automatically.
Want one of these sooner, or have a use case that needs it? Open an issue on GitHub — it genuinely helps prioritize.