How to Use ElevenLabs for NPC Voice Acting (Free Tier Guide, 2026)
A practical tutorial for indie developers using ElevenLabs to generate NPC voice lines — covering voice cloning, batch generation, Unity integration, and how to stay within the free tier limits.
What you can do with ElevenLabs free tier
ElevenLabs gives 10,000 characters/month on the free tier — roughly 70-90 minutes of audio depending on speaking speed. That's enough to voice a small game's NPC dialogue if you're strategic about it.
Free tier limits (2026): - 10,000 characters/month - Up to 3 custom voice clones - Commercial use NOT included (personal/hobby only) - 128kbps MP3 output
Starter plan ($5/mo): - 30,000 characters/month (~3 hours) - Commercial use included - 192kbps output - Up to 10 voice clones
For a shipped game, the Starter plan at $5/mo is the minimum.
Step 1: Choosing voices for your NPCs
ElevenLabs has 3,000+ premade voices in its Voice Library. For indie games, focus on:
- Search by age + gender + accent: Use the filter panel — "middle-aged male, American, gruff" narrows down fast
- Test with your actual dialogue: Paste your NPC's opening line before committing
- Check consistency: Generate 3-4 lines and listen for tonal drift
Good free voices for common game archetypes: - Merchant/NPC narrator: "Antoni", "Daniel", "Rachel" - Villain: "Callum", "Arnold" - Young hero: "Charlie", "Emily" - Elder/wizard: "Thomas", "Freya"
Step 2: Setting up batch generation
Manually generating hundreds of voice lines one by one is painful. Use ElevenLabs' batch API instead.
```python import requests import json
API_KEY = "your_api_key" VOICE_ID = "your_voice_id"
dialogue_lines = [ {"id": "npc_merchant_01", "text": "Welcome, traveler. What do you seek?"}, {"id": "npc_merchant_02", "text": "My finest wares, at a fair price."}, {"id": "npc_merchant_03", "text": "Come back when you have more coin."}, ]
for line in dialogue_lines: response = requests.post( f"https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}", headers={"xi-api-key": API_KEY}, json={ "text": line["text"], "model_id": "eleven_multilingual_v2", "voice_settings": {"stability": 0.5, "similarity_boost": 0.75} } ) with open(f"{line['id']}.mp3", "wb") as f: f.write(response.content) print(f"Generated: {line['id']}") ```
Step 3: Voice settings for game characters
The two key settings are Stability and Similarity Boost:
| Setting | Lower value | Higher value | |---------|------------|-------------| | Stability | More expressive, varied | More consistent, robotic | | Similarity Boost | Looser interpretation | Closer to original voice |
For NPC dialogue: - Stable merchant/narrator: Stability 0.7, Similarity 0.8 - Emotional character: Stability 0.3, Similarity 0.6 - Villain with edge: Stability 0.4, Similarity 0.75
Step 4: Unity integration
- Import MP3 files to `Assets/Audio/Voices/`
- Set compression to Vorbis (better quality-to-size ratio than MP3 in Unity)
- Use a simple AudioSource component on your NPC GameObject
- Trigger via dialogue system (DialogueKit, Ink, or custom)
```csharp // Simple NPC voice trigger public class NPCVoice : MonoBehaviour { public AudioClip[] voiceLines; private AudioSource audioSource; void Start() => audioSource = GetComponent
Character budget tips
To maximize 10,000 free characters: - Short lines only: Aim for under 80 characters per voice line - Skip punctuation verbosity: "Hi." not "Hello there, how are you doing today?" - Reuse lines: The same "Hmm…" and "I see" lines can play in multiple contexts - Reserve unique lines for key moments: Tutorial, quest start/end, story beats
Alternative free options
If you exhaust ElevenLabs free tier, consider: - Bark (Suno's open-source TTS): Free, runs locally, supports emotional tags — see our [Bark overview](/tools/suno-bark) - Coqui TTS: Open source, voice cloning with ~5 minutes of reference audio - Google Cloud TTS: Free tier 4 million characters/month (WaveNet voices are good quality)
Browse all [AI voice tools for game development](/categories/ai-voice-and-dialogue-tools) on game.fengyuai.site.