AbsoluteJS

Voice Adapters

Provider packages from ~/abs/voice-adapters. These independently versioned packages plug Deepgram, AssemblyAI, Azure, Gladia, Google Speech, Soniox, Speechmatics, OpenAI, Gemini, ElevenLabs, Cartesia, LMNT, Neets, PlayHT, Rime, and Smallest into the core voice runtime.

#Usage

Install the core voice package plus the provider packages your route needs. Cascaded routes usually provide stt and tts. Realtime routes provide realtime.

TS
import { voice } from "@absolutejs/voice";
import { deepgram } from "@absolutejs/voice-deepgram";
import { elevenlabs } from "@absolutejs/voice-elevenlabs";
import { openAIRealtime } from "@absolutejs/voice-openai";

app
	.use(voice({
		path: "/voice/intake",
		session,
		stt: deepgram({ apiKey: process.env.DEEPGRAM_API_KEY! }),
		tts: elevenlabs({ apiKey: process.env.ELEVENLABS_API_KEY!, voiceId }),
		onTurn
	}))
	.use(voice({
		path: "/voice/realtime",
		session,
		realtime: openAIRealtime({
			apiKey: process.env.OPENAI_API_KEY!,
			model: "gpt-4o-realtime-preview"
		})
	}));

#Packages

AssemblyAIv0.0.19-beta.127STT
@absolutejs/voice-assemblyai

AssemblyAI streaming STT adapter for universal-streaming speech models.

Azure Speechv0.0.1-beta.7STT · TTS
@absolutejs/voice-azure

Azure Speech adapter with Neural TTS over REST and streaming STT over the WebSocket Unified Speech Protocol.

Cartesiav0.0.1-beta.6TTS
@absolutejs/voice-cartesia

Cartesia streaming TTS adapter using SSE or byte-stream endpoints.

Deepgramv0.0.20-beta.104STT
@absolutejs/voice-deepgram

Deepgram streaming STT adapter that normalizes partial, final, and speech_final endpoint events.

ElevenLabsv0.0.26TTS
@absolutejs/voice-elevenlabs

ElevenLabs streaming TTS adapter, with optional warm WebSocket sessions for lower startup latency.

Gemini Livev0.0.1-beta.44Realtime
@absolutejs/voice-gemini

Gemini Live realtime adapter that normalizes input transcripts, output transcripts, assistant audio, turn completion, and errors.

Gladiav0.0.1-beta.5STT
@absolutejs/voice-gladia

Gladia v2 live STT adapter with two-step session handshake and multilingual code-switch support.

Google Speechv0.0.1-beta.6STT
@absolutejs/voice-google-speech

Google Cloud Speech-to-Text adapter with buffered REST recognition and real-time HTTP/2 streaming.

LMNTv0.0.1-beta.6TTS
@absolutejs/voice-lmnt

LMNT streaming TTS adapter for aurora, blizzard, and mochi models.

Neetsv0.0.1-beta.6TTS
@absolutejs/voice-neets

Neets low-cost TTS adapter for ar-diff-50k, style-tts-2, and vits models.

OpenAI Realtimev0.0.7-beta.45Realtime
@absolutejs/voice-openai

OpenAI Realtime adapter for full-duplex realtime speech sessions.

OpenAI Whisperv0.0.1-beta.5STT
@absolutejs/voice-openai-whisper

OpenAI Whisper buffered-batch STT adapter for flush/close transcription.

PlayHTv0.0.1-beta.6TTS
@absolutejs/voice-playht

PlayHT streaming TTS adapter for Play3.0-mini, PlayDialog, and PlayHT2.0-turbo models.

Rimev0.0.1-beta.6TTS
@absolutejs/voice-rime

Rime streaming TTS adapter for mist, mistv2, and arcana voice models.

Smallest AIv0.0.1-beta.6TTS
@absolutejs/voice-smallest

Smallest AI raw PCM TTS adapter for Lightning and Lightning-v2 models.

Sonioxv0.0.1-beta.5STT
@absolutejs/voice-soniox

Soniox real-time STT adapter with language hints and telephony encodings.

Speechmaticsv0.0.1-beta.5STT
@absolutejs/voice-speechmatics

Speechmatics real-time STT adapter for regional WebSocket endpoints.

#Capability Matrix

Realtime STT

Deepgram, AssemblyAI, Azure, Gladia, Google Speech streaming, Soniox, and Speechmatics implement STTAdapter sessions.

Buffered STT

OpenAI Whisper and googleSpeech() accumulate audio and emit a final transcript on flush or close.

TTS

Azure, Cartesia, ElevenLabs, LMNT, Neets, PlayHT, Rime, and Smallest implement TTSAdapter sessions.

Full realtime

OpenAI Realtime and Gemini Live implement RealtimeAdapter for unified input audio, transcripts, assistant audio, and turn completion.

Telephony encodings

