https://unrealspeech.com/ [unreal-log] [unreal-log] API Docs Pricing Studio Contact Us Sign In 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. Get an API Key - Live Demo Beta Compare against Google, Microsoft, and Amazon. Click on a button to generate random text: Non-Fiction Fiction News Blog Conversation [ ] 0/250 Voice Format Standard Bitrate 192k Normal Speed [1 ] 1.0 Pitch [1 ] Synthesize Speed 0 s Filesize 0 kb Pricing that Scales with You Start for free. Stay for volume discounts. Free Basic Plus Enterprise Price $0 $49 $499 Custom a month a month Characters 1M 3M 62M 300M+ one time per month per month per month Cost -- $16 $8 Volume Discounts per 1M characters Audio Duration ~22 hours ~67 hours ~1,377 hours Custom (estimated) * 1 minute of audio = roughly 750 characters (~150 WPM) Get Started for Free - Need a custom solution? Contact us "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." [testimonia] Derek Pankaew -- CEO, Listening.io 3B Characters per month 0.3s Latency 99.9% Uptime Code Samples Get started quickly with our simple text-to-speech API. Short Long Python Copy # 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': '''''', # Up to 500 characters 'VoiceId': '', # 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 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': '''''', # Up to 500,000 characters 'VoiceId': '', # 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': '', # 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()) // Short endpoint: /stream // - Up to 500 characters // - Synchronous, instant response (0.3s+) // - Streams back raw audio data const axios = require('axios'); const fs = require('fs'); const headers = { 'Authorization': 'Bearer YOUR_API_KEY', }; const data = { 'Text': '', // Up to 500 characters 'VoiceId': '', // 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 }; axios({ method: 'post', url: 'https://api.v6.unrealspeech.com/stream', headers: headers, data: data, responseType: 'stream' }).then(function (response) { response.data.pipe(fs.createWriteStream('audio.mp3')) }); // Long endpoint: /synthesisTasks // - Up to 500,000 characters // - Asynchronous, takes ~1s per 800 chars // - Returns a TaskId (use to check status) const axios = require('axios'); const headers = { 'Authorization': 'Bearer YOUR_API_KEY', }; const data = { 'Text': '', // Up to 500,000 characters 'VoiceId': '', // 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': '', // pinged when ready }; axios({ method: 'post', url: 'https://api.v6.unrealspeech.com/synthesisTasks', headers: headers, data: data, }).then(function (response) { console.log(JSON.stringify(response.data)); }); 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. const axios = require('axios'); const headers = { 'Authorization': 'Bearer YOUR_API_KEY', }; axios({ method: 'get', url: 'https://api.v6.unrealspeech.com/synthesisTasks/d8ef514d', headers: headers, }).then(function (response) { console.log(JSON.stringify(response.data)); }); # Short endpoint: /stream # - Up to 500 characters # - Synchronous, instant response (0.3s+) # - Streams back raw audio data curl -X POST "https://api.v6.unrealspeech.com/stream" -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_API_KEY" --data '{"Text": "", "VoiceId": "", "Bitrate": "128k", "Speed": "0", "Pitch": "1", "Codec": "libmp3lame"}' --output audio.mp3 # Long endpoint: /synthesisTasks # - Up to 500,000 characters # - Asynchronous, takes ~1s per 800 chars # - Returns a TaskId (use to check status) curl -X POST "https://api.v6.unrealspeech.com/synthesisTasks" -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_API_KEY" --data '{"Text": "", "VoiceId": "", "Bitrate": "128k", "Speed": "0", "Pitch": "1", "TimestampType": "sentence"}' 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. curl -X GET "https://api.v6.unrealspeech.com/synthesisTasks/d8ef514d" -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_API_KEY" API Docs - Ready to dive in? Get an API Key - Unreal Speech Studio Make studio-quality voice overs for podcasts, videos & more. [studio-scr] Open Studio - Made with [?] in SF []Founder Blog Contact Us Chat via Web Invest in Unreal Speech API Docs Pricing Studio Sign In Sign In Copied to clipboard!