Python
Install
pip install resemble
Usage
Authentication
Before using the library, set your api key.
1
2
3
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
Projects
Get all projects
1
2
3
4
5
6
7
8
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
page = 1
page_size = 10
response = Resemble.v2.projects.all(page, page_size)
projects = response['items']
Create a project
1
2
3
4
5
6
7
8
9
10
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
name = 'My project'
description = 'My description'
is_archived = False
is_collaborative = False
response = Resemble.v2.projects.create(name, description, is_collaborative, is_archived)
project = response['item']
Update a project
1
2
3
4
5
6
7
8
9
10
11
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
project_uuid = '<project_uuid>'
name = 'My project (archived)'
description = 'My description (this project has been archived)'
is_archived = True
is_collaborative = False
response = Resemble.v2.projects.update(project_uuid, name, description, is_collaborative, is_archived)
project = response['item']
Get a project
1
2
3
4
5
6
7
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
project_uuid = '<project_uuid>'
response = Resemble.v2.projects.get(project_uuid)
project = response['item']
Delete a project
1
2
3
4
5
6
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
project_uuid = '<project_uuid>'
response = Resemble.v2.projects.delete(project_uuid)
Voices
Get all voices
1
2
3
4
5
6
7
8
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
page = 1
page_size = 10
response = Resemble.v2.voices.all(page, page_size)
voices = response['items']
Create a voice
1
2
3
4
5
6
7
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
name = 'Test Voice'
response = Resemble.v2.voices.create(name, dataset_url="http://../dataset.zip", callback_uri="http://example.com/cb")
voice = response['item']
Build a voice
1
2
3
4
5
6
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
response = Resemble.v2.voices.build(voice_uuid)
Get a voice
1
2
3
4
5
6
7
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
response = Resemble.v2.voices.get(voice_uuid)
voice = response['item']
Delete a voice
1
2
3
4
5
6
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
response = Resemble.v2.voices.delete(voice_uuid)
Recordings
Get all recordings
1
2
3
4
5
6
7
8
9
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
page = 1
page_size = 10
response = Resemble.v2.recordings.all(voice_uuid, page, page_size)
recordings = response['items']
Create a recording
1
2
3
4
5
6
7
8
9
10
11
12
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
name = 'recording'
text = 'This is a test'
is_active = True
emotion = 'neutral'
with open("path/to/audio.wav", 'rb') as file:
response = Resemble.v2.recordings.create(voice_uuid, file, name, text, is_active, emotion)
recording = response['item']
Update a recording
1
2
3
4
5
6
7
8
9
10
11
12
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
recording_uuid = '<uuid>'
name = 'recording'
text = 'This is a test'
is_active = True
emotion = 'neutral'
response = Resemble.v2.recordings.update(voice_uuid, recording_uuid, name, text, is_active, emotion)
recording = response['item']
Get a recording
1
2
3
4
5
6
7
8
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
recording_uuid = '<recording_uuid>'
response = Resemble.v2.recordings.get(voice_uuid, recording_uuid)
recording = response['item']
Delete a recording
1
2
3
4
5
6
7
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
recording_uuid = '<recording_uuid>'
response = Resemble.v2.recordings.delete(voice_uuid, recording_uuid)
Clips
Get all clips
1
2
3
4
5
6
7
8
9
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
project_uuid = '<project_uuid>'
page = 1
page_size = 10
response = Resemble.v2.clips.all(project_uuid, page, page_size)
clips = response['items']
Create a clip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
voice_uuid = '<voice_uuid>'
project_uuid = '<project_uuid>'
output_format = 'wav'
data = 'Hello, how are you?'
title = 'Greeting'
precision = 'PCM_32'
sample_rate = 48000
response = Resemble.v2.clips.create_direct(project_uuid, voice_uuid, data, title, precision, output_format, sample_rate)
clip = response['audio_content']
Create a clip (streaming)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
# It's very important that you configure the resemble library with the syn_server_url. Streaming will not
# work otherwise. You can obtain this URL by contacting resemble.
Resemble.syn_server_url('<syn_server_url>')
project_uuid = '<project_uuid>'
voice_uuid = '<voice_uuid>'
body = 'This is a streaming test'
try:
for chunk in Resemble.v2.clips.stream(project_uuid, voice_uuid, body):
# handle the returned chunk of data contained in the chunk variable
# The chunk variable is a byte array of shorts (int 16) representing a chunk of a WAV audio file.
pass
except:
# handle exceptions
pass
Update a clip (async)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
project_uuid = '<project_uuid>'
clip_uuid = '<clip_uuid>'
voice_uuid = '<voice_uuid>'
callback_uri = 'https://example.com/callback/resemble-clip'
body = 'This is an updated async test'
response = Resemble.v2.clips.update_async(
project_uuid,
clip_uuid,
voice_uuid,
callback_uri,
body,
title=None,
sample_rate=None,
output_format=None,
precision=None,
include_timestamps=None,
is_archived=None
)
clip = response['item']
Get a clip
1
2
3
4
5
6
7
8
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
project_uuid = '<project_uuid>'
clip_uuid = '<clip_uuid>'
response = Resemble.v2.clips.get(project_uuid, clip_uuid)
clip = response['item']
Delete a clip
1
2
3
4
5
6
7
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
project_uuid = '<project_uuid>'
clip_uuid = '<clip_uuid>'
response = Resemble.v2.clips.delete(project_uuid, clip_uuid)
Audio Edits
Get all audio edits
1
2
3
4
5
6
7
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
page = 1
response = Resemble.v2.edits.all(page)
audio_edits = response['items']
Get an audio edit
1
2
3
4
5
6
7
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
audio_edit_uuid = <audio_edit_uuid>
response = Resemble.v2.edits.get(audio_edit_uuid)
audio_edit = response['item']
Create an audio edit
1
2
3
4
5
6
7
8
9
10
11
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
original_transcript = 'Hi, how are you?'
target_transcript = 'Hello, how are you?'
voice_uuid = '<voice_uuid>'
with open('path/to/audio.wav', 'rb') as file:
response = Resemble.v2.edits.create(original_transcript, target_transcript, voice_uuid, file)
audio_edit = response['item']
Create and get an audio edit
1
2
3
4
5
6
7
8
9
10
11
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
original_transcript = 'Hi, how are you?'
target_transcript = 'Hello, how are you?'
voice_uuid = '<voice_uuid>'
with open('path/to/audio.wav', 'rb') as file:
response = Resemble.v2.edits.create_and_get(original_transcript, target_transcript, voice_uuid, file)
audio_edit = response['item']
Term Substitution
Get all term substitutions
1
2
3
4
5
6
7
8
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
page = 1
page_size = 10 # optional parameter
response = Resemble.v2.term_substitutions.all(page, page_size)
substitutions = response['items']
Create a term substitution
1
2
3
4
5
6
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
response = Resemble.v2.term_substitutions.create('Original', 'Replacement')
substitutions = response['items']
Delete a term substitution
1
2
3
4
5
6
7
from resemble import Resemble
Resemble.api_key('YOUR_API_TOKEN')
substitution_uuid = '...'
response = Resemble.v2.term_substitutions.delete(substitution_uuid)