open.mp forum
[Plugin] SAMP-TTS - Printable Version

+ open.mp forum (https://forum.open.mp)
-- Forum: SA-MP (https://forum.open.mp/forumdisplay.php?fid=3)
--- Forum: Releases (https://forum.open.mp/forumdisplay.php?fid=13)
---- Forum: Plugins (https://forum.open.mp/forumdisplay.php?fid=32)
---- Thread: [Plugin] SAMP-TTS (/showthread.php?tid=4322)



SAMP-TTS - connyxv - 2026-07-14

Hey guys. I've been working on a plugin that brings real Text-To-Speech to SA-MP using the ElevenLabs API, and I decided to release the first version.

Instead of freezing the server while downloading the audio, the plugin runs entirely on a separate thread and uses a small Python backend to cache the voice lines. This means zero lag for the game mode and you save a lot of API tokens.

Main features:
  • 3D Positional Audio: You can attach the voice to a specific location or an NPC. The volume fades naturally as you walk away.
  • Background Preload: You can generate the voice lines silently when the server starts. When you need them, they play instantly with no delay.
  • Duration callbacks: The plugin calculates exactly how long the audio file is in seconds and sends it to the PAWN callback. It's really useful if you want to sync an NPC talking animation with the voice.
  • Dynamic voice tuning: You can change the AI model, stability, and similarity directly from PAWN to simulate different tones.

How to deal with "Audio Stream" messages
As you probably know, the SA-MP client prints "Audio stream: URL" in the chat every time an audio starts. We can't block this from the server. Your players will need to type /audiomsg in game to hide those texts. I suggest putting a reminder in your server rules or tutorial.

Download & Source
You can find the Windows DLL, the Linux .so, the Python server files and a clean example gamemode on GitHub:
GitHub Repository

Example video
I also recorded the plugin in action, you can take a look here:
https://streamable.com/fxb0y2

Important
Also remember that the free version of ElevenLabs got limitations on wich voices you can use, so stick with the voices that you find in the "Default" section, to get the ID of a voice click on the dots beside voice and click "Copy voice ID".
Also it's better using Eleven Flash 2.5 as it's 50% cheaper (it's default in the script) and it's faster if you need to say things without delay.

List of voices you can use in the free plan:
Bella - hpp4J3VqNfWAUOO0d1Us
Roger - CwhRBWXzGAHq8TQ4Fs17
Sarah - EXAVITQu4vr4xnSDxMaL
Laura - FGY2WhTYpPnrIDTdsKH5
Charlie - IKne3meq5aSn9XLyUdCD
George - JBFqnCBsd6RMkjVDRZzb
Callum - N2lVS1w4EtoT3dr4eOWO
River - SAz9YHcvj6GT2YYXdXww
Harry - SOYHLrjzK2X1ezoPC6cr
Liam - TX3LPaxmHKxFdv7VOQHJ
Alice - Xb7hH8MSUJpSbSDYk0k2
Matilda - XrExE9yKIg1WjnnlVkGX
Will - bIHbv24MWmeRgasZH58o
Jessica - cgSgspJ2msm6clMCkdW9
Eric - cjVigY5qzO86Huf0OWal
Chris - iP95p4xoKVk53GoZ742B
Brian - nPczCjzI2devNBz1zQrb
Daniel - onwK4e9ZLuTAKqWW03F9
Lily - pFZP5JQG7iQjIQuC4Bku
Adam - pNInz6obpgDQGcFmaJgB
Bill - pqHfZKP75CvOlQylNhV4

Let me know if you find any bugs or need help.