Gladia, Google Speech, Soniox, Speechmatics, and Azure document μ-law or A-law support in addition to PCM paths.

Language control

Provider options and STTAdapterOpenOptions.languageStrategy resolve fixed languages, allow-switching lists, or auto-detect hints where the provider supports them.

Endpointing

Adapters normalize vendor endpoint events such as Deepgram speech_final, Gladia end_of_utterance, Google speech activity events, Azure turn.end, and Speechmatics end-of-turn events.

Auth

Most adapters accept API keys; Azure also supports token auth, and Google Speech supports API key, OAuth, or refresh hooks.

#Provider Selection

Use Deepgram, AssemblyAI, Gladia, Soniox, Speechmatics, Azure, or Google streaming when you want separate STT and TTS providers and full control over the assistant loop.
Use OpenAI Realtime or Gemini Live when you want one provider to manage realtime input, output audio, and conversational timing.
Use OpenAI Whisper or googleSpeech() for buffered post-call, short-utterance, or validation workflows where a final transcript is enough.
Use Azure when a single cloud vendor for both STT and TTS is more important than mixing specialized providers.
Use Cartesia, ElevenLabs, LMNT, PlayHT, Rime, Smallest, or Neets when TTS voice quality, speed, cost, or model personality is the primary routing decision.

#Environment And Auth

Each adapter keeps provider secrets out of the core voice config; pass API keys, tokens, project IDs, regions, voice IDs, and model names to the adapter factory.
Azure supports subscription-key or token auth and region-specific base URLs for sovereign clouds or private endpoints.
Google Speech supports API key, OAuth, or refresh-hook based auth and can override authority/path for proxies.
Discord and Twilio testing are handled by @absolutejs/voice-tester rather than by provider adapters.

Continue toward an outcome

These playbooks show where this package fits, how to verify the combined system, and what changes before production.

Current package surface

What ships today

@absolutejs/voice-adaptersVoice & MedianpmSource
17subpackages

Related packages

@absolutejs/voice-assemblyaiv0.0.19-beta.127

AssemblyAI speech-to-text adapter for @absolutejs/voice

@absolutejs/voice-azurev0.0.1-beta.7

Azure Speech (Cognitive Services) adapter for @absolutejs/voice — Neural TTS over REST + streaming STT over the WebSocket Unified Speech Protocol

@absolutejs/voice-cartesiav0.0.1-beta.6

Cartesia text-to-speech adapter for @absolutejs/voice

@absolutejs/voice-deepgramv0.0.20-beta.104

Deepgram speech-to-text adapter for @absolutejs/voice

@absolutejs/voice-elevenlabsv0.0.26

ElevenLabs text-to-speech adapter for @absolutejs/voice

@absolutejs/voice-geminiv0.0.1-beta.44

Gemini Live realtime adapter for @absolutejs/voice

@absolutejs/voice-gladiav0.0.1-beta.5

Gladia real-time speech-to-text adapter for @absolutejs/voice

@absolutejs/voice-google-speechv0.0.1-beta.6

Google Cloud Speech-to-Text adapter for @absolutejs/voice — buffered-batch (REST) + real-time streaming (gRPC-Web over HTTP/2, no @grpc/grpc-js dep)

@absolutejs/voice-lmntv0.0.1-beta.6

LMNT text-to-speech adapter for @absolutejs/voice

@absolutejs/voice-neetsv0.0.1-beta.6

Neets text-to-speech adapter for @absolutejs/voice

@absolutejs/voice-openaiv0.0.7-beta.45

OpenAI realtime adapter for @absolutejs/voice

@absolutejs/voice-openai-whisperv0.0.1-beta.5

OpenAI Whisper buffered-batch speech-to-text adapter for @absolutejs/voice

@absolutejs/voice-playhtv0.0.1-beta.6

PlayHT text-to-speech adapter for @absolutejs/voice

@absolutejs/voice-rimev0.0.1-beta.6

Rime text-to-speech adapter for @absolutejs/voice

@absolutejs/voice-smallestv0.0.1-beta.6

Smallest AI text-to-speech adapter for @absolutejs/voice

@absolutejs/voice-sonioxv0.0.1-beta.5

Soniox real-time speech-to-text adapter for @absolutejs/voice

@absolutejs/voice-speechmaticsv0.0.1-beta.5

Speechmatics real-time speech-to-text adapter for @absolutejs/voice

Outcomes

What you can build

Overview

Provider adapters for @absolutejs/voice.

Speech to text

@absolutejs/voice-assemblyai

Text to speech

@absolutejs/voice-azure

Hardening checklist

Production guidance

InstallationInstall the core voice contracts and only the providers used by a deployment:

Follow in order

Troubleshooting path

1
Trace from the first failed boundary
Reproduce the smallest canonical @absolutejs/voice-adapters example, confirm the supported entry point and version in the API explorer, then inspect the first boundary that did not produce its documented result.