DEV Community

VoiceDeveloper
VoiceDeveloper

Posted on

Host Your TTS API Wrapper: Bluehost VPS Setup Guide

Why a VPS Makes Sense for Your TTS Wrapper

If you’re building a voice‑AI feature—whether it’s a chatbot that speaks, a voice‑cloned character, or a custom TTS microservice—hosting the wrapper on a dedicated VPS gives you full control over latency, security, and scaling. Unlike serverless functions that can incur cold‑start delays, a VPS keeps your process warm and lets you fine‑tune the environment (Python, Node, Docker, etc.). Plus, it’s a one‑stop shop for SSL, firewalls, and a stable IP.

Choosing the Right VPS Provider

When it comes to price, reliability, and ease of use, Bluehost’s VPS plans are a solid choice for developers new to cloud hosting. They offer:

  • Managed 24/7 support for quick help with networking or package issues
  • One‑click WordPress and PHP installs (great if you need a companion web UI)
  • Automatic backups and snapshots so you can roll back after a bad deploy
  • Affordable tiers starting at just a few dollars a month

If you’re looking for a hassle‑free way to spin up a server for your voice‑AI project, Bluehost is worth a try.

https://bluehost.sjv.io/5k0d52

Setting Up Your VPS

Below is a quick walkthrough for a typical Ubuntu‑based VPS. The same steps apply to most Linux distros.

  1. Create a VPS on Bluehost

    Pick an image with at least 1 GB RAM and 20 GB SSD.

    https://bluehost.sjv.io/5k0d52

  2. SSH into the server

   ssh root@your‑vps‑ip
Enter fullscreen mode Exit fullscreen mode
  1. Update the system
   apt update && apt upgrade -y
Enter fullscreen mode Exit fullscreen mode
  1. Install Python 3 and pip
   apt install python3 python3-venv python3-pip -y
Enter fullscreen mode Exit fullscreen mode
  1. Create a project directory
   mkdir ~/tts-wrapper && cd ~/tts-wrapper
Enter fullscreen mode Exit fullscreen mode
  1. Set up a virtual environment
   python3 -m venv venv
   source venv/bin/activate
Enter fullscreen mode Exit fullscreen mode
  1. Install the ElevenLabs client
   pip install elevenlabs
Enter fullscreen mode Exit fullscreen mode

Building a Simple TTS Wrapper

Below is a minimal Flask app that forwards text to ElevenLabs and streams the resulting audio back to the client. It demonstrates how to keep the wrapper lightweight and secure.

# tts_app.py
from flask import Flask, request, send_file, abort
import io
import os
from elevenlabs import generate, set_api_key

app = Flask(__name__)
set_api_key(os.getenv("ELEVENLABS_API_KEY"))

@app.route("/speak", methods=["POST"])
def speak():
    data = request.json
    if not data or "text" not in data:
        abort(400, "Missing 'text' field")

    text = data["text"]
    # Optional: let the user pick a voice ID
    voice_id = data.get("voice_id", "Rachel")

    # Generate audio
    audio_bytes = generate(
        text=text,
        voice=voice_id,
        model="eleven_monolingual_v1"
    )

    return send_file(
        io.BytesIO(audio_bytes),
        mimetype="audio/mpeg",
        as_attachment=False,
        download_name="speech.mp3"
    )

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)
Enter fullscreen mode Exit fullscreen mode

Running the App

export ELEVENLABS_API_KEY=YOUR_API_KEY
python tts_app.py
Enter fullscreen mode Exit fullscreen mode

Now your wrapper is listening on port 5000. You can test it with curl:

curl -X POST http://your‑vps‑ip:5000/speak \
     -H "Content-Type: application/json" \
     -d '{"text":"Hello, world!", "voice_id":"Rachel"}' \
     --output hello.mp3
Enter fullscreen mode Exit fullscreen mode

Open hello.mp3 and you’ll hear ElevenLabs’ synthetic voice in action.

Securing the Service

  1. Use UFW firewall
   ufw allow OpenSSH
   ufw allow 5000/tcp
   ufw enable
Enter fullscreen mode Exit fullscreen mode
  1. Enable HTTPS with Let’s Encrypt Install Certbot and generate a cert for your domain (if you have one).
   apt install certbot python3-certbot-nginx -y
   certbot --nginx
Enter fullscreen mode Exit fullscreen mode
  1. Reverse proxy with Nginx Create /etc/nginx/sites-available/tts with:
   server {
       listen 80;
       server_name yourdomain.com;

       location / {
           proxy_pass http://127.0.0.1:5000;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
   }
Enter fullscreen mode Exit fullscreen mode

Enable the site and reload:

   ln -s /etc/nginx/sites-available/tts /etc/nginx/sites-enabled/
   systemctl reload nginx
Enter fullscreen mode Exit fullscreen mode

Scaling and Maintenance

  • Use systemd to keep the Flask process alive
  # /etc/systemd/system/tts.service
  [Unit]
  Description=TTS Wrapper Service
  After=network.target

  [Service]
  User=ubuntu
  WorkingDirectory=/home/ubuntu/tts-wrapper
  ExecStart=/home/ubuntu/tts-wrapper/venv/bin/python tts_app.py
  Restart=always

  [Install]
  WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

Then enable it:

  systemctl enable tts
  systemctl start tts
Enter fullscreen mode Exit fullscreen mode
  • Monitor usage – keep an eye on your ElevenLabs API quota.
  • Automatic backups – Bluehost’s snapshot feature lets you restore the entire VPS if something goes wrong.

Why ElevenLabs?

ElevenLabs offers state‑of‑the‑art neural voices that sound natural and expressive. Their API is straightforward, supports voice cloning, and provides low‑latency responses—perfect for real‑time applications. Plus, the pricing tiers scale with usage, so you only pay for what you need.

If you haven’t tried ElevenLabs yet, sign up now:

https://try.elevenlabs.io/kr07zfuqn1bp

Wrapping It All Up

  1. Spin up a Bluehost VPS (cheap, reliable, and easy to manage).
  2. Install Python, Flask, and the ElevenLabs client.
  3. Write a tiny wrapper to forward text to ElevenLabs and stream back audio.
  4. Secure the endpoint with a firewall, HTTPS, and a reverse proxy.
  5. Keep the service running with systemd and monitor usage.

You now have a production‑ready TTS service that you can plug into chatbots, media generators, or any voice‑enabled application. No more worrying about cold starts or vendor lock‑in—just a solid, cost‑effective stack that scales with your needs.


Ready to make your voice AI dreams a reality?

Happy coding, and may your voices always sound amazing!

Top comments (0)