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.
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.
| Engine | Kokoro-82M |
|---|---|
| Parameters | 82 million |
| Voices | 49 |
| Languages | 8 |
| Custom model | Sol v1 (SpeechT5) |
| Sampling rate | 24,000 Hz |
| Hosting | Self-hosted · CPU only |
| License | Apache-2.0 |
Use the API
POST your text to the live endpoint and get back WAV audio.
curl -X POST "$SOL_API/api/tts" \
-H "Content-Type: application/json" \
-d '{"text":"hello from sol","voice":"af_heart"}' \
--output sol.wav
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.