Skip to main content
POST
/
cURL
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

Content-Type
enum<string>
required

The format of the data to be posted.

Available options:
application/json
Example:

"application/json"

REV-API-KEY
string
required

A unique key/token provided by Reverie to identify the user using the Localization API.

Example:

"<YOUR API KEY>"

REV-APP-ID
string
required

The unique account ID to identify the user and the default account settings.

Example:

"<YOUR APP-ID>"

REV-APPNAME
enum<string>
required

The parameter to identify the API.

Available options:
tts
Example:

"tts"

speaker
enum<string>
required

The desired language and voice code for synthesizing the audio file

Available options:
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
Example:

"hi_male"

Body

application/json

Text content to be generated to speech

text
string[]
required

The text you want to process to generate the speech.

speed
number

The speech rate of the audio file. Allows values from 0.5 (slowest speed) up to 1.5 (fastest speed).

pitch
number

Speaking pitch, in the range from -3 to 3. 3 indicates an increase of 3 semitones; -3 indicates a decrease of 3 semitones.

sample_rate
integer

The sampling rate (in hertz) to synthesize the audio output.

format
string

The speech audio format to generate the audio file (e.g., WAV, MP3).

Response

TTS response

Audio data in MP3 format