Class: ElevenlabsClient::Dubs

Inherits:
Object
  • Object
show all
Defined in:
lib/elevenlabs_client/endpoints/dubs.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Dubs

Returns a new instance of Dubs.



5
6
7
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 5

def initialize(client)
  @client = client
end

Instance Method Details

#create(file_io:, filename:, target_languages:, name: nil, **options) ⇒ Hash

POST /v1/dubbing (multipart) Creates a new dubbing job Documentation: https://elevenlabs.io/docs/api-reference/dubbing/create

Parameters:

  • file_io (IO)

    The audio/video file to dub

  • filename (String)

    Original filename

  • target_languages (Array<String>)

    Target language codes (e.g., ["es", "pt", "fr"])

  • name (String, nil) (defaults to: nil)

    Optional name for the dubbing job

  • options (Hash)

    Additional options (drop_background_audio, use_profanity_filter, etc.)

Returns:

  • (Hash)

    Response containing dubbing job details



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 19

def create(file_io:, filename:, target_languages:, name: nil, **options)
  payload = {
    file: @client.file_part(file_io, filename),
    mode: "automatic",
    name: name,
    target_lang: target_languages.first,
    num_speakers: 1
  }.compact.merge(options)

  @client.post_multipart("/v1/dubbing", payload)
end

#create_segment(dubbing_id:, speaker_id:, start_time:, end_time:, text: nil, translations: nil) ⇒ Hash

POST /v1/dubbing/resource/dubbing_id/speaker/speaker_id/segment Creates a new segment in dubbing resource Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/create-segment

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • speaker_id (String)

    The speaker ID

  • start_time (Float)

    Start time of the segment

  • end_time (Float)

    End time of the segment

  • text (String, nil) (defaults to: nil)

    Optional text for the segment

  • translations (Hash, nil) (defaults to: nil)

    Optional translations map

Returns:

  • (Hash)

    Response with version and new segment ID



92
93
94
95
96
97
98
99
100
101
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 92

def create_segment(dubbing_id:, speaker_id:, start_time:, end_time:, text: nil, translations: nil)
  payload = {
    start_time: start_time,
    end_time: end_time,
    text: text,
    translations: translations
  }.compact

  @client.post("/v1/dubbing/resource/#{dubbing_id}/speaker/#{speaker_id}/segment", payload)
end

#delete(dubbing_id) ⇒ Hash

DELETE /v1/dubbing/id Deletes a dubbing project Documentation: https://elevenlabs.io/docs/api-reference/dubbing/delete

Parameters:

  • dubbing_id (String)

    The dubbing job ID

Returns:

  • (Hash)

    Response with status



67
68
69
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 67

def delete(dubbing_id)
  @client.delete("/v1/dubbing/#{dubbing_id}")
end

#delete_segment(dubbing_id, segment_id) ⇒ Hash

DELETE /v1/dubbing/resource/dubbing_id/segment/segment_id Deletes a single segment from the dubbing Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/delete-segment

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • segment_id (String)

    The segment ID

Returns:

  • (Hash)

    Response with version



110
111
112
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 110

def delete_segment(dubbing_id, segment_id)
  @client.delete("/v1/dubbing/resource/#{dubbing_id}/segment/#{segment_id}")
end

#dub_segment(dubbing_id, segments, languages = nil) ⇒ Hash

POST /v1/dubbing/resource/dubbing_id/dub Regenerates dubs for specified segments/languages Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/dub-segment

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • segments (Array<String>)

    List of segment IDs to dub

  • languages (Array<String>, nil) (defaults to: nil)

    Optional list of languages to dub

Returns:

  • (Hash)

    Response with version



172
173
174
175
176
177
178
179
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 172

def dub_segment(dubbing_id, segments, languages = nil)
  payload = {
    segments: segments,
    languages: languages
  }.compact

  @client.post("/v1/dubbing/resource/#{dubbing_id}/dub", payload)
end

#get(dubbing_id) ⇒ Hash

