My daughter loves listening to stories being told to her and I've been intrigued by the evolution of large language models. These AI models have a "fabulism" problem: they tend to confidently make stuff up. This can be a problem when we use them as oracles, but what if we leaned into that? What if we make them tell stories to kids?
This is effectively an experiment in understanding if state-of-the-art large language models have enough creativity to be able to entertain children.
To do this, I had to figure out a way to:
- run it on hardware that was very affordable so that technically inclined parents would have a low barrier to entry. This is highly non-trivial because state-of-the-art AI models require a LOT of computation.
- reduce latency of "time to first sound" to seconds not minutes. Latency is a big deal in any sort of voice interface. This is especially true for kids: if it takes too long for the system to start telling a story after the child has asked for one, they will think it's broken and either ask for help or stop using it.
- the experience should be comparable to other storytelling opportunities the kids have (either asking existing voice assistants, or listening to pre-recorded stories). The quality of the speech synthesis felt particularly important to me: a robotic speech synthesizer would be a constant reminder this is a machine telling a story which could impact their experience and bias judgment.
Some effort later I managed to get it all running into a hardware platform that cost <$50 and pay-as-you-go for our use of AI APIs which is in the order of cents per story told.
Does it do a good job? Judge for yourself:
The software that runs Fably is open source and available on GitHub. The hardware is made of parts that are relatively cheap and easy to source, without requiring any soldering or electronics skills.
Fably is designed to run on a cheap edge devices like a RaspberryPI Zero 2W (~15$) but it will happily run on a laptop (running either Windows or MacOS) so that it can be test-driven before the need to buy any specific hardware for a more standalone solution.
Fably also supports connecting to a language model running on your own hardware (via Ollama), either for cost reasons (as you might already have a machine capable of running such models in your house).
Goes without saying, this is an active project and contributions of any form (code, ideas, constructive criticism, feature requests) are very welcome.
For more information, head over to the Fably web site and start from there.
Enjoy!
Comments