Create a voice
This endpoint creates a voice and optionally starts training
Training
There are 2 ways to train a voice:
Providing a URL to a dataset when creating the voice
Uploading individual recordings using the recording API
Option 1: Providing a URL to a dataset when creating the voice
- Create a voice using the "Create a voice" endpoint and provide a URL to the dataset in the
dataset_url
attribute. Please see here for acceptable dataset formats. - The dataset will first be analyzed and then training will begin automatically.
Option 2: Uploading individual recordings using the recording API
- Create a voice using the "Create a voice" endpoint and omit the
dataset_url
attribute. - Use the instructions on the "Create a recording" page to upload recordings to your voice.
- Upon uploading at least 30 recordings, follow the "Build a voice" documentation to start training.
Voice Consent
In order to clone a voice, you must be an authorized uploader or provide consent to clone your voice using the Resemble AI platform. To provide consent, upload an audio recording containing the following message:
I am aware that recordings of my voice will be used by [name of your company] to train and create a synthetic version of my voice by Resemble AI.
This audio content will be used by the Resemble platform for the purposes of authorizing your voice clone.
HTTP Request
POST https://app.resemble.ai/api/v2/voices
JSON Body Parameters | Type | Description |
---|---|---|
name | string | Name of the voice |
consent | string | A base-64 encoded Wavefile string containing your consent and authorization to create and clone a voice. Please see the Voice Consent section for more details. |
dataset_url | (optional) string | A URL to a dataset on which to train the voice on. Please see here for acceptable dataset formats |
callback_uri | (optional) string | A URL (webhook) that will be notified upon voice training completion Please see here for callback details |
Base 64 Encoding
The required consent
field must be a valid base-64 encoded string containing your consent audio file content. To convert your consent audio file to a base-64 encoded string you can use your programming language of choice's standard library. See the following examples below for implementation in several popular languages.
1
2
3
4
5
6
7
8
9
const fs = require('fs');
const path = require('path');
// Read the contents of the file into a string
const filePath = 'path/to/consent.wav';
const fileContents = fs.readFileSync(filePath, { encoding: 'base64' });
// Output the Base64-encoded string to stdout
console.log(fileContents);
HTTP Response
{
"success": true,
"item": {
"uuid": <string>,
"name": <string>,
"status": <string>,
"dataset_url": <string>,
"created_at": <UTC Date>,
"updated_at": <UTC Date>,
}
}
Callback
If you've provided a callback_uri
when you created a voice, you will receive the following POST request when the voice has completed
training.
{
"id": <string>,
"status": <string>,
"issue": <string>
}
JSON Body Parameters | Type | Description |
---|---|---|
id | string | The UUID of the voice this callback is for. |
status | string | Either "finished" or "dataset_issue". |
issue | string | If status is set to "dataset_issue" this field will contain a description of the issue. Otherwise this field will be null. |
Examples
1
2
3
4
5
import { Resemble } from '@resemble/node'
Resemble.setApiKey('YOUR_API_TOKEN')
await Resemble.v2.voices.create({ name: "Chef", dataset_url: "https://../dataset.zip", callback_uri: "http://example.com/cb" })