DEV Community

Induwara Ashinsana
Induwara Ashinsana

Posted on • Originally published at induwara.lk

A free Text-to-Speech API with voice effects (whisper, laugh, pause)

Most "free" text-to-speech APIs share two problems: you hit a monthly character
wall fast, and the output is flat — no control over how a line is spoken. I
wanted something I could call from a side project without a billing surprise,
and that could actually whisper, laugh, or pause where I wanted it to. So I
shipped one and made it public.

This is a quick walkthrough of the free text-to-speech API
on induwara.lk — what it does, and how to call it in a couple of lines.

What you get

  • 5 AI voices, 28 languages (or auto detect)
  • Voice effects you embed in the text[pause], [laugh], [sigh], and wrapping tags like <whisper>…</whisper>, <slow>…</slow>
  • MP3 or WAV output (set sample rate / bit rate)
  • No per-call cost — it runs on our own server, so "free" means free
  • A free API key unlocks 100 voice requests/day

Quickstart (cURL)

curl -X POST https://induwara.lk/api/v1/voice \
  -H "Authorization: Bearer ilk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello! <whisper>this part is whispered</whisper> [laugh]","voice":"eve"}' \
  --output voice.mp3
Enter fullscreen mode Exit fullscreen mode

Grab a free key at https://induwara.lk/developers/keys.

JavaScript (tiny SDK)

import { InduwaraLK } from "https://induwara.lk/sdk/induwaralk.js";

const api = new InduwaraLK("ilk_live_…");
const blob = await api.voice("Let me think [pause] okay! [laugh]", {
  voice: "leo",
  language: "en",
  codec: "mp3",
});
// blob is an audio/mpeg Blob — play it or save it
Enter fullscreen mode Exit fullscreen mode

The effects are the fun part

Effects go straight into the text. Inline tags fire a one-off sound:

"Let me think [pause] okay, here goes [laugh]"
Enter fullscreen mode Exit fullscreen mode

Wrapping tags change how a whole passage is read:

"This is normal. <whisper>this is a secret</whisper> <slow>and this is slow</slow>"
Enter fullscreen mode Exit fullscreen mode

Available inline: [pause] [long-pause] [breath] [inhale] [exhale] [sigh]
[laugh] [chuckle] [giggle] [cry] [tongue-click] [lip-smack] [hum-tune] [tsk]
.
Wrapping: whisper, soft, loud, slow, fast, higher-pitch, lower-pitch,
build-intensity, decrease-intensity
.

It's part of a bigger free API

The voice endpoint sits alongside a small free Sri Lanka developer API
NIC decoding, public holidays, working days, PAYE tax, VAT, loan EMI, land-unit
conversion and districts. Same free keys, same JSON envelope. Full reference:
https://induwara.lk/developers.

Limits & honesty

It's free, with fair-use limits (anonymous 50/day, free key 1,000/day; voice
100/day). It doesn't do voice cloning like the paid services — if you need
that, you'll want ElevenLabs or similar. But for voiceovers, prototypes, study
audio, and apps that just need natural speech with a bit of expression, it does
the job at zero cost.

Docs: https://induwara.lk/developers/voice · Built in Sri Lanka.

Top comments (0)