typecast-ruby 0.1.9 → 0.1.10

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: bf92bf9b490bc438e8010ef8f63654578d039befb968944a8a59575b343cc35a
4
- data.tar.gz: fd2171c71bce32f412c0a6086b748fbea7dd3a9cd6a56df4b50ede4e27fd0808
3
+ metadata.gz: 41b4085ac984161649beeb512ae32d72eefb823445e42fbedc8f36b234ba0291
4
+ data.tar.gz: d838ce170ebf9aa1011c8014e8851f7488192287bfacd217ce61d8003c2ff4a3
5
5
  SHA512:
6
- metadata.gz: d8568e3440fa9f20fc192e81840bdcc469fc2f7acded1b42f03ef1e0890ff56797d3bbc166cb3c279faaa04f4a14151e2b06f829d6a435305af522e114185b76
7
- data.tar.gz: c8ebc687c0b9908cd58b1ced71a76422ab0a204fa49c444b6212f88aa89c9bbbe171c4fb904715d490911e491b162ad437614e4943ceb99a9db9e96dc55dce33
6
+ metadata.gz: b66406928f01c849dbc897a9bf3b6360d0ae7fc9293170e2a3fd57b602a97e29ecbd34d7965081facb8710a9cdae7f2aed87fcfe8c7b9ca3d1644e07c73e80cb
7
+ data.tar.gz: 03ebe4faca1ded5e58377110feffbe0fd0beeb4ea687871eb980562e957662738f6179d98dcc2fc82c4cc8ad5d5fe47a9395181caad7452daa9fb6c247996af5
@@ -102,6 +102,15 @@ module Typecast
102
102
  voices.first
103
103
  end
104
104
 
105
+ def get_voices_v3(filter = nil)
106
+ query = filter.respond_to?(:to_h) ? filter.to_h : filter
107
+ JSON.parse(request_json(:get, "/v3/voices", nil, query).body).map { |item| Models::VoiceV3.from_h(item) }
108
+ end
109
+
110
+ def get_voice_v3(voice_id)
111
+ Models::VoiceV3.from_h(JSON.parse(request_json(:get, "/v3/voices/#{path_segment(voice_id)}").body))
112
+ end
113
+
105
114
  # Recommends voices from a text description.
106
115
  #
107
116
  # Results only include voice_id, voice_name, and score. Use get_voice_v2 or
@@ -116,15 +125,31 @@ module Typecast
116
125
 
117
126
  def clone_voice(audio:, filename:, name:, model:)
118
127
  validate_clone_inputs(audio, name)
119
- response = request_multipart("/v1/voices/clone", audio: audio, filename: filename, fields: { name: name, model: model })
128
+ response = request_multipart("/v1/custom-voices/instant-clone", audio: audio, filename: filename, fields: { name: name, model: model })
120
129
  Models::CustomVoice.from_h(JSON.parse(response.body))
121
130
  end
122
131
 
123
132
  def delete_voice(voice_id)
124
- request_raw(:delete, "/v1/voices/#{path_segment(voice_id)}")
133
+ request_raw(:delete, "/v1/custom-voices/#{path_segment(voice_id)}")
125
134
  nil
126
135
  end
127
136
 
137
+ # Starts an asynchronous professional custom-voice clone. Poll
138
+ # get_custom_voice until status is "completed" or "failed".
139
+ def create_professional_voice(audio:, filename:, name:, language:, model:)
140
+ validate_clone_inputs(audio, name)
141
+ response = request_multipart("/v1/custom-voices/professional-clone", audio: audio, filename: filename, fields: { name: name, language: language, model: model }, file_field: "files")
142
+ Models::CustomVoice.from_h(JSON.parse(response.body))
143
+ end
144
+
145
+ def get_custom_voices
146
+ JSON.parse(request_json(:get, "/v1/custom-voices").body).map { |item| Models::CustomVoice.from_h(item) }
147
+ end
148
+
149
+ def get_custom_voice(voice_id)
150
+ Models::CustomVoice.from_h(JSON.parse(request_json(:get, "/v1/custom-voices/#{path_segment(voice_id)}").body))
151
+ end
152
+
128
153
  private
129
154
 
130
155
  def inferred_output(path)
@@ -154,7 +179,7 @@ module Typecast
154
179
  response
155
180
  end
156
181
 
157
- def request_multipart(path, audio:, filename:, fields:)
182
+ def request_multipart(path, audio:, filename:, fields:, file_field: "file")
158
183
  boundary = "typecast-ruby-#{SecureRandom.hex(8)}"
159
184
  body = +""
160
185
  fields.each do |name, value|
@@ -166,7 +191,7 @@ module Typecast
166
191
  end
167
192
  safe_filename = disposition_value(filename)
168
193
  body << "--#{boundary}\r\n"
169
- body << "Content-Disposition: form-data; name=\"file\"; filename=\"#{safe_filename}\"\r\n"
194
+ body << "Content-Disposition: form-data; name=\"#{disposition_value(file_field)}\"; filename=\"#{safe_filename}\"\r\n"
170
195
  body << "Content-Type: application/octet-stream\r\n\r\n"
171
196
  body << audio
172
197
  body << "\r\n--#{boundary}--\r\n"
@@ -179,6 +179,17 @@ module Typecast
179
179
  end
180
180
  end
181
181
 
182
+ class VoiceV3
183
+ attr_reader :voice_id, :voice_name, :models, :voice_type, :gender, :age, :use_cases, :preview_url
184
+ def self.from_h(hash)
185
+ new(voice_id: hash.fetch("voice_id", ""), voice_name: hash.fetch("voice_name", { "eng" => "", "kor" => "" }), models: hash.fetch("models", []), voice_type: hash.fetch("voice_type", ""), gender: hash["gender"], age: hash["age"], use_cases: hash.fetch("use_cases", []), preview_url: hash["preview_url"])
186
+ end
187
+ def initialize(voice_id:, voice_name:, models:, voice_type:, gender: nil, age: nil, use_cases: [], preview_url: nil)
188
+ @voice_id, @voice_name, @models, @voice_type = voice_id, voice_name, models, voice_type
189
+ @gender, @age, @use_cases, @preview_url = gender, age, use_cases, preview_url
190
+ end
191
+ end
192
+
182
193
  class RecommendedVoice
183
194
  attr_reader :voice_id, :voice_name, :score
184
195
 
@@ -216,16 +227,20 @@ module Typecast
216
227
  end
217
228
 
218
229
  class CustomVoice
219
- attr_reader :voice_id, :name, :model
230
+ attr_reader :voice_id, :name, :model, :source, :status, :error, :created_at
220
231
 
221
232
  def self.from_h(hash)
222
- new(voice_id: hash.fetch("voice_id", ""), name: hash.fetch("name", ""), model: hash["model"])
233
+ new(voice_id: hash.fetch("voice_id", ""), name: hash.fetch("name", ""), model: hash["model"], source: hash["source"], status: hash["status"], error: hash["error"], created_at: hash["created_at"])
223
234
  end
224
235
 
225
- def initialize(voice_id:, name:, model: nil)
236
+ def initialize(voice_id:, name:, model: nil, source: nil, status: nil, error: nil, created_at: nil)
226
237
  @voice_id = voice_id
227
238
  @name = name
228
239
  @model = model
240
+ @source = source
241
+ @status = status
242
+ @error = error
243
+ @created_at = created_at
229
244
  end
230
245
  end
231
246
 
@@ -1,3 +1,3 @@
1
1
  module Typecast
2
- VERSION = "0.1.9"
2
+ VERSION = "0.1.10"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typecast-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neosapience