Class: ElevenlabsClient::TextToVoice

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

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ TextToVoice

Returns a new instance of TextToVoice.



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

def initialize(client)
  @client = client
end

Instance Method Details

#create(voice_name, voice_description, generated_voice_id, **options) ⇒ Hash Also known as: create_from_generated_voice

POST /v1/text-to-voice Creates a voice from the designed voice generated_voice_id Documentation: https://elevenlabs.io/docs/api-reference/text-to-voice

Parameters:

  • voice_name (String)

    Name of the voice

  • voice_description (String)

    Description of the voice (20-1000 characters)

  • generated_voice_id (String)

    The generated voice ID from design_voice

  • options (Hash)

    Optional parameters

Options Hash (**options):

  • :labels (Hash)

    Optional metadata for the voice

  • :played_not_selected_voice_ids (Array<String>)

    Optional list of voice IDs played but not selected

Returns:

  • (Hash)

    JSON response containing voice_id and other voice details



62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/elevenlabs_client/endpoints/text_to_voice.rb', line 62

def create(voice_name, voice_description, generated_voice_id, **options)
  endpoint = "/v1/text-to-voice"
  request_body = {
    voice_name: voice_name,
    voice_description: voice_description,
    generated_voice_id: generated_voice_id
  }

  # Add optional parameters if provided
  request_body[:labels] = options[:labels] if options[:labels]
  request_body[:played_not_selected_voice_ids] = options[:played_not_selected_voice_ids] if options[:played_not_selected_voice_ids]

  @client.post(endpoint, request_body)
end

#design(voice_description, **options) ⇒ Hash Also known as: design_voice

POST /v1/text-to-voice/design Designs a voice based on a description Documentation: https://elevenlabs.io/docs/api-reference/text-to-voice/design

Parameters:

  • voice_description (String)

    Description of the voice (20-1000 characters)

  • options (Hash)

    Optional parameters

Options Hash (**options):

  • :output_format (String)

    Output format (e.g., "mp3_44100_192")

  • :model_id (String)

    Model to use (e.g., "eleven_multilingual_ttv_v2", "eleven_ttv_v3")

  • :text (String)

    Text to generate (100-1000 characters, optional)

  • :auto_generate_text (Boolean)

    Auto-generate text (default: false)

  • :loudness (Float)

    Loudness level (-1 to 1, default: 0.5)

  • :seed (Integer)

    Random seed (0 to 2147483647, optional)

  • :guidance_scale (Float)

    Guidance scale (0 to 100, default: 5)

  • :stream_previews (Boolean)

    Stream previews (default: false)

  • :remixing_session_id (String)

    Remixing session ID (optional)

  • :remixing_session_iteration_id (String)

    Remixing session iteration ID (optional)

  • :quality (Float)

    Quality level (-1 to 1, optional)

  • :reference_audio_base64 (String)

    Base64 encoded reference audio (optional, requires eleven_ttv_v3)

  • :prompt_strength (Float)

    Prompt strength (0 to 1, optional, requires eleven_ttv_v3)

Returns:

  • (Hash)

    JSON response containing previews and text



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/elevenlabs_client/endpoints/text_to_voice.rb', line 29

def design(voice_description, **options)
  endpoint = "/v1/text-to-voice/design"
  request_body = { voice_description: voice_description }

  # Add optional parameters if provided
  request_body[:output_format] = options[:output_format] if options[:output_format]
  request_body[:model_id] = options[:model_id] if options[:model_id]
  request_body[:text] = options[:text] if options[:text]
  request_body[:auto_generate_text] = options[:auto_generate_text] unless options[:auto_generate_text].nil?
  request_body[:loudness] = options[:loudness] if options[:loudness]
  request_body[:seed] = options[:seed] if options[:seed]
  request_body[:guidance_scale] = options[:guidance_scale] if options[:guidance_scale]
  request_body[:stream_previews] = options[:stream_previews] unless options[:stream_previews].nil?
  request_body[:remixing_session_id] = options[:remixing_session_id] if options[:remixing_session_id]
  request_body[:remixing_session_iteration_id] = options[:remixing_session_iteration_id] if options[:remixing_session_iteration_id]
  request_body[:quality] = options[:quality] if options[:quality]
  request_body[:reference_audio_base64] = options[:reference_audio_base64] if options[:reference_audio_base64]
  request_body[:prompt_strength] = options[:prompt_strength] if options[:prompt_strength]

  @client.post(endpoint, request_body)
end

#list_voicesHash

GET /v1/voices Retrieves all voices associated with your Elevenlabs account Documentation: https://elevenlabs.io/docs/api-reference/voices

Returns:

  • (Hash)

    The JSON response containing an array of voices



94
95
96
97
# File 'lib/elevenlabs_client/endpoints/text_to_voice.rb', line 94

def list_voices
  endpoint = "/v1/voices"
  @client.get(endpoint)
end

#stream_preview(generated_voice_id, &block) ⇒ Faraday::Response Also known as: stream_voice_preview

GET /v1/text-to-voice/:generated_voice_id/stream Stream a voice preview that was created via the /v1/text-to-voice/design endpoint Documentation: https://elevenlabs.io/docs/api-reference/text-to-voice/stream-voice-preview

Parameters:

  • generated_voice_id (String)

    The generated_voice_id to stream

  • block (Proc)

    Block to handle each streaming chunk

Returns:

  • (Faraday::Response)

    The response object



84
85
86
87
# File 'lib/elevenlabs_client/endpoints/text_to_voice.rb', line 84

def stream_preview(generated_voice_id, &block)
  endpoint = "/v1/text-to-voice/#{generated_voice_id}/stream"
  @client.get_streaming(endpoint, &block)
end