ModelForce

A runtime and provider infrastructure for self-hosted text-to-speech.

Early development · Open source (MPL 2.0)

One API for local and remote text-to-speech providers. Switch between Piper, Kokoro and XTTS without changing your application.

The problem

Every TTS engine brings its own API, its own installation, its own configuration and its own way of managing voices. Supporting two of them means writing the integration twice; changing your mind later means rewriting it. ModelForce puts a single interface in front of them so the application stops caring which engine is underneath.

What it provides

Usage

import { ModelForceClient } from "@modelforce/sdk";

const mf = new ModelForceClient();
await mf.synthesize({ provider: "piper", text: "Hello world" });

Status

Early development. The repository is public and actively worked on, with CI and documentation in place, but it is young — treat it as something to read and try, not something to depend on in production yet.

Stack

TypeScript/Node.js monorepo, pnpm workspaces, Turbo builds. Licensed MPL 2.0.

Where it fits

ModelForce is the same idea as USB and LeoSIS applied to speech: one portable surface over many interchangeable backends. Each of the three stands alone.