Manage audio samples for professional voice clones including adding, updating, and deleting samples.
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
const client = new ElevenLabsClient({ apiKey: "your-api-key" });
// Access this API via: client.voices.pvc.samplesAdd audio samples to a PVC voice.
/**
* @param voice_id - Voice ID
* @param request - Audio files to add
* @param requestOptions - Optional request configuration
* @returns Array of added samples
* @throws UnprocessableEntityError if request fails
*/
client.voices.pvc.samples.create(
voice_id: string,
request: BodyAddSamplesToPvcVoiceV1VoicesPvcVoiceIdSamplesPost,
requestOptions?: RequestOptions
): HttpResponsePromise<VoiceSample[]>;
interface BodyAddSamplesToPvcVoiceV1VoicesPvcVoiceIdSamplesPost {
/** Audio files used to create the voice */
files: File[];
/** If set will remove background noise using audio isolation model */
remove_background_noise?: boolean;
}Update a PVC voice sample - apply noise removal, select speaker, change trim times or file name.
/**
* @param voice_id - Voice ID
* @param sample_id - Sample ID
* @param request - Sample updates
* @param requestOptions - Optional request configuration
* @returns Voice ID
* @throws UnprocessableEntityError if request fails
*/
client.voices.pvc.samples.update(
voice_id: string,
sample_id: string,
request?: BodyUpdatePvcVoiceSampleV1VoicesPvcVoiceIdSamplesSampleIdPost,
requestOptions?: RequestOptions
): HttpResponsePromise<AddVoiceResponseModel>;
interface BodyUpdatePvcVoiceSampleV1VoicesPvcVoiceIdSamplesSampleIdPost {
/** If set will remove background noise using audio isolation model */
remove_background_noise?: boolean;
/** Speaker IDs to be used for PVC training (overrides previous selections) */
selected_speaker_ids?: string[];
/** Start time of audio to use for PVC training (in milliseconds) */
trim_start_time?: number;
/** End time of audio to use for PVC training (in milliseconds) */
trim_end_time?: number;
/** Name of the audio file */
file_name?: string;
}Delete a sample from a PVC voice.
/**
* @param voice_id - Voice ID
* @param sample_id - Sample ID
* @param requestOptions - Optional request configuration
* @returns Deletion status
* @throws UnprocessableEntityError if request fails
*/
client.voices.pvc.samples.delete(
voice_id: string,
sample_id: string,
requestOptions?: RequestOptions
): HttpResponsePromise<DeleteVoiceSampleResponseModel>;
interface DeleteVoiceSampleResponseModel {
/** Status of deletion ('ok' if successful) */
status: string;
}Retrieve the visual waveform of a voice sample.
/**
* @param voice_id - Voice ID
* @param sample_id - Sample ID
* @param requestOptions - Optional request configuration
* @returns Visual waveform data
* @throws UnprocessableEntityError if request fails
*/
client.voices.pvc.samples.waveform.get(
voice_id: string,
sample_id: string,
requestOptions?: RequestOptions
): HttpResponsePromise<VoiceSampleVisualWaveformResponseModel>;
interface VoiceSampleVisualWaveformResponseModel {
/** Sample ID */
sample_id: string;
/** Visual waveform as array of floats */
visual_waveform: number[];
}Retrieve the first 30 seconds of voice sample audio with or without noise removal.
/**
* @param voice_id - Voice ID
* @param sample_id - Sample ID
* @param request - Audio options
* @param requestOptions - Optional request configuration
* @returns Audio preview in base64
* @throws UnprocessableEntityError if request fails
*/
client.voices.pvc.samples.audio.get(
voice_id: string,
sample_id: string,
request?: AudioGetRequest,
requestOptions?: RequestOptions
): HttpResponsePromise<VoiceSamplePreviewResponseModel>;
interface AudioGetRequest {
/** If set will remove background noise using audio isolation model */
remove_background_noise?: boolean;
}
interface VoiceSamplePreviewResponseModel {
/** Base64 encoded audio */
audio_base64: string;
/** Voice ID */
voice_id: string;
/** Sample ID */
sample_id: string;
/** Media type of the audio */
media_type: string;
/** Duration in seconds */
duration_secs?: number;
}