DEV Community

VoiceDeveloper
VoiceDeveloper

Posted on

How to Generate Voice Samples for Game Characters

Introduction

Creating memorable characters isn’t just about visuals and gameplay mechanics—voice gives them personality, emotion, and a sense of presence. With modern text‑to‑speech (TTS) and voice‑cloning tech, indie developers can produce high‑quality voice lines without hiring a full voice‑over cast. In this guide you’ll learn how to generate voice samples for your game characters using the ElevenLabs API, integrate them into a typical game pipeline, and keep everything reproducible with a few lines of code.


Why Voice AI Matters for Games

Traditional Voice Over AI‑Generated Voice
Requires studio time, contracts, and revisions Instant generation, cheap scaling, rapid iteration
Limited to the number of recorded lines Unlimited variations (tone, speed, emotion)
Hard to localize on short notice Simple API calls for each language/voice

Even a short‑lived indie title can benefit from a few well‑placed vocal cues: a hero’s battle cry, a merchant’s greeting, or a creepy narrator. With AI you can prototype, test, and iterate on‑the‑fly, which is priceless during crunch periods.


Getting Started with ElevenLabs

ElevenLabs offers a state‑of‑the‑art neural TTS platform that supports multiple voices, emotion control, and even voice cloning. Sign up through the affiliate link below to get an API key and a generous free tier:

👉 Try ElevenLabs here 👈

Once you have your API key, you’re ready to call the service from any language that can make HTTP requests.


Setting Up API Access

Create a small .env file to keep your key out of source control:

# .env
ELEVENLABS_API_KEY=your_secret_key_here
Enter fullscreen mode Exit fullscreen mode

Load it in Python with python-dotenv (install with pip install python-dotenv):

from dotenv import load_dotenv
import os

load_dotenv()
API_KEY = os.getenv("ELEVENLABS_API_KEY")
Enter fullscreen mode Exit fullscreen mode

The base endpoint for generating audio is:

https://api.elevenlabs.io/v1/text-to-speech/{voice_id}
Enter fullscreen mode Exit fullscreen mode

You’ll need a voice_id. For most projects the default “premade” voices work fine. Grab one from the dashboard or use the “clone” endpoint if you have a custom voice.


Generating Samples with Python

Below is a minimal script that takes a line of dialogue, sends it to ElevenLabs, and saves the resulting .wav file. Feel free to expand it for batch processing.

import requests
import json

def synthesize(text: str, voice_id: str = "EXAVITQu4vr4xnG9",  # default voice
               stability: float = 0.75, similarity_boost: float = 0.75):
    """
    Calls ElevenLabs TTS API and returns raw audio bytes.
    """
    url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
    headers = {
        "xi-api-key": API_KEY,
        "Content-Type": "application/json"
    }
    payload = {
        "text": text,
        "model_id": "eleven_monolingual_v1",
        "voice_settings": {
            "stability": stability,
            "similarity_boost": similarity_boost
        }
    }

    response = requests.post(url, headers=headers, data=json.dumps(payload))
    response.raise_for_status()
    return response.content

# Example usage
if __name__ == "__main__":
    line = "Welcome, traveler! May your journey be safe."
    audio = synthesize(line, voice_id="EXAVITQu4vr4xnG9")
    with open("welcome.wav", "wb") as f:
        f.write(audio)
    print("Saved: welcome.wav")
Enter fullscreen mode Exit fullscreen mode

Key parameters

  • stability: Controls how consistent the voice sounds across sentences (0‑1). Higher values give a steadier tone.
  • similarity_boost: Pushes the output closer to the selected voice’s characteristics. Useful when you’ve cloned a specific actor’s voice.

You can loop over a CSV of character lines, automatically name files by character ID, and drop the results straight into your asset folder.


Quick curl Alternative

If you prefer a shell script or need to test quickly, here’s the same call using curl:

curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/EXAVITQu4vr4xnG9" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "text": "The ancient ruins whisper your name...",
        "model_id": "eleven_monolingual_v1",
        "voice_settings": {
          "stability": 0.8,
          "similarity_boost": 0.9
        }
      }' \
  --output ancient_ruins.wav
Enter fullscreen mode Exit fullscreen mode

Replace $ELEVENLABS_API_KEY with your environment variable or hard‑code it for a quick test. The resulting ancient_ruins.wav can be imported into Unity or Unreal immediately.


Using the Audio in Unity

  1. Import the generated .wav files into the Assets/Audio folder. Unity will automatically create an AudioClip.
  2. Create a simple AudioSource component on your character prefab.
  3. Play the clip via script:
using UnityEngine;

public class VoiceLinePlayer : MonoBehaviour
{
    public AudioClip voiceClip; // assign in inspector

    private AudioSource source;

    void Awake() => source = GetComponent<AudioSource>();

    public void Speak()
    {
        source.clip = voiceClip;
        source.Play();
    }
}
Enter fullscreen mode Exit fullscreen mode

Hook Speak() to a dialogue trigger (e.g., when the player approaches an NPC). The same workflow works in Unreal Engine using Sound Wave assets.


Best Practices

Tip Why it matters
Batch generate Reduces API latency and keeps you within rate limits.
Cache results Store the .wav locally; you don’t need to call the API at runtime.
Version your voice settings Small changes in stability or similarity_boost can dramatically alter the feel of a character. Keep a JSON config per character.
Test with game SFX TTS can sound flat when mixed with heavy music; adjust volume and EQ in the engine.
Respect licensing ElevenLabs’ free tier is for non‑commercial prototyping. For a shipped title, upgrade to a commercial plan.

Wrap‑Up

Generating voice samples with AI has never been easier. With just a few lines of Python (or a one‑liner curl), you can give every NPC a distinct voice, iterate on phrasing instantly, and stay agile throughout development. The ElevenLabs platform provides high‑fidelity neural voices, fine‑grained control over prosody, and a straightforward REST API that fits nicely into any game‑dev pipeline.

Ready to give your characters a voice that matches their personality?

👉 Try ElevenLabs now and start generating your game’s dialogue! 👈

Happy coding, and may your game world be filled with unforgettable voices!

Top comments (0)