curl --location --request POST 'https://revapi.reverieinc.com/' \
--header 'REV-API-KEY: <YOUR API KEY>' \
--header 'REV-APP-ID: <YOUR APP-ID>' \
--header 'REV-APPNAME: tts' \
--header 'speaker: hi_female' \
--header 'Content-Type: application/json' \
--data-raw '{
"text": ["भारत मेरा देश है।", "मेरी कंपनी का नाम रेवेरी लैंग्वेज टेक्नोलॉजीज है।"],
"speed": 1,
"pitch": 0,
"format": "WAV"
}'const ReverieClient = require("reverie-client");
const reverieClient = new ReverieClient({
apiKey: "YOUR-API-KEY",
appId: "YOUR-APP-ID",
});
try {
const audioBlob = await reverieClient.text_to_speech({
text: text,
speaker: speaker,
speed: speed,
pitch: pitch,
});
const audioUrl = URL.createObjectURL(audioBlob);
console.log("Audio URL is:", audioUrl);
} catch (error) {
console.error("Error:", error);
}from reverie_sdk import ReverieClient
client = ReverieClient(
api_key="MY_API_KEY",
app_id="MY_APP_ID",
)
with open("./big_text.txt", encoding="utf-8") as f:
text = f.read()
for resp_idx, resp in enumerate(
client.tts.tts_streaming(
text=text,
speaker="en_male",
max_words_per_chunk=5,
fast_sentence_fragment=False,
)
):
print(f"{resp_idx:08d} {resp.duration:10.3f}")
resp.save_audio(
f".path/to/output/{resp_idx:08d}.wav",
create_parents=True,
overwrite_existing=True,
)package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func sendRequest(payload string, filename string) {
url := "https://revapi.reverieinc.com/"
req, err := http.NewRequest("POST", url, bytes.NewBuffer([]byte(payload)))
if err != nil {
fmt.Println("Request creation error:", err)
return
}
// Set Headers
req.Header.Set("REV-API-KEY", "<YOUR-API-KEY>")
req.Header.Set("REV-APP-ID", "<YOUR-APP-ID>")
req.Header.Set("REV-APPNAME", "tts")
req.Header.Set("speaker", "hi_female") //Set Speaker
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Request error:", err)
return
}
defer resp.Body.Close()
// Create a file to save the response
file, err := os.Create(filename)
if err != nil {
fmt.Println("File creation error:", err)
return
}
defer file.Close()
// Copy response body to file
_, err = io.Copy(file, resp.Body)
if err != nil {
fmt.Println("File write error:", err)
return
}
fmt.Println("Audio saved as", filename)
}
func main() {
// Request 1: Plain text TTS
payload1 := `{\n\t"text": ["भारत मेरा देश है।", "मेरी कंपनी का नाम रेवेरी लैंग्वेज टेक्नोलॉजीज है।"],\n\t"speed": 1,\n\t"pitch": 0,\n\t"format": "WAV"\n}`
sendRequest(payload1, "output1.wav")
// Request 2: SSML-based TTS
payload2 := `{\n\t"ssml": "<speak> <voice name=\"en_female\"> Hello. </voice> </speak>",\n\t"speed": 1,\n\t"pitch": 0,\n\t"format": "mp3"\n}`
sendRequest(payload2, "output2.mp3")
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://revapi.reverieinc.com/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => [
'<string>'
],
'speed' => 123,
'pitch' => 123,
'sample_rate' => 123,
'format' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"REV-API-KEY: <rev-api-key>",
"REV-APP-ID: <rev-app-id>",
"REV-APPNAME: <rev-appname>",
"speaker: <speaker>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://revapi.reverieinc.com/")
.header("Content-Type", "<content-type>")
.header("REV-API-KEY", "<rev-api-key>")
.header("REV-APP-ID", "<rev-app-id>")
.header("REV-APPNAME", "<rev-appname>")
.header("speaker", "<speaker>")
.body("{\n \"text\": [\n \"<string>\"\n ],\n \"speed\": 123,\n \"pitch\": 123,\n \"sample_rate\": 123,\n \"format\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://revapi.reverieinc.com/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["REV-API-KEY"] = '<rev-api-key>'
request["REV-APP-ID"] = '<rev-app-id>'
request["REV-APPNAME"] = '<rev-appname>'
request["speaker"] = '<speaker>'
request.body = "{\n \"text\": [\n \"<string>\"\n ],\n \"speed\": 123,\n \"pitch\": 123,\n \"sample_rate\": 123,\n \"format\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body"Audio Response"{
"error": "no spkr given",
"description": "Speaker code not entered"
}{
"error": "Invalid REV-API-KEY or REV-APP-ID",
"description": "Entered Invalid credentials"
}Text to Speech API
Reverie’s TTS (Text-to-Speech) is a solution that turns text into lifelike speech, allowing you to create applications that talk in multiple Indic languages and build comprehensive speech-enabled products.
curl --location --request POST 'https://revapi.reverieinc.com/' \
--header 'REV-API-KEY: <YOUR API KEY>' \
--header 'REV-APP-ID: <YOUR APP-ID>' \
--header 'REV-APPNAME: tts' \
--header 'speaker: hi_female' \
--header 'Content-Type: application/json' \
--data-raw '{
"text": ["भारत मेरा देश है।", "मेरी कंपनी का नाम रेवेरी लैंग्वेज टेक्नोलॉजीज है।"],
"speed": 1,
"pitch": 0,
"format": "WAV"
}'const ReverieClient = require("reverie-client");
const reverieClient = new ReverieClient({
apiKey: "YOUR-API-KEY",
appId: "YOUR-APP-ID",
});
try {
const audioBlob = await reverieClient.text_to_speech({
text: text,
speaker: speaker,
speed: speed,
pitch: pitch,
});
const audioUrl = URL.createObjectURL(audioBlob);
console.log("Audio URL is:", audioUrl);
} catch (error) {
console.error("Error:", error);
}from reverie_sdk import ReverieClient
client = ReverieClient(
api_key="MY_API_KEY",
app_id="MY_APP_ID",
)
with open("./big_text.txt", encoding="utf-8") as f:
text = f.read()
for resp_idx, resp in enumerate(
client.tts.tts_streaming(
text=text,
speaker="en_male",
max_words_per_chunk=5,
fast_sentence_fragment=False,
)
):
print(f"{resp_idx:08d} {resp.duration:10.3f}")
resp.save_audio(
f".path/to/output/{resp_idx:08d}.wav",
create_parents=True,
overwrite_existing=True,
)package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func sendRequest(payload string, filename string) {
url := "https://revapi.reverieinc.com/"
req, err := http.NewRequest("POST", url, bytes.NewBuffer([]byte(payload)))
if err != nil {
fmt.Println("Request creation error:", err)
return
}
// Set Headers
req.Header.Set("REV-API-KEY", "<YOUR-API-KEY>")
req.Header.Set("REV-APP-ID", "<YOUR-APP-ID>")
req.Header.Set("REV-APPNAME", "tts")
req.Header.Set("speaker", "hi_female") //Set Speaker
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Request error:", err)
return
}
defer resp.Body.Close()
// Create a file to save the response
file, err := os.Create(filename)
if err != nil {
fmt.Println("File creation error:", err)
return
}
defer file.Close()
// Copy response body to file
_, err = io.Copy(file, resp.Body)
if err != nil {
fmt.Println("File write error:", err)
return
}
fmt.Println("Audio saved as", filename)
}
func main() {
// Request 1: Plain text TTS
payload1 := `{\n\t"text": ["भारत मेरा देश है।", "मेरी कंपनी का नाम रेवेरी लैंग्वेज टेक्नोलॉजीज है।"],\n\t"speed": 1,\n\t"pitch": 0,\n\t"format": "WAV"\n}`
sendRequest(payload1, "output1.wav")
// Request 2: SSML-based TTS
payload2 := `{\n\t"ssml": "<speak> <voice name=\"en_female\"> Hello. </voice> </speak>",\n\t"speed": 1,\n\t"pitch": 0,\n\t"format": "mp3"\n}`
sendRequest(payload2, "output2.mp3")
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://revapi.reverieinc.com/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => [
'<string>'
],
'speed' => 123,
'pitch' => 123,
'sample_rate' => 123,
'format' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"REV-API-KEY: <rev-api-key>",
"REV-APP-ID: <rev-app-id>",
"REV-APPNAME: <rev-appname>",
"speaker: <speaker>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://revapi.reverieinc.com/")
.header("Content-Type", "<content-type>")
.header("REV-API-KEY", "<rev-api-key>")
.header("REV-APP-ID", "<rev-app-id>")
.header("REV-APPNAME", "<rev-appname>")
.header("speaker", "<speaker>")
.body("{\n \"text\": [\n \"<string>\"\n ],\n \"speed\": 123,\n \"pitch\": 123,\n \"sample_rate\": 123,\n \"format\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://revapi.reverieinc.com/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["REV-API-KEY"] = '<rev-api-key>'
request["REV-APP-ID"] = '<rev-app-id>'
request["REV-APPNAME"] = '<rev-appname>'
request["speaker"] = '<speaker>'
request.body = "{\n \"text\": [\n \"<string>\"\n ],\n \"speed\": 123,\n \"pitch\": 123,\n \"sample_rate\": 123,\n \"format\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body"Audio Response"{
"error": "no spkr given",
"description": "Speaker code not entered"
}{
"error": "Invalid REV-API-KEY or REV-APP-ID",
"description": "Entered Invalid credentials"
}Headers
The format of the data to be posted.
application/json "application/json"
A unique key/token provided by Reverie to identify the user using the Localization API.
"<YOUR API KEY>"
The unique account ID to identify the user and the default account settings.
"<YOUR APP-ID>"
The parameter to identify the API.
tts "tts"
The desired language and voice code for synthesizing the audio file
hi_male, hi_male_2, hi_male_3, hi_male_4, hi_female, hi_female_2, hi_female_3, bn_male, bn_male_2, bn_female, bn_female_2, kn_male, kn_male_2, kn_female, kn_female_2, ml_male, ml_female, ta_male, ta_female, te_male, te_male_2, te_female, te_female_2, gu_male, gu_female, or_male, or_female, as_male, as_female, mr_male, mr_male_2, mr_male_3, mr_female, mr_female_2, mr_female_3, pa_male, pa_female, en_male, en_male_2, en_female, en_female_2 "hi_male"
Body
Text content to be generated to speech
The text you want to process to generate the speech.
The speech rate of the audio file. Allows values from 0.5 (slowest speed) up to 1.5 (fastest speed).
Speaking pitch, in the range from -3 to 3. 3 indicates an increase of 3 semitones; -3 indicates a decrease of 3 semitones.
The sampling rate (in hertz) to synthesize the audio output.
The speech audio format to generate the audio file (e.g., WAV, MP3).
Response
TTS response
Audio data in MP3 format