Rendley docs

Voice changer

Replace the voice in a recording while keeping every word intact. Used for voice-over production, character voices and anonymizing a speaker.

#Change the voice in a clip

Enqueue a job to replace the voice in an audio or video clip with a different target voice.

POSThttps://api.rendley.com/v1/ai/voice-changer

Don't have one? Create an API key

Body

Which model to use. Changing it updates the params below.

Model-specific parameters. The fields listed for the selected model.

The 'hash' field from the library media entry, or a public URL.

Target voice ID from the voice catalog.

const res = await fetch("https://api.rendley.com/v1/ai/voice-changer", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "params": {
      "file_hash": "<file_hash>",
      "voice_id": "<voice_id>"
    },
    "model_id": "eleven-labs-voice-changer"
  }),
});
const { data } = await res.json();
curl -X POST "https://api.rendley.com/v1/ai/voice-changer" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "params": {
      "file_hash": "<file_hash>",
      "voice_id": "<voice_id>"
    },
    "model_id": "eleven-labs-voice-changer"
  }'
import requests

res = requests.post(
    "https://api.rendley.com/v1/ai/voice-changer",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "params": {
            "file_hash": "<file_hash>",
            "voice_id": "<voice_id>"
        },
        "model_id": "eleven-labs-voice-changer"
    },
)
data = res.json()["data"]
$ch = curl_init("https://api.rendley.com/v1/ai/voice-changer");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY", "Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["params" => ["file_hash" => "<file_hash>", "voice_id" => "<voice_id>"], "model_id" => "eleven-labs-voice-changer"]));

$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)["data"];
package main

import (
	"fmt"
	"io"
	"net/http"
	"bytes"
)

func main() {
	body := bytes.NewBufferString(`{
  "params": {
    "file_hash": "<file_hash>",
    "voice_id": "<voice_id>"
  },
  "model_id": "eleven-labs-voice-changer"
}`)
	req, _ := http.NewRequest("POST", "https://api.rendley.com/v1/ai/voice-changer", body)
	req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	b, _ := io.ReadAll(res.Body)
	fmt.Println(string(b))
}
require "net/http"
require "json"

uri = URI("https://api.rendley.com/v1/ai/voice-changer")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
req["Content-Type"] = "application/json"
req.body = { params: { file_hash: "<file_hash>", voice_id: "<voice_id>" }, model_id: "eleven-labs-voice-changer" }.to_json

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]

Response

{
  "data": {
    "job_id": "d97241f2-e1e4-4651-b078-8663fc35c584"
  }
}

#Calculate voice changer cost

Calculate the credit cost of replacing the voice in an audio or video clip.

POSThttps://api.rendley.com/v1/ai/voice-changer/cost

Don't have one? Create an API key

Body

Which model to use. Changing it updates the params below.

Model-specific parameters. The fields listed for the selected model.

The 'hash' field from the library media entry, or a public URL.

Target voice ID from the voice catalog.

const res = await fetch("https://api.rendley.com/v1/ai/voice-changer/cost", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "params": {
      "file_hash": "<file_hash>",
      "voice_id": "<voice_id>"
    },
    "model_id": "eleven-labs-voice-changer"
  }),
});
const { data } = await res.json();
curl -X POST "https://api.rendley.com/v1/ai/voice-changer/cost" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "params": {
      "file_hash": "<file_hash>",
      "voice_id": "<voice_id>"
    },
    "model_id": "eleven-labs-voice-changer"
  }'
import requests

res = requests.post(
    "https://api.rendley.com/v1/ai/voice-changer/cost",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "params": {
            "file_hash": "<file_hash>",
            "voice_id": "<voice_id>"
        },
        "model_id": "eleven-labs-voice-changer"
    },
)
data = res.json()["data"]
$ch = curl_init("https://api.rendley.com/v1/ai/voice-changer/cost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY", "Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["params" => ["file_hash" => "<file_hash>", "voice_id" => "<voice_id>"], "model_id" => "eleven-labs-voice-changer"]));

$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)["data"];
package main

import (
	"fmt"
	"io"
	"net/http"
	"bytes"
)

func main() {
	body := bytes.NewBufferString(`{
  "params": {
    "file_hash": "<file_hash>",
    "voice_id": "<voice_id>"
  },
  "model_id": "eleven-labs-voice-changer"
}`)
	req, _ := http.NewRequest("POST", "https://api.rendley.com/v1/ai/voice-changer/cost", body)
	req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	b, _ := io.ReadAll(res.Body)
	fmt.Println(string(b))
}
require "net/http"
require "json"

uri = URI("https://api.rendley.com/v1/ai/voice-changer/cost")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
req["Content-Type"] = "application/json"
req.body = { params: { file_hash: "<file_hash>", voice_id: "<voice_id>" }, model_id: "eleven-labs-voice-changer" }.to_json

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)["data"]

Response

{
  "data": 0
}