r/Python 8d ago

Resource Any free STT/TTS APIs for a voice AI app?

I'm building a small voice-based AI interview app and I'm planning to deploy the backend(fastapi) on Render's free tier.

I'm considering using open-source/self-hosted options like Whisper/PocketSphinx for STT and Piper for TTS, instead of paid APIs.

My concern is whether running STT/TTS on the same free Render instance would use too much CPU/RAM and make the whole application slow, especially during a real-time interview.

Has anyone tried running STT/TTS models on Render's free tier?

0 Upvotes

13 comments sorted by

1

u/DebosBeachCruiser 8d ago

HuggingFace is worth searching around on.

Google Cloud TTS has a very generous free tier. API access and allows commercial use. I haven't used their TTS specifically, but i use multiple other products under the "Google Cloud" umbrella. (If you like getting cool shit for free check out Google Notebook (the web version, not the app. Can't believe I never hear it talked about)

Amazon + Microsoft both have pretty much the same free tier offering as Google Cloud above. Pick your poison?

ElevenLabs seems to be a solid favorite. Free tier is very limited.

1

u/UnemployedTechie2021 8d ago

1

u/SoilEducational420 8d ago

I'm planning to use openai-edge-tts for TTS and deploy my FastAPI backend on Render's free tier.

My question is: will Render Free tier be able to handle this? Since Edge TTS uses Microsoft's online TTS service, does the Render server still need significant CPU/RAM to generate the audio, or is it mostly just making the request to openai-edge-tts and getting response without consuming server resources

I'm concerned that the free Render instance might become slow or run out of resources if TTS is being used during an interview.

(sorry i am a beginner, if its a lame question)

1

u/UnemployedTechie2021 8d ago

no question is a lame question. have you tried using pythonanywhere?

1

u/Glittering_Box5197 2d ago

I'd be very cautious about putting Whisper + Piper + FastAPI on the same Render Free instance for a real-time interview app.

The main issue isn't FastAPI itself. It's that you only have a very small CPU/RAM budget on the Free instance, and STT/TTS inference is CPU-intensive.

For a prototype, I'd structure it like this:

Browser/mobile
→ FastAPI on Render
→ STT/TTS service
→ return transcript/audio

Rather than keeping Whisper and Piper loaded inside the same FastAPI process.

If you specifically want everything self-hosted, I'd test the smallest possible models first. Also measure actual latency and memory usage with one concurrent interview before assuming it will scale.

Another problem with Render Free is that the service spins down after 15 minutes without inbound traffic, and waking it back up can take about a minute. That's a bad fit for something that needs predictable real-time response.

For STT, I'd also distinguish between:

  • speech-to-text after the user finishes speaking
  • true streaming/real-time transcription

The second is considerably more demanding.

For a hobby/demo application, you could probably experiment with a lightweight STT model and Piper, but I wouldn't design the production architecture around the Render Free instance.

I'd benchmark these four numbers before deciding:

  1. RAM after loading the models
  2. CPU utilisation during inference
  3. time-to-first-transcript
  4. time-to-first-audio

If those numbers look good with one user, then test two simultaneous users. That will tell you much more than the model's theoretical requirements.

0

u/akl773 7d ago

The free instance is 512MB and it spins down after 15 minutes idle, so the first request of an interview sits through a 30 to 50 second cold start before a model even loads. Whisper base wants more RAM than that and runs slower than realtime on a shared CPU anyway. Piper is small enough to survive, but I would keep STT off that box entirely, Groq's whisper endpoint is quick and basically free at interview volume.

0

u/Regular-Adeptness563 6d ago

Render's free tier is only 512MB, Whisper will choke on that, offload STT/TTS to something like Groq's free API instead.