typecast-ruby 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1694bfd6415ffc2b46d014e34add996248c255c68ce5927c76e213bcf3fa86da
4
- data.tar.gz: afeef1970ae7e132bcd1438b942a25c834b5fe397f789e460c9dbf117bc6ab3f
3
+ metadata.gz: '07508aef051788fd8993b3c844fd431689193ea006541bc4f2cfc0224de8ed79'
4
+ data.tar.gz: 0dd2fc6ee5a0c435e5742f89dc8d14cb25feb9a3bc0dad9c6179ba0150617565
5
5
  SHA512:
6
- metadata.gz: f45bc9e47497cb6b7cd8d01a9d3ceaf767568b515e1ab6254ebf0d135d7c82cb4a743bb523dcf1bb227faa87963a0ab8a732ea36024e4deec70c53c307ae2c6f
7
- data.tar.gz: '0388fe2ac016617905bd89af4dfff027210705866a47012d0c544a822d3dd5dca43fb6dd6fe70cb45c05a90130a4f4f440b453e647423c162c8ec2a08eb8247f'
6
+ metadata.gz: a234192530e80f46f39d8bb4943d796dfad95f4dbe8521e92a52b74ee4b8c393ccd73741dc4f802469ea57e157d096f5a49a5e5ca8f93bfbde87605768a5543c
7
+ data.tar.gz: ec1f70d384151b04825b6018f9c478fe9c1a301859ddb529ee973128cbf8a44e097765bd9d735612ee9ed110576e1e782f08229cdeaae5d450a8600b540f3926
@@ -30,6 +30,22 @@ module Typecast
30
30
  )
31
31
  end
32
32
 
33
+ # Browse available API voices at https://typecast.ai/developers/api/voices.
34
+ def generate_to_file(path, text:, voice_id:, model: Models::TTS_MODEL_V30, language: nil, prompt: nil, output: nil, seed: nil)
35
+ request = Models::TTSRequest.new(
36
+ voice_id: voice_id,
37
+ text: text,
38
+ model: model,
39
+ language: language,
40
+ prompt: prompt,
41
+ output: output || inferred_output(path),
42
+ seed: seed
43
+ )
44
+ response = text_to_speech(request)
45
+ File.binwrite(path, response.audio_data)
46
+ response
47
+ end
48
+
33
49
  def text_to_speech_stream(request)
34
50
  response = request_json(:post, "/v1/text-to-speech/stream", request.to_h)
35
51
  return enum_for(:text_to_speech_stream, request) unless block_given?
@@ -81,6 +97,13 @@ module Typecast
81
97
 
82
98
  private
83
99
 
100
+ def inferred_output(path)
101
+ case File.extname(path.to_s).downcase
102
+ when ".mp3" then Models::Output.new(audio_format: Models::AUDIO_MP3)
103
+ when ".wav" then Models::Output.new(audio_format: Models::AUDIO_WAV)
104
+ end
105
+ end
106
+
84
107
  def request_json(method, path, body = nil, query = nil)
85
108
  headers = auth_headers.merge("Content-Type" => "application/json")
86
109
  request_raw(method, path, body.nil? ? nil : JSON.generate(body), headers, query)
@@ -90,6 +90,7 @@ module Typecast
90
90
  class TTSRequest
91
91
  attr_reader :voice_id, :text, :model, :language, :prompt, :output, :seed
92
92
 
93
+ # Browse available API voices at https://typecast.ai/developers/api/voices.
93
94
  def initialize(voice_id:, text:, model:, language: nil, prompt: nil, output: nil, seed: nil)
94
95
  @voice_id = voice_id
95
96
  @text = text
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typecast-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neosapience
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-15 00:00:00.000000000 Z
11
+ date: 2026-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest