~a model that tells you a story, out loud
I trained a language model small enough to forget its own plot, then cloned my voice so it could read that plot back to you. Neither was a sensible use of a weekend. Both of them work.
tl;dr
- the writer
- the 11M-parameter BitNet from /things/1-bit-llm. 2.31 MB, ~1,045 tok/s, and the narrative memory of a goldfish
- the voice
- mine, cloned from twenty seconds of me explaining something to a terminal, which is roughly how I sound in real life too
- the files
- euclidstellar/gaurav-voice, including the one that is my voice
- the ratio
- 2.31 MB to think of the words. 131 MB to say them out loud
- was this necessary
- no
the interesting bit
Writing is cheap. There are 4,096 tokens to choose from and choosing one costs a few bytes. Speaking is not cheap: 24,000 numbers a second, every one of which has to be right, because a human ear will find the seam in any of them.
So the model that invents the story is 2.31 MB and the model that reads it aloud is 131 MB. Fifty-seven times larger, purely to turn words you already have into air. That ratio is not an optimisation I forgot. It is roughly what speech costs, and it decides where each half has to live: the writer ships to your browser, the reader stays on a server, because nobody is downloading 131 MB to hear a story about a girl and a key.
how my voice got in there
The speech model can copy a voice from a few seconds of audio. Doing that in your browser would mean shipping you the encoder as well, and re-deriving me from scratch on every page load, which is a lot of arithmetic to arrive at the same answer every time. So it happens once, offline, and the answer gets saved.
What gets saved is not audio. It is the model's key-value cache after it has listened to me: 12,288 floats for every 80 milliseconds, across six layers and sixteen attention heads. Twenty seconds of me becomes 12 MB of opinion about what I sound like, which is twenty times larger than the recording it came from and loads four hundred times faster. You can download it, if you have a use for a copy of my voice.
Getting the reference clip right took longer than everything else. A phone at 48 kHz beat my laptop's 16 kHz on every measurement and sounded worse, because holding a microphone near your face adds about 5 dB at 3 to 4 kHz, which is exactly where a strained throat lives. I had built something that sounded like me with a cold. Matching its spectrum back to the duller recording fixed it. The metrics were confident and wrong, and my ears were right, which was annoying.
try it
Writing is instant. Speaking starts before it has finished thinking.
Small screen? open it on its own.