runapi-fish-audio 0.1.0 → 0.1.1

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: 461ea948c2ab38055fcdb01571c33d22f892eddee856fd685f9e72cd7aeaddcf
4
- data.tar.gz: da42010da43a52562f1159ebcd8439223f84f78b681ce1c8280175fe9892a300
3
+ metadata.gz: cfb631d0368ab26bf4b041c94a3f17a67c6371472cf66a330c7285ab6f295eb9
4
+ data.tar.gz: 2a7a4ae65cf5967789821216c08bee02e5ee4490b68c98671f0e6b5b70b04a14
5
5
  SHA512:
6
- metadata.gz: 2ef0fb7d175cfa3efa25be84efbdbbd7fca032f68763cb247d8f3d808fd0ebc2172f195eb06ffdefed9419af49b9f35b78bf6023b2cd67c9b234fb731cb1c259
7
- data.tar.gz: bcd977a38eadedd99c733a847d7d4ae05cbe6d140a9424bf957508b16b2a8682b0d0e594287ed77ec5041205d2f824f77920056a39c5c1b962b39b7af291b2cb
6
+ metadata.gz: a513c8ae400fd2f7cb6e636f67f88312e567847755e8d058f3919c7abeafadc9b7a3b67737f595fe658ad1c199a9fbb9d19949e7ea812a92370a850863ac67f6
7
+ data.tar.gz: 2d757ba2e2daccec6dcad85e810b25583d44382694246b20e11d3a29a3a2dc114881656e5f1280872c4ab7ca9b00874053cbc7eac09087f3b8bd4318afc3b7bf
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Install `runapi-fish-audio`, create `RunApi::FishAudio::Client`, and call `client.text_to_speech.run(model: "s1", text: "Hello")`.
4
4
 
5
+ Pass optional `references` entries with base64-encoded raw audio bytes and exact transcripts for request-scoped voice matching.
6
+
5
7
  Model details and pricing: https://runapi.ai/models/fish-audio
6
8
 
7
9
  Licensed under the Apache License, Version 2.0.
@@ -17,8 +17,28 @@ module RunApi
17
17
  def run(options: nil, **params)
18
18
  params = compact_params(params)
19
19
  validate_contract!(CONTRACT["text-to-speech"], params)
20
+ validate_references!(params[:references])
20
21
  request(:post, ENDPOINT, body: params, options: options)
21
22
  end
23
+
24
+ private
25
+
26
+ def validate_references!(references)
27
+ return if references.nil?
28
+ raise Core::ValidationError, "references must be an array" unless references.is_a?(Array)
29
+
30
+ references.each_with_index do |reference, index|
31
+ raise Core::ValidationError, "references[#{index}] must be an object" unless reference.respond_to?(:key?)
32
+
33
+ %i[audio text].each do |field|
34
+ value = reference[field] || reference[field.to_s]
35
+ if value.nil? || (value.is_a?(String) && value.strip.empty?)
36
+ raise Core::ValidationError, "references[#{index}].#{field} is required"
37
+ end
38
+ raise Core::ValidationError, "references[#{index}].#{field} must be a string" unless value.is_a?(String)
39
+ end
40
+ end
41
+ end
22
42
  end
23
43
  end
24
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runapi-fish-audio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - RunAPI
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.2.13
18
+ version: 0.2.14
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 0.2.13
25
+ version: 0.2.14
26
26
  description: 'Install `runapi-fish-audio`, create `RunApi::FishAudio::Client`, and
27
27
  call `client.text_to_speech.run(model: "s1", text: "Hello")`.'
28
28
  email: