← Projects

BedtimeStories

2024 - Present

Personal
HobbyLLMGenerative ContentText-to-SpeechPersonalizationVoice AI

This one started with no code at all. On a long trip, I began telling my kid a recurring bedtime story about a small animal character who was travelling along with us. Each night I'd fold in whatever had actually happened that day. The animal needed material, so my kid had a reason to talk about their day. When the trip ended, the cast moved to the neighbourhood. Every animal we noticed got a character with a little personality of its own, and the stories became a reliable way to talk through real feelings without turning it into a lecture.

Doing this every night, I noticed two things. The format works: personalized, serialized, tied to a real day, and ending somewhere calm. It's also a lot for a parent to keep up every night.

That's what I thought was worth building for: tooling that makes the format easier to sustain without taking the parent out of it.

What it does

It can draft a story, and it can take in information about the day. I've never run it end to end, because it isn't my highest priority. This is a personal hobby project, and I'm recording it here as a fun thing. It's also a really good way for me to learn how to do text-to-speech. The pitch is calming minds to sleep. What follows is the design, not what happens on a real night.

The design is a pipeline. It takes the day's real events and a small cast of recurring characters and turns them into a personalized bedtime story or a guided meditation. Text-to-speech goes through Eleven Labs, and Deepgram handles transcription and voice capture. Characters are meant to carry over between sessions, so the next story knows what happened in the last one.

The part I find most interesting is the pacing. The plan is for sentences to get shorter and speech to slow down as the story goes on. Narrative gives way to breathing cues, the breathing cues give way to a sung outro, and the outro fades into white noise. That's the shape of a real bedtime wind-down, and getting speech rate and structure to actually settle a kid toward sleep is a design problem in its own right.

Two constraints shape the rest. The pipeline needs enough of "what happened today" to make the story feel specific, without storing anything sensitive long-term. And I don't hand story generation fully to the LLM. A lot of the value is in a tightly controlled, simple social-story structure, and the model works inside that.

What I learned

  • The format works: personalized, serialized, tied to a real day, and ending somewhere calm. It's also a lot for a parent to keep up every night. The tooling exists to make it easier to sustain, not to take the parent out of it.
  • Don't hand story generation fully to the LLM. A lot of the value is in a tightly controlled, simple social-story structure, and the model works inside that.
  • This is where I learn LLM orchestration, text-to-speech and voice pipelines, and story structure outside of any job.