Exploring small AI models, local infrastructure, and the practical work of building creative tools we can run and adapt ourselves.
This fall, we’re having a lot of fun building our own tools for audio production, starting with large language models for text-to-speech we can run on our own infrastructure. This week, we got KittenTTS 2 working on one of our test servers and connected it to a simple application that turns written text into audio. We can choose a narrator, name the output file, and generate recordings for our publishing projects.
We chose KittenTTS 2 because it is small, practical, and appealing to work with. We like the idea of being able to run a speech model without building our entire workflow around a commercial platform. It gives us something we can experiment with, adapt, and develop on our own terms.
Getting the pieces to work together took some patience. We spent time sorting out Python environments, resolving dependency problems, and making sure the application was using the correct installation to generate speech. We first tested the model directly, then built a Streamlit interface to make it easier to use. The result is a working text-to-audio converter that saves recordings locally on the server.
Small Models, New Possibilities
KittenTTS 2 is interesting because it brings speech generation into a relatively small model that can run on modest infrastructure. Its compact design makes it useful for experimentation, local deployment, and projects where memory, computing resources, and independence from large cloud services matter. Rather than requiring a large, general-purpose model, it concentrates on a narrower task and makes that capability accessible to developers who want to run models and build around them. We chose KittenTTS 2 because it is small, and we like what that makes possible.
Its strengths are specialisation and accessibility. KittenTTS 2 supports multiple built-in voices, text-to-speech generation, and, depending on the installed version and supported interface, controls for expressive delivery and voice cloning. It is not designed to perform the broad reasoning or language-generation tasks associated with general-purpose LLMs; its purpose is to generate speech from text. That narrower focus is part of its appeal. Small models give people room to experiment, inspect how a system behaves, and integrate a specific capability into their own software without having to build everything around a large, remotely hosted AI service.
Now we can start thinking about the production process around it.
Audio gives us another format to work with, but producing it can be costly when content and records are long. Commercial narration services have their uses, but we want the option to produce audio with tools we control. Running models ourselves gives us room to experiment without sending every generation request to an external service.
That is part of why we’re doing this ourselves. We want to build useful creative infrastructure, develop the skills to maintain it, and make tools that serve the work rather than forcing the work into someone else’s system. This is just one small part of that effort, but it gives us a practical place to begin.
We’re happy with the progress so far. KittenTTS 2 is working on our test server, and we have an application we can keep improving. Next comes the real test: putting our archives through it and seeing what we can produce.


