Module: RubyLLM::Protocols::ChatCompletions::Speech

Defined in:
lib/ruby_llm/protocols/chat_completions/speech.rb

Overview

Speech generation methods for the OpenAI API integration

Class Method Summary collapse

Class Method Details

.parse_speech_response(response, model:, voice:, format:) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/ruby_llm/protocols/chat_completions/speech.rb', line 27

def parse_speech_response(response, model:, voice:, format:)
  resolved_format = (format || 'mp3').to_s

  RubyLLM::Speech.new(
    data: response.body,
    model: model,
    voice: voice || 'alloy',
    format: resolved_format
  )
end

.render_speech_payload(input, model:, voice:, format:, provider_options: {}) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/ruby_llm/protocols/chat_completions/speech.rb', line 18

def render_speech_payload(input, model:, voice:, format:, provider_options: {})
  {
    model: model,
    input: input,
    voice: voice || 'alloy',
    response_format: format
  }.compact.merge(provider_options)
end

.speech_url(model:) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



10
11
12
# File 'lib/ruby_llm/protocols/chat_completions/speech.rb', line 10

def speech_url(model:) # rubocop:disable Lint/UnusedMethodArgument
  'audio/speech'
end

.stream_speech(payload, model:, voice:, format:) ⇒ Object



14
15
16
# File 'lib/ruby_llm/protocols/chat_completions/speech.rb', line 14

def stream_speech(payload, model:, voice:, format:, &)
  stream_speech_response(speech_url(model:), payload, model:, voice:, format:, &)
end