text  →  speech

Meet Sol.

An open text-to-speech engine with 49 voices across 8 languages. Type a prompt and hear it speak — generated live on our own machine and served 24/7.

  • 8languages
  • 49voices
  • CPUruns without a GPU
  • 24/7self-hosted

Type a prompt, hear Sol

Pick a language and voice, then type anything. Your text is sent to our own server, synthesised, and played back here.

Ready.

Hear Sol speak

A voice from each supported language, generated by the live engine.

What is Sol?

Sol is an open text-to-speech stack. The live server runs Kokoro-82M, an 82-million-parameter neural TTS model, giving 49 voices across English (US & UK), Spanish, French, Hindi, Italian, Portuguese and Mandarin Chinese.

Alongside the engine, the project ships Sol v1 — a SpeechT5 model we fine-tuned ourselves on public LibriSpeech recordings. Both the engine and the fine-tuned model run entirely on CPU.

EngineKokoro-82M
Parameters82 million
Voices49
Languages8
Custom modelSol v1 (SpeechT5)
Sampling rate24,000 Hz
HostingSelf-hosted · CPU only
LicenseApache-2.0

Use the API

POST your text to the live endpoint and get back WAV audio.

shell
curl -X POST "$SOL_API/api/tts" \
  -H "Content-Type: application/json" \
  -d '{"text":"hello from sol","voice":"af_heart"}' \
  --output sol.wav
python — Sol v1 (SpeechT5)
import numpy as np, soundfile as sf, torch
from transformers import SpeechT5ForTextToSpeech, SpeechT5HifiGan, SpeechT5Processor

repo = "itriedcoding/Sol"

processor = SpeechT5Processor.from_pretrained(repo)
model     = SpeechT5ForTextToSpeech.from_pretrained(repo)
vocoder   = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")

speaker = torch.tensor(np.load("speaker_embedding.npy")).unsqueeze(0)

inputs = processor(text="hello, i am sol.", return_tensors="pt")
with torch.no_grad():
    speech = model.generate_speech(inputs["input_ids"], speaker, vocoder=vocoder)

sf.write("sol.wav", speech.numpy(), samplerate=16000)

Use it responsibly

Sol is an open research and prototyping engine. Its output is not a human voice and should never be used for impersonation or deceptive audio.