@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 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
- ## API Requirements
76
+ ## Transport Modes
77
+
78
+ `ServerTTSProvider` now supports two transport modes:
64
79
 
65
- The server API must implement two endpoints:
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
- ### POST `/api/tts/synthesize`
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
- ### GET `/api/tts/voices`
116
+ ### PIE mode response
101
117
 
102
- **Response:**
103
118
  ```json
104
119
  {
105
- "voices": [
106
- {
107
- "id": "Joanna",
108
- "name": "Joanna",
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-server-api-architecture.md](../../docs/tts-server-api-architecture.md).
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. **Provider POSTs** to `/api/tts/synthesize` with text
151
- 3. **Server synthesizes** using provider (Polly, Google, etc.)
152
- 4. **Server returns** base64 audio + speech marks
153
- 5. **Client converts** base64 to Blob URL
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;AA+YD;;;;;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;IAEtD;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAsBxE;;;;OAIG;YACW,mBAAmB;IAiCjC,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAgB7C,eAAe,IAAI,uBAAuB;IAY1C,OAAO,IAAI,IAAI;CAGf"}
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 providerOptions = (this.config.providerOptions ||
98
- {});
99
- const engine = typeof this.config.engine === "string"
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 data = await response.json();
141
- // Convert base64 audio to blob URL
142
- const audioBlob = this.base64ToBlob(data.audio, data.contentType);
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(data.speechMarks);
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
- // Try to fetch voices to test API
339
- const response = await fetch(`${this.config.apiEndpoint}/voices`, {
540
+ const response = await fetch(validationUrl, {
541
+ method,
340
542
  headers,
341
543
  signal: controller.signal,
342
544
  });
343
545
  clearTimeout(timeoutId);
344
- return response.ok;
546
+ // Some endpoints may not accept OPTIONS; treat 405 as reachable.
547
+ return response.ok || response.status === 405;
345
548
  }
346
- catch (fetchError) {
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: 3000, // Conservative estimate
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.5",
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.5"
41
+ "@pie-players/pie-tts": "0.3.8"
42
42
  },
43
43
  "devDependencies": {
44
44
  "typescript": "^5.9.3",