Python SDK

Install the package:

$pip install resemble

Configure the SDK:

1from resemble import Resemble
2
3Resemble.api_key("YOUR_API_TOKEN")

Projects

List All Projects

1page = 1
2page_size = 10
3
4response = Resemble.v2.projects.all(page, page_size)
5projects = response['items']

Get a Project

1project_uuid = '<project_uuid>'
2
3response = Resemble.v2.projects.get(project_uuid)
4project = response['item']

Create a Project

1name = 'My project'
2description = 'My description'
3is_archived = False
4is_collaborative = False
5
6response = Resemble.v2.projects.create(name, description, is_collaborative, is_archived)
7project = response['item']

Update a Project

1project_uuid = '<project_uuid>'
2name = 'My project (archived)'
3description = 'My description (this project has been archived)'
4is_archived = True
5is_collaborative = False
6
7response = Resemble.v2.projects.update(project_uuid, name, description, is_collaborative, is_archived)
8project = response['item']

Delete a Project

1project_uuid = '<project_uuid>'
2
3response = Resemble.v2.projects.delete(project_uuid)

Voices

List All Voices

1page = 1
2page_size = 10
3
4response = Resemble.v2.voices.all(page, page_size)
5voices = response['items']

Get a Voice

1voice_uuid = '<voice_uuid>'
2
3response = Resemble.v2.voices.get(voice_uuid)
4voice = response['item']

Create a Voice

1name = 'Test Voice'
2
3response = Resemble.v2.voices.create(
4 name,
5 dataset_url="https://example.com/dataset.zip",
6 callback_uri="http://example.com/cb",
7 language="en-US"
8)
9voice = response['item']

Build a Voice

1voice_uuid = '<voice_uuid>'
2
3response = Resemble.v2.voices.build(voice_uuid)

Delete a Voice

1voice_uuid = '<voice_uuid>'
2
3response = Resemble.v2.voices.delete(voice_uuid)

Recordings

List All Recordings

1voice_uuid = '<voice_uuid>'
2page = 1
3page_size = 10
4
5response = Resemble.v2.recordings.all(voice_uuid, page, page_size)
6recordings = response['items']

Get a Recording

1voice_uuid = '<voice_uuid>'
2recording_uuid = '<recording_uuid>'
3
4response = Resemble.v2.recordings.get(voice_uuid, recording_uuid)
5recording = response['item']

Create a Recording

1voice_uuid = '<voice_uuid>'
2name = 'recording'
3text = 'This is a test'
4is_active = True
5emotion = 'neutral'
6
7with open("path/to/audio.wav", 'rb') as file:
8 response = Resemble.v2.recordings.create(voice_uuid, file, name, text, is_active, emotion)
9 recording = response['item']

Update a Recording

1voice_uuid = '<voice_uuid>'
2recording_uuid = '<uuid>'
3name = 'recording'
4text = 'This is a test'
5is_active = True
6emotion = 'neutral'
7
8response = Resemble.v2.recordings.update(voice_uuid, recording_uuid, name, text, is_active, emotion)
9recording = response['item']

Delete a Recording

1voice_uuid = '<voice_uuid>'
2recording_uuid = '<recording_uuid>'
3
4response = Resemble.v2.recordings.delete(voice_uuid, recording_uuid)

Clips

List All Clips

1project_uuid = '<project_uuid>'
2page = 1
3page_size = 10
4
5response = Resemble.v2.clips.all(project_uuid, page, page_size)
6clips = response['items']

Get a Clip

1project_uuid = '<project_uuid>'
2clip_uuid = '<clip_uuid>'
3
4response = Resemble.v2.clips.get(project_uuid, clip_uuid)
5clip = response['item']

Create a Clip (Synchronous)

1response = Resemble.v2.clips.create_sync(
2 project_uuid,
3 voice_uuid,
4 "Welcome to Resemble",
5 title="Intro"
6)
7
8if response["success"]:
9 clip = response["item"]
10 print(clip["audio_src"])
11else:
12 print(response)

Create a Clip (Direct Synthesis)

1voice_uuid = '<voice_uuid>'
2project_uuid = '<project_uuid>'
3output_format = 'wav'
4data = 'Hello, how are you?'
5title = 'Greeting'
6precision = 'PCM_32'
7sample_rate = 48000
8
9response = Resemble.v2.clips.create_direct(
10 project_uuid,
11 voice_uuid,
12 data,
13 title,
14 precision,
15 output_format,
16 sample_rate
17)
18
19clip = response['audio_content']

Stream a Clip

1# Configure synthesis URL for streaming
2Resemble.api_key('YOUR_API_TOKEN')
3Resemble.syn_server_url('<syn_server_url>') # Obtain from https://app.resemble.ai/account/api
4
5project_uuid = '<project_uuid>'
6voice_uuid = '<voice_uuid>'
7body = 'This is a streaming test'
8
9try:
10 for chunk in Resemble.v2.clips.stream(project_uuid, voice_uuid, body):
11 # chunk is a byte array of shorts (int 16) representing WAV audio
12 # Process the audio chunk here
13 pass
14except Exception as e:
15 # Handle exceptions
16 print(f"Error: {e}")

Update a Clip (Async)

1project_uuid = '<project_uuid>'
2clip_uuid = '<clip_uuid>'
3voice_uuid = '<voice_uuid>'
4callback_uri = 'https://example.com/callback/resemble-clip'
5body = 'This is an updated async test'
6
7response = Resemble.v2.clips.update_async(
8 project_uuid,
9 clip_uuid,
10 voice_uuid,
11 callback_uri,
12 body,
13 title=None,
14 sample_rate=None,
15 output_format=None,
16 precision=None,
17 include_timestamps=None,
18 is_archived=None
19)
20clip = response['item']

Delete a Clip

1project_uuid = '<project_uuid>'
2clip_uuid = '<clip_uuid>'
3
4response = Resemble.v2.clips.delete(project_uuid, clip_uuid)

Audio Edits

List All Audio Edits

1page = 1
2response = Resemble.v2.edits.all(page)
3audio_edits = response['items']

Get an Audio Edit

1audio_edit_uuid = '<audio_edit_uuid>'
2response = Resemble.v2.edits.get(audio_edit_uuid)
3audio_edit = response['item']

Create an Audio Edit

1original_transcript = 'Hi, how are you?'
2target_transcript = 'Hello, how are you?'
3voice_uuid = '<voice_uuid>'
4
5with open('path/to/audio.wav', 'rb') as file:
6 response = Resemble.v2.edits.create(original_transcript, target_transcript, voice_uuid, file)
7 audio_edit = response['item']

Create and Get an Audio Edit

1original_transcript = 'Hi, how are you?'
2target_transcript = 'Hello, how are you?'
3voice_uuid = '<voice_uuid>'
4
5with open('path/to/audio.wav', 'rb') as file:
6 response = Resemble.v2.edits.create_and_get(original_transcript, target_transcript, voice_uuid, file)
7 audio_edit = response['item']

Term Substitutions

List All Term Substitutions

1page = 1
2page_size = 10
3
4response = Resemble.v2.term_substitutions.all(page, page_size)
5substitutions = response['items']

Create a Term Substitution

1response = Resemble.v2.term_substitutions.create('Original', 'Replacement')
2substitutions = response['items']

Delete a Term Substitution

1substitution_uuid = '...'
2
3response = Resemble.v2.term_substitutions.delete(substitution_uuid)

Additional Resources