@pie-players/tts-client-server 0.3.5 → 0.3.8
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 +59 -19
- package/dist/ServerTTSProvider.d.ts +25 -0
- package/dist/ServerTTSProvider.d.ts.map +1 -1
- package/dist/ServerTTSProvider.js +251 -47
- package/dist/ServerTTSProvider.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -38,6 +38,19 @@ await ttsService.initialize(provider, {
|
|
|
38
38
|
voiceId: 'Joanna',
|
|
39
39
|
language: 'en-US',
|
|
40
40
|
});
|
|
41
|
+
|
|
42
|
+
// Note: `apiEndpoint`, `provider`, and `voiceId` are server-provider-specific
|
|
43
|
+
// options. When using TTSConfig, pass these inside `providerOptions` rather
|
|
44
|
+
// than as top-level fields:
|
|
45
|
+
//
|
|
46
|
+
// const config: TTSConfig = {
|
|
47
|
+
// providerOptions: {
|
|
48
|
+
// apiEndpoint: '/api/tts',
|
|
49
|
+
// provider: 'polly',
|
|
50
|
+
// voiceId: 'Joanna',
|
|
51
|
+
// },
|
|
52
|
+
// language: 'en-US',
|
|
53
|
+
// };
|
|
41
54
|
```
|
|
42
55
|
|
|
43
56
|
### With Authentication
|
|
@@ -60,11 +73,14 @@ await ttsService.speak('Hello world, this is a test.', {
|
|
|
60
73
|
});
|
|
61
74
|
```
|
|
62
75
|
|
|
63
|
-
##
|
|
76
|
+
## Transport Modes
|
|
77
|
+
|
|
78
|
+
`ServerTTSProvider` now supports two transport modes:
|
|
64
79
|
|
|
65
|
-
|
|
80
|
+
- `pie` (default): POST `${apiEndpoint}/synthesize`, inline base64 audio + inline speech marks
|
|
81
|
+
- `custom`: POST to root endpoint, then fetch `audioContent` and JSONL marks URLs
|
|
66
82
|
|
|
67
|
-
###
|
|
83
|
+
### PIE mode request
|
|
68
84
|
|
|
69
85
|
**Request:**
|
|
70
86
|
```json
|
|
@@ -97,27 +113,47 @@ The server API must implement two endpoints:
|
|
|
97
113
|
}
|
|
98
114
|
```
|
|
99
115
|
|
|
100
|
-
###
|
|
116
|
+
### PIE mode response
|
|
101
117
|
|
|
102
|
-
**Response:**
|
|
103
118
|
```json
|
|
104
119
|
{
|
|
105
|
-
"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"language": "English",
|
|
110
|
-
"languageCode": "en-US",
|
|
111
|
-
"gender": "female",
|
|
112
|
-
"quality": "neural"
|
|
113
|
-
}
|
|
120
|
+
"audio": "base64-encoded-audio",
|
|
121
|
+
"contentType": "audio/mpeg",
|
|
122
|
+
"speechMarks": [
|
|
123
|
+
{ "time": 0, "type": "word", "start": 0, "end": 5, "value": "Hello" }
|
|
114
124
|
]
|
|
115
125
|
}
|
|
116
126
|
```
|
|
117
127
|
|
|
128
|
+
### Custom mode request
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"text": "Hello world",
|
|
133
|
+
"speedRate": "medium",
|
|
134
|
+
"lang_id": "en-US",
|
|
135
|
+
"cache": true
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Custom mode response
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"audioContent": "https://cdn.example.com/audio.mp3",
|
|
144
|
+
"word": "https://cdn.example.com/marks.jsonl"
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Speech marks are fetched from the `word` URL and parsed as JSONL.
|
|
149
|
+
|
|
150
|
+
### Optional voices endpoint
|
|
151
|
+
|
|
152
|
+
`GET ${apiEndpoint}/voices` remains optional and is only used when endpoint validation is configured with `endpointValidationMode: "voices"`.
|
|
153
|
+
|
|
118
154
|
## SvelteKit Implementation Example
|
|
119
155
|
|
|
120
|
-
See the implementation guide in [tts-
|
|
156
|
+
See the implementation guide in [tts-architecture.md](../../docs/accessibility/tts-architecture.md).
|
|
121
157
|
|
|
122
158
|
Example route structure:
|
|
123
159
|
```
|
|
@@ -134,7 +170,11 @@ apps/<host-app>/src/routes/api/tts/
|
|
|
134
170
|
interface ServerTTSProviderConfig {
|
|
135
171
|
apiEndpoint: string; // API base URL (required)
|
|
136
172
|
provider?: string; // Server provider ('polly', 'google', etc.)
|
|
173
|
+
transportMode?: 'pie' | 'custom';
|
|
174
|
+
endpointMode?: 'synthesizePath' | 'rootPost';
|
|
175
|
+
endpointValidationMode?: 'voices' | 'endpoint' | 'none';
|
|
137
176
|
authToken?: string; // JWT or API key
|
|
177
|
+
includeAuthOnAssetFetch?: boolean;
|
|
138
178
|
organizationId?: string; // For multi-tenant setups
|
|
139
179
|
headers?: Record<string, string>; // Custom headers
|
|
140
180
|
voiceId?: string; // Voice ID
|
|
@@ -147,10 +187,10 @@ interface ServerTTSProviderConfig {
|
|
|
147
187
|
## How It Works
|
|
148
188
|
|
|
149
189
|
1. **Client calls** `speak(text)`
|
|
150
|
-
2. **
|
|
151
|
-
3. **
|
|
152
|
-
4. **
|
|
153
|
-
5. **Client
|
|
190
|
+
2. **Adapter builds** backend-specific request payload
|
|
191
|
+
3. **Provider POSTs** to resolved synthesis endpoint (`/synthesize` or root POST)
|
|
192
|
+
4. **Adapter normalizes** response into audio + speech marks
|
|
193
|
+
5. **Client loads** audio as Blob URL
|
|
154
194
|
6. **Client plays** audio via HTMLAudioElement
|
|
155
195
|
7. **Client polls** audio time every 50ms
|
|
156
196
|
8. **Client fires** word boundary callbacks at correct times
|
|
@@ -24,6 +24,30 @@ export interface ServerTTSProviderConfig extends TTSConfig {
|
|
|
24
24
|
engine?: "standard" | "neural";
|
|
25
25
|
/** Volume level 0-1 */
|
|
26
26
|
volume?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Transport mode determines request/response translation strategy.
|
|
29
|
+
* - pie: POST {apiEndpoint}/synthesize, expects inline base64 audio + speech marks
|
|
30
|
+
* - custom: POST root endpoint, expects audioContent URL + JSONL speech mark URL
|
|
31
|
+
*/
|
|
32
|
+
transportMode?: "pie" | "custom";
|
|
33
|
+
/**
|
|
34
|
+
* Endpoint mode for synthesis requests.
|
|
35
|
+
* - synthesizePath: append /synthesize to apiEndpoint
|
|
36
|
+
* - rootPost: POST directly to apiEndpoint
|
|
37
|
+
*/
|
|
38
|
+
endpointMode?: "synthesizePath" | "rootPost";
|
|
39
|
+
/**
|
|
40
|
+
* Endpoint validation mode used during initialize(validateEndpoint=true).
|
|
41
|
+
* - voices: probe {apiEndpoint}/voices
|
|
42
|
+
* - endpoint: probe resolved synthesis endpoint
|
|
43
|
+
* - none: skip endpoint probe
|
|
44
|
+
*/
|
|
45
|
+
endpointValidationMode?: "voices" | "endpoint" | "none";
|
|
46
|
+
/**
|
|
47
|
+
* Include auth headers when fetching custom-transport speech marks and audio URLs.
|
|
48
|
+
* Defaults to false for compatibility.
|
|
49
|
+
*/
|
|
50
|
+
includeAuthOnAssetFetch?: boolean;
|
|
27
51
|
/**
|
|
28
52
|
* Validate API endpoint availability during initialization (slower but safer)
|
|
29
53
|
*
|
|
@@ -44,6 +68,7 @@ export declare class ServerTTSProvider implements ITTSProvider {
|
|
|
44
68
|
readonly providerName = "Server TTS";
|
|
45
69
|
readonly version = "1.0.0";
|
|
46
70
|
private config;
|
|
71
|
+
private adapter;
|
|
47
72
|
/**
|
|
48
73
|
* Initialize the server TTS provider.
|
|
49
74
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerTTSProvider.d.ts","sourceRoot":"","sources":["../src/ServerTTSProvider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACX,YAAY,EACZ,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,uBAAuB,EACvB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,SAAS;IACzD,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IAEpB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wDAAwD;IACxD,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAE/B,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"ServerTTSProvider.d.ts","sourceRoot":"","sources":["../src/ServerTTSProvider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACX,YAAY,EACZ,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,uBAAuB,EACvB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,SAAS;IACzD,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IAEpB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wDAAwD;IACxD,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAE/B,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAEjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAAC;IAE7C;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAExD;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAipBD;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACrD,QAAQ,CAAC,UAAU,gBAAgB;IACnC,QAAQ,CAAC,YAAY,gBAAgB;IACrC,QAAQ,CAAC,OAAO,WAAW;IAE3B,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,OAAO,CAAiC;IAEhD;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAwBxE;;;;OAIG;YACW,mBAAmB;IA2CjC,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAgB7C,eAAe,IAAI,uBAAuB;IAa1C,OAAO,IAAI,IAAI;CAIf"}
|
|
@@ -5,27 +5,217 @@
|
|
|
5
5
|
* providers like AWS Polly, Google Cloud TTS, etc.
|
|
6
6
|
* Returns audio with precise word-level timing (speech marks).
|
|
7
7
|
*/
|
|
8
|
+
const MAX_TEXT_LENGTH_BY_MODE = {
|
|
9
|
+
pie: 3000,
|
|
10
|
+
custom: 3000,
|
|
11
|
+
};
|
|
12
|
+
const trimTrailingSlash = (value) => value.replace(/\/+$/, "");
|
|
13
|
+
const resolveTransportMode = (config) => {
|
|
14
|
+
if (config.transportMode === "custom")
|
|
15
|
+
return "custom";
|
|
16
|
+
if (config.transportMode === "pie")
|
|
17
|
+
return "pie";
|
|
18
|
+
return config.provider === "custom" ? "custom" : "pie";
|
|
19
|
+
};
|
|
20
|
+
const resolveEndpointMode = (config, mode) => {
|
|
21
|
+
if (config.endpointMode)
|
|
22
|
+
return config.endpointMode;
|
|
23
|
+
return mode === "custom" ? "rootPost" : "synthesizePath";
|
|
24
|
+
};
|
|
25
|
+
const resolveValidationMode = (config, mode) => {
|
|
26
|
+
if (config.endpointValidationMode)
|
|
27
|
+
return config.endpointValidationMode;
|
|
28
|
+
return mode === "custom" ? "none" : "voices";
|
|
29
|
+
};
|
|
30
|
+
const resolveSpeedRate = (config) => {
|
|
31
|
+
const providerOptions = (config.providerOptions || {});
|
|
32
|
+
if (typeof providerOptions.speedRate === "string") {
|
|
33
|
+
return providerOptions.speedRate;
|
|
34
|
+
}
|
|
35
|
+
const rate = Number(config.rate ?? 1);
|
|
36
|
+
if (!Number.isFinite(rate) || rate <= 0.95)
|
|
37
|
+
return "slow";
|
|
38
|
+
if (rate >= 1.5)
|
|
39
|
+
return "fast";
|
|
40
|
+
return "medium";
|
|
41
|
+
};
|
|
42
|
+
const parseJSONLSpeechMarks = (raw) => {
|
|
43
|
+
const marks = [];
|
|
44
|
+
let fallbackIndex = 0;
|
|
45
|
+
const lines = raw
|
|
46
|
+
.split("\n")
|
|
47
|
+
.map((line) => line.trim())
|
|
48
|
+
.filter(Boolean);
|
|
49
|
+
for (const line of lines) {
|
|
50
|
+
try {
|
|
51
|
+
const parsed = JSON.parse(line);
|
|
52
|
+
const type = typeof parsed.type === "string" ? parsed.type : "word";
|
|
53
|
+
const time = typeof parsed.time === "number" && Number.isFinite(parsed.time)
|
|
54
|
+
? parsed.time
|
|
55
|
+
: 0;
|
|
56
|
+
const value = typeof parsed.value === "string" ? parsed.value : "";
|
|
57
|
+
const explicitStart = typeof parsed.start === "number" && Number.isFinite(parsed.start)
|
|
58
|
+
? parsed.start
|
|
59
|
+
: null;
|
|
60
|
+
const explicitEnd = typeof parsed.end === "number" && Number.isFinite(parsed.end)
|
|
61
|
+
? parsed.end
|
|
62
|
+
: null;
|
|
63
|
+
const start = explicitStart ?? fallbackIndex;
|
|
64
|
+
const computedEnd = explicitEnd ??
|
|
65
|
+
(start + Math.max(1, value.length || String(parsed.value || "").length));
|
|
66
|
+
fallbackIndex = Math.max(computedEnd + 1, fallbackIndex);
|
|
67
|
+
marks.push({
|
|
68
|
+
time,
|
|
69
|
+
type,
|
|
70
|
+
start,
|
|
71
|
+
end: computedEnd,
|
|
72
|
+
value,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Ignore malformed lines and keep parsing valid marks.
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return marks;
|
|
80
|
+
};
|
|
81
|
+
const pieAdapter = {
|
|
82
|
+
id: "pie",
|
|
83
|
+
resolveSynthesisUrl: (config) => {
|
|
84
|
+
const endpointMode = resolveEndpointMode(config, "pie");
|
|
85
|
+
const base = trimTrailingSlash(config.apiEndpoint);
|
|
86
|
+
return endpointMode === "rootPost" ? base : `${base}/synthesize`;
|
|
87
|
+
},
|
|
88
|
+
buildRequestBody: (text, config) => {
|
|
89
|
+
const providerOptions = (config.providerOptions ||
|
|
90
|
+
{});
|
|
91
|
+
const engine = typeof config.engine === "string"
|
|
92
|
+
? config.engine
|
|
93
|
+
: typeof providerOptions.engine === "string"
|
|
94
|
+
? providerOptions.engine
|
|
95
|
+
: undefined;
|
|
96
|
+
const sampleRate = typeof providerOptions.sampleRate === "number" &&
|
|
97
|
+
Number.isFinite(providerOptions.sampleRate)
|
|
98
|
+
? providerOptions.sampleRate
|
|
99
|
+
: undefined;
|
|
100
|
+
const format = providerOptions.format === "mp3" ||
|
|
101
|
+
providerOptions.format === "ogg" ||
|
|
102
|
+
providerOptions.format === "pcm"
|
|
103
|
+
? providerOptions.format
|
|
104
|
+
: undefined;
|
|
105
|
+
const speechMarkTypes = Array.isArray(providerOptions.speechMarkTypes)
|
|
106
|
+
? providerOptions.speechMarkTypes.filter((entry) => entry === "word" || entry === "sentence" || entry === "ssml")
|
|
107
|
+
: undefined;
|
|
108
|
+
return {
|
|
109
|
+
text,
|
|
110
|
+
provider: config.provider || "polly",
|
|
111
|
+
voice: config.voice,
|
|
112
|
+
language: config.language,
|
|
113
|
+
rate: config.rate,
|
|
114
|
+
engine,
|
|
115
|
+
sampleRate,
|
|
116
|
+
format,
|
|
117
|
+
speechMarkTypes,
|
|
118
|
+
includeSpeechMarks: true,
|
|
119
|
+
};
|
|
120
|
+
},
|
|
121
|
+
parseResponse: async (response) => {
|
|
122
|
+
const data = await response.json();
|
|
123
|
+
return {
|
|
124
|
+
audio: {
|
|
125
|
+
kind: "base64",
|
|
126
|
+
data: data.audio,
|
|
127
|
+
contentType: data.contentType,
|
|
128
|
+
},
|
|
129
|
+
speechMarks: Array.isArray(data.speechMarks) ? data.speechMarks : [],
|
|
130
|
+
};
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
const customAdapter = {
|
|
134
|
+
id: "custom",
|
|
135
|
+
resolveSynthesisUrl: (config) => {
|
|
136
|
+
const endpointMode = resolveEndpointMode(config, "custom");
|
|
137
|
+
const base = trimTrailingSlash(config.apiEndpoint);
|
|
138
|
+
return endpointMode === "synthesizePath" ? `${base}/synthesize` : base;
|
|
139
|
+
},
|
|
140
|
+
buildRequestBody: (text, config) => {
|
|
141
|
+
const providerOptions = (config.providerOptions || {});
|
|
142
|
+
const langId = typeof providerOptions.lang_id === "string"
|
|
143
|
+
? providerOptions.lang_id
|
|
144
|
+
: config.language || "en-US";
|
|
145
|
+
const cache = typeof providerOptions.cache === "boolean" ? providerOptions.cache : true;
|
|
146
|
+
return {
|
|
147
|
+
text,
|
|
148
|
+
speedRate: resolveSpeedRate(config),
|
|
149
|
+
lang_id: langId,
|
|
150
|
+
cache,
|
|
151
|
+
};
|
|
152
|
+
},
|
|
153
|
+
parseResponse: async (response, config, headers, signal) => {
|
|
154
|
+
const data = await response.json();
|
|
155
|
+
const marksHeaders = {};
|
|
156
|
+
if (config.includeAuthOnAssetFetch) {
|
|
157
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
158
|
+
if (key.toLowerCase() === "authorization") {
|
|
159
|
+
marksHeaders[key] = value;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
let speechMarks = [];
|
|
164
|
+
if (typeof data.word === "string" && data.word.length > 0) {
|
|
165
|
+
const marksResponse = await fetch(data.word, {
|
|
166
|
+
headers: marksHeaders,
|
|
167
|
+
signal,
|
|
168
|
+
});
|
|
169
|
+
if (marksResponse.ok) {
|
|
170
|
+
const marksRaw = await marksResponse.text();
|
|
171
|
+
speechMarks = parseJSONLSpeechMarks(marksRaw);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
audio: {
|
|
176
|
+
kind: "url",
|
|
177
|
+
url: data.audioContent,
|
|
178
|
+
},
|
|
179
|
+
speechMarks,
|
|
180
|
+
};
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
const ADAPTERS = {
|
|
184
|
+
pie: pieAdapter,
|
|
185
|
+
custom: customAdapter,
|
|
186
|
+
};
|
|
8
187
|
/**
|
|
9
188
|
* Provider implementation that handles audio playback
|
|
10
189
|
*/
|
|
11
190
|
class ServerTTSProviderImpl {
|
|
12
191
|
config;
|
|
192
|
+
adapter;
|
|
13
193
|
currentAudio = null;
|
|
14
194
|
pausedState = false;
|
|
15
195
|
wordTimings = [];
|
|
16
196
|
highlightInterval = null;
|
|
17
197
|
intentionallyStopped = false;
|
|
198
|
+
activeSynthesisController = null;
|
|
199
|
+
synthesisRunId = 0;
|
|
18
200
|
onWordBoundary;
|
|
19
|
-
constructor(config) {
|
|
201
|
+
constructor(config, adapter) {
|
|
20
202
|
this.config = config;
|
|
203
|
+
this.adapter = adapter;
|
|
21
204
|
}
|
|
22
205
|
async speak(text) {
|
|
23
206
|
// Stop any current playback
|
|
24
207
|
this.stop();
|
|
25
208
|
// Reset intentionally stopped flag for new playback
|
|
26
209
|
this.intentionallyStopped = false;
|
|
210
|
+
const runId = ++this.synthesisRunId;
|
|
211
|
+
const synthesisController = new AbortController();
|
|
212
|
+
this.activeSynthesisController = synthesisController;
|
|
27
213
|
// Call server API to synthesize speech
|
|
28
|
-
const { audioUrl, wordTimings } = await this.synthesizeSpeech(text);
|
|
214
|
+
const { audioUrl, wordTimings } = await this.synthesizeSpeech(text, synthesisController.signal, runId);
|
|
215
|
+
if (runId !== this.synthesisRunId) {
|
|
216
|
+
URL.revokeObjectURL(audioUrl);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
29
219
|
// Adjust word timing for playback rate
|
|
30
220
|
// Speech marks are at 1.0x speed, so we need to scale them
|
|
31
221
|
const playbackRate = this.config.rate || 1.0;
|
|
@@ -65,6 +255,7 @@ class ServerTTSProviderImpl {
|
|
|
65
255
|
URL.revokeObjectURL(audioUrl);
|
|
66
256
|
this.currentAudio = null;
|
|
67
257
|
this.wordTimings = [];
|
|
258
|
+
void event;
|
|
68
259
|
// Only reject if this wasn't an intentional stop
|
|
69
260
|
if (!this.intentionallyStopped) {
|
|
70
261
|
reject(new Error("Failed to play audio from server"));
|
|
@@ -85,7 +276,7 @@ class ServerTTSProviderImpl {
|
|
|
85
276
|
/**
|
|
86
277
|
* Call server API to synthesize speech
|
|
87
278
|
*/
|
|
88
|
-
async synthesizeSpeech(text) {
|
|
279
|
+
async synthesizeSpeech(text, signal, runId) {
|
|
89
280
|
const headers = {
|
|
90
281
|
"Content-Type": "application/json",
|
|
91
282
|
...this.config.headers,
|
|
@@ -94,41 +285,13 @@ class ServerTTSProviderImpl {
|
|
|
94
285
|
if (this.config.authToken) {
|
|
95
286
|
headers["Authorization"] = `Bearer ${this.config.authToken}`;
|
|
96
287
|
}
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
? this.config.engine
|
|
101
|
-
: typeof providerOptions.engine === "string"
|
|
102
|
-
? providerOptions.engine
|
|
103
|
-
: undefined;
|
|
104
|
-
const sampleRate = typeof providerOptions.sampleRate === "number" &&
|
|
105
|
-
Number.isFinite(providerOptions.sampleRate)
|
|
106
|
-
? providerOptions.sampleRate
|
|
107
|
-
: undefined;
|
|
108
|
-
const format = providerOptions.format === "mp3" ||
|
|
109
|
-
providerOptions.format === "ogg" ||
|
|
110
|
-
providerOptions.format === "pcm"
|
|
111
|
-
? providerOptions.format
|
|
112
|
-
: undefined;
|
|
113
|
-
const speechMarkTypes = Array.isArray(providerOptions.speechMarkTypes)
|
|
114
|
-
? providerOptions.speechMarkTypes.filter((entry) => entry === "word" || entry === "sentence" || entry === "ssml")
|
|
115
|
-
: undefined;
|
|
116
|
-
const requestBody = {
|
|
117
|
-
text,
|
|
118
|
-
provider: this.config.provider || "polly",
|
|
119
|
-
voice: this.config.voice,
|
|
120
|
-
language: this.config.language,
|
|
121
|
-
rate: this.config.rate,
|
|
122
|
-
engine,
|
|
123
|
-
sampleRate,
|
|
124
|
-
format,
|
|
125
|
-
speechMarkTypes,
|
|
126
|
-
includeSpeechMarks: true,
|
|
127
|
-
};
|
|
128
|
-
const response = await fetch(`${this.config.apiEndpoint}/synthesize`, {
|
|
288
|
+
const synthUrl = this.adapter.resolveSynthesisUrl(this.config);
|
|
289
|
+
const requestBody = this.adapter.buildRequestBody(text, this.config);
|
|
290
|
+
const response = await fetch(synthUrl, {
|
|
129
291
|
method: "POST",
|
|
130
292
|
headers,
|
|
131
293
|
body: JSON.stringify(requestBody),
|
|
294
|
+
signal,
|
|
132
295
|
});
|
|
133
296
|
if (!response.ok) {
|
|
134
297
|
const errorData = await response.json().catch(() => ({}));
|
|
@@ -137,12 +300,33 @@ class ServerTTSProviderImpl {
|
|
|
137
300
|
`Server returned ${response.status}`;
|
|
138
301
|
throw new Error(errorMessage);
|
|
139
302
|
}
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
303
|
+
const normalized = await this.adapter.parseResponse(response, this.config, headers, signal);
|
|
304
|
+
if (runId !== this.synthesisRunId || signal.aborted) {
|
|
305
|
+
throw new Error("Synthesis superseded by a newer request");
|
|
306
|
+
}
|
|
307
|
+
let audioBlob;
|
|
308
|
+
if (normalized.audio.kind === "base64") {
|
|
309
|
+
audioBlob = this.base64ToBlob(normalized.audio.data, normalized.audio.contentType);
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
const assetHeaders = {};
|
|
313
|
+
if (this.config.includeAuthOnAssetFetch) {
|
|
314
|
+
if (this.config.authToken) {
|
|
315
|
+
assetHeaders["Authorization"] = `Bearer ${this.config.authToken}`;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
const audioResponse = await fetch(normalized.audio.url, {
|
|
319
|
+
headers: assetHeaders,
|
|
320
|
+
signal,
|
|
321
|
+
});
|
|
322
|
+
if (!audioResponse.ok) {
|
|
323
|
+
throw new Error(`Failed to download synthesized audio (${audioResponse.status})`);
|
|
324
|
+
}
|
|
325
|
+
audioBlob = await audioResponse.blob();
|
|
326
|
+
}
|
|
143
327
|
const audioUrl = URL.createObjectURL(audioBlob);
|
|
144
328
|
// Convert speech marks to word timings
|
|
145
|
-
const wordTimings = this.parseSpeechMarks(
|
|
329
|
+
const wordTimings = this.parseSpeechMarks(normalized.speechMarks);
|
|
146
330
|
return { audioUrl, wordTimings };
|
|
147
331
|
}
|
|
148
332
|
/**
|
|
@@ -240,6 +424,11 @@ class ServerTTSProviderImpl {
|
|
|
240
424
|
}
|
|
241
425
|
}
|
|
242
426
|
stop() {
|
|
427
|
+
this.synthesisRunId += 1;
|
|
428
|
+
if (this.activeSynthesisController) {
|
|
429
|
+
this.activeSynthesisController.abort();
|
|
430
|
+
this.activeSynthesisController = null;
|
|
431
|
+
}
|
|
243
432
|
this.stopWordHighlighting();
|
|
244
433
|
if (this.currentAudio) {
|
|
245
434
|
// Mark as intentionally stopped to prevent error handler from rejecting
|
|
@@ -295,6 +484,7 @@ export class ServerTTSProvider {
|
|
|
295
484
|
providerName = "Server TTS";
|
|
296
485
|
version = "1.0.0";
|
|
297
486
|
config = null;
|
|
487
|
+
adapter = null;
|
|
298
488
|
/**
|
|
299
489
|
* Initialize the server TTS provider.
|
|
300
490
|
*
|
|
@@ -309,6 +499,8 @@ export class ServerTTSProvider {
|
|
|
309
499
|
throw new Error("apiEndpoint is required for ServerTTSProvider");
|
|
310
500
|
}
|
|
311
501
|
this.config = serverConfig;
|
|
502
|
+
const transportMode = resolveTransportMode(serverConfig);
|
|
503
|
+
this.adapter = ADAPTERS[transportMode];
|
|
312
504
|
// Only test API availability if explicitly requested (slower but safer)
|
|
313
505
|
if (serverConfig.validateEndpoint) {
|
|
314
506
|
const available = await this.testAPIAvailability();
|
|
@@ -316,7 +508,7 @@ export class ServerTTSProvider {
|
|
|
316
508
|
throw new Error(`Server TTS API not available at ${serverConfig.apiEndpoint}`);
|
|
317
509
|
}
|
|
318
510
|
}
|
|
319
|
-
return new ServerTTSProviderImpl(serverConfig);
|
|
511
|
+
return new ServerTTSProviderImpl(serverConfig, this.adapter);
|
|
320
512
|
}
|
|
321
513
|
/**
|
|
322
514
|
* Test if API endpoint is available (with timeout).
|
|
@@ -324,7 +516,7 @@ export class ServerTTSProvider {
|
|
|
324
516
|
* @performance 100-500ms depending on network
|
|
325
517
|
*/
|
|
326
518
|
async testAPIAvailability() {
|
|
327
|
-
if (!this.config)
|
|
519
|
+
if (!this.config || !this.adapter)
|
|
328
520
|
return false;
|
|
329
521
|
try {
|
|
330
522
|
const headers = { ...this.config.headers };
|
|
@@ -334,18 +526,28 @@ export class ServerTTSProvider {
|
|
|
334
526
|
// Create abort controller for timeout
|
|
335
527
|
const controller = new AbortController();
|
|
336
528
|
const timeoutId = setTimeout(() => controller.abort(), 5000); // 5 second timeout
|
|
529
|
+
const mode = resolveValidationMode(this.config, this.adapter.id);
|
|
530
|
+
if (mode === "none") {
|
|
531
|
+
clearTimeout(timeoutId);
|
|
532
|
+
return true;
|
|
533
|
+
}
|
|
534
|
+
const base = trimTrailingSlash(this.config.apiEndpoint);
|
|
535
|
+
const validationUrl = mode === "voices"
|
|
536
|
+
? `${base}/voices`
|
|
537
|
+
: this.adapter.resolveSynthesisUrl(this.config);
|
|
538
|
+
const method = mode === "voices" ? "GET" : "OPTIONS";
|
|
337
539
|
try {
|
|
338
|
-
|
|
339
|
-
|
|
540
|
+
const response = await fetch(validationUrl, {
|
|
541
|
+
method,
|
|
340
542
|
headers,
|
|
341
543
|
signal: controller.signal,
|
|
342
544
|
});
|
|
343
545
|
clearTimeout(timeoutId);
|
|
344
|
-
|
|
546
|
+
// Some endpoints may not accept OPTIONS; treat 405 as reachable.
|
|
547
|
+
return response.ok || response.status === 405;
|
|
345
548
|
}
|
|
346
|
-
catch
|
|
549
|
+
catch {
|
|
347
550
|
clearTimeout(timeoutId);
|
|
348
|
-
// If aborted due to timeout or network error, consider API unavailable
|
|
349
551
|
return false;
|
|
350
552
|
}
|
|
351
553
|
}
|
|
@@ -369,6 +571,7 @@ export class ServerTTSProvider {
|
|
|
369
571
|
}
|
|
370
572
|
}
|
|
371
573
|
getCapabilities() {
|
|
574
|
+
const mode = this.config ? resolveTransportMode(this.config) : "pie";
|
|
372
575
|
return {
|
|
373
576
|
supportsPause: true,
|
|
374
577
|
supportsResume: true,
|
|
@@ -376,11 +579,12 @@ export class ServerTTSProvider {
|
|
|
376
579
|
supportsVoiceSelection: true,
|
|
377
580
|
supportsRateControl: true,
|
|
378
581
|
supportsPitchControl: false, // Depends on server provider
|
|
379
|
-
maxTextLength:
|
|
582
|
+
maxTextLength: MAX_TEXT_LENGTH_BY_MODE[mode],
|
|
380
583
|
};
|
|
381
584
|
}
|
|
382
585
|
destroy() {
|
|
383
586
|
this.config = null;
|
|
587
|
+
this.adapter = null;
|
|
384
588
|
}
|
|
385
589
|
}
|
|
386
590
|
//# sourceMappingURL=ServerTTSProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerTTSProvider.js","sourceRoot":"","sources":["../src/ServerTTSProvider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ServerTTSProvider.js","sourceRoot":"","sources":["../src/ServerTTSProvider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-players/tts-client-server",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.8",
|
|
4
4
|
"description": "Client-side TTS provider that calls server API for synthesis",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@pie-players/pie-tts": "0.3.
|
|
41
|
+
"@pie-players/pie-tts": "0.3.8"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"typescript": "^5.9.3",
|