@framers/agentos 0.1.227 → 0.1.229
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 +1 -0
- package/dist/api/editImage.d.ts +21 -0
- package/dist/api/editImage.d.ts.map +1 -1
- package/dist/api/editImage.js +30 -2
- package/dist/api/editImage.js.map +1 -1
- package/dist/api/generateImage.d.ts +12 -1
- package/dist/api/generateImage.d.ts.map +1 -1
- package/dist/api/generateImage.js +7 -2
- package/dist/api/generateImage.js.map +1 -1
- package/dist/core/llm/providers/implementations/AnthropicProvider.d.ts.map +1 -1
- package/dist/core/llm/providers/implementations/AnthropicProvider.js +71 -12
- package/dist/core/llm/providers/implementations/AnthropicProvider.js.map +1 -1
- package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -1
- package/dist/core/llm/providers/implementations/OpenAIProvider.js +38 -11
- package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -1
- package/dist/media/images/providers/ReplicateImageProvider.d.ts.map +1 -1
- package/dist/media/images/providers/ReplicateImageProvider.js +7 -0
- package/dist/media/images/providers/ReplicateImageProvider.js.map +1 -1
- package/dist/voice-pipeline/AudioRingBuffer.d.ts +28 -0
- package/dist/voice-pipeline/AudioRingBuffer.d.ts.map +1 -0
- package/dist/voice-pipeline/AudioRingBuffer.js +43 -0
- package/dist/voice-pipeline/AudioRingBuffer.js.map +1 -0
- package/dist/voice-pipeline/CircuitBreaker.d.ts +42 -0
- package/dist/voice-pipeline/CircuitBreaker.d.ts.map +1 -0
- package/dist/voice-pipeline/CircuitBreaker.js +96 -0
- package/dist/voice-pipeline/CircuitBreaker.js.map +1 -0
- package/dist/voice-pipeline/HealthyProvider.d.ts +44 -0
- package/dist/voice-pipeline/HealthyProvider.d.ts.map +1 -0
- package/dist/voice-pipeline/HealthyProvider.js +29 -0
- package/dist/voice-pipeline/HealthyProvider.js.map +1 -0
- package/dist/voice-pipeline/TranscriptDedupe.d.ts +43 -0
- package/dist/voice-pipeline/TranscriptDedupe.d.ts.map +1 -0
- package/dist/voice-pipeline/TranscriptDedupe.js +96 -0
- package/dist/voice-pipeline/TranscriptDedupe.js.map +1 -0
- package/dist/voice-pipeline/VoiceMetricsReporter.d.ts +48 -0
- package/dist/voice-pipeline/VoiceMetricsReporter.d.ts.map +1 -0
- package/dist/voice-pipeline/VoiceMetricsReporter.js +33 -0
- package/dist/voice-pipeline/VoiceMetricsReporter.js.map +1 -0
- package/dist/voice-pipeline/VoicePipelineError.d.ts +44 -0
- package/dist/voice-pipeline/VoicePipelineError.d.ts.map +1 -0
- package/dist/voice-pipeline/VoicePipelineError.js +74 -0
- package/dist/voice-pipeline/VoicePipelineError.js.map +1 -0
- package/dist/voice-pipeline/env-constructor.d.ts +48 -0
- package/dist/voice-pipeline/env-constructor.d.ts.map +1 -0
- package/dist/voice-pipeline/env-constructor.js +85 -0
- package/dist/voice-pipeline/env-constructor.js.map +1 -0
- package/dist/voice-pipeline/index.d.ts +8 -1
- package/dist/voice-pipeline/index.d.ts.map +1 -1
- package/dist/voice-pipeline/index.js +9 -1
- package/dist/voice-pipeline/index.js.map +1 -1
- package/dist/voice-pipeline/providers/DeepgramStreamingSTT.d.ts +24 -1
- package/dist/voice-pipeline/providers/DeepgramStreamingSTT.d.ts.map +1 -1
- package/dist/voice-pipeline/providers/DeepgramStreamingSTT.js +51 -0
- package/dist/voice-pipeline/providers/DeepgramStreamingSTT.js.map +1 -1
- package/dist/voice-pipeline/providers/ElevenLabsBatchTTS.d.ts +17 -1
- package/dist/voice-pipeline/providers/ElevenLabsBatchTTS.d.ts.map +1 -1
- package/dist/voice-pipeline/providers/ElevenLabsBatchTTS.js +46 -0
- package/dist/voice-pipeline/providers/ElevenLabsBatchTTS.js.map +1 -1
- package/dist/voice-pipeline/providers/ElevenLabsStreamingSTT.d.ts +16 -1
- package/dist/voice-pipeline/providers/ElevenLabsStreamingSTT.d.ts.map +1 -1
- package/dist/voice-pipeline/providers/ElevenLabsStreamingSTT.js +46 -0
- package/dist/voice-pipeline/providers/ElevenLabsStreamingSTT.js.map +1 -1
- package/dist/voice-pipeline/providers/ElevenLabsStreamingTTS.d.ts +16 -1
- package/dist/voice-pipeline/providers/ElevenLabsStreamingTTS.d.ts.map +1 -1
- package/dist/voice-pipeline/providers/ElevenLabsStreamingTTS.js +46 -0
- package/dist/voice-pipeline/providers/ElevenLabsStreamingTTS.js.map +1 -1
- package/dist/voice-pipeline/providers/OpenAIBatchTTS.d.ts +16 -1
- package/dist/voice-pipeline/providers/OpenAIBatchTTS.d.ts.map +1 -1
- package/dist/voice-pipeline/providers/OpenAIBatchTTS.js +46 -0
- package/dist/voice-pipeline/providers/OpenAIBatchTTS.js.map +1 -1
- package/dist/voice-pipeline/providers/OpenAIRealtimeTTS.d.ts +16 -1
- package/dist/voice-pipeline/providers/OpenAIRealtimeTTS.d.ts.map +1 -1
- package/dist/voice-pipeline/providers/OpenAIRealtimeTTS.js +46 -0
- package/dist/voice-pipeline/providers/OpenAIRealtimeTTS.js.map +1 -1
- package/dist/voice-pipeline/providers/StreamingSTTChain.d.ts +78 -0
- package/dist/voice-pipeline/providers/StreamingSTTChain.d.ts.map +1 -0
- package/dist/voice-pipeline/providers/StreamingSTTChain.js +225 -0
- package/dist/voice-pipeline/providers/StreamingSTTChain.js.map +1 -0
- package/dist/voice-pipeline/providers/StreamingTTSChain.d.ts +67 -0
- package/dist/voice-pipeline/providers/StreamingTTSChain.d.ts.map +1 -0
- package/dist/voice-pipeline/providers/StreamingTTSChain.js +212 -0
- package/dist/voice-pipeline/providers/StreamingTTSChain.js.map +1 -0
- package/dist/voice-pipeline/providers/index.d.ts +2 -0
- package/dist/voice-pipeline/providers/index.d.ts.map +1 -1
- package/dist/voice-pipeline/providers/index.js +2 -0
- package/dist/voice-pipeline/providers/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepgramStreamingSTT.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/DeepgramStreamingSTT.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"DeepgramStreamingSTT.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/DeepgramStreamingSTT.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* for one-shot narration synthesis with voice settings control.
|
|
6
6
|
*/
|
|
7
7
|
import type { IBatchTTS, BatchTTSConfig, BatchTTSResult } from '../types.js';
|
|
8
|
+
import { type HealthyProvider, type HealthCheckResult, type ProviderCapabilities } from '../HealthyProvider.js';
|
|
8
9
|
/** Configuration for the ElevenLabs batch TTS provider. */
|
|
9
10
|
export interface ElevenLabsBatchTTSConfig {
|
|
10
11
|
/** ElevenLabs API key. */
|
|
@@ -15,6 +16,16 @@ export interface ElevenLabsBatchTTSConfig {
|
|
|
15
16
|
model?: string;
|
|
16
17
|
/** Base URL for the ElevenLabs API. Defaults to 'https://api.elevenlabs.io/v1'. */
|
|
17
18
|
baseUrl?: string;
|
|
19
|
+
/** Chain priority. Lower values are tried first. @default 80 */
|
|
20
|
+
priority?: number;
|
|
21
|
+
/** Optional capability overrides. */
|
|
22
|
+
capabilities?: Partial<ProviderCapabilities>;
|
|
23
|
+
/** Injectable health probe for tests. */
|
|
24
|
+
healthProbe?: (apiKey: string) => Promise<{
|
|
25
|
+
ok: boolean;
|
|
26
|
+
status: number;
|
|
27
|
+
latencyMs: number;
|
|
28
|
+
}>;
|
|
18
29
|
}
|
|
19
30
|
/**
|
|
20
31
|
* Batch (one-shot) TTS provider using ElevenLabs' REST text-to-speech endpoint.
|
|
@@ -22,8 +33,10 @@ export interface ElevenLabsBatchTTSConfig {
|
|
|
22
33
|
* Accepts complete text and returns finished MP3 audio with voice settings
|
|
23
34
|
* control via `providerOptions` (stability, similarityBoost, style, useSpeakerBoost).
|
|
24
35
|
*/
|
|
25
|
-
export declare class ElevenLabsBatchTTS implements IBatchTTS {
|
|
36
|
+
export declare class ElevenLabsBatchTTS implements IBatchTTS, HealthyProvider {
|
|
26
37
|
readonly providerId = "elevenlabs-batch";
|
|
38
|
+
readonly priority: number;
|
|
39
|
+
readonly capabilities: ProviderCapabilities;
|
|
27
40
|
/** API key pool for round-robin rotation and quota failover. */
|
|
28
41
|
private readonly keyPool;
|
|
29
42
|
/** Default voice ID when none is provided in the synthesis config. */
|
|
@@ -32,7 +45,10 @@ export declare class ElevenLabsBatchTTS implements IBatchTTS {
|
|
|
32
45
|
private readonly model;
|
|
33
46
|
/** Base URL for all API requests. */
|
|
34
47
|
private readonly baseUrl;
|
|
48
|
+
/** Injectable health probe for tests. */
|
|
49
|
+
private readonly healthProbe;
|
|
35
50
|
constructor(config: ElevenLabsBatchTTSConfig);
|
|
51
|
+
healthCheck(): Promise<HealthCheckResult>;
|
|
36
52
|
/**
|
|
37
53
|
* Synthesize complete text into MP3 audio via ElevenLabs REST API.
|
|
38
54
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElevenLabsBatchTTS.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsBatchTTS.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ElevenLabsBatchTTS.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsBatchTTS.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAY/B,2DAA2D;AAC3D,MAAM,WAAW,wBAAwB;IACvC,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/F;AAKD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,SAAS,EAAE,eAAe;IACnE,QAAQ,CAAC,UAAU,sBAAsB;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAE5C,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IAErC,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,yCAAyC;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuD;gBAEvE,MAAM,EAAE,wBAAwB;IAgBtC,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6B/C;;;;;;;OAOG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CA+CjF"}
|
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { ApiKeyPool } from '../../core/providers/ApiKeyPool.js';
|
|
8
8
|
import { isQuotaError } from '../../core/providers/quotaErrors.js';
|
|
9
|
+
import { defaultCapabilities, } from '../HealthyProvider.js';
|
|
10
|
+
import { VoicePipelineError } from '../VoicePipelineError.js';
|
|
11
|
+
async function defaultElevenLabsBatchProbe(apiKey) {
|
|
12
|
+
const start = Date.now();
|
|
13
|
+
const res = await fetch('https://api.elevenlabs.io/v1/user', {
|
|
14
|
+
headers: { 'xi-api-key': apiKey },
|
|
15
|
+
signal: AbortSignal.timeout(1000),
|
|
16
|
+
});
|
|
17
|
+
return { ok: res.ok, status: res.status, latencyMs: Date.now() - start };
|
|
18
|
+
}
|
|
9
19
|
/** Approximate bytes per second for 128kbps MP3 audio. */
|
|
10
20
|
const BYTES_PER_SEC_MP3 = 16000;
|
|
11
21
|
/**
|
|
@@ -21,6 +31,42 @@ export class ElevenLabsBatchTTS {
|
|
|
21
31
|
this.defaultVoiceId = config.voiceId ?? 'EXAVITQu4vr4xnSDxMaL';
|
|
22
32
|
this.model = config.model ?? 'eleven_multilingual_v2';
|
|
23
33
|
this.baseUrl = config.baseUrl ?? 'https://api.elevenlabs.io/v1';
|
|
34
|
+
this.priority = config.priority ?? 80;
|
|
35
|
+
this.capabilities = defaultCapabilities({
|
|
36
|
+
languages: ['*'],
|
|
37
|
+
streaming: false,
|
|
38
|
+
costTier: 'standard',
|
|
39
|
+
latencyClass: 'batch',
|
|
40
|
+
...(config.capabilities ?? {}),
|
|
41
|
+
});
|
|
42
|
+
this.healthProbe = config.healthProbe ?? defaultElevenLabsBatchProbe;
|
|
43
|
+
}
|
|
44
|
+
async healthCheck() {
|
|
45
|
+
if (!this.keyPool.hasKeys) {
|
|
46
|
+
return { ok: false, error: { class: 'auth', message: 'no api key available' } };
|
|
47
|
+
}
|
|
48
|
+
const key = this.keyPool.next();
|
|
49
|
+
try {
|
|
50
|
+
const res = await this.healthProbe(key);
|
|
51
|
+
if (res.ok)
|
|
52
|
+
return { ok: true, latencyMs: res.latencyMs };
|
|
53
|
+
const classified = VoicePipelineError.classifyError(new Error(`HTTP ${res.status}`), { kind: 'tts', provider: this.providerId });
|
|
54
|
+
return {
|
|
55
|
+
ok: false,
|
|
56
|
+
latencyMs: res.latencyMs,
|
|
57
|
+
error: { class: classified.errorClass, message: `HTTP ${res.status}` },
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
const classified = VoicePipelineError.classifyError(err, {
|
|
62
|
+
kind: 'tts',
|
|
63
|
+
provider: this.providerId,
|
|
64
|
+
});
|
|
65
|
+
return {
|
|
66
|
+
ok: false,
|
|
67
|
+
error: { class: classified.errorClass, message: classified.message },
|
|
68
|
+
};
|
|
69
|
+
}
|
|
24
70
|
}
|
|
25
71
|
/**
|
|
26
72
|
* Synthesize complete text into MP3 audio via ElevenLabs REST API.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElevenLabsBatchTTS.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsBatchTTS.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"ElevenLabsBatchTTS.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsBatchTTS.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EACL,mBAAmB,GAIpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,KAAK,UAAU,2BAA2B,CAAC,MAAc;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,mCAAmC,EAAE;QAC3D,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;QACjC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;KAClC,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;AAC3E,CAAC;AAoBD,0DAA0D;AAC1D,MAAM,iBAAiB,GAAG,KAAM,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAoB7B,YAAY,MAAgC;QAnBnC,eAAU,GAAG,kBAAkB,CAAC;QAoBvC,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,IAAI,sBAAsB,CAAC;QAC/D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,wBAAwB,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,8BAA8B,CAAC;QAChE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;YACtC,SAAS,EAAE,CAAC,GAAG,CAAC;YAChB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,UAAU;YACpB,YAAY,EAAE,OAAO;YACrB,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC;QAClF,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,CACjD,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,EAC/B,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAC3C,CAAC;YACF,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE;aACvE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,CAAC,GAAG,EAAE;gBACvD,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,IAAI,CAAC,UAAU;aAC1B,CAAC,CAAC;YACH,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;aACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,MAAuB;QACpD,MAAM,OAAO,GAAG,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,EAAE,eAAe,IAAI,EAAE,CAAC;QAE3C,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAC9B,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,OAAO,EAAE,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,YAAY,EAAE,GAAG;gBACjB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,YAAY;aACrB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI;gBACJ,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK;gBACrC,cAAc,EAAE;oBACd,SAAS,EAAG,IAAI,CAAC,SAAoB,IAAI,GAAG;oBAC5C,gBAAgB,EAAG,IAAI,CAAC,eAA0B,IAAI,IAAI;oBAC1D,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,GAAG;oBACpC,iBAAiB,EAAG,IAAI,CAAC,eAA2B,IAAI,IAAI;iBAC7D;aACF,CAAC;SACH,CAAC,CAAC;QAEL,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAChC,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;QAE7E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACzE,CAAC;CACF"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
* @see https://elevenlabs.io/docs/api-reference/speech-to-text
|
|
24
24
|
*/
|
|
25
25
|
import type { IStreamingSTT, StreamingSTTSession, StreamingSTTConfig } from '../types.js';
|
|
26
|
+
import { type HealthyProvider, type HealthCheckResult, type ProviderCapabilities } from '../HealthyProvider.js';
|
|
26
27
|
/**
|
|
27
28
|
* Configuration for the {@link ElevenLabsStreamingSTT} provider.
|
|
28
29
|
*/
|
|
@@ -39,6 +40,16 @@ export interface ElevenLabsStreamingSTTConfig {
|
|
|
39
40
|
* @default 'scribe_v1'
|
|
40
41
|
*/
|
|
41
42
|
model?: string;
|
|
43
|
+
/** Chain priority. Lower values are tried first. @default 20 */
|
|
44
|
+
priority?: number;
|
|
45
|
+
/** Optional capability overrides. */
|
|
46
|
+
capabilities?: Partial<ProviderCapabilities>;
|
|
47
|
+
/** Injectable health probe for tests. */
|
|
48
|
+
healthProbe?: (apiKey: string) => Promise<{
|
|
49
|
+
ok: boolean;
|
|
50
|
+
status: number;
|
|
51
|
+
latencyMs: number;
|
|
52
|
+
}>;
|
|
42
53
|
}
|
|
43
54
|
/**
|
|
44
55
|
* Streaming STT provider using ElevenLabs' Speech-to-Text API.
|
|
@@ -56,12 +67,16 @@ export interface ElevenLabsStreamingSTTConfig {
|
|
|
56
67
|
* session.on('transcript', (event) => console.log(event.text));
|
|
57
68
|
* ```
|
|
58
69
|
*/
|
|
59
|
-
export declare class ElevenLabsStreamingSTT implements IStreamingSTT {
|
|
70
|
+
export declare class ElevenLabsStreamingSTT implements IStreamingSTT, HealthyProvider {
|
|
60
71
|
private readonly config;
|
|
61
72
|
readonly providerId = "elevenlabs-streaming-stt";
|
|
62
73
|
readonly isStreaming = true;
|
|
74
|
+
readonly priority: number;
|
|
75
|
+
readonly capabilities: ProviderCapabilities;
|
|
63
76
|
private readonly keyPool;
|
|
77
|
+
private readonly healthProbe;
|
|
64
78
|
constructor(config: ElevenLabsStreamingSTTConfig);
|
|
79
|
+
healthCheck(): Promise<HealthCheckResult>;
|
|
65
80
|
/**
|
|
66
81
|
* Create a new STT session. Uses chunked REST calls to ElevenLabs'
|
|
67
82
|
* batch STT endpoint for near-realtime transcription.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElevenLabsStreamingSTT.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsStreamingSTT.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAInB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ElevenLabsStreamingSTT.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsStreamingSTT.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAInB,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAgB/B;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE7C,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/F;AAoQD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,sBAAuB,YAAW,aAAa,EAAE,eAAe;IAU/D,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,QAAQ,CAAC,UAAU,8BAA8B;IACjD,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAE1B;gBAE2B,MAAM,EAAE,4BAA4B;IAa3D,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6B/C;;;;OAIG;IACG,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAI9E"}
|
|
@@ -24,6 +24,16 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import { EventEmitter } from 'node:events';
|
|
26
26
|
import { ApiKeyPool } from '../../core/providers/ApiKeyPool.js';
|
|
27
|
+
import { defaultCapabilities, } from '../HealthyProvider.js';
|
|
28
|
+
import { VoicePipelineError } from '../VoicePipelineError.js';
|
|
29
|
+
async function defaultElevenLabsProbe(apiKey) {
|
|
30
|
+
const start = Date.now();
|
|
31
|
+
const res = await fetch('https://api.elevenlabs.io/v1/user', {
|
|
32
|
+
headers: { 'xi-api-key': apiKey },
|
|
33
|
+
signal: AbortSignal.timeout(1000),
|
|
34
|
+
});
|
|
35
|
+
return { ok: res.ok, status: res.status, latencyMs: Date.now() - start };
|
|
36
|
+
}
|
|
27
37
|
// ---------------------------------------------------------------------------
|
|
28
38
|
// Session Implementation — Chunked REST fallback
|
|
29
39
|
// ---------------------------------------------------------------------------
|
|
@@ -238,6 +248,42 @@ export class ElevenLabsStreamingSTT {
|
|
|
238
248
|
this.providerId = 'elevenlabs-streaming-stt';
|
|
239
249
|
this.isStreaming = true;
|
|
240
250
|
this.keyPool = new ApiKeyPool(config.apiKey);
|
|
251
|
+
this.priority = config.priority ?? 20;
|
|
252
|
+
this.capabilities = defaultCapabilities({
|
|
253
|
+
languages: ['*'],
|
|
254
|
+
streaming: true,
|
|
255
|
+
costTier: 'standard',
|
|
256
|
+
latencyClass: 'near-realtime',
|
|
257
|
+
...(config.capabilities ?? {}),
|
|
258
|
+
});
|
|
259
|
+
this.healthProbe = config.healthProbe ?? defaultElevenLabsProbe;
|
|
260
|
+
}
|
|
261
|
+
async healthCheck() {
|
|
262
|
+
if (!this.keyPool.hasKeys) {
|
|
263
|
+
return { ok: false, error: { class: 'auth', message: 'no api key available' } };
|
|
264
|
+
}
|
|
265
|
+
const key = this.keyPool.next();
|
|
266
|
+
try {
|
|
267
|
+
const res = await this.healthProbe(key);
|
|
268
|
+
if (res.ok)
|
|
269
|
+
return { ok: true, latencyMs: res.latencyMs };
|
|
270
|
+
const classified = VoicePipelineError.classifyError(new Error(`HTTP ${res.status}`), { kind: 'stt', provider: this.providerId });
|
|
271
|
+
return {
|
|
272
|
+
ok: false,
|
|
273
|
+
latencyMs: res.latencyMs,
|
|
274
|
+
error: { class: classified.errorClass, message: `HTTP ${res.status}` },
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
const classified = VoicePipelineError.classifyError(err, {
|
|
279
|
+
kind: 'stt',
|
|
280
|
+
provider: this.providerId,
|
|
281
|
+
});
|
|
282
|
+
return {
|
|
283
|
+
ok: false,
|
|
284
|
+
error: { class: classified.errorClass, message: classified.message },
|
|
285
|
+
};
|
|
286
|
+
}
|
|
241
287
|
}
|
|
242
288
|
/**
|
|
243
289
|
* Create a new STT session. Uses chunked REST calls to ElevenLabs'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElevenLabsStreamingSTT.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsStreamingSTT.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ElevenLabsStreamingSTT.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsStreamingSTT.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* @see https://elevenlabs.io/docs/api-reference/websockets
|
|
23
23
|
*/
|
|
24
24
|
import type { IStreamingTTS, StreamingTTSSession, StreamingTTSConfig } from '../types.js';
|
|
25
|
+
import { type HealthyProvider, type HealthCheckResult, type ProviderCapabilities } from '../HealthyProvider.js';
|
|
25
26
|
/**
|
|
26
27
|
* Configuration for the {@link ElevenLabsStreamingTTS} provider.
|
|
27
28
|
*/
|
|
@@ -43,6 +44,16 @@ export interface ElevenLabsStreamingTTSConfig {
|
|
|
43
44
|
* @default 'eleven_multilingual_v2'
|
|
44
45
|
*/
|
|
45
46
|
model?: string;
|
|
47
|
+
/** Chain priority. Lower values are tried first. @default 10 */
|
|
48
|
+
priority?: number;
|
|
49
|
+
/** Optional capability overrides. */
|
|
50
|
+
capabilities?: Partial<ProviderCapabilities>;
|
|
51
|
+
/** Injectable health probe for tests. */
|
|
52
|
+
healthProbe?: (apiKey: string) => Promise<{
|
|
53
|
+
ok: boolean;
|
|
54
|
+
status: number;
|
|
55
|
+
latencyMs: number;
|
|
56
|
+
}>;
|
|
46
57
|
}
|
|
47
58
|
/**
|
|
48
59
|
* Streaming TTS provider that creates ElevenLabs WebSocket sessions.
|
|
@@ -60,11 +71,15 @@ export interface ElevenLabsStreamingTTSConfig {
|
|
|
60
71
|
* await session.flush();
|
|
61
72
|
* ```
|
|
62
73
|
*/
|
|
63
|
-
export declare class ElevenLabsStreamingTTS implements IStreamingTTS {
|
|
74
|
+
export declare class ElevenLabsStreamingTTS implements IStreamingTTS, HealthyProvider {
|
|
64
75
|
private readonly config;
|
|
65
76
|
readonly providerId = "elevenlabs-streaming";
|
|
77
|
+
readonly priority: number;
|
|
78
|
+
readonly capabilities: ProviderCapabilities;
|
|
66
79
|
private readonly keyPool;
|
|
80
|
+
private readonly healthProbe;
|
|
67
81
|
constructor(config: ElevenLabsStreamingTTSConfig);
|
|
82
|
+
healthCheck(): Promise<HealthCheckResult>;
|
|
68
83
|
/**
|
|
69
84
|
* Create a new streaming TTS session connected to ElevenLabs.
|
|
70
85
|
* The session opens a WebSocket and is ready to receive text tokens.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElevenLabsStreamingTTS.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsStreamingTTS.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ElevenLabsStreamingTTS.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsStreamingTTS.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAgB/B;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE7C,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/F;AA8OD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,sBAAuB,YAAW,aAAa,EAAE,eAAe;IAS/D,OAAO,CAAC,QAAQ,CAAC,MAAM;IARnC,QAAQ,CAAC,UAAU,0BAA0B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAE1B;gBAE2B,MAAM,EAAE,4BAA4B;IAa3D,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6B/C;;;;OAIG;IACG,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAM9E"}
|
|
@@ -24,6 +24,16 @@
|
|
|
24
24
|
import { EventEmitter } from 'node:events';
|
|
25
25
|
import WebSocket from 'ws';
|
|
26
26
|
import { ApiKeyPool } from '../../core/providers/ApiKeyPool.js';
|
|
27
|
+
import { defaultCapabilities, } from '../HealthyProvider.js';
|
|
28
|
+
import { VoicePipelineError } from '../VoicePipelineError.js';
|
|
29
|
+
async function defaultElevenLabsTtsProbe(apiKey) {
|
|
30
|
+
const start = Date.now();
|
|
31
|
+
const res = await fetch('https://api.elevenlabs.io/v1/user', {
|
|
32
|
+
headers: { 'xi-api-key': apiKey },
|
|
33
|
+
signal: AbortSignal.timeout(1000),
|
|
34
|
+
});
|
|
35
|
+
return { ok: res.ok, status: res.status, latencyMs: Date.now() - start };
|
|
36
|
+
}
|
|
27
37
|
// ---------------------------------------------------------------------------
|
|
28
38
|
// Session Implementation
|
|
29
39
|
// ---------------------------------------------------------------------------
|
|
@@ -229,6 +239,42 @@ export class ElevenLabsStreamingTTS {
|
|
|
229
239
|
this.config = config;
|
|
230
240
|
this.providerId = 'elevenlabs-streaming';
|
|
231
241
|
this.keyPool = new ApiKeyPool(config.apiKey);
|
|
242
|
+
this.priority = config.priority ?? 10;
|
|
243
|
+
this.capabilities = defaultCapabilities({
|
|
244
|
+
languages: ['*'],
|
|
245
|
+
streaming: true,
|
|
246
|
+
costTier: 'standard',
|
|
247
|
+
latencyClass: 'realtime',
|
|
248
|
+
...(config.capabilities ?? {}),
|
|
249
|
+
});
|
|
250
|
+
this.healthProbe = config.healthProbe ?? defaultElevenLabsTtsProbe;
|
|
251
|
+
}
|
|
252
|
+
async healthCheck() {
|
|
253
|
+
if (!this.keyPool.hasKeys) {
|
|
254
|
+
return { ok: false, error: { class: 'auth', message: 'no api key available' } };
|
|
255
|
+
}
|
|
256
|
+
const key = this.keyPool.next();
|
|
257
|
+
try {
|
|
258
|
+
const res = await this.healthProbe(key);
|
|
259
|
+
if (res.ok)
|
|
260
|
+
return { ok: true, latencyMs: res.latencyMs };
|
|
261
|
+
const classified = VoicePipelineError.classifyError(new Error(`HTTP ${res.status}`), { kind: 'tts', provider: this.providerId });
|
|
262
|
+
return {
|
|
263
|
+
ok: false,
|
|
264
|
+
latencyMs: res.latencyMs,
|
|
265
|
+
error: { class: classified.errorClass, message: `HTTP ${res.status}` },
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
const classified = VoicePipelineError.classifyError(err, {
|
|
270
|
+
kind: 'tts',
|
|
271
|
+
provider: this.providerId,
|
|
272
|
+
});
|
|
273
|
+
return {
|
|
274
|
+
ok: false,
|
|
275
|
+
error: { class: classified.errorClass, message: classified.message },
|
|
276
|
+
};
|
|
277
|
+
}
|
|
232
278
|
}
|
|
233
279
|
/**
|
|
234
280
|
* Create a new streaming TTS session connected to ElevenLabs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElevenLabsStreamingTTS.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsStreamingTTS.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,SAAS,MAAM,IAAI,CAAC;AAO3B,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ElevenLabsStreamingTTS.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/ElevenLabsStreamingTTS.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* for one-shot narration synthesis. Supports tts-1 (cheap) and tts-1-hd (quality).
|
|
6
6
|
*/
|
|
7
7
|
import type { IBatchTTS, BatchTTSConfig, BatchTTSResult } from '../types.js';
|
|
8
|
+
import { type HealthyProvider, type HealthCheckResult, type ProviderCapabilities } from '../HealthyProvider.js';
|
|
8
9
|
/** Configuration for the OpenAI batch TTS provider. */
|
|
9
10
|
export interface OpenAIBatchTTSConfig {
|
|
10
11
|
/** OpenAI API key. */
|
|
@@ -13,17 +14,31 @@ export interface OpenAIBatchTTSConfig {
|
|
|
13
14
|
model?: 'tts-1' | 'tts-1-hd';
|
|
14
15
|
/** Base URL for the OpenAI API. Defaults to 'https://api.openai.com/v1'. */
|
|
15
16
|
baseUrl?: string;
|
|
17
|
+
/** Chain priority. Lower values are tried first. @default 90 (last resort batch) */
|
|
18
|
+
priority?: number;
|
|
19
|
+
/** Optional capability overrides. */
|
|
20
|
+
capabilities?: Partial<ProviderCapabilities>;
|
|
21
|
+
/** Injectable health probe for tests. */
|
|
22
|
+
healthProbe?: (apiKey: string) => Promise<{
|
|
23
|
+
ok: boolean;
|
|
24
|
+
status: number;
|
|
25
|
+
latencyMs: number;
|
|
26
|
+
}>;
|
|
16
27
|
}
|
|
17
28
|
/**
|
|
18
29
|
* One-shot TTS provider backed by the OpenAI `/audio/speech` endpoint.
|
|
19
30
|
* Accepts complete text and returns a finished audio buffer.
|
|
20
31
|
*/
|
|
21
|
-
export declare class OpenAIBatchTTS implements IBatchTTS {
|
|
32
|
+
export declare class OpenAIBatchTTS implements IBatchTTS, HealthyProvider {
|
|
22
33
|
readonly providerId: string;
|
|
34
|
+
readonly priority: number;
|
|
35
|
+
readonly capabilities: ProviderCapabilities;
|
|
23
36
|
private readonly keyPool;
|
|
24
37
|
private readonly model;
|
|
25
38
|
private readonly baseUrl;
|
|
39
|
+
private readonly healthProbe;
|
|
26
40
|
constructor(config: OpenAIBatchTTSConfig);
|
|
41
|
+
healthCheck(): Promise<HealthCheckResult>;
|
|
27
42
|
/**
|
|
28
43
|
* Synthesize complete text into audio via the OpenAI speech API.
|
|
29
44
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIBatchTTS.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/OpenAIBatchTTS.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAIBatchTTS.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/OpenAIBatchTTS.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAY/B,uDAAuD;AACvD,MAAM,WAAW,oBAAoB;IACnC,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/F;AAKD;;;GAGG;AACH,qBAAa,cAAe,YAAW,SAAS,EAAE,eAAe;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;gBAEnE,MAAM,EAAE,oBAAoB;IAgBlC,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6B/C;;;;;;OAMG;IACH,oCAAoC;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAEjC;IAEG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CAgDjF"}
|
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { ApiKeyPool } from '../../core/providers/ApiKeyPool.js';
|
|
8
8
|
import { isQuotaError } from '../../core/providers/quotaErrors.js';
|
|
9
|
+
import { defaultCapabilities, } from '../HealthyProvider.js';
|
|
10
|
+
import { VoicePipelineError } from '../VoicePipelineError.js';
|
|
11
|
+
async function defaultOpenAIProbe(apiKey) {
|
|
12
|
+
const start = Date.now();
|
|
13
|
+
const res = await fetch('https://api.openai.com/v1/models', {
|
|
14
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
15
|
+
signal: AbortSignal.timeout(1000),
|
|
16
|
+
});
|
|
17
|
+
return { ok: res.ok, status: res.status, latencyMs: Date.now() - start };
|
|
18
|
+
}
|
|
9
19
|
/** Approximate bytes per second for MP3 at default OpenAI TTS bitrate. */
|
|
10
20
|
const BYTES_PER_SEC_MP3 = 16000;
|
|
11
21
|
/**
|
|
@@ -18,6 +28,42 @@ export class OpenAIBatchTTS {
|
|
|
18
28
|
this.model = config.model ?? 'tts-1';
|
|
19
29
|
this.baseUrl = config.baseUrl ?? 'https://api.openai.com/v1';
|
|
20
30
|
this.providerId = `openai-${this.model}`;
|
|
31
|
+
this.priority = config.priority ?? 90;
|
|
32
|
+
this.capabilities = defaultCapabilities({
|
|
33
|
+
languages: ['*'],
|
|
34
|
+
streaming: false,
|
|
35
|
+
costTier: 'cheap',
|
|
36
|
+
latencyClass: 'batch',
|
|
37
|
+
...(config.capabilities ?? {}),
|
|
38
|
+
});
|
|
39
|
+
this.healthProbe = config.healthProbe ?? defaultOpenAIProbe;
|
|
40
|
+
}
|
|
41
|
+
async healthCheck() {
|
|
42
|
+
if (!this.keyPool.hasKeys) {
|
|
43
|
+
return { ok: false, error: { class: 'auth', message: 'no api key available' } };
|
|
44
|
+
}
|
|
45
|
+
const key = this.keyPool.next();
|
|
46
|
+
try {
|
|
47
|
+
const res = await this.healthProbe(key);
|
|
48
|
+
if (res.ok)
|
|
49
|
+
return { ok: true, latencyMs: res.latencyMs };
|
|
50
|
+
const classified = VoicePipelineError.classifyError(new Error(`HTTP ${res.status}`), { kind: 'tts', provider: this.providerId });
|
|
51
|
+
return {
|
|
52
|
+
ok: false,
|
|
53
|
+
latencyMs: res.latencyMs,
|
|
54
|
+
error: { class: classified.errorClass, message: `HTTP ${res.status}` },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
const classified = VoicePipelineError.classifyError(err, {
|
|
59
|
+
kind: 'tts',
|
|
60
|
+
provider: this.providerId,
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
ok: false,
|
|
64
|
+
error: { class: classified.errorClass, message: classified.message },
|
|
65
|
+
};
|
|
66
|
+
}
|
|
21
67
|
}
|
|
22
68
|
async synthesize(text, config) {
|
|
23
69
|
// Validate voice name — if an external voice ID (e.g. ElevenLabs) is passed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIBatchTTS.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/OpenAIBatchTTS.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAIBatchTTS.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/OpenAIBatchTTS.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,16 +9,31 @@
|
|
|
9
9
|
* Audio arrives as response.audio.delta base64-encoded chunks.
|
|
10
10
|
*/
|
|
11
11
|
import type { IStreamingTTS, StreamingTTSSession, StreamingTTSConfig } from '../types.js';
|
|
12
|
+
import { type HealthyProvider, type HealthCheckResult, type ProviderCapabilities } from '../HealthyProvider.js';
|
|
12
13
|
export interface OpenAIRealtimeTTSConfig {
|
|
13
14
|
apiKey: string;
|
|
14
15
|
model?: string;
|
|
15
16
|
baseUrl?: string;
|
|
17
|
+
/** Chain priority. Lower values are tried first. @default 20 */
|
|
18
|
+
priority?: number;
|
|
19
|
+
/** Optional capability overrides. */
|
|
20
|
+
capabilities?: Partial<ProviderCapabilities>;
|
|
21
|
+
/** Injectable health probe for tests. */
|
|
22
|
+
healthProbe?: (apiKey: string) => Promise<{
|
|
23
|
+
ok: boolean;
|
|
24
|
+
status: number;
|
|
25
|
+
latencyMs: number;
|
|
26
|
+
}>;
|
|
16
27
|
}
|
|
17
|
-
export declare class OpenAIRealtimeTTS implements IStreamingTTS {
|
|
28
|
+
export declare class OpenAIRealtimeTTS implements IStreamingTTS, HealthyProvider {
|
|
18
29
|
readonly providerId = "openai-realtime";
|
|
30
|
+
readonly priority: number;
|
|
31
|
+
readonly capabilities: ProviderCapabilities;
|
|
19
32
|
private readonly config;
|
|
20
33
|
private readonly keyPool;
|
|
34
|
+
private readonly healthProbe;
|
|
21
35
|
constructor(config: OpenAIRealtimeTTSConfig);
|
|
36
|
+
healthCheck(): Promise<HealthCheckResult>;
|
|
22
37
|
startSession(config?: StreamingTTSConfig): Promise<StreamingTTSSession>;
|
|
23
38
|
}
|
|
24
39
|
//# sourceMappingURL=OpenAIRealtimeTTS.d.ts.map
|