AWS Polly Pricing in 2025: Is There a Cheaper Alternative?
AWS Polly is a solid, production-grade TTS service with deep AWS ecosystem integration. Its pricing is straightforward — but there are cheaper options depending on your use case.
Here's the full pricing breakdown and honest comparison.
AWS Polly Pricing Tiers
Polly has two voice quality tiers with very different price points:
| Tier | Price per 1M Characters | Notes |
|---|---|---|
| Standard voices | $4.00 | Concatenative TTS, lower quality |
| Neural voices (NTTS) | $16.00 | Neural TTS, natural-sounding |
| Long-form neural | $100.00 | Optimized for documents >3,000 chars |
Per 1,000 characters:
- Standard: $0.004/1K
- Neural: $0.016/1K
- Long-form: $0.100/1K
The long-form tier is expensive — $100/1M chars vs $16/1M for regular neural. Only use it if you specifically need the long-form model's document-optimized prosody.
AWS Polly Free Tier
New AWS accounts get:
- 5 million characters per month free for the first 12 months
- Applies to both Standard and Neural voices
- After 12 months, pay-as-you-go at the rates above
The free tier is genuinely useful for development and testing. At 5M chars/month, you can generate roughly 33+ hours of spoken audio.
Real-World Cost Examples
Average speaking pace: ~2,500 characters per spoken minute.
| Monthly Audio | Characters | Standard Cost | Neural Cost |
|---|---|---|---|
| 10 minutes | 25K chars | $0.10 | $0.40 |
| 1 hour | 150K chars | $0.60 | $2.40 |
| 10 hours | 1.5M chars | $6.00 | $24.00 |
| 100 hours | 15M chars | $60.00 | $240.00 |
At these volumes, Polly Neural is cost-competitive. But it's worth comparing to alternatives.
AWS Polly vs Alternatives
| Provider | Neural Price/1K | Free Tier | SSML | Voice Cloning |
|---|---|---|---|---|
| AWS Polly Neural | $0.016 | 5M chars (12 mo.) | ✓ Full | ✗ |
| Google Cloud Neural2 | $0.016 | 1M chars/month | ✓ Full | ✗ |
| Azure Neural TTS | $0.016 | 500K chars/month | ✓ Best | ✗ |
| OpenAI TTS-1 | $0.015 | None | ✗ | ✗ |
| Speeko | $0.030 | $5 credit | ✓ | ✓ |
| ElevenLabs | ~$0.060+ | 10K chars | Partial | ✓ |
On raw price per character, AWS Polly Neural ($0.016) ties with Google and Azure. OpenAI TTS-1 at $0.015 is slightly cheaper. None of these are dramatically cheaper than each other.
When AWS Polly Beats Alternatives
Already on AWS — Polly integrates natively with Lambda, S3, API Gateway, and Lex. No additional authentication, IAM policies work directly, audio can be stored in S3 seamlessly:
import boto3
polly = boto3.client('polly', region_name='us-east-1')
response = polly.synthesize_speech(
Text='This audio will be stored in S3.',
OutputFormat='mp3',
VoiceId='Joanna',
Engine='neural',
)
# Stream directly to S3
s3 = boto3.client('s3')
s3.put_object(
Bucket='my-audio-bucket',
Key='output.mp3',
Body=response['AudioStream'].read(),
)Async synthesis for long documents — Polly's StartSpeechSynthesisTask API handles documents up to 100,000 characters asynchronously, outputting directly to S3. No other provider matches this natively:
task = polly.start_speech_synthesis_task(
Text=long_document_text, # Up to 100,000 chars
OutputFormat='mp3',
VoiceId='Matthew',
Engine='neural',
OutputS3BucketName='my-audio-bucket',
OutputS3KeyPrefix='narrations/',
)
task_id = task['SynthesisTask']['TaskId']
# Poll for completion or use SNS notificationIVR and telephony — Polly integrates directly with Amazon Connect for contact center use cases.
SSML control — Polly has Polly-specific SSML extensions like <amazon:breath> and <amazon:effect name="drc"> for telephony audio:
<speak>
<amazon:effect name="drc">
This audio is optimized for telephone playback.
</amazon:effect>
</speak>When to Consider an Alternative
No AWS dependency — if you're not using AWS, Google Cloud TTS and Azure Neural TTS offer comparable quality and pricing without requiring AWS account setup.
Voice cloning needed — Polly doesn't support custom voice cloning. ElevenLabs or Speeko do.
No subscription / simpler billing — Polly requires an AWS account, billing setup, and IAM configuration. For smaller projects, simpler pay-as-you-go APIs like Speeko with a single API key are faster to set up.
Text-to-video also needed — Polly is TTS only. Speeko includes video generation API at $0.045/second.
Long-term cost after free tier — Polly's 12-month free tier is generous but expires. After that, pricing is the same as Google/Azure. Evaluate before building around the free tier.
Migration from AWS Polly
If you're using Polly via boto3 and want to switch:
# Before (AWS Polly)
import boto3
polly = boto3.client('polly')
response = polly.synthesize_speech(
Text=text, OutputFormat='mp3', VoiceId='Joanna', Engine='neural'
)
audio = response['AudioStream'].read()
# After (Speeko)
import requests, os
response = requests.post(
'https://api.speekoapp.com/v1/tts',
headers={'X-API-Key': os.environ['SPEEKO_API_KEY']},
json={'text': text, 'voice': 'en-US-1', 'format': 'mp3'},
)
audio = response.contentThe migration is a straightforward HTTP client swap.
AWS Polly Pricing Calculator
Use this snippet to estimate your monthly Polly cost before switching:
def estimate_polly_cost(
monthly_chars: int,
engine: str = "neural",
free_tier_remaining: int = 0
) -> dict:
rates = {"neural": 0.000016, "standard": 0.000004}
rate = rates[engine]
billable = max(0, monthly_chars - free_tier_remaining)
monthly_cost = billable * rate
return {
"monthly_chars": monthly_chars,
"free_tier_used": min(monthly_chars, free_tier_remaining),
"billable_chars": billable,
"monthly_cost_usd": round(monthly_cost, 4),
"annual_cost_usd": round(monthly_cost * 12, 2),
}
# Example: 500K chars/month neural, 12-month free tier exhausted
result = estimate_polly_cost(500_000, engine="neural", free_tier_remaining=0)
print(f"Monthly cost: ${result['monthly_cost_usd']}") # $8.00
print(f"Annual cost: ${result['annual_cost_usd']}") # $96.00At $0.016/1K chars neural (post-free-tier), 1M chars/month costs $16. The same volume via Speeko ($0.03/1K) costs $30 — nearly 2× more, but without AWS account complexity, IAM configuration, or 12-month timeline pressure.
Summary
AWS Polly Neural is priced the same as Google Cloud TTS and Azure ($0.016/1K chars). It wins when you're AWS-native — native S3 integration, async synthesis for long docs, Lambda triggers. It loses when you don't need AWS or need voice cloning.
Get started with Speeko — $5 free credit, no AWS account needed: speekoapp.com/register.
See also: AWS Polly Alternative Guide, TTS API Pricing Comparison.