Text-to-speech API · Available
A European TTS API: Piper behind the OpenAI-compatible /v1/audio/speech endpoint, served from hardware AxForge owns in Sweden. Fast CPU synthesis, zero prompt retention.
Specifications
| Model | Piper, text-to-speech, fast CPU synthesis |
|---|---|
| API model name | piper |
| Endpoint | POST /v1/audio/speech |
| Compute | CPU, so synthesis does not queue behind GPU inference |
| Hardware | Systems owned and operated by AxForge in Sweden |
| Region | Stockholm, Sweden (eu-se-1), pinned on the key; region and machine shown in the console |
| Pricing | €2.95 / 1M characters (launch pricing) |
For quality samples, see the official model card.
Quickstart
# your API key, from API Keys
export AXFORGE_API_KEY="YOUR_KEY"
curl https://api.axforge.ai/v1/audio/speech \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"piper","input":"Synthesized in Stockholm, retained nowhere."}' \
--output speech.wav
# your API key, from API Keys
$env:AXFORGE_API_KEY = "YOUR_KEY"
$call = @{
Method = "Post"
Uri = "https://api.axforge.ai/v1/audio/speech"
Headers = @{ Authorization = "Bearer $env:AXFORGE_API_KEY" }
ContentType = "application/json"
Body = '{"model":"piper","input":"Synthesized in Stockholm, retained nowhere."}'
}
Invoke-RestMethod @call -OutFile speech.wav
REM your API key, from API Keys
set AXFORGE_API_KEY=YOUR_KEY
curl.exe https://api.axforge.ai/v1/audio/speech ^
-H "Authorization: Bearer %AXFORGE_API_KEY%" ^
-H "Content-Type: application/json" ^
-d "{\"model\":\"piper\",\"input\":\"Synthesized in Stockholm, retained nowhere.\"}" ^
--output speech.wav
# pip install openai · the key is read from AXFORGE_API_KEY
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.axforge.ai/v1", api_key=os.environ["AXFORGE_API_KEY"])
r = client.audio.speech.create(
model="piper",
voice="default",
input="Synthesized in Stockholm, retained nowhere.",
)
r.write_to_file("speech.wav")
// npm i openai · save as call.mjs, run: node call.mjs
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.axforge.ai/v1", apiKey: process.env.AXFORGE_API_KEY });
import { writeFile } from "node:fs/promises";
const r = await client.audio.speech.create({
model: "piper",
voice: "default",
input: "Synthesized in Stockholm, retained nowhere.",
});
await writeFile("speech.wav", Buffer.from(await r.arrayBuffer()));
Data & privacy
Prompts and completions are processed in memory in Sweden, not written to disk, not logged, not retained, and never used to train anything. For this endpoint that means the text you send and the audio we return. We keep only request metadata (token counts, timestamps, status) for billing and operations. The full policy is at axforge.ai/privacy.
FAQ
Yes. It is the standard /v1/audio/speech shape at
https://api.axforge.ai/v1, with the model name
piper, so the official OpenAI SDKs work by changing
base_url.
Piper is a fast CPU synthesizer. Synthesis does not queue behind GPU inference workloads, which keeps text-to-speech a lightweight, always-available endpoint.
In Stockholm, Sweden (region eu-se-1), on hardware AxForge
owns and operates. TLS terminates in the EU.
No. Requests are processed in memory under our zero-retention policy: the text you send and the audio we return are not written to disk, not logged, not retained, and never used for training. See the privacy policy.
€2.95 per million characters (launch pricing). For committed volume, talk to an engineer.