Class: ElevenlabsClient::SoundGeneration

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

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ SoundGeneration

Returns a new instance of SoundGeneration.



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

def initialize(client)
  @client = client
end

Instance Method Details

#generate(text, **options) ⇒ String Also known as: sound_generation

POST /v1/sound-generation Convert text to sound effects and retrieve audio (binary data) Documentation: https://elevenlabs.io/docs/api-reference/sound-generation

Parameters:

  • text (String)

    Text prompt describing the sound effect

  • options (Hash)

    Optional parameters

Options Hash (**options):

  • :loop (Boolean)

    Whether to create a looping sound effect (default: false)

  • :duration_seconds (Float)

    Duration in seconds (0.5 to 30, default: nil for auto-detection)

  • :prompt_influence (Float)

    Prompt influence (0.0 to 1.0, default: 0.3)

  • :output_format (String)

    Output format (e.g., "mp3_22050_32", default: "mp3_44100_128")

Returns:

  • (String)

    The binary audio data (usually an MP3)



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/elevenlabs_client/endpoints/sound_generation.rb', line 20

def generate(text, **options)
  endpoint = "/v1/sound-generation"
  request_body = { text: text }

  # Add optional parameters if provided
  request_body[:loop] = options[:loop] unless options[:loop].nil?
  request_body[:duration_seconds] = options[:duration_seconds] if options[:duration_seconds]
  request_body[:prompt_influence] = options[:prompt_influence] if options[:prompt_influence]

  # Handle output_format as query parameter
  query_params = {}
  query_params[:output_format] = options[:output_format] if options[:output_format]

  # Build endpoint with query parameters if any
  full_endpoint = query_params.any? ? "#{endpoint}?#{URI.encode_www_form(query_params)}" : endpoint

  @client.post_binary(full_endpoint, request_body)
end