Best Text-to-Speech APIs for Portuguese in 2025 (IteraTools vs ElevenLabs vs OpenAI TTS)
Building a voice feature for a Brazilian or Portuguese app? The quality of text-to-speech in Portuguese varies dramatically between providers. Some APIs sound robotic, others require complex SDKs, and pricing can spiral quickly at production volumes.
This guide compares the top TTS API options with a focus on Portuguese language quality, developer experience, and cost-effectiveness.
What to Consider When Choosing a TTS API
- Portuguese quality: Does it handle regional accents (BR vs PT)? How natural are the prosody and intonation?
- Latency: Streaming vs batch — do you need real-time audio or async generation?
- Voice selection: Fixed voices or cloning capabilities?
- Format support: MP3, WAV, OGG — and what sample rates?
- Price at scale: Cost per character or per request matters at production volumes.
- Setup complexity: API key only vs SDK installation required.
Comparison Table
| Tool | Price | Portuguese Quality | Setup | Limitations |
|---|---|---|---|---|
| IteraTools | ~$0.001/request (credits) | Good (Neural voices, pt-BR) | API key, plain HTTP | Voice cloning not available |
| ElevenLabs | $0.30/1K chars (Starter) | Excellent (cloning, multi-accent) | API key | Expensive at scale |
| OpenAI TTS | $0.015/1K chars | Good (pt-BR supported) | API key | Limited voice customization |
| Azure TTS | $4/1M chars | Excellent (200+ pt voices) | Complex SDK + account | Enterprise setup overhead |
| Google TTS | $4/1M chars | Very Good | SDK required | Requires GCP account |
IteraTools TTS — How to Use It
curl -X POST https://api.iteratools.com/v1/tts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Olá! Bem-vindo ao nosso sistema de atendimento automático.",
"language": "pt-BR",
"voice": "antonio",
"format": "mp3"
}' \
--output audio.mp3
Response is the audio file directly (binary), or you can get a URL:
curl -X POST https://api.iteratools.com/v1/tts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Seu pedido foi confirmado com sucesso.",
"language": "pt-BR",
"voice": "antonio",
"format": "mp3",
"return_url": true
}'
{
"url": "https://cdn.iteratools.com/audio/tts/xyz789.mp3",
"duration_seconds": 2.4,
"credits_used": 1
}
Complete Python Example
import requests
from pathlib import Path
API_KEY = "your_api_key_here"
def text_to_speech(
text: str,
output_file: str = "output.mp3",
language: str = "pt-BR",
voice: str = "antonio"
) -> str:
"""Convert text to speech and save audio file."""
response = requests.post(
"https://api.iteratools.com/v1/tts",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"text": text,
"language": language,
"voice": voice,
"format": "mp3",
"return_url": True
}
)
response.raise_for_status()
data = response.json()
# Download audio
audio = requests.get(data["url"])
Path(output_file).write_bytes(audio.content)
print(f"Audio saved: {output_file}")
print(f"Duration: {data['duration_seconds']:.1f}s")
print(f"Credits used: {data['credits_used']}")
return data["url"]
def batch_tts(texts: list[str], output_dir: str = ".") -> list[str]:
"""Convert multiple texts to speech."""
urls = []
for i, text in enumerate(texts):
url = text_to_speech(
text,
output_file=f"{output_dir}/audio_{i+1:03d}.mp3"
)
urls.append(url)
return urls
if __name__ == "__main__":
# Single conversion
text_to_speech(
"Seu pagamento foi aprovado! Obrigado por comprar conosco.",
"payment_confirmation.mp3"
)
# Batch conversion for IVR system
ivr_messages = [
"Bem-vindo. Pressione um para suporte técnico.",
"Pressione dois para faturamento.",
"Pressione três para falar com um atendente."
]
batch_tts(ivr_messages, output_dir="ivr_audio")
Portuguese-Specific Considerations
When choosing a TTS API for Portuguese, watch out for:
-
BR vs PT accent:
pt-BR(Brazilian) andpt-PT(European Portuguese) sound very different. Make sure the API supports your target variant. - Abbreviations: APIs vary in how they handle "Dr.", "R$", "km/h" — test these before committing.
- SSML support: For fine-grained control over pauses, emphasis, and pronunciation, SSML support is important for professional IVR systems.
Conclusion
For developers building Portuguese-language voice features, the choice depends on your use case:
- IteraTools: Best for budget-conscious projects that need Portuguese TTS as part of a broader API toolkit (also handles scraping, WhatsApp, PDF, etc.). Credit-based, no monthly fees.
- ElevenLabs: Best for high-quality voice cloning or when voice naturalness is critical (e.g., content creation).
- OpenAI TTS: Good quality, easy integration if you're already in the OpenAI ecosystem.
Get started at api.iteratools.com — no monthly commitment, pay-as-you-go credits.
Top comments (0)