@framers/agentos 0.1.75 → 0.1.77
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 +148 -38
- package/dist/api/agent.d.ts +13 -3
- package/dist/api/agent.d.ts.map +1 -1
- package/dist/api/agent.js +1 -0
- package/dist/api/agent.js.map +1 -1
- package/dist/api/generateImage.d.ts +11 -2
- package/dist/api/generateImage.d.ts.map +1 -1
- package/dist/api/generateImage.js +2 -2
- package/dist/api/generateImage.js.map +1 -1
- package/dist/api/generateText.d.ts +13 -3
- package/dist/api/generateText.d.ts.map +1 -1
- package/dist/api/generateText.js +2 -2
- package/dist/api/generateText.js.map +1 -1
- package/dist/api/model.d.ts +53 -0
- package/dist/api/model.d.ts.map +1 -1
- package/dist/api/model.js +58 -0
- package/dist/api/model.js.map +1 -1
- package/dist/api/provider-defaults.d.ts +40 -0
- package/dist/api/provider-defaults.d.ts.map +1 -0
- package/dist/api/provider-defaults.js +73 -0
- package/dist/api/provider-defaults.js.map +1 -0
- package/dist/api/streamText.js +2 -2
- package/dist/api/streamText.js.map +1 -1
- package/dist/core/agency/AgentCommunicationBus.d.ts +1 -0
- package/dist/core/agency/AgentCommunicationBus.d.ts.map +1 -1
- package/dist/core/agency/AgentCommunicationBus.js +62 -8
- package/dist/core/agency/AgentCommunicationBus.js.map +1 -1
- package/dist/core/agency/IAgentCommunicationBus.d.ts +1 -1
- package/dist/core/agency/IAgentCommunicationBus.d.ts.map +1 -1
- package/dist/orchestration/runtime/LoopController.d.ts +10 -10
- package/dist/orchestration/runtime/LoopController.d.ts.map +1 -1
- package/dist/orchestration/runtime/LoopController.js +1 -1
- package/dist/orchestration/runtime/LoopController.js.map +1 -1
- package/dist/orchestration/runtime/index.d.ts +1 -1
- package/dist/orchestration/runtime/index.d.ts.map +1 -1
- package/dist/orchestration/runtime/index.js.map +1 -1
- package/dist/speech/FallbackProxy.d.ts +104 -0
- package/dist/speech/FallbackProxy.d.ts.map +1 -0
- package/dist/speech/FallbackProxy.js +151 -0
- package/dist/speech/FallbackProxy.js.map +1 -0
- package/dist/speech/SpeechProviderResolver.d.ts +103 -0
- package/dist/speech/SpeechProviderResolver.d.ts.map +1 -0
- package/dist/speech/SpeechProviderResolver.js +256 -0
- package/dist/speech/SpeechProviderResolver.js.map +1 -0
- package/dist/speech/SpeechRuntime.d.ts +23 -1
- package/dist/speech/SpeechRuntime.d.ts.map +1 -1
- package/dist/speech/SpeechRuntime.js +82 -8
- package/dist/speech/SpeechRuntime.js.map +1 -1
- package/dist/speech/index.d.ts +6 -0
- package/dist/speech/index.d.ts.map +1 -1
- package/dist/speech/index.js +6 -0
- package/dist/speech/index.js.map +1 -1
- package/dist/speech/providerCatalog.d.ts.map +1 -1
- package/dist/speech/providerCatalog.js +15 -1
- package/dist/speech/providerCatalog.js.map +1 -1
- package/dist/speech/providers/AssemblyAISTTProvider.d.ts +49 -0
- package/dist/speech/providers/AssemblyAISTTProvider.d.ts.map +1 -0
- package/dist/speech/providers/AssemblyAISTTProvider.js +151 -0
- package/dist/speech/providers/AssemblyAISTTProvider.js.map +1 -0
- package/dist/speech/providers/AzureSpeechSTTProvider.d.ts +48 -0
- package/dist/speech/providers/AzureSpeechSTTProvider.d.ts.map +1 -0
- package/dist/speech/providers/AzureSpeechSTTProvider.js +90 -0
- package/dist/speech/providers/AzureSpeechSTTProvider.js.map +1 -0
- package/dist/speech/providers/AzureSpeechTTSProvider.d.ts +60 -0
- package/dist/speech/providers/AzureSpeechTTSProvider.d.ts.map +1 -0
- package/dist/speech/providers/AzureSpeechTTSProvider.js +127 -0
- package/dist/speech/providers/AzureSpeechTTSProvider.js.map +1 -0
- package/dist/speech/providers/DeepgramBatchSTTProvider.d.ts +55 -0
- package/dist/speech/providers/DeepgramBatchSTTProvider.d.ts.map +1 -0
- package/dist/speech/providers/DeepgramBatchSTTProvider.js +102 -0
- package/dist/speech/providers/DeepgramBatchSTTProvider.js.map +1 -0
- package/dist/speech/types.d.ts +35 -0
- package/dist/speech/types.d.ts.map +1 -1
- package/dist/voice/CallManager.d.ts +1 -1
- package/dist/voice/CallManager.d.ts.map +1 -1
- package/dist/voice/CallManager.js +9 -0
- package/dist/voice/CallManager.js.map +1 -1
- package/dist/voice/MediaStreamParser.d.ts +83 -0
- package/dist/voice/MediaStreamParser.d.ts.map +1 -0
- package/dist/voice/MediaStreamParser.js +2 -0
- package/dist/voice/MediaStreamParser.js.map +1 -0
- package/dist/voice/TelephonyStreamTransport.d.ts +112 -0
- package/dist/voice/TelephonyStreamTransport.d.ts.map +1 -0
- package/dist/voice/TelephonyStreamTransport.js +208 -0
- package/dist/voice/TelephonyStreamTransport.js.map +1 -0
- package/dist/voice/index.d.ts +10 -0
- package/dist/voice/index.d.ts.map +1 -1
- package/dist/voice/index.js +11 -0
- package/dist/voice/index.js.map +1 -1
- package/dist/voice/parsers/PlivoMediaStreamParser.d.ts +43 -0
- package/dist/voice/parsers/PlivoMediaStreamParser.d.ts.map +1 -0
- package/dist/voice/parsers/PlivoMediaStreamParser.js +92 -0
- package/dist/voice/parsers/PlivoMediaStreamParser.js.map +1 -0
- package/dist/voice/parsers/TelnyxMediaStreamParser.d.ts +51 -0
- package/dist/voice/parsers/TelnyxMediaStreamParser.d.ts.map +1 -0
- package/dist/voice/parsers/TelnyxMediaStreamParser.js +103 -0
- package/dist/voice/parsers/TelnyxMediaStreamParser.js.map +1 -0
- package/dist/voice/parsers/TwilioMediaStreamParser.d.ts +50 -0
- package/dist/voice/parsers/TwilioMediaStreamParser.d.ts.map +1 -0
- package/dist/voice/parsers/TwilioMediaStreamParser.js +144 -0
- package/dist/voice/parsers/TwilioMediaStreamParser.js.map +1 -0
- package/dist/voice/providers/plivo.d.ts +77 -0
- package/dist/voice/providers/plivo.d.ts.map +1 -0
- package/dist/voice/providers/plivo.js +180 -0
- package/dist/voice/providers/plivo.js.map +1 -0
- package/dist/voice/providers/telnyx.d.ts +93 -0
- package/dist/voice/providers/telnyx.d.ts.map +1 -0
- package/dist/voice/providers/telnyx.js +193 -0
- package/dist/voice/providers/telnyx.js.map +1 -0
- package/dist/voice/providers/twilio.d.ts +79 -0
- package/dist/voice/providers/twilio.d.ts.map +1 -0
- package/dist/voice/providers/twilio.js +191 -0
- package/dist/voice/providers/twilio.js.map +1 -0
- package/dist/voice/twiml.d.ts +69 -0
- package/dist/voice/twiml.d.ts.map +1 -0
- package/dist/voice/twiml.js +92 -0
- package/dist/voice/twiml.js.map +1 -0
- package/dist/voice/types.d.ts +9 -1
- package/dist/voice/types.d.ts.map +1 -1
- package/dist/voice-pipeline/AcousticEndpointDetector.d.ts +90 -0
- package/dist/voice-pipeline/AcousticEndpointDetector.d.ts.map +1 -0
- package/dist/voice-pipeline/AcousticEndpointDetector.js +123 -0
- package/dist/voice-pipeline/AcousticEndpointDetector.js.map +1 -0
- package/dist/voice-pipeline/HardCutBargeinHandler.d.ts +67 -0
- package/dist/voice-pipeline/HardCutBargeinHandler.d.ts.map +1 -0
- package/dist/voice-pipeline/HardCutBargeinHandler.js +55 -0
- package/dist/voice-pipeline/HardCutBargeinHandler.js.map +1 -0
- package/dist/voice-pipeline/HeuristicEndpointDetector.d.ts +128 -0
- package/dist/voice-pipeline/HeuristicEndpointDetector.d.ts.map +1 -0
- package/dist/voice-pipeline/HeuristicEndpointDetector.js +240 -0
- package/dist/voice-pipeline/HeuristicEndpointDetector.js.map +1 -0
- package/dist/voice-pipeline/SoftFadeBargeinHandler.d.ts +96 -0
- package/dist/voice-pipeline/SoftFadeBargeinHandler.d.ts.map +1 -0
- package/dist/voice-pipeline/SoftFadeBargeinHandler.js +69 -0
- package/dist/voice-pipeline/SoftFadeBargeinHandler.js.map +1 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts +122 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts.map +1 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js +317 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js.map +1 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.d.ts +148 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.d.ts.map +1 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.js +207 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.js.map +1 -0
- package/dist/voice-pipeline/index.d.ts +13 -0
- package/dist/voice-pipeline/index.d.ts.map +1 -0
- package/dist/voice-pipeline/index.js +13 -0
- package/dist/voice-pipeline/index.js.map +1 -0
- package/dist/voice-pipeline/types.d.ts +905 -0
- package/dist/voice-pipeline/types.d.ts.map +1 -0
- package/dist/voice-pipeline/types.js +23 -0
- package/dist/voice-pipeline/types.js.map +1 -0
- package/package.json +6 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { ExtensionManager } from '../extensions/ExtensionManager.js';
|
|
2
2
|
import { SpeechProviderRegistry } from './SpeechProviderRegistry.js';
|
|
3
|
+
import { SpeechProviderResolver } from './SpeechProviderResolver.js';
|
|
3
4
|
import { SpeechSession } from './SpeechSession.js';
|
|
4
|
-
import type { SpeechProviderCatalogEntry, SpeechRuntimeConfig, SpeechRuntimeSessionConfig, SpeechToTextProvider, SpeechVadProvider, TextToSpeechProvider, WakeWordProvider } from './types.js';
|
|
5
|
+
import type { ProviderRequirements, SpeechProviderCatalogEntry, SpeechRuntimeConfig, SpeechRuntimeSessionConfig, SpeechToTextProvider, SpeechVadProvider, TextToSpeechProvider, WakeWordProvider } from './types.js';
|
|
5
6
|
export declare class SpeechRuntime {
|
|
6
7
|
private readonly registry;
|
|
7
8
|
private readonly preferredSttProviderId;
|
|
8
9
|
private readonly preferredTtsProviderId;
|
|
10
|
+
/** @since 0.2.0 — Prefer resolver over registry for provider resolution. */
|
|
11
|
+
readonly resolver: SpeechProviderResolver;
|
|
9
12
|
constructor(config?: SpeechRuntimeConfig);
|
|
10
13
|
getProviderRegistry(): SpeechProviderRegistry;
|
|
11
14
|
registerSttProvider(provider: SpeechToTextProvider): void;
|
|
@@ -13,12 +16,31 @@ export declare class SpeechRuntime {
|
|
|
13
16
|
registerVadProvider(provider: SpeechVadProvider): void;
|
|
14
17
|
registerWakeWordProvider(provider: WakeWordProvider): void;
|
|
15
18
|
hydrateFromExtensionManager(manager: ExtensionManager): void;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve an STT provider via the new {@link SpeechProviderResolver}.
|
|
21
|
+
* Returns `undefined` instead of throwing when no provider matches.
|
|
22
|
+
*
|
|
23
|
+
* @since 0.2.0
|
|
24
|
+
*/
|
|
25
|
+
getSTT(requirements?: ProviderRequirements): SpeechToTextProvider | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve a TTS provider via the new {@link SpeechProviderResolver}.
|
|
28
|
+
* Returns `undefined` instead of throwing when no provider matches.
|
|
29
|
+
*
|
|
30
|
+
* @since 0.2.0
|
|
31
|
+
*/
|
|
32
|
+
getTTS(requirements?: ProviderRequirements): TextToSpeechProvider | undefined;
|
|
16
33
|
createSession(config?: SpeechRuntimeSessionConfig): SpeechSession;
|
|
17
34
|
listProviders(): Array<SpeechProviderCatalogEntry & {
|
|
18
35
|
registered: boolean;
|
|
19
36
|
}>;
|
|
20
37
|
getProvider(id: string): SpeechToTextProvider | TextToSpeechProvider | SpeechVadProvider | WakeWordProvider | undefined;
|
|
21
38
|
private isProviderRegistered;
|
|
39
|
+
/**
|
|
40
|
+
* Bridge helper — registers a provider instance into the resolver with
|
|
41
|
+
* sensible defaults derived from the static catalog.
|
|
42
|
+
*/
|
|
43
|
+
private registerProviderInResolver;
|
|
22
44
|
private resolveDefaultSttProvider;
|
|
23
45
|
private resolveDefaultTtsProvider;
|
|
24
46
|
private resolveDefaultVadProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechRuntime.d.ts","sourceRoot":"","sources":["../../src/speech/SpeechRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAQ1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD,OAAO,KAAK,EACV,0BAA0B,
|
|
1
|
+
{"version":3,"file":"SpeechRuntime.d.ts","sourceRoot":"","sources":["../../src/speech/SpeechRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAQ1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAE1B,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;IAC5D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;IAE5D,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;gBAE9B,MAAM,GAAE,mBAAwB;IA4D5C,mBAAmB,IAAI,sBAAsB;IAI7C,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAIzD,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAIzD,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAItD,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI1D,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAmB5D;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,SAAS;IAQ7E;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,SAAS;IAQ7E,aAAa,CAAC,MAAM,GAAE,0BAA+B,GAAG,aAAa;IAkBrE,aAAa,IAAI,KAAK,CAAC,0BAA0B,GAAG;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAO5E,WAAW,CAAC,EAAE,EAAE,MAAM,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,SAAS;IASb,OAAO,CAAC,oBAAoB;IAe5B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwBlC,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,8BAA8B;CAGvC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,mBAAwB,GAAG,aAAa,CAEnF;AAED,wBAAgB,0BAA0B,CACxC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,MAAM,GAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAM,GAC5C,aAAa,CAEf;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAKlF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EXTENSION_KIND_STT_PROVIDER, EXTENSION_KIND_TTS_PROVIDER, EXTENSION_KIND_VAD_PROVIDER, EXTENSION_KIND_WAKE_WORD_PROVIDER, } from '../extensions/types.js';
|
|
2
2
|
import { findSpeechProviderCatalogEntry, getSpeechProviderCatalog } from './providerCatalog.js';
|
|
3
3
|
import { SpeechProviderRegistry } from './SpeechProviderRegistry.js';
|
|
4
|
+
import { SpeechProviderResolver } from './SpeechProviderResolver.js';
|
|
4
5
|
import { SpeechSession } from './SpeechSession.js';
|
|
5
6
|
import { BuiltInAdaptiveVadProvider } from './providers/BuiltInAdaptiveVadProvider.js';
|
|
6
7
|
import { ElevenLabsTextToSpeechProvider } from './providers/ElevenLabsTextToSpeechProvider.js';
|
|
@@ -8,6 +9,16 @@ import { OpenAITextToSpeechProvider } from './providers/OpenAITextToSpeechProvid
|
|
|
8
9
|
import { OpenAIWhisperSpeechToTextProvider } from './providers/OpenAIWhisperSpeechToTextProvider.js';
|
|
9
10
|
export class SpeechRuntime {
|
|
10
11
|
constructor(config = {}) {
|
|
12
|
+
const env = config.env ?? process.env;
|
|
13
|
+
/* Build resolver config from legacy preferred-provider fields. */
|
|
14
|
+
const resolverConfig = {};
|
|
15
|
+
if (config.preferredSttProviderId) {
|
|
16
|
+
resolverConfig.stt = { preferred: [config.preferredSttProviderId] };
|
|
17
|
+
}
|
|
18
|
+
if (config.preferredTtsProviderId) {
|
|
19
|
+
resolverConfig.tts = { preferred: [config.preferredTtsProviderId] };
|
|
20
|
+
}
|
|
21
|
+
this.resolver = new SpeechProviderResolver(resolverConfig, env);
|
|
11
22
|
this.registry = new SpeechProviderRegistry();
|
|
12
23
|
this.preferredSttProviderId =
|
|
13
24
|
typeof config.preferredSttProviderId === 'string' && config.preferredSttProviderId.trim()
|
|
@@ -17,28 +28,36 @@ export class SpeechRuntime {
|
|
|
17
28
|
typeof config.preferredTtsProviderId === 'string' && config.preferredTtsProviderId.trim()
|
|
18
29
|
? config.preferredTtsProviderId.trim()
|
|
19
30
|
: undefined;
|
|
20
|
-
|
|
31
|
+
/* VAD — always registered. */
|
|
32
|
+
const vadProvider = new BuiltInAdaptiveVadProvider();
|
|
33
|
+
this.registry.registerVadProvider(vadProvider);
|
|
34
|
+
this.registerProviderInResolver(vadProvider, 'vad');
|
|
21
35
|
if (config.autoRegisterFromEnv !== false) {
|
|
22
|
-
const env = config.env ?? process.env;
|
|
23
36
|
const openaiApiKey = env['OPENAI_API_KEY'];
|
|
24
37
|
if (openaiApiKey) {
|
|
25
|
-
|
|
38
|
+
const stt = new OpenAIWhisperSpeechToTextProvider({
|
|
26
39
|
apiKey: openaiApiKey,
|
|
27
40
|
model: env['WHISPER_MODEL_DEFAULT'] ?? 'whisper-1',
|
|
28
|
-
})
|
|
29
|
-
this.registry.
|
|
41
|
+
});
|
|
42
|
+
this.registry.registerSttProvider(stt);
|
|
43
|
+
this.registerProviderInResolver(stt, 'stt');
|
|
44
|
+
const tts = new OpenAITextToSpeechProvider({
|
|
30
45
|
apiKey: openaiApiKey,
|
|
31
46
|
model: env['OPENAI_TTS_DEFAULT_MODEL'] ?? 'tts-1',
|
|
32
47
|
voice: env['OPENAI_TTS_DEFAULT_VOICE'] ?? 'nova',
|
|
33
|
-
})
|
|
48
|
+
});
|
|
49
|
+
this.registry.registerTtsProvider(tts);
|
|
50
|
+
this.registerProviderInResolver(tts, 'tts');
|
|
34
51
|
}
|
|
35
52
|
const elevenLabsApiKey = env['ELEVENLABS_API_KEY'];
|
|
36
53
|
if (elevenLabsApiKey) {
|
|
37
|
-
|
|
54
|
+
const tts = new ElevenLabsTextToSpeechProvider({
|
|
38
55
|
apiKey: elevenLabsApiKey,
|
|
39
56
|
model: env['ELEVENLABS_TTS_MODEL'] ?? 'eleven_multilingual_v2',
|
|
40
57
|
voiceId: env['ELEVENLABS_VOICE_ID'],
|
|
41
|
-
})
|
|
58
|
+
});
|
|
59
|
+
this.registry.registerTtsProvider(tts);
|
|
60
|
+
this.registerProviderInResolver(tts, 'tts');
|
|
42
61
|
}
|
|
43
62
|
}
|
|
44
63
|
}
|
|
@@ -60,15 +79,47 @@ export class SpeechRuntime {
|
|
|
60
79
|
hydrateFromExtensionManager(manager) {
|
|
61
80
|
for (const descriptor of manager.getRegistry(EXTENSION_KIND_STT_PROVIDER).listActive()) {
|
|
62
81
|
this.registry.registerSttProvider(descriptor.payload);
|
|
82
|
+
this.registerProviderInResolver(descriptor.payload, 'stt', 'extension');
|
|
63
83
|
}
|
|
64
84
|
for (const descriptor of manager.getRegistry(EXTENSION_KIND_TTS_PROVIDER).listActive()) {
|
|
65
85
|
this.registry.registerTtsProvider(descriptor.payload);
|
|
86
|
+
this.registerProviderInResolver(descriptor.payload, 'tts', 'extension');
|
|
66
87
|
}
|
|
67
88
|
for (const descriptor of manager.getRegistry(EXTENSION_KIND_VAD_PROVIDER).listActive()) {
|
|
68
89
|
this.registry.registerVadProvider(descriptor.payload);
|
|
90
|
+
this.registerProviderInResolver(descriptor.payload, 'vad', 'extension');
|
|
69
91
|
}
|
|
70
92
|
for (const descriptor of manager.getRegistry(EXTENSION_KIND_WAKE_WORD_PROVIDER).listActive()) {
|
|
71
93
|
this.registry.registerWakeWordProvider(descriptor.payload);
|
|
94
|
+
this.registerProviderInResolver(descriptor.payload, 'wake-word', 'extension');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolve an STT provider via the new {@link SpeechProviderResolver}.
|
|
99
|
+
* Returns `undefined` instead of throwing when no provider matches.
|
|
100
|
+
*
|
|
101
|
+
* @since 0.2.0
|
|
102
|
+
*/
|
|
103
|
+
getSTT(requirements) {
|
|
104
|
+
try {
|
|
105
|
+
return this.resolver.resolveSTT(requirements);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Resolve a TTS provider via the new {@link SpeechProviderResolver}.
|
|
113
|
+
* Returns `undefined` instead of throwing when no provider matches.
|
|
114
|
+
*
|
|
115
|
+
* @since 0.2.0
|
|
116
|
+
*/
|
|
117
|
+
getTTS(requirements) {
|
|
118
|
+
try {
|
|
119
|
+
return this.resolver.resolveTTS(requirements);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return undefined;
|
|
72
123
|
}
|
|
73
124
|
}
|
|
74
125
|
createSession(config = {}) {
|
|
@@ -114,6 +165,29 @@ export class SpeechRuntime {
|
|
|
114
165
|
return false;
|
|
115
166
|
}
|
|
116
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Bridge helper — registers a provider instance into the resolver with
|
|
170
|
+
* sensible defaults derived from the static catalog.
|
|
171
|
+
*/
|
|
172
|
+
registerProviderInResolver(provider, kind, source = 'core') {
|
|
173
|
+
const catalogEntry = findSpeechProviderCatalogEntry(provider.id) ?? {
|
|
174
|
+
id: provider.id,
|
|
175
|
+
kind,
|
|
176
|
+
label: provider.getProviderName?.() ?? provider.id,
|
|
177
|
+
envVars: [],
|
|
178
|
+
local: false,
|
|
179
|
+
description: '',
|
|
180
|
+
};
|
|
181
|
+
this.resolver.register({
|
|
182
|
+
id: provider.id,
|
|
183
|
+
kind,
|
|
184
|
+
provider: provider,
|
|
185
|
+
catalogEntry,
|
|
186
|
+
isConfigured: true,
|
|
187
|
+
priority: source === 'extension' ? 200 : 100,
|
|
188
|
+
source,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
117
191
|
resolveDefaultSttProvider() {
|
|
118
192
|
if (this.preferredSttProviderId) {
|
|
119
193
|
const preferred = this.registry.getSttProvider(this.preferredSttProviderId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechRuntime.js","sourceRoot":"","sources":["../../src/speech/SpeechRuntime.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"SpeechRuntime.js","sourceRoot":"","sources":["../../src/speech/SpeechRuntime.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AAarG,MAAM,OAAO,aAAa;IAQxB,YAAY,SAA8B,EAAE;QAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QAEtC,kEAAkE;QAClE,MAAM,cAAc,GAAyB,EAAE,CAAC;QAChD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;YAClC,cAAc,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACtE,CAAC;QACD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;YAClC,cAAc,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAsB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC7C,IAAI,CAAC,sBAAsB;YACzB,OAAO,MAAM,CAAC,sBAAsB,KAAK,QAAQ,IAAI,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE;gBACvF,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE;gBACtC,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,CAAC,sBAAsB;YACzB,OAAO,MAAM,CAAC,sBAAsB,KAAK,QAAQ,IAAI,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE;gBACvF,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE;gBACtC,CAAC,CAAC,SAAS,CAAC;QAEhB,8BAA8B;QAC9B,MAAM,WAAW,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEpD,IAAI,MAAM,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC3C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,IAAI,iCAAiC,CAAC;oBAChD,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,GAAG,CAAC,uBAAuB,CAAC,IAAI,WAAW;iBACnD,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAE5C,MAAM,GAAG,GAAG,IAAI,0BAA0B,CAAC;oBACzC,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,GAAG,CAAC,0BAA0B,CAAC,IAAI,OAAO;oBACjD,KAAK,EAAE,GAAG,CAAC,0BAA0B,CAAC,IAAI,MAAM;iBACjD,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9C,CAAC;YAED,MAAM,gBAAgB,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACnD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,IAAI,8BAA8B,CAAC;oBAC7C,MAAM,EAAE,gBAAgB;oBACxB,KAAK,EAAE,GAAG,CAAC,sBAAsB,CAAC,IAAI,wBAAwB;oBAC9D,OAAO,EAAE,GAAG,CAAC,qBAAqB,CAAC;iBACpC,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,mBAAmB,CAAC,QAA8B;QAChD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,QAA8B;QAChD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,QAA2B;QAC7C,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,wBAAwB,CAAC,QAA0B;QACjD,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,2BAA2B,CAAC,OAAyB;QACnD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,CAAuB,2BAA2B,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YAC7G,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,CAAuB,2BAA2B,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YAC7G,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,CAAoB,2BAA2B,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YAC1G,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,CAAmB,iCAAiC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YAC/G,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,YAAmC;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,YAAmC;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,aAAa,CAAC,SAAqC,EAAE;QACnD,MAAM,SAAS,GAAG;YAChB,GAAG,EAAE,MAAM,CAAC,aAAa;gBACvB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpD,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACpC,GAAG,EAAE,MAAM,CAAC,aAAa;gBACvB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpD,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACpC,GAAG,EAAE,MAAM,CAAC,aAAa;gBACvB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpD,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACpC,QAAQ,EAAE,MAAM,CAAC,kBAAkB;gBACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBAC9D,CAAC,CAAC,IAAI,CAAC,8BAA8B,EAAE;SAC1C,CAAC;QACF,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa;QACX,OAAO,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,GAAG,KAAK;YACR,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC;IAED,WAAW,CAAC,EAAU;QAMpB,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CACtC,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,KAAiC;QAC5D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,KAAK;gBACR,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACzD,KAAK,KAAK;gBACR,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACzD,KAAK,KAAK;gBACR,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACzD,KAAK,WAAW;gBACd,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,0BAA0B,CAChC,QAAwD,EACxD,IAAyC,EACzC,SAA+B,MAAM;QAErC,MAAM,YAAY,GAAG,8BAA8B,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI;YAClE,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,IAAI;YACJ,KAAK,EAAE,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,QAAQ,CAAC,EAAE;YAClD,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,EAAE;SAChB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrB,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,IAAI;YACJ,QAAQ,EAAE,QAAe;YACzB,YAAY;YACZ,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YAC5C,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAEO,yBAAyB;QAC/B,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC5E,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;QAClC,CAAC;QACD,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAsC,CACnE,CAAC;IACJ,CAAC;IAEO,yBAAyB;QAC/B,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC5E,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;QAClC,CAAC;QACD,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAsC,CACnE,CAAC;IACJ,CAAC;IAEO,yBAAyB;QAC/B,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAmC,CAChE,CAAC;IACJ,CAAC;IAEO,8BAA8B;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAiC,CAAC;IAC5E,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,SAA8B,EAAE;IAClE,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAA0C,OAAO,CAAC,GAAG,EACrD,SAA2C,EAAE;IAE7C,OAAO,IAAI,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAmB;IAC5D,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,8BAA8B,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,8BAA8B,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;AAC1D,CAAC"}
|
package/dist/speech/index.d.ts
CHANGED
|
@@ -2,10 +2,16 @@ export * from './types.js';
|
|
|
2
2
|
export * from './audio.js';
|
|
3
3
|
export * from './providerCatalog.js';
|
|
4
4
|
export * from './SpeechProviderRegistry.js';
|
|
5
|
+
export * from './SpeechProviderResolver.js';
|
|
6
|
+
export * from './FallbackProxy.js';
|
|
5
7
|
export * from './SpeechSession.js';
|
|
6
8
|
export * from './SpeechRuntime.js';
|
|
7
9
|
export * from './providers/OpenAIWhisperSpeechToTextProvider.js';
|
|
8
10
|
export * from './providers/OpenAITextToSpeechProvider.js';
|
|
9
11
|
export * from './providers/ElevenLabsTextToSpeechProvider.js';
|
|
10
12
|
export * from './providers/BuiltInAdaptiveVadProvider.js';
|
|
13
|
+
export * from './providers/DeepgramBatchSTTProvider.js';
|
|
14
|
+
export * from './providers/AssemblyAISTTProvider.js';
|
|
15
|
+
export * from './providers/AzureSpeechSTTProvider.js';
|
|
16
|
+
export * from './providers/AzureSpeechTTSProvider.js';
|
|
11
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/speech/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/speech/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC"}
|
package/dist/speech/index.js
CHANGED
|
@@ -2,10 +2,16 @@ export * from './types.js';
|
|
|
2
2
|
export * from './audio.js';
|
|
3
3
|
export * from './providerCatalog.js';
|
|
4
4
|
export * from './SpeechProviderRegistry.js';
|
|
5
|
+
export * from './SpeechProviderResolver.js';
|
|
6
|
+
export * from './FallbackProxy.js';
|
|
5
7
|
export * from './SpeechSession.js';
|
|
6
8
|
export * from './SpeechRuntime.js';
|
|
7
9
|
export * from './providers/OpenAIWhisperSpeechToTextProvider.js';
|
|
8
10
|
export * from './providers/OpenAITextToSpeechProvider.js';
|
|
9
11
|
export * from './providers/ElevenLabsTextToSpeechProvider.js';
|
|
10
12
|
export * from './providers/BuiltInAdaptiveVadProvider.js';
|
|
13
|
+
export * from './providers/DeepgramBatchSTTProvider.js';
|
|
14
|
+
export * from './providers/AssemblyAISTTProvider.js';
|
|
15
|
+
export * from './providers/AzureSpeechSTTProvider.js';
|
|
16
|
+
export * from './providers/AzureSpeechTTSProvider.js';
|
|
11
17
|
//# sourceMappingURL=index.js.map
|
package/dist/speech/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/speech/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/speech/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerCatalog.d.ts","sourceRoot":"","sources":["../../src/speech/providerCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEjF,eAAO,MAAM,uBAAuB,EAAE,SAAS,0BAA0B,
|
|
1
|
+
{"version":3,"file":"providerCatalog.d.ts","sourceRoot":"","sources":["../../src/speech/providerCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEjF,eAAO,MAAM,uBAAuB,EAAE,SAAS,0BAA0B,EA+R/D,CAAC;AAEX,wBAAgB,wBAAwB,CACtC,IAAI,CAAC,EAAE,kBAAkB,GACxB,0BAA0B,EAAE,CAG9B;AAED,wBAAgB,sBAAsB,IAAI,kBAAkB,EAAE,CAE7D;AAED,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,MAAM,GACT,0BAA0B,GAAG,SAAS,CAExC;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,0BAA0B,EACjC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAET"}
|
|
@@ -50,6 +50,16 @@ export const SPEECH_PROVIDER_CATALOG = [
|
|
|
50
50
|
streaming: true,
|
|
51
51
|
features: ['cloud', 'streaming'],
|
|
52
52
|
},
|
|
53
|
+
{
|
|
54
|
+
id: 'deepgram-batch',
|
|
55
|
+
kind: 'stt',
|
|
56
|
+
label: 'Deepgram Batch',
|
|
57
|
+
envVars: ['DEEPGRAM_API_KEY'],
|
|
58
|
+
local: false,
|
|
59
|
+
streaming: false,
|
|
60
|
+
description: 'Batch speech-to-text via Deepgram REST API.',
|
|
61
|
+
features: ['cloud', 'diarization', 'timestamps'],
|
|
62
|
+
},
|
|
53
63
|
{
|
|
54
64
|
id: 'assemblyai',
|
|
55
65
|
kind: 'stt',
|
|
@@ -77,7 +87,7 @@ export const SPEECH_PROVIDER_CATALOG = [
|
|
|
77
87
|
envVars: ['AZURE_SPEECH_KEY', 'AZURE_SPEECH_REGION'],
|
|
78
88
|
local: false,
|
|
79
89
|
description: 'Azure speech recognition for batch and live transcription.',
|
|
80
|
-
streaming:
|
|
90
|
+
streaming: false,
|
|
81
91
|
features: ['cloud', 'streaming'],
|
|
82
92
|
},
|
|
83
93
|
{
|
|
@@ -107,6 +117,7 @@ export const SPEECH_PROVIDER_CATALOG = [
|
|
|
107
117
|
local: true,
|
|
108
118
|
description: 'Local/offline ASR via NVIDIA NeMo.',
|
|
109
119
|
features: ['local', 'offline'],
|
|
120
|
+
available: false,
|
|
110
121
|
},
|
|
111
122
|
{
|
|
112
123
|
id: 'openai-tts',
|
|
@@ -179,6 +190,7 @@ export const SPEECH_PROVIDER_CATALOG = [
|
|
|
179
190
|
streaming: true,
|
|
180
191
|
description: 'Local XTTS / Coqui speech synthesis.',
|
|
181
192
|
features: ['local', 'tts', 'voice-cloning'],
|
|
193
|
+
available: false,
|
|
182
194
|
},
|
|
183
195
|
{
|
|
184
196
|
id: 'bark',
|
|
@@ -188,6 +200,7 @@ export const SPEECH_PROVIDER_CATALOG = [
|
|
|
188
200
|
local: true,
|
|
189
201
|
description: 'Local Bark expressive speech synthesis.',
|
|
190
202
|
features: ['local', 'tts'],
|
|
203
|
+
available: false,
|
|
191
204
|
},
|
|
192
205
|
{
|
|
193
206
|
id: 'styletts2',
|
|
@@ -197,6 +210,7 @@ export const SPEECH_PROVIDER_CATALOG = [
|
|
|
197
210
|
local: true,
|
|
198
211
|
description: 'Local StyleTTS2 expressive speech synthesis.',
|
|
199
212
|
features: ['local', 'tts'],
|
|
213
|
+
available: false,
|
|
200
214
|
},
|
|
201
215
|
{
|
|
202
216
|
id: 'agentos-adaptive-vad',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerCatalog.js","sourceRoot":"","sources":["../../src/speech/providerCatalog.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAA0C;IAC5E;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;QACpD,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,uDAAuD;QACpE,aAAa,EAAE,cAAc;QAC7B,QAAQ,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC;KACrD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;QACnD,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,iDAAiD;QAC9D,aAAa,EAAE,cAAc;QAC7B,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC;KAChD;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,CAAC,eAAe,EAAE,kBAAkB,CAAC;QAC9C,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,iDAAiD;QAC9D,aAAa,EAAE,aAAa;QAC5B,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;KAC/B;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,CAAC,gBAAgB,CAAC;QAC3B,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,qEAAqE;QAClF,YAAY,EAAE,WAAW;QACzB,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,CAAC;KACnD;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,CAAC,kBAAkB,CAAC;QAC7B,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,wDAAwD;QACrE,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;KACjC;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,uDAAuD;QACpE,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC;KAChD;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,kBAAkB;QACzB,OAAO,EAAE,CAAC,wBAAwB,CAAC;QACnC,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,kCAAkC;QAC/C,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;KACjC;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,kBAAkB;QACzB,OAAO,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;QACpD,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,4DAA4D;QACzE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"providerCatalog.js","sourceRoot":"","sources":["../../src/speech/providerCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { SpeechAudioInput, SpeechToTextProvider, SpeechTranscriptionOptions, SpeechTranscriptionResult } from '../types.js';
|
|
2
|
+
/** Configuration for the AssemblyAISTTProvider. */
|
|
3
|
+
export interface AssemblyAISTTProviderConfig {
|
|
4
|
+
/** AssemblyAI API key. */
|
|
5
|
+
apiKey: string;
|
|
6
|
+
/**
|
|
7
|
+
* Custom fetch implementation, useful for testing.
|
|
8
|
+
* Defaults to the global `fetch`.
|
|
9
|
+
*/
|
|
10
|
+
fetchImpl?: typeof fetch;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Speech-to-text provider that uses the AssemblyAI async transcription API.
|
|
14
|
+
*
|
|
15
|
+
* The three-step workflow is:
|
|
16
|
+
* 1. **Upload** – POST the raw audio to `/v2/upload` to obtain an upload URL.
|
|
17
|
+
* 2. **Submit** – POST to `/v2/transcript` with the upload URL to start processing.
|
|
18
|
+
* 3. **Poll** – GET `/v2/transcript/:id` every second until `status` is
|
|
19
|
+
* `completed` or `error`, or until the optional timeout elapses.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const provider = new AssemblyAISTTProvider({ apiKey: process.env.ASSEMBLYAI_API_KEY! });
|
|
24
|
+
* const result = await provider.transcribe({ data: audioBuffer }, { enableSpeakerDiarization: true });
|
|
25
|
+
* console.log(result.text);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class AssemblyAISTTProvider implements SpeechToTextProvider {
|
|
29
|
+
private readonly config;
|
|
30
|
+
readonly id = "assemblyai";
|
|
31
|
+
readonly displayName = "AssemblyAI";
|
|
32
|
+
readonly supportsStreaming = false;
|
|
33
|
+
private readonly fetchImpl;
|
|
34
|
+
constructor(config: AssemblyAISTTProviderConfig);
|
|
35
|
+
/** Returns the human-readable provider name. */
|
|
36
|
+
getProviderName(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Transcribes an audio buffer via the AssemblyAI async pipeline.
|
|
39
|
+
*
|
|
40
|
+
* @param audio - Raw audio data and associated metadata.
|
|
41
|
+
* @param options - Optional transcription settings. Pass
|
|
42
|
+
* `providerSpecificOptions.signal` (an {@link AbortSignal}) to cancel.
|
|
43
|
+
* @returns A promise resolving to the normalised transcription result.
|
|
44
|
+
* @throws When the API returns a non-2xx status, when transcription fails,
|
|
45
|
+
* or when the 120-second timeout is exceeded.
|
|
46
|
+
*/
|
|
47
|
+
transcribe(audio: SpeechAudioInput, options?: SpeechTranscriptionOptions): Promise<SpeechTranscriptionResult>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=AssemblyAISTTProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssemblyAISTTProvider.d.ts","sourceRoot":"","sources":["../../../src/speech/providers/AssemblyAISTTProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EAE1B,MAAM,aAAa,CAAC;AAErB,mDAAmD;AACnD,MAAM,WAAW,2BAA2B;IAC1C,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAsDD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAsB,YAAW,oBAAoB;IAOpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,SAAgB,EAAE,gBAAgB;IAClC,SAAgB,WAAW,gBAAgB;IAC3C,SAAgB,iBAAiB,SAAS;IAE1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAEZ,MAAM,EAAE,2BAA2B;IAIhE,gDAAgD;IAChD,eAAe,IAAI,MAAM;IAIzB;;;;;;;;;OASG;IACG,UAAU,CACd,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,yBAAyB,CAAC;CAqGtC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
const ASSEMBLYAI_BASE = 'https://api.assemblyai.com/v2';
|
|
2
|
+
/** Maximum time (ms) to wait for a transcript before rejecting. */
|
|
3
|
+
const DEFAULT_TIMEOUT_MS = 120000;
|
|
4
|
+
/** Polling interval (ms) between transcript status checks. */
|
|
5
|
+
const POLL_INTERVAL_MS = 1000;
|
|
6
|
+
/**
|
|
7
|
+
* Maps AssemblyAI word objects to {@link SpeechTranscriptionSegment} entries.
|
|
8
|
+
*
|
|
9
|
+
* Each word becomes its own segment so that per-word timing and speaker
|
|
10
|
+
* attribution are preserved in the normalised result.
|
|
11
|
+
*/
|
|
12
|
+
function wordsToSegments(words) {
|
|
13
|
+
return words.map((w) => ({
|
|
14
|
+
text: w.text,
|
|
15
|
+
startTime: w.start / 1000, // AssemblyAI returns milliseconds
|
|
16
|
+
endTime: w.end / 1000,
|
|
17
|
+
confidence: w.confidence,
|
|
18
|
+
speaker: w.speaker ?? undefined,
|
|
19
|
+
words: [
|
|
20
|
+
{
|
|
21
|
+
word: w.text,
|
|
22
|
+
start: w.start / 1000,
|
|
23
|
+
end: w.end / 1000,
|
|
24
|
+
confidence: w.confidence,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Speech-to-text provider that uses the AssemblyAI async transcription API.
|
|
31
|
+
*
|
|
32
|
+
* The three-step workflow is:
|
|
33
|
+
* 1. **Upload** – POST the raw audio to `/v2/upload` to obtain an upload URL.
|
|
34
|
+
* 2. **Submit** – POST to `/v2/transcript` with the upload URL to start processing.
|
|
35
|
+
* 3. **Poll** – GET `/v2/transcript/:id` every second until `status` is
|
|
36
|
+
* `completed` or `error`, or until the optional timeout elapses.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const provider = new AssemblyAISTTProvider({ apiKey: process.env.ASSEMBLYAI_API_KEY! });
|
|
41
|
+
* const result = await provider.transcribe({ data: audioBuffer }, { enableSpeakerDiarization: true });
|
|
42
|
+
* console.log(result.text);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export class AssemblyAISTTProvider {
|
|
46
|
+
constructor(config) {
|
|
47
|
+
this.config = config;
|
|
48
|
+
this.id = 'assemblyai';
|
|
49
|
+
this.displayName = 'AssemblyAI';
|
|
50
|
+
this.supportsStreaming = false;
|
|
51
|
+
this.fetchImpl = config.fetchImpl ?? fetch;
|
|
52
|
+
}
|
|
53
|
+
/** Returns the human-readable provider name. */
|
|
54
|
+
getProviderName() {
|
|
55
|
+
return this.displayName;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Transcribes an audio buffer via the AssemblyAI async pipeline.
|
|
59
|
+
*
|
|
60
|
+
* @param audio - Raw audio data and associated metadata.
|
|
61
|
+
* @param options - Optional transcription settings. Pass
|
|
62
|
+
* `providerSpecificOptions.signal` (an {@link AbortSignal}) to cancel.
|
|
63
|
+
* @returns A promise resolving to the normalised transcription result.
|
|
64
|
+
* @throws When the API returns a non-2xx status, when transcription fails,
|
|
65
|
+
* or when the 120-second timeout is exceeded.
|
|
66
|
+
*/
|
|
67
|
+
async transcribe(audio, options = {}) {
|
|
68
|
+
const signal = options.providerSpecificOptions?.signal;
|
|
69
|
+
const timeoutMs = DEFAULT_TIMEOUT_MS;
|
|
70
|
+
// ── Step 1: Upload audio ────────────────────────────────────────────────
|
|
71
|
+
const uploadResponse = await this.fetchImpl(`${ASSEMBLYAI_BASE}/upload`, {
|
|
72
|
+
method: 'POST',
|
|
73
|
+
headers: {
|
|
74
|
+
Authorization: this.config.apiKey,
|
|
75
|
+
'Content-Type': audio.mimeType ?? 'audio/wav',
|
|
76
|
+
},
|
|
77
|
+
body: audio.data,
|
|
78
|
+
signal,
|
|
79
|
+
});
|
|
80
|
+
if (!uploadResponse.ok) {
|
|
81
|
+
const msg = await uploadResponse.text();
|
|
82
|
+
throw new Error(`AssemblyAI upload failed (${uploadResponse.status}): ${msg}`);
|
|
83
|
+
}
|
|
84
|
+
const { upload_url } = (await uploadResponse.json());
|
|
85
|
+
// ── Step 2: Submit transcript request ───────────────────────────────────
|
|
86
|
+
const submitPayload = {
|
|
87
|
+
audio_url: upload_url,
|
|
88
|
+
speaker_labels: options.enableSpeakerDiarization ?? false,
|
|
89
|
+
};
|
|
90
|
+
if (options.language)
|
|
91
|
+
submitPayload.language_code = options.language;
|
|
92
|
+
const submitResponse = await this.fetchImpl(`${ASSEMBLYAI_BASE}/transcript`, {
|
|
93
|
+
method: 'POST',
|
|
94
|
+
headers: {
|
|
95
|
+
Authorization: this.config.apiKey,
|
|
96
|
+
'Content-Type': 'application/json',
|
|
97
|
+
},
|
|
98
|
+
body: JSON.stringify(submitPayload),
|
|
99
|
+
signal,
|
|
100
|
+
});
|
|
101
|
+
if (!submitResponse.ok) {
|
|
102
|
+
const msg = await submitResponse.text();
|
|
103
|
+
throw new Error(`AssemblyAI transcript submit failed (${submitResponse.status}): ${msg}`);
|
|
104
|
+
}
|
|
105
|
+
const { id } = (await submitResponse.json());
|
|
106
|
+
// ── Step 3: Poll until completed ────────────────────────────────────────
|
|
107
|
+
const deadline = Date.now() + timeoutMs;
|
|
108
|
+
while (true) {
|
|
109
|
+
if (signal?.aborted) {
|
|
110
|
+
throw new Error('AssemblyAI transcription aborted by caller signal');
|
|
111
|
+
}
|
|
112
|
+
if (Date.now() >= deadline) {
|
|
113
|
+
throw new Error(`AssemblyAI transcription timed out after ${timeoutMs / 1000}s (transcript id: ${id})`);
|
|
114
|
+
}
|
|
115
|
+
const pollResponse = await this.fetchImpl(`${ASSEMBLYAI_BASE}/transcript/${id}`, {
|
|
116
|
+
headers: { Authorization: this.config.apiKey },
|
|
117
|
+
signal,
|
|
118
|
+
});
|
|
119
|
+
if (!pollResponse.ok) {
|
|
120
|
+
const msg = await pollResponse.text();
|
|
121
|
+
throw new Error(`AssemblyAI poll failed (${pollResponse.status}): ${msg}`);
|
|
122
|
+
}
|
|
123
|
+
const transcript = (await pollResponse.json());
|
|
124
|
+
if (transcript.status === 'error') {
|
|
125
|
+
throw new Error(`AssemblyAI transcription error: ${transcript.error ?? 'unknown error'}`);
|
|
126
|
+
}
|
|
127
|
+
if (transcript.status === 'completed') {
|
|
128
|
+
const text = transcript.text ?? '';
|
|
129
|
+
const durationSeconds = transcript.audio_duration ?? audio.durationSeconds;
|
|
130
|
+
const words = transcript.words ?? [];
|
|
131
|
+
return {
|
|
132
|
+
text,
|
|
133
|
+
language: transcript.language_code ?? options.language,
|
|
134
|
+
durationSeconds,
|
|
135
|
+
confidence: transcript.confidence ?? undefined,
|
|
136
|
+
cost: 0,
|
|
137
|
+
segments: words.length > 0 ? wordsToSegments(words) : undefined,
|
|
138
|
+
providerResponse: transcript,
|
|
139
|
+
isFinal: true,
|
|
140
|
+
usage: {
|
|
141
|
+
durationMinutes: (durationSeconds ?? 0) / 60,
|
|
142
|
+
modelUsed: 'assemblyai',
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
// Still queued or processing — wait before polling again.
|
|
147
|
+
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=AssemblyAISTTProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssemblyAISTTProvider.js","sourceRoot":"","sources":["../../../src/speech/providers/AssemblyAISTTProvider.ts"],"names":[],"mappings":"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"}
|