GET /v1/dubbing/id Retrieves dubbing job details Documentation: https://elevenlabs.io/docs/api-reference/dubbing/get

Parameters:

  • dubbing_id (String)

    The dubbing job ID

Returns:

  • (Hash)

    Dubbing job details



37
38
39
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 37

def get(dubbing_id)
  @client.get("/v1/dubbing/#{dubbing_id}")
end

#get_dubbed_audio(dubbing_id, language_code) ⇒ String Also known as: dubbed_audio

GET /v1/dubbing/dubbing_id/audio/language_code Returns dub as a streamed MP3 or MP4 file Documentation: https://elevenlabs.io/docs/api-reference/dubbing/audio/get

Parameters:

  • dubbing_id (String)

    ID of the dubbing project

  • language_code (String)

    ID of the language

Returns:

  • (String)

    Binary audio/video data



235
236
237
238
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 235

def get_dubbed_audio(dubbing_id, language_code)
  endpoint = "/v1/dubbing/#{dubbing_id}/audio/#{language_code}"
  @client.get(endpoint)
end

#get_dubbed_transcript(dubbing_id, language_code, **options) ⇒ String Also known as: dubbed_transcript

GET /v1/dubbing/dubbing_id/transcript/language_code Returns transcript for the dub as an SRT or WEBVTT file Documentation: https://elevenlabs.io/docs/api-reference/dubbing/transcript/get-transcript-for-dub

Parameters:

  • dubbing_id (String)

    ID of the dubbing project

  • language_code (String)

    ID of the language

  • options (Hash)

    Optional parameters

Options Hash (**options):

  • :format_type (String)

    Format to use ("srt" or "webvtt", default: "srt")

Returns:

  • (String)

    Transcript in specified format



249
250
251
252
253
254
255
256
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 249

def get_dubbed_transcript(dubbing_id, language_code, **options)
  endpoint = "/v1/dubbing/#{dubbing_id}/transcript/#{language_code}"
  
  params = {}
  params[:format_type] = options[:format_type] if options[:format_type]

  @client.get(endpoint, params)
end

#get_resource(dubbing_id) ⇒ Hash

GET /v1/dubbing/resource/dubbing_id Gets dubbing resource with detailed information including segments, speakers, etc. Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/get-resource

Parameters:

  • dubbing_id (String)

    The dubbing job ID

Returns:

  • (Hash)

    Detailed dubbing resource information



77
78
79
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 77

def get_resource(dubbing_id)
  @client.get("/v1/dubbing/resource/#{dubbing_id}")
end

#get_similar_voices(dubbing_id, speaker_id) ⇒ Hash

GET /v1/dubbing/resource/dubbing_id/speaker/speaker_id/similar-voices Gets similar voices for a speaker Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/get-similar-voices

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • speaker_id (String)

    The speaker ID

Returns:

  • (Hash)

    Response with list of similar voices



224
225
226
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 224

def get_similar_voices(dubbing_id, speaker_id)
  @client.get("/v1/dubbing/resource/#{dubbing_id}/speaker/#{speaker_id}/similar-voices")
end

#list(params = {}) ⇒ Hash

GET /v1/dubbing Lists dubbing jobs Documentation: https://elevenlabs.io/docs/api-reference/dubbing

Parameters:

  • params (Hash) (defaults to: {})

    Query parameters (dubbing_status, page_size, etc.)

Returns:

  • (Hash)

    List of dubbing jobs



47
48
49
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 47

def list(params = {})
  @client.get("/v1/dubbing", params)
end

#render_project(dubbing_id:, language:, render_type:, normalize_volume: nil) ⇒ Hash

POST /v1/dubbing/resource/dubbing_id/render/language Renders the output media for a language Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/render-project

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • language (String)

    The language to render

  • render_type (String)

    The type of render (mp4, aac, mp3, wav, aaf, tracks_zip, clips_zip)

  • normalize_volume (Boolean, nil) (defaults to: nil)

    Whether to normalize volume (defaults to false)

Returns:

  • (Hash)

    Response with version and render_id



190
191
192
193
194
195
196
197
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 190

