elevenlabs_client 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ElevenlabsClient
4
- class TextToSpeechWithTimestamps
5
- def initialize(client)
6
- @client = client
7
- end
8
-
9
- # POST /v1/text-to-speech/{voice_id}/with-timestamps
10
- # Generate speech from text with precise character-level timing information
11
- # Documentation: https://elevenlabs.io/docs/api-reference/text-to-speech/with-timestamps
12
- #
13
- # @param voice_id [String] Voice ID to be used
14
- # @param text [String] The text that will get converted into speech
15
- # @param options [Hash] Optional TTS parameters
16
- # @option options [String] :model_id Model identifier (defaults to "eleven_multilingual_v2")
17
- # @option options [String] :language_code ISO 639-1 language code for text normalization
18
- # @option options [Hash] :voice_settings Voice settings overriding stored settings
19
- # @option options [Array<Hash>] :pronunciation_dictionary_locators Pronunciation dictionary locators (max 3)
20
- # @option options [Integer] :seed Deterministic sampling seed (0-4294967295)
21
- # @option options [String] :previous_text Text that came before current request
22
- # @option options [String] :next_text Text that comes after current request
23
- # @option options [Array<String>] :previous_request_ids Request IDs of previous samples (max 3)
24
- # @option options [Array<String>] :next_request_ids Request IDs of next samples (max 3)
25
- # @option options [String] :apply_text_normalization Text normalization mode ("auto", "on", "off")
26
- # @option options [Boolean] :apply_language_text_normalization Language text normalization
27
- # @option options [Boolean] :use_pvc_as_ivc Use IVC version instead of PVC (deprecated)
28
- # @option options [Boolean] :enable_logging Enable logging (defaults to true)
29
- # @option options [Integer] :optimize_streaming_latency Latency optimizations (0-4, deprecated)
30
- # @option options [String] :output_format Output format (defaults to "mp3_44100_128")
31
- # @return [Hash] Response containing audio_base64, alignment, and normalized_alignment
32
- def generate(voice_id, text, **options)
33
- # Build query parameters
34
- query_params = {}
35
- query_params[:enable_logging] = options[:enable_logging] unless options[:enable_logging].nil?
36
- query_params[:optimize_streaming_latency] = options[:optimize_streaming_latency] if options[:optimize_streaming_latency]
37
- query_params[:output_format] = options[:output_format] if options[:output_format]
38
-
39
- # Build endpoint with query parameters
40
- endpoint = "/v1/text-to-speech/#{voice_id}/with-timestamps"
41
- if query_params.any?
42
- query_string = query_params.map { |k, v| "#{k}=#{v}" }.join("&")
43
- endpoint += "?#{query_string}"
44
- end
45
-
46
- # Build request body
47
- request_body = { text: text }
48
-
49
- # Add optional body parameters
50
- request_body[:model_id] = options[:model_id] if options[:model_id]
51
- request_body[:language_code] = options[:language_code] if options[:language_code]
52
- request_body[:voice_settings] = options[:voice_settings] if options[:voice_settings]
53
- request_body[:pronunciation_dictionary_locators] = options[:pronunciation_dictionary_locators] if options[:pronunciation_dictionary_locators]
54
- request_body[:seed] = options[:seed] if options[:seed]
55
- request_body[:previous_text] = options[:previous_text] if options[:previous_text]
56
- request_body[:next_text] = options[:next_text] if options[:next_text]
57
- request_body[:previous_request_ids] = options[:previous_request_ids] if options[:previous_request_ids]
58
- request_body[:next_request_ids] = options[:next_request_ids] if options[:next_request_ids]
59
- request_body[:apply_text_normalization] = options[:apply_text_normalization] if options[:apply_text_normalization]
60
- request_body[:apply_language_text_normalization] = options[:apply_language_text_normalization] unless options[:apply_language_text_normalization].nil?
61
- request_body[:use_pvc_as_ivc] = options[:use_pvc_as_ivc] unless options[:use_pvc_as_ivc].nil?
62
-
63
- @client.post(endpoint, request_body)
64
- end
65
-
66
- # Alias for backward compatibility
67
- alias_method :text_to_speech_with_timestamps, :generate
68
-
69
- private
70
-
71
- attr_reader :client
72
- end
73
- end