ugly-app 0.1.647 → 0.1.649
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/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/shared/Pricing.d.ts +63 -0
- package/dist/shared/Pricing.d.ts.map +1 -0
- package/dist/shared/Pricing.js +90 -0
- package/dist/shared/Pricing.js.map +1 -0
- package/dist/shared/ProxyOps.d.ts +94 -0
- package/dist/shared/ProxyOps.d.ts.map +1 -1
- package/dist/shared/ProxyOps.js +37 -0
- package/dist/shared/ProxyOps.js.map +1 -1
- package/dist/shared/TimingTrack.d.ts +21 -0
- package/dist/shared/TimingTrack.d.ts.map +1 -0
- package/dist/shared/TimingTrack.js +119 -0
- package/dist/shared/TimingTrack.js.map +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +2 -0
- package/dist/shared/index.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/shared/Pricing.test.ts +37 -0
- package/src/shared/Pricing.ts +123 -0
- package/src/shared/ProxyOps.ts +38 -0
- package/src/shared/TimingTrack.test.ts +76 -0
- package/src/shared/TimingTrack.ts +162 -0
- package/src/shared/index.ts +2 -0
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.649";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export interface TTSModelInfo {
|
|
2
|
+
/** InWorld model id passed as `modelId` in the synth request. */
|
|
3
|
+
id: string;
|
|
4
|
+
/** Human label for pickers / cost UIs. */
|
|
5
|
+
label: string;
|
|
6
|
+
/** Contracted price in USD per 1,000,000 characters. */
|
|
7
|
+
usdPerMillionChars: number;
|
|
8
|
+
/** Whether the model supports `[direction]` steering markup (TTS-2 only). */
|
|
9
|
+
steering: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const TTS_MODELS: {
|
|
12
|
+
readonly 'inworld-tts-1.5-mini': {
|
|
13
|
+
readonly id: "inworld-tts-1.5-mini";
|
|
14
|
+
readonly label: "TTS 1.5 Mini";
|
|
15
|
+
readonly usdPerMillionChars: 5;
|
|
16
|
+
readonly steering: false;
|
|
17
|
+
};
|
|
18
|
+
readonly 'inworld-tts-1.5-max': {
|
|
19
|
+
readonly id: "inworld-tts-1.5-max";
|
|
20
|
+
readonly label: "TTS 1.5 Max";
|
|
21
|
+
readonly usdPerMillionChars: 10;
|
|
22
|
+
readonly steering: false;
|
|
23
|
+
};
|
|
24
|
+
readonly 'inworld-tts-2': {
|
|
25
|
+
readonly id: "inworld-tts-2";
|
|
26
|
+
readonly label: "TTS-2";
|
|
27
|
+
readonly usdPerMillionChars: 20;
|
|
28
|
+
readonly steering: true;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export type TTSModelId = keyof typeof TTS_MODELS;
|
|
32
|
+
export declare const DEFAULT_TTS_MODEL: TTSModelId;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve InWorld model info from an id, tolerating aliases/variants
|
|
35
|
+
* ('…-max', 'tts-2', etc.) and falling back to the default model.
|
|
36
|
+
*/
|
|
37
|
+
export declare function ttsModelInfo(modelId?: string): TTSModelInfo;
|
|
38
|
+
/** Price in USD per single character for a model (default model if unknown). */
|
|
39
|
+
export declare function ttsUsdPerChar(modelId?: string): number;
|
|
40
|
+
/** USD to synthesize `charCount` characters with a model. */
|
|
41
|
+
export declare function ttsCostUsd(charCount: number, modelId?: string): number;
|
|
42
|
+
/** Whisper STT ≈ $0.24 / 1k audio-seconds. */
|
|
43
|
+
export declare const STT_USD_PER_SECOND = 0.000004;
|
|
44
|
+
export declare function sttCostUsd(audioSeconds: number): number;
|
|
45
|
+
export declare const SEARCH_USD: {
|
|
46
|
+
readonly search: 0.005;
|
|
47
|
+
readonly summarize: 0.015;
|
|
48
|
+
readonly enrich: 0.015;
|
|
49
|
+
};
|
|
50
|
+
export type SearchCostKind = keyof typeof SEARCH_USD;
|
|
51
|
+
export declare function searchCostUsd(kind: SearchCostKind): number;
|
|
52
|
+
/** OpenAI gpt-image-1 (SPA avatar gen) ≈ $0.04 / image. */
|
|
53
|
+
export declare const IMAGE_USD_PER_IMAGE = 0.04;
|
|
54
|
+
export declare function imageCostUsd(): number;
|
|
55
|
+
export declare const EMBED_USD_PER_CALL = 0.00005;
|
|
56
|
+
export declare function embedCostUsd(): number;
|
|
57
|
+
export declare const PLACES_USD: {
|
|
58
|
+
readonly foursquare: 0.001;
|
|
59
|
+
readonly ticketmaster: 0.0005;
|
|
60
|
+
};
|
|
61
|
+
export type PlacesCostKind = keyof typeof PLACES_USD;
|
|
62
|
+
export declare function placesCostUsd(kind: PlacesCostKind): number;
|
|
63
|
+
//# sourceMappingURL=Pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pricing.d.ts","sourceRoot":"","sources":["../../src/shared/Pricing.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;CAmB0B,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,UAAU,CAAC;AAEjD,eAAO,MAAM,iBAAiB,EAAE,UAAmC,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAO3D;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtE;AAID,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvD;AAID,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,UAAU,CAAC;AAErD,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE1D;AAID,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAID,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAID,eAAO,MAAM,UAAU;;;CAGb,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,UAAU,CAAC;AAErD,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE1D"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// src/shared/Pricing.ts
|
|
2
|
+
//
|
|
3
|
+
// Single source of truth for every metered provider rate on the platform.
|
|
4
|
+
// ugly.bot's billing layer (server/proxy/billing-gate.ts) meters calls against
|
|
5
|
+
// these, and apps use the same numbers to show cost estimates before acting.
|
|
6
|
+
// Keep these in sync with the contracted provider rates — change them HERE only.
|
|
7
|
+
//
|
|
8
|
+
// Text/image generation costs are NOT here: those providers return a computed
|
|
9
|
+
// per-call `usage.cost` from the AI layer. These cover the surfaces that bill a
|
|
10
|
+
// flat or per-unit rate (TTS, STT, web search, avatar image gen, embeddings,
|
|
11
|
+
// place/event search).
|
|
12
|
+
export const TTS_MODELS = {
|
|
13
|
+
'inworld-tts-1.5-mini': {
|
|
14
|
+
id: 'inworld-tts-1.5-mini',
|
|
15
|
+
label: 'TTS 1.5 Mini',
|
|
16
|
+
usdPerMillionChars: 5,
|
|
17
|
+
steering: false,
|
|
18
|
+
},
|
|
19
|
+
'inworld-tts-1.5-max': {
|
|
20
|
+
id: 'inworld-tts-1.5-max',
|
|
21
|
+
label: 'TTS 1.5 Max',
|
|
22
|
+
usdPerMillionChars: 10,
|
|
23
|
+
steering: false,
|
|
24
|
+
},
|
|
25
|
+
'inworld-tts-2': {
|
|
26
|
+
id: 'inworld-tts-2',
|
|
27
|
+
label: 'TTS-2',
|
|
28
|
+
usdPerMillionChars: 20,
|
|
29
|
+
steering: true,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export const DEFAULT_TTS_MODEL = 'inworld-tts-1.5-mini';
|
|
33
|
+
/**
|
|
34
|
+
* Resolve InWorld model info from an id, tolerating aliases/variants
|
|
35
|
+
* ('…-max', 'tts-2', etc.) and falling back to the default model.
|
|
36
|
+
*/
|
|
37
|
+
export function ttsModelInfo(modelId) {
|
|
38
|
+
const exact = modelId && TTS_MODELS[modelId];
|
|
39
|
+
if (exact)
|
|
40
|
+
return exact;
|
|
41
|
+
const m = (modelId || '').toLowerCase();
|
|
42
|
+
if (m.includes('tts-2') || m.includes('tts-1-max-v2'))
|
|
43
|
+
return TTS_MODELS['inworld-tts-2'];
|
|
44
|
+
if (m.includes('1.5-max') || m.includes('tts-1-max'))
|
|
45
|
+
return TTS_MODELS['inworld-tts-1.5-max'];
|
|
46
|
+
return TTS_MODELS[DEFAULT_TTS_MODEL];
|
|
47
|
+
}
|
|
48
|
+
/** Price in USD per single character for a model (default model if unknown). */
|
|
49
|
+
export function ttsUsdPerChar(modelId) {
|
|
50
|
+
return ttsModelInfo(modelId).usdPerMillionChars / 1_000_000;
|
|
51
|
+
}
|
|
52
|
+
/** USD to synthesize `charCount` characters with a model. */
|
|
53
|
+
export function ttsCostUsd(charCount, modelId) {
|
|
54
|
+
return Math.max(0, charCount) * ttsUsdPerChar(modelId);
|
|
55
|
+
}
|
|
56
|
+
// ─── Whisper STT (per audio-second) ──────────────────────────────────────────
|
|
57
|
+
/** Whisper STT ≈ $0.24 / 1k audio-seconds. */
|
|
58
|
+
export const STT_USD_PER_SECOND = 0.000004;
|
|
59
|
+
export function sttCostUsd(audioSeconds) {
|
|
60
|
+
return Math.max(0, audioSeconds) * STT_USD_PER_SECOND;
|
|
61
|
+
}
|
|
62
|
+
// ─── Kagi web search (per call, by kind) ─────────────────────────────────────
|
|
63
|
+
export const SEARCH_USD = {
|
|
64
|
+
search: 0.005,
|
|
65
|
+
summarize: 0.015,
|
|
66
|
+
enrich: 0.015,
|
|
67
|
+
};
|
|
68
|
+
export function searchCostUsd(kind) {
|
|
69
|
+
return SEARCH_USD[kind];
|
|
70
|
+
}
|
|
71
|
+
// ─── Avatar image gen (flat per image) ───────────────────────────────────────
|
|
72
|
+
/** OpenAI gpt-image-1 (SPA avatar gen) ≈ $0.04 / image. */
|
|
73
|
+
export const IMAGE_USD_PER_IMAGE = 0.04;
|
|
74
|
+
export function imageCostUsd() {
|
|
75
|
+
return IMAGE_USD_PER_IMAGE;
|
|
76
|
+
}
|
|
77
|
+
// ─── Embeddings (internal CLIP/Sharp compute, flat) ──────────────────────────
|
|
78
|
+
export const EMBED_USD_PER_CALL = 0.00005;
|
|
79
|
+
export function embedCostUsd() {
|
|
80
|
+
return EMBED_USD_PER_CALL;
|
|
81
|
+
}
|
|
82
|
+
// ─── Place / event search (per call, by provider) ────────────────────────────
|
|
83
|
+
export const PLACES_USD = {
|
|
84
|
+
foursquare: 0.001,
|
|
85
|
+
ticketmaster: 0.0005,
|
|
86
|
+
};
|
|
87
|
+
export function placesCostUsd(kind) {
|
|
88
|
+
return PLACES_USD[kind];
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=Pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pricing.js","sourceRoot":"","sources":["../../src/shared/Pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,6 +105,7 @@ export declare const ttsRenderInputSchema: z.ZodObject<{
|
|
|
105
105
|
model: z.ZodOptional<z.ZodString>;
|
|
106
106
|
temperature: z.ZodOptional<z.ZodNumber>;
|
|
107
107
|
requestVisemes: z.ZodOptional<z.ZodBoolean>;
|
|
108
|
+
format: z.ZodOptional<z.ZodString>;
|
|
108
109
|
}, z.core.$strip>;
|
|
109
110
|
export declare const ttsRenderOutputSchema: z.ZodObject<{
|
|
110
111
|
audio: z.ZodString;
|
|
@@ -125,6 +126,61 @@ export declare const ttsRenderOutputSchema: z.ZodObject<{
|
|
|
125
126
|
}, z.core.$strip>>;
|
|
126
127
|
durationMs: z.ZodNumber;
|
|
127
128
|
}, z.core.$strip>;
|
|
129
|
+
export declare const voiceListInputSchema: z.ZodObject<{
|
|
130
|
+
search: z.ZodOptional<z.ZodString>;
|
|
131
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
132
|
+
neutral: "neutral";
|
|
133
|
+
male: "male";
|
|
134
|
+
female: "female";
|
|
135
|
+
}>>;
|
|
136
|
+
accent: z.ZodOptional<z.ZodString>;
|
|
137
|
+
age: z.ZodOptional<z.ZodString>;
|
|
138
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
139
|
+
includeCloned: z.ZodOptional<z.ZodBoolean>;
|
|
140
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
141
|
+
}, z.core.$strip>;
|
|
142
|
+
export declare const voiceInfoSchema: z.ZodObject<{
|
|
143
|
+
id: z.ZodString;
|
|
144
|
+
name: z.ZodString;
|
|
145
|
+
description: z.ZodString;
|
|
146
|
+
provider: z.ZodString;
|
|
147
|
+
providerVoiceId: z.ZodString;
|
|
148
|
+
isCloned: z.ZodBoolean;
|
|
149
|
+
language: z.ZodString;
|
|
150
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
151
|
+
neutral: "neutral";
|
|
152
|
+
male: "male";
|
|
153
|
+
female: "female";
|
|
154
|
+
}>>;
|
|
155
|
+
age: z.ZodOptional<z.ZodString>;
|
|
156
|
+
accent: z.ZodOptional<z.ZodString>;
|
|
157
|
+
style: z.ZodOptional<z.ZodString>;
|
|
158
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
159
|
+
previewUrl: z.ZodOptional<z.ZodString>;
|
|
160
|
+
supportsVisemes: z.ZodBoolean;
|
|
161
|
+
}, z.core.$strip>;
|
|
162
|
+
export declare const voiceListOutputSchema: z.ZodObject<{
|
|
163
|
+
voices: z.ZodArray<z.ZodObject<{
|
|
164
|
+
id: z.ZodString;
|
|
165
|
+
name: z.ZodString;
|
|
166
|
+
description: z.ZodString;
|
|
167
|
+
provider: z.ZodString;
|
|
168
|
+
providerVoiceId: z.ZodString;
|
|
169
|
+
isCloned: z.ZodBoolean;
|
|
170
|
+
language: z.ZodString;
|
|
171
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
172
|
+
neutral: "neutral";
|
|
173
|
+
male: "male";
|
|
174
|
+
female: "female";
|
|
175
|
+
}>>;
|
|
176
|
+
age: z.ZodOptional<z.ZodString>;
|
|
177
|
+
accent: z.ZodOptional<z.ZodString>;
|
|
178
|
+
style: z.ZodOptional<z.ZodString>;
|
|
179
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
180
|
+
previewUrl: z.ZodOptional<z.ZodString>;
|
|
181
|
+
supportsVisemes: z.ZodBoolean;
|
|
182
|
+
}, z.core.$strip>>;
|
|
183
|
+
}, z.core.$strip>;
|
|
128
184
|
export declare const musicGenerateInputSchema: z.ZodObject<{
|
|
129
185
|
chargeUserIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
130
186
|
lyricsPrompt: z.ZodString;
|
|
@@ -650,6 +706,7 @@ export declare const proxyOps: {
|
|
|
650
706
|
model: z.ZodOptional<z.ZodString>;
|
|
651
707
|
temperature: z.ZodOptional<z.ZodNumber>;
|
|
652
708
|
requestVisemes: z.ZodOptional<z.ZodBoolean>;
|
|
709
|
+
format: z.ZodOptional<z.ZodString>;
|
|
653
710
|
}, z.core.$strip>;
|
|
654
711
|
readonly output: z.ZodObject<{
|
|
655
712
|
audio: z.ZodString;
|
|
@@ -671,6 +728,43 @@ export declare const proxyOps: {
|
|
|
671
728
|
durationMs: z.ZodNumber;
|
|
672
729
|
}, z.core.$strip>;
|
|
673
730
|
};
|
|
731
|
+
readonly voiceList: {
|
|
732
|
+
readonly input: z.ZodObject<{
|
|
733
|
+
search: z.ZodOptional<z.ZodString>;
|
|
734
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
735
|
+
neutral: "neutral";
|
|
736
|
+
male: "male";
|
|
737
|
+
female: "female";
|
|
738
|
+
}>>;
|
|
739
|
+
accent: z.ZodOptional<z.ZodString>;
|
|
740
|
+
age: z.ZodOptional<z.ZodString>;
|
|
741
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
742
|
+
includeCloned: z.ZodOptional<z.ZodBoolean>;
|
|
743
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
744
|
+
}, z.core.$strip>;
|
|
745
|
+
readonly output: z.ZodObject<{
|
|
746
|
+
voices: z.ZodArray<z.ZodObject<{
|
|
747
|
+
id: z.ZodString;
|
|
748
|
+
name: z.ZodString;
|
|
749
|
+
description: z.ZodString;
|
|
750
|
+
provider: z.ZodString;
|
|
751
|
+
providerVoiceId: z.ZodString;
|
|
752
|
+
isCloned: z.ZodBoolean;
|
|
753
|
+
language: z.ZodString;
|
|
754
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
755
|
+
neutral: "neutral";
|
|
756
|
+
male: "male";
|
|
757
|
+
female: "female";
|
|
758
|
+
}>>;
|
|
759
|
+
age: z.ZodOptional<z.ZodString>;
|
|
760
|
+
accent: z.ZodOptional<z.ZodString>;
|
|
761
|
+
style: z.ZodOptional<z.ZodString>;
|
|
762
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
763
|
+
previewUrl: z.ZodOptional<z.ZodString>;
|
|
764
|
+
supportsVisemes: z.ZodBoolean;
|
|
765
|
+
}, z.core.$strip>>;
|
|
766
|
+
}, z.core.$strip>;
|
|
767
|
+
};
|
|
674
768
|
readonly musicGenerate: {
|
|
675
769
|
readonly input: z.ZodObject<{
|
|
676
770
|
chargeUserIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyOps.d.ts","sourceRoot":"","sources":["../../src/shared/ProxyOps.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqBxB,eAAO,MAAM,qBAAqB;;;;iBAQ9B,CAAC;AACL,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AACH,eAAO,MAAM,wBAAwB;;;;iBAQjC,CAAC;AACL,eAAO,MAAM,qBAAqB;;iBAA+C,CAAC;AAGlF,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAC;AACH,eAAO,MAAM,oBAAoB;;iBAAyD,CAAC;AAC3F,eAAO,MAAM,yBAAyB;;;;;;;;;;iBAUpC,CAAC;AAGH,eAAO,MAAM,2BAA2B;;;;;;;;iBAQtC,CAAC;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;iBAkBvC,CAAC;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;iBASxC,CAAC;AAGH,eAAO,MAAM,8BAA8B;;iBAEzC,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;iBAO5B,CAAC;AAEH,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAG9C,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"ProxyOps.d.ts","sourceRoot":"","sources":["../../src/shared/ProxyOps.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/ProxyOps.js
CHANGED
|
@@ -126,6 +126,10 @@ export const ttsRenderInputSchema = z.object({
|
|
|
126
126
|
model: z.string().optional(),
|
|
127
127
|
temperature: z.number().optional(),
|
|
128
128
|
requestVisemes: z.boolean().optional(),
|
|
129
|
+
// Output audio encoding passed to InWorld's audioConfig.audioEncoding
|
|
130
|
+
// (e.g. 'OGG_OPUS' | 'MP3' | 'LINEAR16'). Defaults to LINEAR16 server-side.
|
|
131
|
+
// Lets one-shot renders store compressed audio directly (no transcode).
|
|
132
|
+
format: z.string().optional(),
|
|
129
133
|
...chargeOverride,
|
|
130
134
|
});
|
|
131
135
|
const ttsVisemeSchema = z.object({
|
|
@@ -149,6 +153,38 @@ export const ttsRenderOutputSchema = z.object({
|
|
|
149
153
|
words: z.array(ttsWordSchema),
|
|
150
154
|
durationMs: z.number(),
|
|
151
155
|
});
|
|
156
|
+
// ── Voice catalog listing (TTS casting) ──────────────────────────────────────
|
|
157
|
+
// FREE catalog read (not billed). Lists the global InWorld voices (+ the
|
|
158
|
+
// caller's cloned voices) with enriched metadata so apps can present a picker
|
|
159
|
+
// and auto-match a speaker description to a voice.
|
|
160
|
+
export const voiceListInputSchema = z.object({
|
|
161
|
+
search: z.string().max(200).optional(),
|
|
162
|
+
gender: z.enum(['male', 'female', 'neutral']).optional(),
|
|
163
|
+
accent: z.string().max(40).optional(),
|
|
164
|
+
age: z.string().max(40).optional(),
|
|
165
|
+
provider: z.string().max(40).optional(),
|
|
166
|
+
includeCloned: z.boolean().optional(),
|
|
167
|
+
limit: z.number().int().positive().max(2000).optional(),
|
|
168
|
+
});
|
|
169
|
+
export const voiceInfoSchema = z.object({
|
|
170
|
+
id: z.string(),
|
|
171
|
+
name: z.string(),
|
|
172
|
+
description: z.string(),
|
|
173
|
+
provider: z.string(),
|
|
174
|
+
providerVoiceId: z.string(),
|
|
175
|
+
isCloned: z.boolean(),
|
|
176
|
+
language: z.string(),
|
|
177
|
+
gender: z.enum(['male', 'female', 'neutral']).optional(),
|
|
178
|
+
age: z.string().optional(),
|
|
179
|
+
accent: z.string().optional(),
|
|
180
|
+
style: z.string().optional(),
|
|
181
|
+
tags: z.array(z.string()).default([]),
|
|
182
|
+
previewUrl: z.string().optional(),
|
|
183
|
+
supportsVisemes: z.boolean(),
|
|
184
|
+
});
|
|
185
|
+
export const voiceListOutputSchema = z.object({
|
|
186
|
+
voices: z.array(voiceInfoSchema),
|
|
187
|
+
});
|
|
152
188
|
// ── Music generation (fal.ai minimax-music) ──────────────────────────────────
|
|
153
189
|
export const musicGenerateInputSchema = z.object({
|
|
154
190
|
lyricsPrompt: z.string().min(1),
|
|
@@ -271,6 +307,7 @@ export const proxyOps = {
|
|
|
271
307
|
ticketmasterSearch: { input: ticketmasterSearchInputSchema, output: ticketmasterSearchOutputSchema },
|
|
272
308
|
search: { input: searchInputSchema, output: searchOutputSchema },
|
|
273
309
|
ttsRender: { input: ttsRenderInputSchema, output: ttsRenderOutputSchema },
|
|
310
|
+
voiceList: { input: voiceListInputSchema, output: voiceListOutputSchema },
|
|
274
311
|
musicGenerate: { input: musicGenerateInputSchema, output: musicGenerateOutputSchema },
|
|
275
312
|
transcribe: { input: transcribeInputSchema, output: transcribeOutputSchema },
|
|
276
313
|
sendPush: { input: sendPushInputSchema, output: pushOutputSchema },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyOps.js","sourceRoot":"","sources":["../../src/shared/ProxyOps.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,8DAA8D;AAC9D,EAAE;AACF,iFAAiF;AACjF,4EAA4E;AAC5E,yBAAyB;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1E,8EAA8E;AAC9E,iFAAiF;AACjF,0DAA0D;AAC1D,MAAM,cAAc,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AAEzE,gFAAgF;AAChF,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/D,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/D,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAEjE,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,GAAG,cAAc;CAClB,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IAC9C,OAAO,EAAE,qCAAqC;CAC/C,CAAC,CAAC;AACL,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,GAAG,cAAc;CAClB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,GAAG,cAAc;CAClB,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IAC9C,OAAO,EAAE,qCAAqC;CAC/C,CAAC,CAAC;AACL,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAClF,6EAA6E;AAC7E,oCAAoC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAClD,GAAG,cAAc;CAClB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;CACH,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,GAAG,cAAc;CAClB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;QACP,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC;aACR,MAAM,CAAC;YACN,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC9B,CAAC;aACD,OAAO,EAAE;aACT,QAAQ,EAAE;QACb,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC9E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC1E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC,CACH;CACF,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAClD,GAAG,cAAc;CAClB,CAAC,CAAC;AACH,8EAA8E;AAC9E,wEAAwE;AACxE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;CAC5C,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IACvC,GAAG,cAAc;CAClB,CAAC,CAAC;AACH,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAE9C,gFAAgF;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,GAAG,cAAc;CAClB,CAAC,CAAC;AACH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,GAAG,cAAc;CAClB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE5E,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,GAAG,cAAc;CAClB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAClF,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,iEAAiE;AACjE,yEAAyE;AACzE,gFAAgF;AAChF,gEAAgE;AAChE,6EAA6E;AAC7E,4DAA4D;AAC5D,kFAAkF;AAClF,iEAAiE;AACjE,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChG,+EAA+E;AAC/E,iFAAiF;AACjF,2EAA2E;AAC3E,iDAAiD;AACjD,gFAAgF;AAChF,kCAAkC;AAClC,0DAA0D;AAC1D,qBAAqB;AACrB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAEpF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnD,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC;AACF,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,GAAG,UAAU;CACd,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,sBAAsB;CACrC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AACH,8EAA8E;AAC9E,kEAAkE;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,GAAG,UAAU;CACd,CAAC,CAAC;AACH,0EAA0E;AAC1E,6EAA6E;AAC7E,+EAA+E;AAC/E,wDAAwD;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;AACzE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;CACjC,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5D,gFAAgF;AAChF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,EAAE;IACxE,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,EAAE;IACxE,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE,EAAE;IAC3E,UAAU,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,qBAAqB,EAAE;IAC3E,SAAS,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,qBAAqB,EAAE;IACzE,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,oBAAoB,EAAE;IACtE,aAAa,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,yBAAyB,EAAE;IACrF,gBAAgB,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,4BAA4B,EAAE;IAC9F,kBAAkB,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAE,8BAA8B,EAAE;IACpG,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE;IAChE,SAAS,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,qBAAqB,EAAE;IACzE,aAAa,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,yBAAyB,EAAE;IACrF,UAAU,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,sBAAsB,EAAE;IAC5E,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAClE,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IACxE,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAClE,OAAO,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACnE,eAAe,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,2BAA2B,EAAE;IAC3F,eAAe,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,2BAA2B,EAAE;IAC3F,uBAAuB,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,uBAAuB,EAAE;IAChG,oBAAoB,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,EAAE,uBAAuB,EAAE;CACzF,CAAC;AAOX,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAA6B,IAAI,GAAG,CAAc;IACzE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU;IACvE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,QAAQ;IACnE,WAAW,EAAE,eAAe,EAAE,YAAY;CAC3C,CAAC,CAAC;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,WAAW,EAAE,kBAAkB;IAC/B,YAAY,EAAE,mBAAmB;IACjC,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,iBAAiB;CACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"ProxyOps.js","sourceRoot":"","sources":["../../src/shared/ProxyOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** One spoken word: char range into the document text + timing in segment ms. */
|
|
2
|
+
export interface TimingWord {
|
|
3
|
+
charStart: number;
|
|
4
|
+
charLen: number;
|
|
5
|
+
startMs: number;
|
|
6
|
+
durMs: number;
|
|
7
|
+
}
|
|
8
|
+
/** One viseme (mouth shape) for lip-sync. `name` is the InWorld 11-viseme set. */
|
|
9
|
+
export interface TimingViseme {
|
|
10
|
+
name: string;
|
|
11
|
+
startMs: number;
|
|
12
|
+
durMs: number;
|
|
13
|
+
intensity: number;
|
|
14
|
+
}
|
|
15
|
+
export interface TimingTrack {
|
|
16
|
+
words: TimingWord[];
|
|
17
|
+
visemes: TimingViseme[];
|
|
18
|
+
}
|
|
19
|
+
export declare function encodeTimingTrack(track: TimingTrack): Uint8Array;
|
|
20
|
+
export declare function decodeTimingTrack(bytes: Uint8Array): TimingTrack;
|
|
21
|
+
//# sourceMappingURL=TimingTrack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimingTrack.d.ts","sourceRoot":"","sources":["../../src/shared/TimingTrack.ts"],"names":[],"mappings":"AAgBA,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AA0DD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CA2BhE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAuChE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// src/shared/TimingTrack.ts
|
|
2
|
+
//
|
|
3
|
+
// Compact binary codec for pre-rendered TTS timing ("`.tim`" sidecars).
|
|
4
|
+
//
|
|
5
|
+
// A full audiobook's word + phoneme-viseme timings are ~30 MB as JSON, which is
|
|
6
|
+
// too large for a DB row and too slow to ship to the player. This codec stores
|
|
7
|
+
// the same data ~10× smaller (~2-3 MB/novel, spread across per-segment files)
|
|
8
|
+
// using delta + varint encoding, so the player streams one segment's timing at
|
|
9
|
+
// a time and reconstructs the karaoke highlight + avatar lip-sync without ever
|
|
10
|
+
// re-calling the TTS provider.
|
|
11
|
+
//
|
|
12
|
+
// Word strings are NOT stored — they're recovered by slicing the document text
|
|
13
|
+
// with each word's [charStart, charStart+charLen). Times are per-segment ms
|
|
14
|
+
// (relative to that segment's audio start); char offsets are absolute into the
|
|
15
|
+
// document's speech text.
|
|
16
|
+
// InWorld-standard viseme set; index in this array is the 1-byte wire code.
|
|
17
|
+
const VISEME_NAMES = [
|
|
18
|
+
'aei', 'o', 'bmp', 'fv', 'l', 'r', 'th', 'qw', 'ee', 'cdgknstxyz', 'sil',
|
|
19
|
+
];
|
|
20
|
+
const VISEME_INDEX = Object.fromEntries(VISEME_NAMES.map((n, i) => [n, i]));
|
|
21
|
+
const SIL_INDEX = VISEME_NAMES.indexOf('sil');
|
|
22
|
+
const MAGIC = [0x54, 0x49, 0x4d, 0x31]; // 'TIM1'
|
|
23
|
+
const VERSION = 1;
|
|
24
|
+
// ── varint helpers (arithmetic, so values > 2^31 stay correct) ───────────────
|
|
25
|
+
function writeUvarint(out, value) {
|
|
26
|
+
let n = Math.max(0, Math.floor(value));
|
|
27
|
+
while (n >= 128) {
|
|
28
|
+
out.push((n % 128) + 128);
|
|
29
|
+
n = Math.floor(n / 128);
|
|
30
|
+
}
|
|
31
|
+
out.push(n);
|
|
32
|
+
}
|
|
33
|
+
// zigzag: map signed → unsigned so small magnitudes stay small.
|
|
34
|
+
function writeSvarint(out, value) {
|
|
35
|
+
const v = Math.round(value);
|
|
36
|
+
writeUvarint(out, v >= 0 ? v * 2 : -v * 2 - 1);
|
|
37
|
+
}
|
|
38
|
+
function readUvarint(bytes, cur) {
|
|
39
|
+
let result = 0;
|
|
40
|
+
let scale = 1;
|
|
41
|
+
let b;
|
|
42
|
+
do {
|
|
43
|
+
b = bytes[cur.i++] ?? 0;
|
|
44
|
+
result += (b & 0x7f) * scale;
|
|
45
|
+
scale *= 128;
|
|
46
|
+
} while (b & 0x80);
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
function readSvarint(bytes, cur) {
|
|
50
|
+
const z = readUvarint(bytes, cur);
|
|
51
|
+
return z % 2 === 0 ? z / 2 : -(z + 1) / 2;
|
|
52
|
+
}
|
|
53
|
+
function clampByte(n) {
|
|
54
|
+
return Math.max(0, Math.min(255, Math.round(n)));
|
|
55
|
+
}
|
|
56
|
+
// ── encode / decode ──────────────────────────────────────────────────────────
|
|
57
|
+
export function encodeTimingTrack(track) {
|
|
58
|
+
const out = [];
|
|
59
|
+
out.push(...MAGIC, VERSION);
|
|
60
|
+
writeUvarint(out, track.words.length);
|
|
61
|
+
writeUvarint(out, track.visemes.length);
|
|
62
|
+
let prevChar = 0;
|
|
63
|
+
let prevWordMs = 0;
|
|
64
|
+
for (const w of track.words) {
|
|
65
|
+
writeSvarint(out, w.charStart - prevChar);
|
|
66
|
+
prevChar = w.charStart;
|
|
67
|
+
writeUvarint(out, Math.max(0, w.charLen));
|
|
68
|
+
writeSvarint(out, Math.round(w.startMs) - prevWordMs);
|
|
69
|
+
prevWordMs = Math.round(w.startMs);
|
|
70
|
+
writeUvarint(out, Math.max(0, w.durMs));
|
|
71
|
+
}
|
|
72
|
+
let prevVisMs = 0;
|
|
73
|
+
for (const v of track.visemes) {
|
|
74
|
+
out.push(VISEME_INDEX[v.name] ?? SIL_INDEX);
|
|
75
|
+
writeSvarint(out, Math.round(v.startMs) - prevVisMs);
|
|
76
|
+
prevVisMs = Math.round(v.startMs);
|
|
77
|
+
writeUvarint(out, Math.max(0, v.durMs));
|
|
78
|
+
out.push(clampByte(v.intensity * 255));
|
|
79
|
+
}
|
|
80
|
+
return Uint8Array.from(out);
|
|
81
|
+
}
|
|
82
|
+
export function decodeTimingTrack(bytes) {
|
|
83
|
+
const cur = { i: 0 };
|
|
84
|
+
for (const m of MAGIC) {
|
|
85
|
+
if ((bytes[cur.i++] ?? -1) !== m) {
|
|
86
|
+
throw new Error('decodeTimingTrack: bad magic (not a .tim track)');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const version = bytes[cur.i++];
|
|
90
|
+
if (version !== VERSION) {
|
|
91
|
+
throw new Error(`decodeTimingTrack: unsupported version ${version}`);
|
|
92
|
+
}
|
|
93
|
+
const wordCount = readUvarint(bytes, cur);
|
|
94
|
+
const visemeCount = readUvarint(bytes, cur);
|
|
95
|
+
const words = [];
|
|
96
|
+
let prevChar = 0;
|
|
97
|
+
let prevWordMs = 0;
|
|
98
|
+
for (let k = 0; k < wordCount; k++) {
|
|
99
|
+
const charStart = prevChar + readSvarint(bytes, cur);
|
|
100
|
+
prevChar = charStart;
|
|
101
|
+
const charLen = readUvarint(bytes, cur);
|
|
102
|
+
const startMs = prevWordMs + readSvarint(bytes, cur);
|
|
103
|
+
prevWordMs = startMs;
|
|
104
|
+
const durMs = readUvarint(bytes, cur);
|
|
105
|
+
words.push({ charStart, charLen, startMs, durMs });
|
|
106
|
+
}
|
|
107
|
+
const visemes = [];
|
|
108
|
+
let prevVisMs = 0;
|
|
109
|
+
for (let k = 0; k < visemeCount; k++) {
|
|
110
|
+
const name = VISEME_NAMES[bytes[cur.i++] ?? SIL_INDEX] ?? 'sil';
|
|
111
|
+
const startMs = prevVisMs + readSvarint(bytes, cur);
|
|
112
|
+
prevVisMs = startMs;
|
|
113
|
+
const durMs = readUvarint(bytes, cur);
|
|
114
|
+
const intensity = (bytes[cur.i++] ?? 0) / 255;
|
|
115
|
+
visemes.push({ name, startMs, durMs, intensity });
|
|
116
|
+
}
|
|
117
|
+
return { words, visemes };
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=TimingTrack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimingTrack.js","sourceRoot":"","sources":["../../src/shared/TimingTrack.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export * from './Avatar.js';
|
|
|
18
18
|
export * from './DB.js';
|
|
19
19
|
export * from './Errors.js';
|
|
20
20
|
export * from './ImageGen.js';
|
|
21
|
+
export * from './Pricing.js';
|
|
22
|
+
export * from './TimingTrack.js';
|
|
21
23
|
export * from './Router.js';
|
|
22
24
|
export type { SocketLoggedIn, SocketLoggedOut, TypedAppSocket, } from './Socket.js';
|
|
23
25
|
export * from './TextGen.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/index.js
CHANGED
|
@@ -10,6 +10,8 @@ export * from './Avatar.js';
|
|
|
10
10
|
export * from './DB.js';
|
|
11
11
|
export * from './Errors.js';
|
|
12
12
|
export * from './ImageGen.js';
|
|
13
|
+
export * from './Pricing.js';
|
|
14
|
+
export * from './TimingTrack.js';
|
|
13
15
|
export * from './Router.js';
|
|
14
16
|
export * from './TextGen.js';
|
|
15
17
|
export * from './ProxyOps.js';
|
package/dist/shared/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugly-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.649",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
|
|
6
6
|
"files": [
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.649";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import {
|
|
3
|
+
TTS_MODELS,
|
|
4
|
+
ttsCostUsd,
|
|
5
|
+
ttsUsdPerChar,
|
|
6
|
+
ttsModelInfo,
|
|
7
|
+
DEFAULT_TTS_MODEL,
|
|
8
|
+
} from './Pricing.js';
|
|
9
|
+
|
|
10
|
+
describe('TTS pricing', () => {
|
|
11
|
+
it('uses contracted per-1M rates', () => {
|
|
12
|
+
expect(TTS_MODELS['inworld-tts-1.5-mini'].usdPerMillionChars).toBe(5);
|
|
13
|
+
expect(TTS_MODELS['inworld-tts-1.5-max'].usdPerMillionChars).toBe(10);
|
|
14
|
+
expect(TTS_MODELS['inworld-tts-2'].usdPerMillionChars).toBe(20);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('only TTS-2 supports steering', () => {
|
|
18
|
+
expect(TTS_MODELS['inworld-tts-2'].steering).toBe(true);
|
|
19
|
+
expect(TTS_MODELS['inworld-tts-1.5-mini'].steering).toBe(false);
|
|
20
|
+
expect(TTS_MODELS['inworld-tts-1.5-max'].steering).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('costs 1M chars at the model rate', () => {
|
|
24
|
+
expect(ttsCostUsd(1_000_000, 'inworld-tts-2')).toBeCloseTo(20, 9);
|
|
25
|
+
expect(ttsCostUsd(1_000_000, 'inworld-tts-1.5-mini')).toBeCloseTo(5, 9);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('defaults unknown models to Mini', () => {
|
|
29
|
+
expect(ttsModelInfo('nonsense').id).toBe(DEFAULT_TTS_MODEL);
|
|
30
|
+
expect(ttsUsdPerChar(undefined)).toBe(5 / 1_000_000);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('resolves aliases (max / tts-2 substrings)', () => {
|
|
34
|
+
expect(ttsModelInfo('inworld-tts-1.5-max').usdPerMillionChars).toBe(10);
|
|
35
|
+
expect(ttsModelInfo('some-tts-2-variant').usdPerMillionChars).toBe(20);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// src/shared/Pricing.ts
|
|
2
|
+
//
|
|
3
|
+
// Single source of truth for every metered provider rate on the platform.
|
|
4
|
+
// ugly.bot's billing layer (server/proxy/billing-gate.ts) meters calls against
|
|
5
|
+
// these, and apps use the same numbers to show cost estimates before acting.
|
|
6
|
+
// Keep these in sync with the contracted provider rates — change them HERE only.
|
|
7
|
+
//
|
|
8
|
+
// Text/image generation costs are NOT here: those providers return a computed
|
|
9
|
+
// per-call `usage.cost` from the AI layer. These cover the surfaces that bill a
|
|
10
|
+
// flat or per-unit rate (TTS, STT, web search, avatar image gen, embeddings,
|
|
11
|
+
// place/event search).
|
|
12
|
+
|
|
13
|
+
// ─── InWorld TTS models + per-character price ────────────────────────────────
|
|
14
|
+
|
|
15
|
+
export interface TTSModelInfo {
|
|
16
|
+
/** InWorld model id passed as `modelId` in the synth request. */
|
|
17
|
+
id: string;
|
|
18
|
+
/** Human label for pickers / cost UIs. */
|
|
19
|
+
label: string;
|
|
20
|
+
/** Contracted price in USD per 1,000,000 characters. */
|
|
21
|
+
usdPerMillionChars: number;
|
|
22
|
+
/** Whether the model supports `[direction]` steering markup (TTS-2 only). */
|
|
23
|
+
steering: boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const TTS_MODELS = {
|
|
27
|
+
'inworld-tts-1.5-mini': {
|
|
28
|
+
id: 'inworld-tts-1.5-mini',
|
|
29
|
+
label: 'TTS 1.5 Mini',
|
|
30
|
+
usdPerMillionChars: 5,
|
|
31
|
+
steering: false,
|
|
32
|
+
},
|
|
33
|
+
'inworld-tts-1.5-max': {
|
|
34
|
+
id: 'inworld-tts-1.5-max',
|
|
35
|
+
label: 'TTS 1.5 Max',
|
|
36
|
+
usdPerMillionChars: 10,
|
|
37
|
+
steering: false,
|
|
38
|
+
},
|
|
39
|
+
'inworld-tts-2': {
|
|
40
|
+
id: 'inworld-tts-2',
|
|
41
|
+
label: 'TTS-2',
|
|
42
|
+
usdPerMillionChars: 20,
|
|
43
|
+
steering: true,
|
|
44
|
+
},
|
|
45
|
+
} as const satisfies Record<string, TTSModelInfo>;
|
|
46
|
+
|
|
47
|
+
export type TTSModelId = keyof typeof TTS_MODELS;
|
|
48
|
+
|
|
49
|
+
export const DEFAULT_TTS_MODEL: TTSModelId = 'inworld-tts-1.5-mini';
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Resolve InWorld model info from an id, tolerating aliases/variants
|
|
53
|
+
* ('…-max', 'tts-2', etc.) and falling back to the default model.
|
|
54
|
+
*/
|
|
55
|
+
export function ttsModelInfo(modelId?: string): TTSModelInfo {
|
|
56
|
+
const exact = modelId && (TTS_MODELS as Record<string, TTSModelInfo>)[modelId];
|
|
57
|
+
if (exact) return exact;
|
|
58
|
+
const m = (modelId || '').toLowerCase();
|
|
59
|
+
if (m.includes('tts-2') || m.includes('tts-1-max-v2')) return TTS_MODELS['inworld-tts-2'];
|
|
60
|
+
if (m.includes('1.5-max') || m.includes('tts-1-max')) return TTS_MODELS['inworld-tts-1.5-max'];
|
|
61
|
+
return TTS_MODELS[DEFAULT_TTS_MODEL];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** Price in USD per single character for a model (default model if unknown). */
|
|
65
|
+
export function ttsUsdPerChar(modelId?: string): number {
|
|
66
|
+
return ttsModelInfo(modelId).usdPerMillionChars / 1_000_000;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** USD to synthesize `charCount` characters with a model. */
|
|
70
|
+
export function ttsCostUsd(charCount: number, modelId?: string): number {
|
|
71
|
+
return Math.max(0, charCount) * ttsUsdPerChar(modelId);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ─── Whisper STT (per audio-second) ──────────────────────────────────────────
|
|
75
|
+
|
|
76
|
+
/** Whisper STT ≈ $0.24 / 1k audio-seconds. */
|
|
77
|
+
export const STT_USD_PER_SECOND = 0.000004;
|
|
78
|
+
|
|
79
|
+
export function sttCostUsd(audioSeconds: number): number {
|
|
80
|
+
return Math.max(0, audioSeconds) * STT_USD_PER_SECOND;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ─── Kagi web search (per call, by kind) ─────────────────────────────────────
|
|
84
|
+
|
|
85
|
+
export const SEARCH_USD = {
|
|
86
|
+
search: 0.005,
|
|
87
|
+
summarize: 0.015,
|
|
88
|
+
enrich: 0.015,
|
|
89
|
+
} as const;
|
|
90
|
+
export type SearchCostKind = keyof typeof SEARCH_USD;
|
|
91
|
+
|
|
92
|
+
export function searchCostUsd(kind: SearchCostKind): number {
|
|
93
|
+
return SEARCH_USD[kind];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// ─── Avatar image gen (flat per image) ───────────────────────────────────────
|
|
97
|
+
|
|
98
|
+
/** OpenAI gpt-image-1 (SPA avatar gen) ≈ $0.04 / image. */
|
|
99
|
+
export const IMAGE_USD_PER_IMAGE = 0.04;
|
|
100
|
+
|
|
101
|
+
export function imageCostUsd(): number {
|
|
102
|
+
return IMAGE_USD_PER_IMAGE;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// ─── Embeddings (internal CLIP/Sharp compute, flat) ──────────────────────────
|
|
106
|
+
|
|
107
|
+
export const EMBED_USD_PER_CALL = 0.00005;
|
|
108
|
+
|
|
109
|
+
export function embedCostUsd(): number {
|
|
110
|
+
return EMBED_USD_PER_CALL;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// ─── Place / event search (per call, by provider) ────────────────────────────
|
|
114
|
+
|
|
115
|
+
export const PLACES_USD = {
|
|
116
|
+
foursquare: 0.001,
|
|
117
|
+
ticketmaster: 0.0005,
|
|
118
|
+
} as const;
|
|
119
|
+
export type PlacesCostKind = keyof typeof PLACES_USD;
|
|
120
|
+
|
|
121
|
+
export function placesCostUsd(kind: PlacesCostKind): number {
|
|
122
|
+
return PLACES_USD[kind];
|
|
123
|
+
}
|
package/src/shared/ProxyOps.ts
CHANGED
|
@@ -139,6 +139,10 @@ export const ttsRenderInputSchema = z.object({
|
|
|
139
139
|
model: z.string().optional(),
|
|
140
140
|
temperature: z.number().optional(),
|
|
141
141
|
requestVisemes: z.boolean().optional(),
|
|
142
|
+
// Output audio encoding passed to InWorld's audioConfig.audioEncoding
|
|
143
|
+
// (e.g. 'OGG_OPUS' | 'MP3' | 'LINEAR16'). Defaults to LINEAR16 server-side.
|
|
144
|
+
// Lets one-shot renders store compressed audio directly (no transcode).
|
|
145
|
+
format: z.string().optional(),
|
|
142
146
|
...chargeOverride,
|
|
143
147
|
});
|
|
144
148
|
const ttsVisemeSchema = z.object({
|
|
@@ -163,6 +167,39 @@ export const ttsRenderOutputSchema = z.object({
|
|
|
163
167
|
durationMs: z.number(),
|
|
164
168
|
});
|
|
165
169
|
|
|
170
|
+
// ── Voice catalog listing (TTS casting) ──────────────────────────────────────
|
|
171
|
+
// FREE catalog read (not billed). Lists the global InWorld voices (+ the
|
|
172
|
+
// caller's cloned voices) with enriched metadata so apps can present a picker
|
|
173
|
+
// and auto-match a speaker description to a voice.
|
|
174
|
+
export const voiceListInputSchema = z.object({
|
|
175
|
+
search: z.string().max(200).optional(),
|
|
176
|
+
gender: z.enum(['male', 'female', 'neutral']).optional(),
|
|
177
|
+
accent: z.string().max(40).optional(),
|
|
178
|
+
age: z.string().max(40).optional(),
|
|
179
|
+
provider: z.string().max(40).optional(),
|
|
180
|
+
includeCloned: z.boolean().optional(),
|
|
181
|
+
limit: z.number().int().positive().max(2000).optional(),
|
|
182
|
+
});
|
|
183
|
+
export const voiceInfoSchema = z.object({
|
|
184
|
+
id: z.string(),
|
|
185
|
+
name: z.string(),
|
|
186
|
+
description: z.string(),
|
|
187
|
+
provider: z.string(),
|
|
188
|
+
providerVoiceId: z.string(),
|
|
189
|
+
isCloned: z.boolean(),
|
|
190
|
+
language: z.string(),
|
|
191
|
+
gender: z.enum(['male', 'female', 'neutral']).optional(),
|
|
192
|
+
age: z.string().optional(),
|
|
193
|
+
accent: z.string().optional(),
|
|
194
|
+
style: z.string().optional(),
|
|
195
|
+
tags: z.array(z.string()).default([]),
|
|
196
|
+
previewUrl: z.string().optional(),
|
|
197
|
+
supportsVisemes: z.boolean(),
|
|
198
|
+
});
|
|
199
|
+
export const voiceListOutputSchema = z.object({
|
|
200
|
+
voices: z.array(voiceInfoSchema),
|
|
201
|
+
});
|
|
202
|
+
|
|
166
203
|
// ── Music generation (fal.ai minimax-music) ──────────────────────────────────
|
|
167
204
|
export const musicGenerateInputSchema = z.object({
|
|
168
205
|
lyricsPrompt: z.string().min(1),
|
|
@@ -291,6 +328,7 @@ export const proxyOps = {
|
|
|
291
328
|
ticketmasterSearch: { input: ticketmasterSearchInputSchema, output: ticketmasterSearchOutputSchema },
|
|
292
329
|
search: { input: searchInputSchema, output: searchOutputSchema },
|
|
293
330
|
ttsRender: { input: ttsRenderInputSchema, output: ttsRenderOutputSchema },
|
|
331
|
+
voiceList: { input: voiceListInputSchema, output: voiceListOutputSchema },
|
|
294
332
|
musicGenerate: { input: musicGenerateInputSchema, output: musicGenerateOutputSchema },
|
|
295
333
|
transcribe: { input: transcribeInputSchema, output: transcribeOutputSchema },
|
|
296
334
|
sendPush: { input: sendPushInputSchema, output: pushOutputSchema },
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import {
|
|
3
|
+
encodeTimingTrack,
|
|
4
|
+
decodeTimingTrack,
|
|
5
|
+
type TimingTrack,
|
|
6
|
+
} from './TimingTrack.js';
|
|
7
|
+
|
|
8
|
+
describe('TimingTrack codec', () => {
|
|
9
|
+
it('round-trips words and visemes exactly (ms rounded to int)', () => {
|
|
10
|
+
const track: TimingTrack = {
|
|
11
|
+
words: [
|
|
12
|
+
{ charStart: 0, charLen: 5, startMs: 0, durMs: 320 },
|
|
13
|
+
{ charStart: 6, charLen: 5, startMs: 320, durMs: 280 },
|
|
14
|
+
{ charStart: 12, charLen: 3, startMs: 600, durMs: 150 },
|
|
15
|
+
],
|
|
16
|
+
visemes: [
|
|
17
|
+
{ name: 'aei', startMs: 0, durMs: 80, intensity: 1 },
|
|
18
|
+
{ name: 'bmp', startMs: 80, durMs: 60, intensity: 1 },
|
|
19
|
+
{ name: 'sil', startMs: 140, durMs: 40, intensity: 0 },
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
const decoded = decodeTimingTrack(encodeTimingTrack(track));
|
|
23
|
+
expect(decoded.words).toEqual(track.words);
|
|
24
|
+
// intensity is quantized to a byte; 0 and 1 are exact.
|
|
25
|
+
expect(decoded.visemes).toEqual(track.visemes);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('handles an empty track', () => {
|
|
29
|
+
const decoded = decodeTimingTrack(encodeTimingTrack({ words: [], visemes: [] }));
|
|
30
|
+
expect(decoded).toEqual({ words: [], visemes: [] });
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('preserves large absolute char offsets (novel-scale)', () => {
|
|
34
|
+
const track: TimingTrack = {
|
|
35
|
+
words: [
|
|
36
|
+
{ charStart: 2_500_000, charLen: 4, startMs: 10, durMs: 200 },
|
|
37
|
+
{ charStart: 2_500_005, charLen: 6, startMs: 220, durMs: 250 },
|
|
38
|
+
],
|
|
39
|
+
visemes: [],
|
|
40
|
+
};
|
|
41
|
+
const decoded = decodeTimingTrack(encodeTimingTrack(track));
|
|
42
|
+
expect(decoded.words).toEqual(track.words);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('unknown viseme names fall back to sil on decode', () => {
|
|
46
|
+
const enc = encodeTimingTrack({
|
|
47
|
+
words: [],
|
|
48
|
+
visemes: [{ name: 'not-a-viseme', startMs: 0, durMs: 50, intensity: 0.5 }],
|
|
49
|
+
});
|
|
50
|
+
const decoded = decodeTimingTrack(enc);
|
|
51
|
+
expect(decoded.visemes[0]!.name).toBe('sil');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('is far smaller than JSON for a realistic segment', () => {
|
|
55
|
+
const words = Array.from({ length: 200 }, (_, i) => ({
|
|
56
|
+
charStart: i * 6,
|
|
57
|
+
charLen: 5,
|
|
58
|
+
startMs: i * 300,
|
|
59
|
+
durMs: 280,
|
|
60
|
+
}));
|
|
61
|
+
const visemes = Array.from({ length: 1000 }, (_, i) => ({
|
|
62
|
+
name: 'aei',
|
|
63
|
+
startMs: i * 60,
|
|
64
|
+
durMs: 55,
|
|
65
|
+
intensity: 1,
|
|
66
|
+
}));
|
|
67
|
+
const bytes = encodeTimingTrack({ words, visemes });
|
|
68
|
+
const json = JSON.stringify({ words, visemes }).length;
|
|
69
|
+
// Expect at least a 5× reduction vs JSON.
|
|
70
|
+
expect(bytes.length * 5).toBeLessThan(json);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('rejects non-.tim data', () => {
|
|
74
|
+
expect(() => decodeTimingTrack(new Uint8Array([1, 2, 3, 4, 5]))).toThrow();
|
|
75
|
+
});
|
|
76
|
+
});
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
// src/shared/TimingTrack.ts
|
|
2
|
+
//
|
|
3
|
+
// Compact binary codec for pre-rendered TTS timing ("`.tim`" sidecars).
|
|
4
|
+
//
|
|
5
|
+
// A full audiobook's word + phoneme-viseme timings are ~30 MB as JSON, which is
|
|
6
|
+
// too large for a DB row and too slow to ship to the player. This codec stores
|
|
7
|
+
// the same data ~10× smaller (~2-3 MB/novel, spread across per-segment files)
|
|
8
|
+
// using delta + varint encoding, so the player streams one segment's timing at
|
|
9
|
+
// a time and reconstructs the karaoke highlight + avatar lip-sync without ever
|
|
10
|
+
// re-calling the TTS provider.
|
|
11
|
+
//
|
|
12
|
+
// Word strings are NOT stored — they're recovered by slicing the document text
|
|
13
|
+
// with each word's [charStart, charStart+charLen). Times are per-segment ms
|
|
14
|
+
// (relative to that segment's audio start); char offsets are absolute into the
|
|
15
|
+
// document's speech text.
|
|
16
|
+
|
|
17
|
+
/** One spoken word: char range into the document text + timing in segment ms. */
|
|
18
|
+
export interface TimingWord {
|
|
19
|
+
charStart: number;
|
|
20
|
+
charLen: number;
|
|
21
|
+
startMs: number;
|
|
22
|
+
durMs: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** One viseme (mouth shape) for lip-sync. `name` is the InWorld 11-viseme set. */
|
|
26
|
+
export interface TimingViseme {
|
|
27
|
+
name: string;
|
|
28
|
+
startMs: number;
|
|
29
|
+
durMs: number;
|
|
30
|
+
intensity: number; // 0..1
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface TimingTrack {
|
|
34
|
+
words: TimingWord[];
|
|
35
|
+
visemes: TimingViseme[];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// InWorld-standard viseme set; index in this array is the 1-byte wire code.
|
|
39
|
+
const VISEME_NAMES = [
|
|
40
|
+
'aei', 'o', 'bmp', 'fv', 'l', 'r', 'th', 'qw', 'ee', 'cdgknstxyz', 'sil',
|
|
41
|
+
] as const;
|
|
42
|
+
const VISEME_INDEX: Record<string, number> = Object.fromEntries(
|
|
43
|
+
VISEME_NAMES.map((n, i) => [n, i]),
|
|
44
|
+
);
|
|
45
|
+
const SIL_INDEX = VISEME_NAMES.indexOf('sil');
|
|
46
|
+
|
|
47
|
+
const MAGIC = [0x54, 0x49, 0x4d, 0x31]; // 'TIM1'
|
|
48
|
+
const VERSION = 1;
|
|
49
|
+
|
|
50
|
+
// ── varint helpers (arithmetic, so values > 2^31 stay correct) ───────────────
|
|
51
|
+
|
|
52
|
+
function writeUvarint(out: number[], value: number): void {
|
|
53
|
+
let n = Math.max(0, Math.floor(value));
|
|
54
|
+
while (n >= 128) {
|
|
55
|
+
out.push((n % 128) + 128);
|
|
56
|
+
n = Math.floor(n / 128);
|
|
57
|
+
}
|
|
58
|
+
out.push(n);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// zigzag: map signed → unsigned so small magnitudes stay small.
|
|
62
|
+
function writeSvarint(out: number[], value: number): void {
|
|
63
|
+
const v = Math.round(value);
|
|
64
|
+
writeUvarint(out, v >= 0 ? v * 2 : -v * 2 - 1);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
interface Cursor {
|
|
68
|
+
i: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function readUvarint(bytes: Uint8Array, cur: Cursor): number {
|
|
72
|
+
let result = 0;
|
|
73
|
+
let scale = 1;
|
|
74
|
+
let b: number;
|
|
75
|
+
do {
|
|
76
|
+
b = bytes[cur.i++] ?? 0;
|
|
77
|
+
result += (b & 0x7f) * scale;
|
|
78
|
+
scale *= 128;
|
|
79
|
+
} while (b & 0x80);
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function readSvarint(bytes: Uint8Array, cur: Cursor): number {
|
|
84
|
+
const z = readUvarint(bytes, cur);
|
|
85
|
+
return z % 2 === 0 ? z / 2 : -(z + 1) / 2;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function clampByte(n: number): number {
|
|
89
|
+
return Math.max(0, Math.min(255, Math.round(n)));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// ── encode / decode ──────────────────────────────────────────────────────────
|
|
93
|
+
|
|
94
|
+
export function encodeTimingTrack(track: TimingTrack): Uint8Array {
|
|
95
|
+
const out: number[] = [];
|
|
96
|
+
out.push(...MAGIC, VERSION);
|
|
97
|
+
writeUvarint(out, track.words.length);
|
|
98
|
+
writeUvarint(out, track.visemes.length);
|
|
99
|
+
|
|
100
|
+
let prevChar = 0;
|
|
101
|
+
let prevWordMs = 0;
|
|
102
|
+
for (const w of track.words) {
|
|
103
|
+
writeSvarint(out, w.charStart - prevChar);
|
|
104
|
+
prevChar = w.charStart;
|
|
105
|
+
writeUvarint(out, Math.max(0, w.charLen));
|
|
106
|
+
writeSvarint(out, Math.round(w.startMs) - prevWordMs);
|
|
107
|
+
prevWordMs = Math.round(w.startMs);
|
|
108
|
+
writeUvarint(out, Math.max(0, w.durMs));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
let prevVisMs = 0;
|
|
112
|
+
for (const v of track.visemes) {
|
|
113
|
+
out.push(VISEME_INDEX[v.name] ?? SIL_INDEX);
|
|
114
|
+
writeSvarint(out, Math.round(v.startMs) - prevVisMs);
|
|
115
|
+
prevVisMs = Math.round(v.startMs);
|
|
116
|
+
writeUvarint(out, Math.max(0, v.durMs));
|
|
117
|
+
out.push(clampByte(v.intensity * 255));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return Uint8Array.from(out);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function decodeTimingTrack(bytes: Uint8Array): TimingTrack {
|
|
124
|
+
const cur: Cursor = { i: 0 };
|
|
125
|
+
for (const m of MAGIC) {
|
|
126
|
+
if ((bytes[cur.i++] ?? -1) !== m) {
|
|
127
|
+
throw new Error('decodeTimingTrack: bad magic (not a .tim track)');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const version = bytes[cur.i++];
|
|
131
|
+
if (version !== VERSION) {
|
|
132
|
+
throw new Error(`decodeTimingTrack: unsupported version ${version}`);
|
|
133
|
+
}
|
|
134
|
+
const wordCount = readUvarint(bytes, cur);
|
|
135
|
+
const visemeCount = readUvarint(bytes, cur);
|
|
136
|
+
|
|
137
|
+
const words: TimingWord[] = [];
|
|
138
|
+
let prevChar = 0;
|
|
139
|
+
let prevWordMs = 0;
|
|
140
|
+
for (let k = 0; k < wordCount; k++) {
|
|
141
|
+
const charStart = prevChar + readSvarint(bytes, cur);
|
|
142
|
+
prevChar = charStart;
|
|
143
|
+
const charLen = readUvarint(bytes, cur);
|
|
144
|
+
const startMs = prevWordMs + readSvarint(bytes, cur);
|
|
145
|
+
prevWordMs = startMs;
|
|
146
|
+
const durMs = readUvarint(bytes, cur);
|
|
147
|
+
words.push({ charStart, charLen, startMs, durMs });
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const visemes: TimingViseme[] = [];
|
|
151
|
+
let prevVisMs = 0;
|
|
152
|
+
for (let k = 0; k < visemeCount; k++) {
|
|
153
|
+
const name = VISEME_NAMES[bytes[cur.i++] ?? SIL_INDEX] ?? 'sil';
|
|
154
|
+
const startMs = prevVisMs + readSvarint(bytes, cur);
|
|
155
|
+
prevVisMs = startMs;
|
|
156
|
+
const durMs = readUvarint(bytes, cur);
|
|
157
|
+
const intensity = (bytes[cur.i++] ?? 0) / 255;
|
|
158
|
+
visemes.push({ name, startMs, durMs, intensity });
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return { words, visemes };
|
|
162
|
+
}
|
package/src/shared/index.ts
CHANGED
|
@@ -73,6 +73,8 @@ export * from './Avatar.js';
|
|
|
73
73
|
export * from './DB.js';
|
|
74
74
|
export * from './Errors.js';
|
|
75
75
|
export * from './ImageGen.js';
|
|
76
|
+
export * from './Pricing.js';
|
|
77
|
+
export * from './TimingTrack.js';
|
|
76
78
|
export * from './Router.js';
|
|
77
79
|
export type {
|
|
78
80
|
SocketLoggedIn,
|