Unreal Speech Reviews:text to speech AI APIs
About Unreal Speech
Unreal Speech is a text-to-speech API that offers natural-sounding voices, low latency, high uptime, and pricing that scales as your usage grows. You can start with 1 million free characters per month, then take advantage of volume discounts at higher tiers. Unreal Speech has an easy to integrate API with client libraries for many languages. There’s also a live demo on their website which lets you freely test out their TTS with 4 different voices.
Slash Text-to-Speech Costs by up to 95%
Up to 20x cheaper than Eleven Labs and Play.ht.
Up to 4x cheaper than Amazon, Microsoft, and Google.
Unreal Speech saved us 75% on our text-to-speech cost. It sounds better than Amazon Polly, and is much cheaper. We switched over at high volumes, and often processing 10,000+ pages per hour. Unreal was able to handle the volume, while delivering a high quality listening experience.
Unreal Speech Studio
Make studio-quality voice overs for podcasts, videos & more.
Code Samples
Get started quickly with our simple text-to-speech API.
short
# Short endpoint: /stream
# - Up to 500 characters
# - Synchronous, instant response (0.3s+)
# - Streams back raw audio data
import requests
response = requests.post(
'https://api.v6.unrealspeech.com/stream',
headers = {
'Authorization' : 'Bearer YOUR_API_KEY'
},
json = {
'Text': '''<YOUR_TEXT>''', # Up to 500 characters
'VoiceId': '<VOICE_ID>', # Dan, Will, Scarlett, Liv, Amy
'Bitrate': '128k', # 320k, 256k, 192k, ...
'Speed': '0', # -1.0 to 1.0
'Pitch': '1', # -0.5 to 1.5
'Codec': 'libmp3lame', # libmp3lame or pcm_mulaw
}
)
with open('audio.mp3', 'wb') as f:
f.write(response.content)
long
# Long endpoint: /synthesisTasks
# - Up to 500,000 characters
# - Asynchronous, takes ~1s per 800 chars
# - Returns a TaskId (use to check status)
import requests
response = requests.post(
'https://api.v6.unrealspeech.com/synthesisTasks',
headers = {
'Authorization' : 'Bearer YOUR_API_KEY'
},
json = {
'Text': '''<YOUR_TEXT>''', # Up to 500,000 characters
'VoiceId': '<VOICE_ID>', # Dan, Will, Scarlett, Liv, Amy
'Bitrate': '128k', # 320k, 256k, 192k, ...
'Speed': '0', # -1.0 to 1.0
'Pitch': '1', # -0.5 to 1.5
'TimestampType': 'sentence', # word or sentence
#'CallbackUrl': '<URL>', # pinged when ready
}
)
print(response.json())
Sample Response
{
'SynthesisTask': {
'CreationTime': '2023-09-01T15:05:22.15Z',
'OutputUri': 'https://unreal-tts-live-demo.s3-us-west-1.amazonaws.com/d8ef514d.mp3',
'RequestCharacters': 14,
'TaskId': 'd8ef514d',
'TaskStatus': 'scheduled',
'TimestampsUri': 'https://unreal-tts-live-demo.s3-us-west-1.amazonaws.com/d8ef514d.json',
'VoiceId': 'Scarlett'
}
}
Check Task Status
Make a GET request with TaskId in the URL to check the status.
import requests
response = requests.get(
'https://api.v6.unrealspeech.com/synthesisTasks/d8ef514d',
headers = {
'Authorization' : 'Bearer YOUR_API_KEY'
},
json = {}
)
print(response.json())