Sha256: f6ba6ba9f6048253bf5e3fb551b58b3ccc2bf009fae2c42f8e32e14dfc30c077
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
# frozen_string_literal: true require_relative "rb/version" require 'http' module Elevenlabs class Client ELEVENLABS_FQDN = 'https://api.elevenlabs.io' DEFAULT_STABILITY = 0.5 DEFAULT_STYLE = 0.5 DEFAULT_MODEL = 'eleven_monolingual_v1' attr_accessor :api_key class Error < StandardError; end def initialize(api_key:) @api_key = api_key end def text_to_speech(voice_id:, optimize_streaming_latency: 0, text:, style: DEFAULT_STYLE, stability: DEFAULT_STABILITY, model: DEFAULT_MODEL, stream: false) body = { text: text, model_id: model, voice_settings: { stability: stability, similarity_boost: 0, style: style } } url_path = stream ? "#{ELEVENLABS_FQDN}/v1/text-to-speech/#{voice_id}/stream" : "#{ELEVENLABS_FQDN}/v1/text-to-speech/#{voice_id}" authorized_http_client.post(url_path, :params => {optimize_streaming_latency: optimize_streaming_latency}, json: body).to_s end def text_to_speech_stream(voice_id:, optimize_streaming_latency: 0, text:, stability: DEFAULT_STABILITY, model: DEFAULT_MODEL) text_to_speech(stream: true, voice_id: voice_id, optimize_streaming_latency: optimize_streaming_latency, text: text, stability: stability, model: model) end def list_voices JSON.parse(authorized_http_client.get("#{ELEVENLABS_FQDN}/v1/voices").to_s) end private def authorized_http_client HTTP.headers('xi-api-key': @api_key) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
elevenlabs-rb-0.2.0 | lib/elevenlabs/client.rb |