AbsoluteJS

@absolutejs/voice-rime

@absolutejs/voice-rimev0.0.1-beta.6betaVoice & Media

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

#Installation

BASH
bun add @absolutejs/voice-rime

#Capabilities

Overview

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

Wraps Rime's /v1/rime-tts HTTP streaming endpoint behind voice's TTSAdapter seam. Supports the mist / mistv2 / arcana voice models for fast, conversational TTS.

Use

For telephony at 8 kHz μ-law:

Options

Option — Required — Default — Notes

apiKey — yes — — — Rime API key, sent as Authorization: Bearer .

speaker — yes — — — Rime speaker id (cove, marsh, river, etc.).

Show 8 more

modelId — no — mistv2 — mist, mistv2, arcana, or a future Rime model id.

audioFormat — no — pcm — Must be pcm (PCM s16le) or mulaw (telephony @ 8 kHz).

sampleRate — no — 22050 — Ignored for mulaw.

lang — no — — — Language hint (eng, etc.).

speedAlpha, inlineSpeedAlpha — no — — — Forwarded to Rime.

reduceLatency, pauseBetweenBrackets, phonemizeBetweenBrackets, noTextNormalization — no — — — Forwarded as boolean controls.

baseUrl — no — https://users.rime.ai — Override for staging hosts.

fetch — no — globalThis.fetch — Inject for tests; opportunistic HTTP/2 multiplexing on outbound HTTPS.

Notes

Whitespace-only send() is a no-op.

session.close(reason) aborts in-flight requests and refuses further sends.

This adapter targets Rime's HTTP streaming endpoint. If you need their WebSocket transport, open an issue.

Outcomes

What you can build

Build on the supported package contract

Use @absolutejs/voice-rime through its supported public entry points.

Hardening checklist

Production guidance

Make every external boundary explicitPin the deployed @absolutejs/voice-rime version, replace example or memory-backed dependencies with durable implementations, bound external calls, protect credentials, and emit enough evidence to retry or recover safely.

Follow in order

Troubleshooting path

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

#Use

Partial snippet

Working example for Use.

TS
import { voice } from "@absolutejs/voice";
import { rime } from "@absolutejs/voice-rime";

const app = voice({
  // ... stt + other voice options ...
  tts: rime({
    apiKey: process.env.RIME_API_KEY!,
    speaker: "cove",
    // optional:
    modelId: "mistv2", // default; or 'mist' / 'arcana'
    audioFormat: "pcm", // default; or 'mulaw' for telephony
    sampleRate: 22_050, // default
    speedAlpha: 1.0,
    lang: "eng",
    reduceLatency: true,
    pauseBetweenBrackets: true,
    phonemizeBetweenBrackets: true,
  }),
});

#Use 2

Partial snippet

For telephony at 8 kHz μ-law:

TS
rime({
  apiKey,
  speaker: "cove",
  audioFormat: "mulaw",
});

#Public entry points

Supported entry points declared by this package manifest.

Package entry point declared in package.json.

@absolutejs/voice-rime@absolutejs/voice-rime/manifest@absolutejs/voice-rime/manifest.json

#Package commands

Scripts declared by this package manifest.

bun run buildrm -rf dist && bun build ./src/index.ts ./src/manifest.ts --outdir dist --target bun --external @absolutejs/manifest --external '@absolutejs/manifest/*' --external @absolutejs/voice --external '@absolutejs/voice/*' --external @sinclair/typebox --external '@sinclair/typebox/*' && tsc --emitDeclarationOnly --project tsconfig.json && absolute-manifest emit
bun run check:packagebun run format && bun run typecheck && bun run test && bun run verify-package && bun run build && bun run verify-package --artifacts
bun run formatprettier --write "./**/*.{js,ts,json,md}"
bun run testbun test
bun run typecheckbun run tsc --noEmit

#API reference

Search the declarations exported by the current package type files. Expand a symbol to inspect its source-backed signature.

5 symbols
rimeexportPermalinkSource
TS
rime
Exported from @absolutejs/voice-rime