def render_project(dubbing_id:, language:, render_type:, normalize_volume: nil)
  payload = {
    render_type: render_type,
    normalize_volume: normalize_volume
  }.compact

  @client.post("/v1/dubbing/resource/#{dubbing_id}/render/#{language}", payload)
end

#resources(dubbing_id) ⇒ Hash

GET /v1/dubbing/id/resources Retrieves dubbing resources for editing (if dubbing_studio: true was used) Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/get-resource

Parameters:

  • dubbing_id (String)

    The dubbing job ID

Returns:

  • (Hash)

    Dubbing resources



57
58
59
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 57

def resources(dubbing_id)
  @client.get("/v1/dubbing/#{dubbing_id}/resources")
end

#transcribe_segment(dubbing_id, segments) ⇒ Hash

POST /v1/dubbing/resource/dubbing_id/transcribe Regenerates transcriptions for specified segments Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/transcribe-segment

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • segments (Array<String>)

    List of segment IDs to transcribe

Returns:

  • (Hash)

    Response with version



142
143
144
145
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 142

def transcribe_segment(dubbing_id, segments)
  payload = { segments: segments }
  @client.post("/v1/dubbing/resource/#{dubbing_id}/transcribe", payload)
end

#translate_segment(dubbing_id, segments, languages = nil) ⇒ Hash

POST /v1/dubbing/resource/dubbing_id/translate Regenerates translations for specified segments/languages Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/translate-segment

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • segments (Array<String>)

    List of segment IDs to translate

  • languages (Array<String>, nil) (defaults to: nil)

    Optional list of languages to translate

Returns:

  • (Hash)

    Response with version



155
156
157
158
159
160
161
162
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 155

def translate_segment(dubbing_id, segments, languages = nil)
  payload = {
    segments: segments,
    languages: languages
  }.compact

  @client.post("/v1/dubbing/resource/#{dubbing_id}/translate", payload)
end

#update_segment(dubbing_id:, segment_id:, language:, start_time: nil, end_time: nil, text: nil) ⇒ Hash

PATCH /v1/dubbing/resource/dubbing_id/segment/segment_id/language Updates a single segment with new text and/or start/end times Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/update-segment

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • segment_id (String)

    The segment ID

  • language (String)

    The language ID

  • start_time (Float, nil) (defaults to: nil)

    Optional new start time

  • end_time (Float, nil) (defaults to: nil)

    Optional new end time

  • text (String, nil) (defaults to: nil)

    Optional new text

Returns:

  • (Hash)

    Response with version



125
126
127
128
129
130
131
132
133
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 125

def update_segment(dubbing_id:, segment_id:, language:, start_time: nil, end_time: nil, text: nil)
  payload = {
    start_time: start_time,
    end_time: end_time,
    text: text
  }.compact

  @client.patch("/v1/dubbing/resource/#{dubbing_id}/segment/#{segment_id}/#{language}", payload)
end

#update_speaker(dubbing_id:, speaker_id:, voice_id: nil, languages: nil) ⇒ Hash

PATCH /v1/dubbing/resource/dubbing_id/speaker/speaker_id Updates speaker metadata such as voice Documentation: https://elevenlabs.io/docs/api-reference/dubbing/resources/update-speaker

Parameters:

  • dubbing_id (String)

    The dubbing job ID

  • speaker_id (String)

    The speaker ID

  • voice_id (String, nil) (defaults to: nil)

    Voice ID from library or 'track-clone'/'clip-clone'

  • languages (Array<String>, nil) (defaults to: nil)

    Languages to apply changes to

Returns:

  • (Hash)

    Response with version



208
209
210
211
212
213
214
215
# File 'lib/elevenlabs_client/endpoints/dubs.rb', line 208

def update_speaker(dubbing_id:, speaker_id:, voice_id: nil, languages: nil)
  payload = {
    voice_id: voice_id,
    languages: languages
  }.compact

  @client.patch("/v1/dubbing/resource/#{dubbing_id}/speaker/#{speaker_id}", payload)
end