@clipwright/core 0.34.0 → 0.36.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.
- package/README.md +6 -3
- package/dist/account-actors.d.ts +173 -15
- package/dist/account-actors.js +142 -11
- package/dist/account-actors.js.map +1 -1
- package/dist/actor-bounds.d.ts +4 -0
- package/dist/actor-bounds.js +4 -0
- package/dist/actor-bounds.js.map +1 -1
- package/dist/actors.d.ts +31 -0
- package/dist/actors.js +26 -0
- package/dist/actors.js.map +1 -1
- package/dist/api-failure.d.ts +1 -1
- package/dist/api-failure.js +2 -2
- package/dist/api-failure.js.map +1 -1
- package/dist/aspect.d.ts +1 -1
- package/dist/aspect.js +5 -5
- package/dist/aspect.js.map +1 -1
- package/dist/assets.d.ts +30 -6
- package/dist/assets.js +26 -8
- package/dist/assets.js.map +1 -1
- package/dist/billing-terms.d.ts +69 -0
- package/dist/billing-terms.js +8 -0
- package/dist/billing-terms.js.map +1 -1
- package/dist/canvas-fit.js +1 -1
- package/dist/canvas-fit.js.map +1 -1
- package/dist/contract-dispositions.d.ts +493 -9
- package/dist/contract-dispositions.js +38 -14
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/contracts/v1/workflow-brief.d.ts +1441 -0
- package/dist/contracts/v1/workflow-brief.js +4 -0
- package/dist/contracts/v1/workflow-brief.js.map +1 -1
- package/dist/contracts/v1/workflow-catalog.d.ts +2181 -103
- package/dist/contracts/v1/workflow-catalog.js +4 -2
- package/dist/contracts/v1/workflow-catalog.js.map +1 -1
- package/dist/contracts/v1/workflow-client.d.ts +1673 -3
- package/dist/contracts/v1/workflow-client.js +6 -3
- package/dist/contracts/v1/workflow-client.js.map +1 -1
- package/dist/contracts/v1/workflow-execution.d.ts +164 -12
- package/dist/contracts/v1/workflow-execution.js +15 -7
- package/dist/contracts/v1/workflow-execution.js.map +1 -1
- package/dist/contracts/v1/workflow-plan.d.ts +3228 -140
- package/dist/contracts/v1/workflow-primitives.d.ts +3 -1
- package/dist/contracts/v1/workflow-primitives.js +1 -1
- package/dist/contracts/v1/workflow-primitives.js.map +1 -1
- package/dist/contracts/v1/workflow-run-read.d.ts +116 -3
- package/dist/edit-billing.d.ts +12 -0
- package/dist/edit-billing.js +7 -0
- package/dist/edit-billing.js.map +1 -1
- package/dist/edit-candidate.d.ts +2 -2
- package/dist/edit-candidate.js +2 -2
- package/dist/edit-candidate.js.map +1 -1
- package/dist/edit-long-form.d.ts +3 -3
- package/dist/edit-long-form.js +14 -4
- package/dist/edit-long-form.js.map +1 -1
- package/dist/edit-revision.d.ts +1 -1
- package/dist/edit-revision.js +1 -1
- package/dist/edit-revision.js.map +1 -1
- package/dist/endpoint-notes.d.ts +3 -0
- package/dist/endpoint-notes.js +70 -0
- package/dist/endpoint-notes.js.map +1 -0
- package/dist/endpoints.d.ts +4 -0
- package/dist/endpoints.js +16 -0
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +2 -2
- package/dist/errors.js +11 -2
- package/dist/errors.js.map +1 -1
- package/dist/face-billing.d.ts +55 -0
- package/dist/face-billing.js +24 -2
- package/dist/face-billing.js.map +1 -1
- package/dist/face-delivery.d.ts +1 -1
- package/dist/face-delivery.js +1 -1
- package/dist/face-delivery.js.map +1 -1
- package/dist/faceless-media-record.d.ts +1 -1
- package/dist/faceless-media-record.js +1 -1
- package/dist/faceless-media-record.js.map +1 -1
- package/dist/faceless-price.d.ts +49 -6
- package/dist/faceless-price.js +44 -10
- package/dist/faceless-price.js.map +1 -1
- package/dist/faceless-public-plan.d.ts +6 -2
- package/dist/faceless-public-plan.js +11 -7
- package/dist/faceless-public-plan.js.map +1 -1
- package/dist/faceless-public.d.ts +7 -2
- package/dist/faceless-public.js +5 -5
- package/dist/faceless-public.js.map +1 -1
- package/dist/faceless-voices.d.ts +6 -6
- package/dist/faceless-voices.js +5 -5
- package/dist/faceless-voices.js.map +1 -1
- package/dist/feedback.d.ts +29 -0
- package/dist/feedback.js +29 -0
- package/dist/feedback.js.map +1 -0
- package/dist/generations.d.ts +2 -19
- package/dist/generations.js +28 -49
- package/dist/generations.js.map +1 -1
- package/dist/idempotency.d.ts +2 -0
- package/dist/idempotency.js +7 -4
- package/dist/idempotency.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/long-form-pricing.d.ts +7 -4
- package/dist/long-form-pricing.js +13 -10
- package/dist/long-form-pricing.js.map +1 -1
- package/dist/long-form-revision.js +1 -1
- package/dist/long-form-revision.js.map +1 -1
- package/dist/media-timebase.js +2 -2
- package/dist/media-timebase.js.map +1 -1
- package/dist/openapi.d.ts +155 -0
- package/dist/openapi.js +339 -0
- package/dist/openapi.js.map +1 -0
- package/dist/pacing.d.ts +15 -0
- package/dist/pacing.js +30 -0
- package/dist/pacing.js.map +1 -1
- package/dist/parts-pricing.d.ts +84 -0
- package/dist/parts-pricing.js +105 -0
- package/dist/parts-pricing.js.map +1 -0
- package/dist/presenter-beats.d.ts +45 -0
- package/dist/presenter-beats.js +144 -0
- package/dist/presenter-beats.js.map +1 -0
- package/dist/prices.d.ts +98 -0
- package/dist/prices.js +193 -0
- package/dist/prices.js.map +1 -0
- package/dist/public-responses.d.ts +23 -0
- package/dist/public-responses.js +11 -0
- package/dist/public-responses.js.map +1 -0
- package/dist/rate-limit.d.ts +2 -2
- package/dist/rate-limit.js +2 -2
- package/dist/rate-limit.js.map +1 -1
- package/dist/reference-analysis.d.ts +915 -0
- package/dist/reference-analysis.js +210 -0
- package/dist/reference-analysis.js.map +1 -0
- package/dist/reference-kinds.d.ts +8 -0
- package/dist/reference-kinds.js +10 -0
- package/dist/reference-kinds.js.map +1 -0
- package/dist/reference-profile.d.ts +671 -0
- package/dist/reference-profile.js +198 -0
- package/dist/reference-profile.js.map +1 -0
- package/dist/reference-staging.d.ts +583 -0
- package/dist/reference-staging.js +153 -0
- package/dist/reference-staging.js.map +1 -0
- package/dist/reference-voice.d.ts +305 -0
- package/dist/reference-voice.js +108 -0
- package/dist/reference-voice.js.map +1 -0
- package/dist/render-backend.d.ts +1 -1
- package/dist/resolved-timeline.d.ts +54 -2
- package/dist/resolved-timeline.js +52 -6
- package/dist/resolved-timeline.js.map +1 -1
- package/dist/run-static-warnings.js +15 -6
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +78 -6
- package/dist/runs.js +9 -4
- package/dist/runs.js.map +1 -1
- package/dist/semantic-inserts.d.ts +1 -1
- package/dist/semantic-inserts.js +2 -2
- package/dist/semantic-inserts.js.map +1 -1
- package/dist/skills.d.ts +1810 -29
- package/dist/skills.js +148 -35
- package/dist/skills.js.map +1 -1
- package/dist/templates/callout.d.ts +2 -2
- package/dist/templates/callout.js +6 -6
- package/dist/templates/callout.js.map +1 -1
- package/dist/templates/checklist.js +2 -2
- package/dist/templates/checklist.js.map +1 -1
- package/dist/templates/index.d.ts +15 -8
- package/dist/templates/index.js +30 -18
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/notification.js +2 -2
- package/dist/templates/notification.js.map +1 -1
- package/dist/templates/phone-call.d.ts +3 -0
- package/dist/templates/phone-call.js +14 -7
- package/dist/templates/phone-call.js.map +1 -1
- package/dist/templates/progress.js +2 -2
- package/dist/templates/progress.js.map +1 -1
- package/dist/templates/size.d.ts +1 -1
- package/dist/templates/size.js +1 -1
- package/dist/templates/size.js.map +1 -1
- package/dist/templates/sounds.d.ts +357 -7
- package/dist/templates/sounds.js +34 -12
- package/dist/templates/sounds.js.map +1 -1
- package/dist/ugc-call.d.ts +89 -0
- package/dist/ugc-call.js +111 -0
- package/dist/ugc-call.js.map +1 -0
- package/dist/ugc-delivery.d.ts +1 -1
- package/dist/ugc-delivery.js +1 -1
- package/dist/ugc-delivery.js.map +1 -1
- package/dist/ugc-framing.d.ts +26 -0
- package/dist/ugc-framing.js +64 -0
- package/dist/ugc-framing.js.map +1 -0
- package/dist/ugc-layers.d.ts +5 -1
- package/dist/ugc-layers.js +6 -1
- package/dist/ugc-layers.js.map +1 -1
- package/dist/ugc-video-media.d.ts +1 -1
- package/dist/ugc-video-media.js +1 -1
- package/dist/ugc-video-media.js.map +1 -1
- package/dist/uploads.d.ts +2 -2
- package/dist/uploads.js +2 -2
- package/dist/uploads.js.map +1 -1
- package/dist/vendor-response.d.ts +4 -0
- package/dist/vendor-response.js +12 -0
- package/dist/vendor-response.js.map +1 -1
- package/dist/voice-admission.d.ts +836 -420
- package/dist/voice-admission.js +22 -5
- package/dist/voice-admission.js.map +1 -1
- package/dist/voice-listing.d.ts +4 -4
- package/dist/voice-listing.js +11 -6
- package/dist/voice-listing.js.map +1 -1
- package/dist/voice-pace.d.ts +34 -0
- package/dist/voice-pace.generated.json +72 -0
- package/dist/voice-pace.js +34 -0
- package/dist/voice-pace.js.map +1 -0
- package/dist/voices.d.ts +32 -19
- package/dist/voices.js +81 -35
- package/dist/voices.js.map +1 -1
- package/dist/workflows/catalog.js +2 -1
- package/dist/workflows/catalog.js.map +1 -1
- package/dist/workflows/index.d.ts +2 -0
- package/dist/workflows/index.js +2 -0
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/methods/faceless-explainer.d.ts +388 -10
- package/dist/workflows/methods/kinetic-launch.d.ts +388 -10
- package/dist/workflows/methods/kinetic-launch.js +1 -1
- package/dist/workflows/methods/product-image-story.d.ts +388 -10
- package/dist/workflows/methods/reference-remake.d.ts +881 -0
- package/dist/workflows/methods/reference-remake.js +26 -0
- package/dist/workflows/methods/reference-remake.js.map +1 -0
- package/dist/workflows/methods/shared.d.ts +388 -10
- package/dist/workflows/methods/shared.js +2 -2
- package/dist/workflows/methods/shared.js.map +1 -1
- package/dist/workflows/methods/ugc-faq-answer.d.ts +388 -10
- package/dist/workflows/methods/ugc-product-intro.d.ts +388 -10
- package/dist/workflows/methods/website-proof-demo.d.ts +388 -10
- package/dist/workflows/methods/website-proof-demo.js +1 -1
- package/dist/workflows/reference-remake.d.ts +684 -0
- package/dist/workflows/reference-remake.js +602 -0
- package/dist/workflows/reference-remake.js.map +1 -0
- package/dist/workflows/validate.js +10 -7
- package/dist/workflows/validate.js.map +1 -1
- package/package.json +9 -4
- package/CHANGELOG.md +0 -1393
package/dist/voice-admission.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { serverUgcInputWith } from "./skills.js";
|
|
2
3
|
import { makeFacelessInput } from "./faceless-public.js";
|
|
3
4
|
import { isFacelessVoiceName } from "./faceless-voices.js";
|
|
4
5
|
import { normalizeVoiceLabel } from "./voice-catalog.js";
|
|
5
6
|
import { VOICE_CATALOG } from "./voice-catalog-data.js";
|
|
6
7
|
import { vendorVerifiedModels } from "./voice-listing.js";
|
|
7
|
-
import { isModelVoiceName, isVoicePresetName, MODEL_VOICES, resolveTtsModel,
|
|
8
|
+
import { isModelVoiceName, isVoicePresetName, MODEL_VOICES, resolveTtsModel, voicePresetOf, withPublishedPresetsOnly, } from "./voices.js";
|
|
8
9
|
// A subpath, not the barrel: the catalog weighs hundreds of kilobytes and SDK clients do not need it.
|
|
9
10
|
/** Why the API refuses a voice name; `undefined` for a preset, a model's own voice or a live catalog voice. */
|
|
10
|
-
|
|
11
|
+
/** A server's own preset is admitted only with `serviceVoices`; otherwise it reads as an unknown name. */
|
|
12
|
+
export function catalogVoiceRefusal(voice, voices = VOICE_CATALOG.voices, options = {}) {
|
|
11
13
|
if (isVoicePresetName(voice) || isModelVoiceName(voice))
|
|
12
14
|
return undefined;
|
|
15
|
+
if (options.serviceVoices === true && voicePresetOf(voice) !== undefined)
|
|
16
|
+
return undefined;
|
|
13
17
|
if (isFacelessVoiceName(voice)) {
|
|
14
18
|
return (`voice "${voice}" is a make_faceless voice and make_ugc does not speak it: ` +
|
|
15
19
|
"choose a voice from list_voices with skill=make_ugc, or omit voice for the default voice");
|
|
@@ -25,6 +29,18 @@ export function catalogVoiceRefusal(voice, voices = VOICE_CATALOG.voices) {
|
|
|
25
29
|
return undefined;
|
|
26
30
|
}
|
|
27
31
|
export const serverUgcInput = serverUgcInputWith((voice) => catalogVoiceRefusal(voice));
|
|
32
|
+
/** `schema` parsed in one view of the presets: `published` hides every server preset from every check of the parse, */
|
|
33
|
+
/** `all` shows them. Both views share one type, so a server can pick the view per request. */
|
|
34
|
+
export function inPresetView(schema, view) {
|
|
35
|
+
return z.unknown().transform((raw, context) => {
|
|
36
|
+
const parsed = view === "published" ? withPublishedPresetsOnly(() => schema.safeParse(raw)) : schema.safeParse(raw);
|
|
37
|
+
if (parsed.success)
|
|
38
|
+
return parsed.data;
|
|
39
|
+
for (const issue of parsed.error.issues)
|
|
40
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: issue.message, path: issue.path });
|
|
41
|
+
return z.NEVER;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
28
44
|
/** Why `make_faceless` refuses a voice name; `undefined` for one of its own voices. */
|
|
29
45
|
/** A retired catalog slug still reads as a `make_ugc` voice: the name was never a faceless one. */
|
|
30
46
|
export function facelessVoiceRefusal(voice, voices = VOICE_CATALOG.voices) {
|
|
@@ -41,8 +57,9 @@ export const serverFacelessInput = makeFacelessInput.refine((input) => input.voi
|
|
|
41
57
|
/** Voice gender by name: our fact for a preset, the vendor label for a catalog voice. */
|
|
42
58
|
/** A raw `voice_id` has no gender, so `undefined`, not a guess. */
|
|
43
59
|
export function voiceGenderOf(voice, voices = VOICE_CATALOG.voices) {
|
|
44
|
-
|
|
45
|
-
|
|
60
|
+
const preset = voicePresetOf(voice);
|
|
61
|
+
if (preset !== undefined)
|
|
62
|
+
return preset.gender;
|
|
46
63
|
if (isModelVoiceName(voice)) {
|
|
47
64
|
const own = MODEL_VOICES[voice];
|
|
48
65
|
return own.gender;
|
|
@@ -55,7 +72,7 @@ export function voiceGenderOf(voice, voices = VOICE_CATALOG.voices) {
|
|
|
55
72
|
/** has it at all. */
|
|
56
73
|
export function buildVoiceVerificationWarnings(input, gender, voices = VOICE_CATALOG.voices) {
|
|
57
74
|
const slug = input.voice;
|
|
58
|
-
if (slug === undefined ||
|
|
75
|
+
if (slug === undefined || voicePresetOf(slug) !== undefined)
|
|
59
76
|
return [];
|
|
60
77
|
const entry = voices.find((voice) => voice.slug === slug && voice.retired_at === undefined);
|
|
61
78
|
if (entry === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-admission.js","sourceRoot":"","sources":["../src/voice-admission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,aAAa,
|
|
1
|
+
{"version":3,"file":"voice-admission.js","sourceRoot":"","sources":["../src/voice-admission.ts"],"names":[],"mappings":"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"}
|
package/dist/voice-listing.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { type CatalogFileVoice, type TtsModelLanguagesFile, type VoiceCatalogFile, type VoicesQuery } from "./voice-catalog.js";
|
|
3
|
-
import { TTS_MODELS, type VoiceCatalogEntry } from "./voices.js";
|
|
3
|
+
import { TTS_MODELS, type VoiceCatalogEntry, type VoicePreset } from "./voices.js";
|
|
4
4
|
export { TTS_MODEL_LANGUAGES, VOICE_CATALOG } from "./voice-catalog-data.js";
|
|
5
5
|
/** Languages of a model outside the generated snapshot: the ones we measured, not the vendor's list. */
|
|
6
6
|
export declare const MEASURED_MODEL_LANGUAGES: Readonly<Record<string, readonly string[]>>;
|
|
@@ -120,9 +120,9 @@ export declare const serverVoicesQuery: z.ZodObject<{
|
|
|
120
120
|
[x: string]: string;
|
|
121
121
|
}>>;
|
|
122
122
|
}, z.core.$strip>;
|
|
123
|
-
/** The voices of one skill
|
|
124
|
-
/** voices by language and rank. A field
|
|
125
|
-
export declare function listVoices(query: VoicesQuery, catalog?: VoiceCatalogFile, modelLanguages?: TtsModelLanguagesFile): {
|
|
123
|
+
/** The voices of one skill (`make_ugc` by default): presets, then `servicePresets` the server names for this caller, then a model's */
|
|
124
|
+
/** own and live catalog voices by language and rank. A missing field matches nothing, except `language`, which falls back to its model's. */
|
|
125
|
+
export declare function listVoices(query: VoicesQuery, catalog?: VoiceCatalogFile, modelLanguages?: TtsModelLanguagesFile, servicePresets?: Readonly<Record<string, VoicePreset>>): {
|
|
126
126
|
voices: VoiceCatalogEntry[];
|
|
127
127
|
models: {
|
|
128
128
|
id: string;
|
package/dist/voice-listing.js
CHANGED
|
@@ -2,9 +2,9 @@ import { z } from "zod";
|
|
|
2
2
|
import { CATALOG_LANGUAGES, normalizeVoiceLabel, VOICES_QUERY_FIELDS, voicesQueryShape, } from "./voice-catalog.js";
|
|
3
3
|
import { TTS_MODEL_LANGUAGES, VOICE_CATALOG } from "./voice-catalog-data.js";
|
|
4
4
|
import { FACELESS_SPEECH_MODEL, FACELESS_VOICE_NAMES, FACELESS_VOICES } from "./faceless-voices.js";
|
|
5
|
+
import { measuredPaceOf, VOICE_PACE } from "./voice-pace.js";
|
|
5
6
|
import { ELEVENLABS_TTS_MODELS, GOOGLE_TTS_MODEL, MODEL_VOICE_NAMES, MODEL_VOICES, resolveTtsModel, TTS_MODEL_CHAR_CAP, TTS_MODELS, VOICE_PRESETS, } from "./voices.js";
|
|
6
7
|
// A subpath, not the barrel: the list reads the catalog, which SDK clients do not need.
|
|
7
|
-
// A weekly worker probe checks the same data against the vendor.
|
|
8
8
|
export { TTS_MODEL_LANGUAGES, VOICE_CATALOG } from "./voice-catalog-data.js";
|
|
9
9
|
const isLive = (voice) => voice.retired_at === undefined;
|
|
10
10
|
/** Languages of a model outside the generated snapshot: the ones we measured, not the vendor's list. */
|
|
@@ -30,13 +30,13 @@ export function serverVoicesQueryFor(voices = VOICE_CATALOG.voices) {
|
|
|
30
30
|
}
|
|
31
31
|
export const serverVoicesQuery = serverVoicesQueryFor();
|
|
32
32
|
const presentText = (raw) => raw?.trim() || undefined;
|
|
33
|
-
/** The voices of one skill
|
|
34
|
-
/** voices by language and rank. A field
|
|
35
|
-
export function listVoices(query, catalog = VOICE_CATALOG, modelLanguages = TTS_MODEL_LANGUAGES) {
|
|
33
|
+
/** The voices of one skill (`make_ugc` by default): presets, then `servicePresets` the server names for this caller, then a model's */
|
|
34
|
+
/** own and live catalog voices by language and rank. A missing field matches nothing, except `language`, which falls back to its model's. */
|
|
35
|
+
export function listVoices(query, catalog = VOICE_CATALOG, modelLanguages = TTS_MODEL_LANGUAGES, servicePresets = {}) {
|
|
36
36
|
const languagesOf = (id) => modelLanguages.models.find((model) => model.id === id)?.languages ?? [...(MEASURED_MODEL_LANGUAGES[id] ?? [])];
|
|
37
37
|
// Presets and catalog voices are ElevenLabs voices: a model of another vendor never supports them.
|
|
38
38
|
const supportedModels = (language) => ELEVENLABS_TTS_MODELS.filter((id) => languagesOf(id).includes(language));
|
|
39
|
-
const presets = Object.entries(VOICE_PRESETS).map(([name, preset]) => ({
|
|
39
|
+
const presets = [...Object.entries(VOICE_PRESETS), ...Object.entries(servicePresets)].map(([name, preset]) => ({
|
|
40
40
|
name,
|
|
41
41
|
kind: "preset",
|
|
42
42
|
skill: "make_ugc",
|
|
@@ -89,8 +89,13 @@ export function listVoices(query, catalog = VOICE_CATALOG, modelLanguages = TTS_
|
|
|
89
89
|
return languagesOf(entry.model).includes(wanted);
|
|
90
90
|
return entry[field] === wanted;
|
|
91
91
|
});
|
|
92
|
+
// A pace holds for the model it was measured on (#890).
|
|
93
|
+
const withPace = (entry) => {
|
|
94
|
+
const measured = entry.model === VOICE_PACE.model ? measuredPaceOf(entry.name) : undefined;
|
|
95
|
+
return measured ? { ...entry, words_per_second: measured.words_per_second } : entry;
|
|
96
|
+
};
|
|
92
97
|
return {
|
|
93
|
-
voices: [...presets, ...modelVoices, ...facelessVoices, ...catalogVoices].filter(matches),
|
|
98
|
+
voices: [...presets, ...modelVoices, ...facelessVoices, ...catalogVoices].filter(matches).map(withPace),
|
|
94
99
|
models: TTS_MODELS.map((id) => ({
|
|
95
100
|
id,
|
|
96
101
|
char_limit: TTS_MODEL_CHAR_CAP[id],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-listing.js","sourceRoot":"","sources":["../src/voice-listing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GAKjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,aAAa,
|
|
1
|
+
{"version":3,"file":"voice-listing.js","sourceRoot":"","sources":["../src/voice-listing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const voicePaceFile: z.ZodObject<{
|
|
3
|
+
model: z.ZodString;
|
|
4
|
+
language: z.ZodLiteral<"en">;
|
|
5
|
+
measured_at: z.ZodISODateTime;
|
|
6
|
+
voices: z.ZodArray<z.ZodObject<{
|
|
7
|
+
voice: z.ZodString;
|
|
8
|
+
gender: z.ZodEnum<{
|
|
9
|
+
female: "female";
|
|
10
|
+
male: "male";
|
|
11
|
+
}>;
|
|
12
|
+
words_per_second: z.ZodNumber;
|
|
13
|
+
}, z.core.$strict>>;
|
|
14
|
+
}, z.core.$strict>;
|
|
15
|
+
export declare const VOICE_PACE: {
|
|
16
|
+
model: string;
|
|
17
|
+
language: "en";
|
|
18
|
+
measured_at: string;
|
|
19
|
+
voices: {
|
|
20
|
+
voice: string;
|
|
21
|
+
gender: "female" | "male";
|
|
22
|
+
words_per_second: number;
|
|
23
|
+
}[];
|
|
24
|
+
};
|
|
25
|
+
export type MeasuredVoicePace = (typeof VOICE_PACE.voices)[number];
|
|
26
|
+
export declare const VOICE_PACE_RANGE: string;
|
|
27
|
+
/** A named voice within this share of the reference pace gets no note: two takes of one voice already differ by more. */
|
|
28
|
+
export declare const PACE_MATCH_SHARE = 0.05;
|
|
29
|
+
/** The voice's measured pace on English, or undefined when it was not measured. */
|
|
30
|
+
export declare function measuredPaceOf(voice: string | undefined): MeasuredVoicePace | undefined;
|
|
31
|
+
/** Paces hold for English only: ASCII Latin is not enough (unaccented Spanish passes it), so English function words must make up 15%. */
|
|
32
|
+
export declare function isEnglishScript(script: string, asciiLatin: boolean): boolean;
|
|
33
|
+
/** Measured voices nearest `target` words/s, of one gender when it is named, leaving out `except`. */
|
|
34
|
+
export declare function voicesNearestPace(target: number, gender?: MeasuredVoicePace["gender"], limit?: number, except?: string): MeasuredVoicePace[];
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"model": "eleven_v4",
|
|
3
|
+
"language": "en",
|
|
4
|
+
"measured_at": "2026-10-27T23:05:02.990Z",
|
|
5
|
+
"voices": [
|
|
6
|
+
{
|
|
7
|
+
"voice": "en_male_mark",
|
|
8
|
+
"gender": "male",
|
|
9
|
+
"words_per_second": 3.58
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"voice": "eric",
|
|
13
|
+
"gender": "male",
|
|
14
|
+
"words_per_second": 3.52
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"voice": "en_male_michael_c_vincent",
|
|
18
|
+
"gender": "male",
|
|
19
|
+
"words_per_second": 3.51
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"voice": "en_female_cassidy",
|
|
23
|
+
"gender": "female",
|
|
24
|
+
"words_per_second": 3.48
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"voice": "en_male_james",
|
|
28
|
+
"gender": "male",
|
|
29
|
+
"words_per_second": 3.36
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"voice": "en_male_adam",
|
|
33
|
+
"gender": "male",
|
|
34
|
+
"words_per_second": 3.33
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"voice": "sarah",
|
|
38
|
+
"gender": "female",
|
|
39
|
+
"words_per_second": 3.33
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"voice": "en_female_amelia",
|
|
43
|
+
"gender": "female",
|
|
44
|
+
"words_per_second": 3.29
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"voice": "en_female_jane",
|
|
48
|
+
"gender": "female",
|
|
49
|
+
"words_per_second": 3.28
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"voice": "george",
|
|
53
|
+
"gender": "male",
|
|
54
|
+
"words_per_second": 3.27
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"voice": "en_female_hope",
|
|
58
|
+
"gender": "female",
|
|
59
|
+
"words_per_second": 3.24
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"voice": "en_female_jessica_anne_bogart",
|
|
63
|
+
"gender": "female",
|
|
64
|
+
"words_per_second": 3.19
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"voice": "en_male_spuds_oxley",
|
|
68
|
+
"gender": "male",
|
|
69
|
+
"words_per_second": 3.09
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import paceJson from "./voice-pace.generated.json" with { type: "json" };
|
|
3
|
+
// English make_ugc voices on eleven_v4, which has no speed (#890): words/s over sentence spans, as the reference presenter is measured.
|
|
4
|
+
// Measured on live takes; two takes differ by up to 11%.
|
|
5
|
+
export const voicePaceFile = z.strictObject({
|
|
6
|
+
model: z.string().min(1),
|
|
7
|
+
language: z.literal("en"),
|
|
8
|
+
measured_at: z.iso.datetime(),
|
|
9
|
+
voices: z.array(z.strictObject({ voice: z.string().min(1), gender: z.enum(["female", "male"]), words_per_second: z.number().positive() })).min(1),
|
|
10
|
+
});
|
|
11
|
+
export const VOICE_PACE = voicePaceFile.parse(paceJson);
|
|
12
|
+
const paceByVoice = new Map(VOICE_PACE.voices.map(entry => [entry.voice, entry]));
|
|
13
|
+
const paces = VOICE_PACE.voices.map(entry => entry.words_per_second);
|
|
14
|
+
export const VOICE_PACE_RANGE = `${Math.min(...paces)}–${Math.max(...paces)}`;
|
|
15
|
+
/** A named voice within this share of the reference pace gets no note: two takes of one voice already differ by more. */
|
|
16
|
+
export const PACE_MATCH_SHARE = 0.05;
|
|
17
|
+
/** The voice's measured pace on English, or undefined when it was not measured. */
|
|
18
|
+
export function measuredPaceOf(voice) {
|
|
19
|
+
return voice === undefined ? undefined : paceByVoice.get(voice);
|
|
20
|
+
}
|
|
21
|
+
const ENGLISH_FUNCTION_WORDS = new Set(("the a an and or but to of in on at for with from by is are was were be it this that these those i you he she we they " +
|
|
22
|
+
"me my your his her our their not no do does did have has had will would can just so if as all what").split(" "));
|
|
23
|
+
/** Paces hold for English only: ASCII Latin is not enough (unaccented Spanish passes it), so English function words must make up 15%. */
|
|
24
|
+
export function isEnglishScript(script, asciiLatin) {
|
|
25
|
+
const words = script.toLowerCase().match(/[a-z']+/g) ?? [];
|
|
26
|
+
return asciiLatin && words.length > 0 && words.filter(word => ENGLISH_FUNCTION_WORDS.has(word)).length >= 0.15 * words.length;
|
|
27
|
+
}
|
|
28
|
+
/** Measured voices nearest `target` words/s, of one gender when it is named, leaving out `except`. */
|
|
29
|
+
export function voicesNearestPace(target, gender, limit = 3, except) {
|
|
30
|
+
return VOICE_PACE.voices.filter(entry => (gender === undefined || entry.gender === gender) && entry.voice !== except)
|
|
31
|
+
.sort((a, b) => Math.abs(a.words_per_second - target) - Math.abs(b.words_per_second - target) || (a.voice < b.voice ? -1 : 1))
|
|
32
|
+
.slice(0, limit);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=voice-pace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-pace.js","sourceRoot":"","sources":["../src/voice-pace.ts"],"names":[],"mappings":"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"}
|
package/dist/voices.d.ts
CHANGED
|
@@ -4,9 +4,12 @@ import type { Gender } from "./default-actor.js";
|
|
|
4
4
|
/** it honored none of the stress-marking methods we measured. */
|
|
5
5
|
export declare const TTS_MODELS: readonly ["eleven_v3", "eleven_flash_v2_5", "eleven_turbo_v2_5", "eleven_v4", "gemini-3.8-flash-tts"];
|
|
6
6
|
export type TtsModelId = (typeof TTS_MODELS)[number];
|
|
7
|
+
/** All ElevenLabs speech goes to v4 since 2026-10-25: it covers every v3 language at the same price. */
|
|
7
8
|
export declare const DEFAULT_TTS_MODEL: TtsModelId;
|
|
8
9
|
/** What Russian speech goes to when the client names no model; `resolveTtsModel` decides what is Russian. */
|
|
9
10
|
export declare const RUSSIAN_TTS_MODEL = "eleven_v4";
|
|
11
|
+
/** Models the contract still accepts but no longer speaks: a run naming one is served on its successor, named in warnings[]. */
|
|
12
|
+
export declare const RETIRED_TTS_MODELS: Readonly<Partial<Record<TtsModelId, TtsModelId>>>;
|
|
10
13
|
/** The model spoken by Google's adapter; contract texts name it through this constant. */
|
|
11
14
|
export declare const GOOGLE_TTS_MODEL = "gemini-3.8-flash-tts";
|
|
12
15
|
/** Whose adapter speaks each model. A model without a row does not compile. */
|
|
@@ -60,7 +63,7 @@ export declare function ttsScriptLimitError(text: string, modelId: string): stri
|
|
|
60
63
|
/** A spoken unit of nothing but break tags leaves a model that cuts them with no text to send. */
|
|
61
64
|
export declare function cutToNothingError(text: string, modelId: TtsModelId): string | undefined;
|
|
62
65
|
/** Voice preset catalog: OUR names and metadata, WITHOUT vendor ids. Names feed `tools/list` */
|
|
63
|
-
/** and SDK types; ids
|
|
66
|
+
/** and SDK types; ids stay on our service. */
|
|
64
67
|
export interface VoicePreset {
|
|
65
68
|
/** Voice language as a short BCP-47-like code (ru/en). */
|
|
66
69
|
language: string;
|
|
@@ -75,29 +78,23 @@ export interface VoicePreset {
|
|
|
75
78
|
/** The starter set of presets. Order matters only for presentation; the default is set */
|
|
76
79
|
/** separately by `DEFAULT_VOICE_PRESET`. */
|
|
77
80
|
export declare const VOICE_PRESETS: {
|
|
78
|
-
readonly owner_ru_clone: {
|
|
79
|
-
readonly language: "ru";
|
|
80
|
-
readonly gender: "male";
|
|
81
|
-
readonly description: "Клон голоса владельца (David-Dmitry-Ru); русский — на английском даёт акцент";
|
|
82
|
-
readonly model: "eleven_v4";
|
|
83
|
-
};
|
|
84
81
|
readonly sarah: {
|
|
85
82
|
readonly language: "en";
|
|
86
83
|
readonly gender: "female";
|
|
87
84
|
readonly description: "Soft, natural female voice (English)";
|
|
88
|
-
readonly model: "
|
|
85
|
+
readonly model: "eleven_v4";
|
|
89
86
|
};
|
|
90
87
|
readonly george: {
|
|
91
88
|
readonly language: "en";
|
|
92
89
|
readonly gender: "male";
|
|
93
90
|
readonly description: "Warm British storyteller, narrative pacing (English)";
|
|
94
|
-
readonly model: "
|
|
91
|
+
readonly model: "eleven_v4";
|
|
95
92
|
};
|
|
96
93
|
readonly eric: {
|
|
97
94
|
readonly language: "en";
|
|
98
95
|
readonly gender: "male";
|
|
99
96
|
readonly description: "Smooth American, conversational tone (English)";
|
|
100
|
-
readonly model: "
|
|
97
|
+
readonly model: "eleven_v4";
|
|
101
98
|
};
|
|
102
99
|
readonly daria_ru_female: {
|
|
103
100
|
readonly language: "ru";
|
|
@@ -113,6 +110,13 @@ export type VoicePresetName = keyof typeof VOICE_PRESETS;
|
|
|
113
110
|
/** The shape of a voice name, not a list: the catalog grows on the server without client releases. */
|
|
114
111
|
export declare const VOICE_NAME_PATTERN: RegExp;
|
|
115
112
|
export declare function isVoicePresetName(name: string): name is VoicePresetName;
|
|
113
|
+
/** Adds presets a server keeps to itself; a published name is refused, so a published preset cannot be replaced. */
|
|
114
|
+
export declare function addServiceVoicePresets(presets: Readonly<Record<string, VoicePreset>>): void;
|
|
115
|
+
/** A preset by name: a published one, then one a server added. Model, gender and warnings read presets through it. */
|
|
116
|
+
export declare function voicePresetOf(name: string): VoicePreset | undefined;
|
|
117
|
+
/** Runs `read` as a published client sees presets: no server preset exists during it, so no check can tell one */
|
|
118
|
+
/** from an unknown name. Synchronous on purpose: nothing else runs while the view holds. */
|
|
119
|
+
export declare function withPublishedPresetsOnly<T>(read: () => T): T;
|
|
116
120
|
/** The `/v1/voices` response as a schema, not a guess on both sides: the server sends a */
|
|
117
121
|
/** body parsed by it and the SDK parses with it. `Array.isArray` let any array through. */
|
|
118
122
|
export declare const voiceCatalogEntry: z.ZodObject<{
|
|
@@ -129,6 +133,7 @@ export declare const voiceCatalogEntry: z.ZodObject<{
|
|
|
129
133
|
model: z.ZodString;
|
|
130
134
|
supported_models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
131
135
|
verified_models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
136
|
+
words_per_second: z.ZodOptional<z.ZodNumber>;
|
|
132
137
|
preview_url: z.ZodOptional<z.ZodURL>;
|
|
133
138
|
preview_expires_at: z.ZodOptional<z.ZodISODateTime>;
|
|
134
139
|
}, z.core.$strip>;
|
|
@@ -154,6 +159,7 @@ export declare const voicesResponse: z.ZodObject<{
|
|
|
154
159
|
model: z.ZodString;
|
|
155
160
|
supported_models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
156
161
|
verified_models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
162
|
+
words_per_second: z.ZodOptional<z.ZodNumber>;
|
|
157
163
|
preview_url: z.ZodOptional<z.ZodURL>;
|
|
158
164
|
preview_expires_at: z.ZodOptional<z.ZodISODateTime>;
|
|
159
165
|
}, z.core.$strip>>;
|
|
@@ -178,8 +184,7 @@ export interface ModelVoice {
|
|
|
178
184
|
description: string;
|
|
179
185
|
gender?: Gender;
|
|
180
186
|
}
|
|
181
|
-
/** The voices of `MODEL_VOICE_MODEL` by OUR names, in the vendor page's order
|
|
182
|
-
/** The worker adapter maps them to the vendor's names. */
|
|
187
|
+
/** The voices of `MODEL_VOICE_MODEL` by OUR names, in the vendor page's order. */
|
|
183
188
|
export declare const MODEL_VOICES: {
|
|
184
189
|
readonly zephyr: {
|
|
185
190
|
readonly description: "Bright";
|
|
@@ -292,13 +297,13 @@ export declare function defaultVoiceOf(modelId: string | undefined, gender: Gend
|
|
|
292
297
|
gender: Gender;
|
|
293
298
|
};
|
|
294
299
|
/** Shape of a raw vendor `voice_id`, deliberately loose (16–32 alphanumerics): the format is */
|
|
295
|
-
/** undocumented. A coarse input filter only; the
|
|
300
|
+
/** undocumented. A coarse input filter only; the run's free preflight checks existence. */
|
|
296
301
|
export declare const VOICE_ID_PATTERN: RegExp;
|
|
297
302
|
/** Resolved voice selection. `preset` carries OUR name, mapped to a vendor id by the adapter; */
|
|
298
303
|
/** `raw` is already a vendor id. Core never knows vendor ids. */
|
|
299
304
|
export type VoiceSelection = {
|
|
300
305
|
kind: "preset";
|
|
301
|
-
preset:
|
|
306
|
+
preset: string;
|
|
302
307
|
} | {
|
|
303
308
|
kind: "catalog";
|
|
304
309
|
slug: string;
|
|
@@ -316,14 +321,22 @@ export declare function resolveVoiceSelection(input: {
|
|
|
316
321
|
voice_id?: string | undefined;
|
|
317
322
|
tts_model?: string | undefined;
|
|
318
323
|
}, gender?: Gender | undefined): VoiceSelection;
|
|
319
|
-
/** Model: explicit `tts_model` → a raw `voice_id` by the script family → the model
|
|
320
|
-
/** voice → the preset's model → a catalog voice by its slug language. `script` is the run's whole text. */
|
|
324
|
+
/** Model: explicit `tts_model` (a retired one → its successor) → a raw `voice_id` by the script family → the model */
|
|
325
|
+
/** of a model's own voice → the preset's model → a catalog voice by its slug language. `script` is the run's whole text. */
|
|
321
326
|
export declare function resolveTtsModel(input: {
|
|
322
327
|
voice?: string | undefined;
|
|
323
328
|
voice_id?: string | undefined;
|
|
324
329
|
tts_model?: TtsModelId | undefined;
|
|
325
330
|
script: string;
|
|
326
331
|
}, gender?: Gender | undefined): TtsModelId;
|
|
332
|
+
/** The model a run admitted before 2026-10-25 spoke: the same order, but a named model as is and eleven_v3 for */
|
|
333
|
+
/** everything not Russian. Stored runs without `resolved_tts_model` are described by it, never by today's default. */
|
|
334
|
+
export declare function ttsModelBeforeV4Default(input: {
|
|
335
|
+
voice?: string | undefined;
|
|
336
|
+
voice_id?: string | undefined;
|
|
337
|
+
tts_model?: TtsModelId | undefined;
|
|
338
|
+
script: string;
|
|
339
|
+
}, gender?: Gender | undefined): TtsModelId;
|
|
327
340
|
/** Script family for the language warning: counts only Cyrillic vs Latin letters. Fewer than */
|
|
328
341
|
/** 2 letters or no side reaching this 60% dominance gives "neutral". */
|
|
329
342
|
export declare const SCRIPT_DOMINANCE_THRESHOLD = 0.6;
|
|
@@ -343,12 +356,12 @@ export declare function buildVoiceWarnings(input: {
|
|
|
343
356
|
voice_id?: string | undefined;
|
|
344
357
|
script: string;
|
|
345
358
|
}): string[];
|
|
346
|
-
/** A model that ignores stress marks or break tags on text that
|
|
347
|
-
/** model that reads both. */
|
|
359
|
+
/** A retired model named by the client, and a model that ignores stress marks or break tags on text that */
|
|
360
|
+
/** carries them. Silent on a model that reads both. `model` is the one spoken: a stored run passes its own. */
|
|
348
361
|
export declare function buildSpeechModelWarnings(input: {
|
|
349
362
|
voice?: string | undefined;
|
|
350
363
|
voice_id?: string | undefined;
|
|
351
364
|
tts_model?: TtsModelId | undefined;
|
|
352
365
|
script: string;
|
|
353
|
-
}, gender?: Gender | undefined): string[];
|
|
366
|
+
}, gender?: Gender | undefined, model?: TtsModelId): string[];
|
|
354
367
|
export {};
|