@pico-brief/speech-services 1.0.0
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 +177 -0
- package/dist/audio-sampler.d.ts +9 -0
- package/dist/audio-sampler.d.ts.map +1 -0
- package/dist/audio-sampler.js +135 -0
- package/dist/audio-sampler.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +23 -0
- package/dist/client.js.map +1 -0
- package/dist/detect-locale.d.ts +3 -0
- package/dist/detect-locale.d.ts.map +1 -0
- package/dist/detect-locale.js +73 -0
- package/dist/detect-locale.js.map +1 -0
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -0
- package/dist/fetch-voices.d.ts +3 -0
- package/dist/fetch-voices.d.ts.map +1 -0
- package/dist/fetch-voices.js +50 -0
- package/dist/fetch-voices.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/assemblyai/index.d.ts +2 -0
- package/dist/providers/assemblyai/index.d.ts.map +1 -0
- package/dist/providers/assemblyai/index.js +2 -0
- package/dist/providers/assemblyai/index.js.map +1 -0
- package/dist/providers/assemblyai/transcribe.d.ts +3 -0
- package/dist/providers/assemblyai/transcribe.d.ts.map +1 -0
- package/dist/providers/assemblyai/transcribe.js +92 -0
- package/dist/providers/assemblyai/transcribe.js.map +1 -0
- package/dist/providers/assemblyai/types.d.ts +18 -0
- package/dist/providers/assemblyai/types.d.ts.map +1 -0
- package/dist/providers/assemblyai/types.js +2 -0
- package/dist/providers/assemblyai/types.js.map +1 -0
- package/dist/providers/azure/batch-transcribe.d.ts +3 -0
- package/dist/providers/azure/batch-transcribe.d.ts.map +1 -0
- package/dist/providers/azure/batch-transcribe.js +118 -0
- package/dist/providers/azure/batch-transcribe.js.map +1 -0
- package/dist/providers/azure/detect-languages.d.ts +3 -0
- package/dist/providers/azure/detect-languages.d.ts.map +1 -0
- package/dist/providers/azure/detect-languages.js +15 -0
- package/dist/providers/azure/detect-languages.js.map +1 -0
- package/dist/providers/azure/fetch-voices.d.ts +3 -0
- package/dist/providers/azure/fetch-voices.d.ts.map +1 -0
- package/dist/providers/azure/fetch-voices.js +22 -0
- package/dist/providers/azure/fetch-voices.js.map +1 -0
- package/dist/providers/azure/helpers.d.ts +2 -0
- package/dist/providers/azure/helpers.d.ts.map +1 -0
- package/dist/providers/azure/helpers.js +9 -0
- package/dist/providers/azure/helpers.js.map +1 -0
- package/dist/providers/azure/index.d.ts +5 -0
- package/dist/providers/azure/index.d.ts.map +1 -0
- package/dist/providers/azure/index.js +5 -0
- package/dist/providers/azure/index.js.map +1 -0
- package/dist/providers/azure/synthesize.d.ts +3 -0
- package/dist/providers/azure/synthesize.d.ts.map +1 -0
- package/dist/providers/azure/synthesize.js +57 -0
- package/dist/providers/azure/synthesize.js.map +1 -0
- package/dist/providers/azure/transcribe.d.ts +5 -0
- package/dist/providers/azure/transcribe.d.ts.map +1 -0
- package/dist/providers/azure/transcribe.js +75 -0
- package/dist/providers/azure/transcribe.js.map +1 -0
- package/dist/providers/azure/types.d.ts +48 -0
- package/dist/providers/azure/types.d.ts.map +1 -0
- package/dist/providers/azure/types.js +2 -0
- package/dist/providers/azure/types.js.map +1 -0
- package/dist/providers/cartesia/fetch-voices.d.ts +3 -0
- package/dist/providers/cartesia/fetch-voices.d.ts.map +1 -0
- package/dist/providers/cartesia/fetch-voices.js +37 -0
- package/dist/providers/cartesia/fetch-voices.js.map +1 -0
- package/dist/providers/cartesia/index.d.ts +3 -0
- package/dist/providers/cartesia/index.d.ts.map +1 -0
- package/dist/providers/cartesia/index.js +3 -0
- package/dist/providers/cartesia/index.js.map +1 -0
- package/dist/providers/cartesia/synthesize.d.ts +3 -0
- package/dist/providers/cartesia/synthesize.d.ts.map +1 -0
- package/dist/providers/cartesia/synthesize.js +54 -0
- package/dist/providers/cartesia/synthesize.js.map +1 -0
- package/dist/providers/cartesia/types.d.ts +14 -0
- package/dist/providers/cartesia/types.d.ts.map +1 -0
- package/dist/providers/cartesia/types.js +3 -0
- package/dist/providers/cartesia/types.js.map +1 -0
- package/dist/providers/deepgram/fetch-voices.d.ts +3 -0
- package/dist/providers/deepgram/fetch-voices.d.ts.map +1 -0
- package/dist/providers/deepgram/fetch-voices.js +27 -0
- package/dist/providers/deepgram/fetch-voices.js.map +1 -0
- package/dist/providers/deepgram/index.d.ts +4 -0
- package/dist/providers/deepgram/index.d.ts.map +1 -0
- package/dist/providers/deepgram/index.js +4 -0
- package/dist/providers/deepgram/index.js.map +1 -0
- package/dist/providers/deepgram/synthesize.d.ts +3 -0
- package/dist/providers/deepgram/synthesize.d.ts.map +1 -0
- package/dist/providers/deepgram/synthesize.js +31 -0
- package/dist/providers/deepgram/synthesize.js.map +1 -0
- package/dist/providers/deepgram/transcribe.d.ts +3 -0
- package/dist/providers/deepgram/transcribe.d.ts.map +1 -0
- package/dist/providers/deepgram/transcribe.js +53 -0
- package/dist/providers/deepgram/transcribe.js.map +1 -0
- package/dist/providers/deepgram/types.d.ts +39 -0
- package/dist/providers/deepgram/types.d.ts.map +1 -0
- package/dist/providers/deepgram/types.js +2 -0
- package/dist/providers/deepgram/types.js.map +1 -0
- package/dist/providers/elevenlabs/fetch-voices.d.ts +3 -0
- package/dist/providers/elevenlabs/fetch-voices.d.ts.map +1 -0
- package/dist/providers/elevenlabs/fetch-voices.js +27 -0
- package/dist/providers/elevenlabs/fetch-voices.js.map +1 -0
- package/dist/providers/elevenlabs/index.d.ts +4 -0
- package/dist/providers/elevenlabs/index.d.ts.map +1 -0
- package/dist/providers/elevenlabs/index.js +4 -0
- package/dist/providers/elevenlabs/index.js.map +1 -0
- package/dist/providers/elevenlabs/synthesize.d.ts +3 -0
- package/dist/providers/elevenlabs/synthesize.d.ts.map +1 -0
- package/dist/providers/elevenlabs/synthesize.js +43 -0
- package/dist/providers/elevenlabs/synthesize.js.map +1 -0
- package/dist/providers/elevenlabs/transcribe.d.ts +3 -0
- package/dist/providers/elevenlabs/transcribe.d.ts.map +1 -0
- package/dist/providers/elevenlabs/transcribe.js +50 -0
- package/dist/providers/elevenlabs/transcribe.js.map +1 -0
- package/dist/providers/elevenlabs/types.d.ts +24 -0
- package/dist/providers/elevenlabs/types.d.ts.map +1 -0
- package/dist/providers/elevenlabs/types.js +2 -0
- package/dist/providers/elevenlabs/types.js.map +1 -0
- package/dist/providers/google/fetch-voices.d.ts +3 -0
- package/dist/providers/google/fetch-voices.d.ts.map +1 -0
- package/dist/providers/google/fetch-voices.js +28 -0
- package/dist/providers/google/fetch-voices.js.map +1 -0
- package/dist/providers/google/helpers.d.ts +10 -0
- package/dist/providers/google/helpers.d.ts.map +1 -0
- package/dist/providers/google/helpers.js +15 -0
- package/dist/providers/google/helpers.js.map +1 -0
- package/dist/providers/google/index.d.ts +4 -0
- package/dist/providers/google/index.d.ts.map +1 -0
- package/dist/providers/google/index.js +4 -0
- package/dist/providers/google/index.js.map +1 -0
- package/dist/providers/google/synthesize.d.ts +3 -0
- package/dist/providers/google/synthesize.d.ts.map +1 -0
- package/dist/providers/google/synthesize.js +35 -0
- package/dist/providers/google/synthesize.js.map +1 -0
- package/dist/providers/google/transcribe.d.ts +3 -0
- package/dist/providers/google/transcribe.d.ts.map +1 -0
- package/dist/providers/google/transcribe.js +117 -0
- package/dist/providers/google/transcribe.js.map +1 -0
- package/dist/providers/google/types.d.ts +43 -0
- package/dist/providers/google/types.d.ts.map +1 -0
- package/dist/providers/google/types.js +3 -0
- package/dist/providers/google/types.js.map +1 -0
- package/dist/providers/openai/fetch-voices.d.ts +3 -0
- package/dist/providers/openai/fetch-voices.d.ts.map +1 -0
- package/dist/providers/openai/fetch-voices.js +14 -0
- package/dist/providers/openai/fetch-voices.js.map +1 -0
- package/dist/providers/openai/index.d.ts +4 -0
- package/dist/providers/openai/index.d.ts.map +1 -0
- package/dist/providers/openai/index.js +4 -0
- package/dist/providers/openai/index.js.map +1 -0
- package/dist/providers/openai/synthesize.d.ts +3 -0
- package/dist/providers/openai/synthesize.d.ts.map +1 -0
- package/dist/providers/openai/synthesize.js +37 -0
- package/dist/providers/openai/synthesize.js.map +1 -0
- package/dist/providers/openai/transcribe.d.ts +3 -0
- package/dist/providers/openai/transcribe.d.ts.map +1 -0
- package/dist/providers/openai/transcribe.js +58 -0
- package/dist/providers/openai/transcribe.js.map +1 -0
- package/dist/providers/openai/types.d.ts +18 -0
- package/dist/providers/openai/types.d.ts.map +1 -0
- package/dist/providers/openai/types.js +2 -0
- package/dist/providers/openai/types.js.map +1 -0
- package/dist/providers/playht/fetch-voices.d.ts +3 -0
- package/dist/providers/playht/fetch-voices.d.ts.map +1 -0
- package/dist/providers/playht/fetch-voices.js +25 -0
- package/dist/providers/playht/fetch-voices.js.map +1 -0
- package/dist/providers/playht/index.d.ts +3 -0
- package/dist/providers/playht/index.d.ts.map +1 -0
- package/dist/providers/playht/index.js +3 -0
- package/dist/providers/playht/index.js.map +1 -0
- package/dist/providers/playht/synthesize.d.ts +3 -0
- package/dist/providers/playht/synthesize.d.ts.map +1 -0
- package/dist/providers/playht/synthesize.js +41 -0
- package/dist/providers/playht/synthesize.js.map +1 -0
- package/dist/providers/playht/types.d.ts +11 -0
- package/dist/providers/playht/types.d.ts.map +1 -0
- package/dist/providers/playht/types.js +2 -0
- package/dist/providers/playht/types.js.map +1 -0
- package/dist/providers/revai/index.d.ts +2 -0
- package/dist/providers/revai/index.d.ts.map +1 -0
- package/dist/providers/revai/index.js +2 -0
- package/dist/providers/revai/index.js.map +1 -0
- package/dist/providers/revai/transcribe.d.ts +3 -0
- package/dist/providers/revai/transcribe.d.ts.map +1 -0
- package/dist/providers/revai/transcribe.js +97 -0
- package/dist/providers/revai/transcribe.js.map +1 -0
- package/dist/providers/revai/types.d.ts +23 -0
- package/dist/providers/revai/types.d.ts.map +1 -0
- package/dist/providers/revai/types.js +2 -0
- package/dist/providers/revai/types.js.map +1 -0
- package/dist/providers/speechmatics/detect-languages.d.ts +3 -0
- package/dist/providers/speechmatics/detect-languages.d.ts.map +1 -0
- package/dist/providers/speechmatics/detect-languages.js +24 -0
- package/dist/providers/speechmatics/detect-languages.js.map +1 -0
- package/dist/providers/speechmatics/helpers.d.ts +4 -0
- package/dist/providers/speechmatics/helpers.d.ts.map +1 -0
- package/dist/providers/speechmatics/helpers.js +57 -0
- package/dist/providers/speechmatics/helpers.js.map +1 -0
- package/dist/providers/speechmatics/index.d.ts +3 -0
- package/dist/providers/speechmatics/index.d.ts.map +1 -0
- package/dist/providers/speechmatics/index.js +3 -0
- package/dist/providers/speechmatics/index.js.map +1 -0
- package/dist/providers/speechmatics/transcribe.d.ts +3 -0
- package/dist/providers/speechmatics/transcribe.d.ts.map +1 -0
- package/dist/providers/speechmatics/transcribe.js +61 -0
- package/dist/providers/speechmatics/transcribe.js.map +1 -0
- package/dist/providers/speechmatics/types.d.ts +27 -0
- package/dist/providers/speechmatics/types.d.ts.map +1 -0
- package/dist/providers/speechmatics/types.js +2 -0
- package/dist/providers/speechmatics/types.js.map +1 -0
- package/dist/synthesize.d.ts +4 -0
- package/dist/synthesize.d.ts.map +1 -0
- package/dist/synthesize.js +73 -0
- package/dist/synthesize.js.map +1 -0
- package/dist/transcribe.d.ts +3 -0
- package/dist/transcribe.d.ts.map +1 -0
- package/dist/transcribe.js +55 -0
- package/dist/transcribe.js.map +1 -0
- package/dist/types.d.ts +361 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +19 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +101 -0
- package/dist/utils.js.map +1 -0
- package/dist/voice-cache.d.ts +9 -0
- package/dist/voice-cache.d.ts.map +1 -0
- package/dist/voice-cache.js +21 -0
- package/dist/voice-cache.js.map +1 -0
- package/dist/voice-resolver.d.ts +7 -0
- package/dist/voice-resolver.d.ts.map +1 -0
- package/dist/voice-resolver.js +82 -0
- package/dist/voice-resolver.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { SpeechServiceError } from "./errors.js";
|
|
2
|
+
import * as assemblyai from "./providers/assemblyai/index.js";
|
|
3
|
+
import * as azure from "./providers/azure/index.js";
|
|
4
|
+
import * as deepgram from "./providers/deepgram/index.js";
|
|
5
|
+
import * as elevenlabs from "./providers/elevenlabs/index.js";
|
|
6
|
+
import * as google from "./providers/google/index.js";
|
|
7
|
+
import * as openai from "./providers/openai/index.js";
|
|
8
|
+
import * as revai from "./providers/revai/index.js";
|
|
9
|
+
import * as speechmatics from "./providers/speechmatics/index.js";
|
|
10
|
+
export async function transcribe(config, params) {
|
|
11
|
+
switch (params.provider) {
|
|
12
|
+
case "assemblyai": {
|
|
13
|
+
const cfg = requireConfig(config, "assemblyai", "AssemblyAI");
|
|
14
|
+
return assemblyai.transcribe(cfg, params.audio, params.languages, params.providerOptions);
|
|
15
|
+
}
|
|
16
|
+
case "azure": {
|
|
17
|
+
const cfg = requireConfig(config, "azure", "Azure");
|
|
18
|
+
return azure.transcribe(cfg, params.audio, params.languages, params.providerOptions);
|
|
19
|
+
}
|
|
20
|
+
case "deepgram": {
|
|
21
|
+
const cfg = requireConfig(config, "deepgram", "Deepgram");
|
|
22
|
+
return deepgram.transcribe(cfg, params.audio, params.languages, params.providerOptions);
|
|
23
|
+
}
|
|
24
|
+
case "elevenlabs": {
|
|
25
|
+
const cfg = requireConfig(config, "elevenlabs", "ElevenLabs");
|
|
26
|
+
return elevenlabs.transcribe(cfg, params.audio, params.languages, params.providerOptions);
|
|
27
|
+
}
|
|
28
|
+
case "google": {
|
|
29
|
+
const cfg = requireConfig(config, "google", "Google");
|
|
30
|
+
return google.transcribe(cfg, params.audio, params.languages, params.providerOptions);
|
|
31
|
+
}
|
|
32
|
+
case "openai": {
|
|
33
|
+
const cfg = requireConfig(config, "openai", "OpenAI");
|
|
34
|
+
return openai.transcribe(cfg, params.audio, params.languages, params.providerOptions);
|
|
35
|
+
}
|
|
36
|
+
case "revai": {
|
|
37
|
+
const cfg = requireConfig(config, "revai", "Rev.ai");
|
|
38
|
+
return revai.transcribe(cfg, params.audio, params.languages, params.providerOptions);
|
|
39
|
+
}
|
|
40
|
+
case "speechmatics": {
|
|
41
|
+
const cfg = requireConfig(config, "speechmatics", "Speechmatics");
|
|
42
|
+
return speechmatics.transcribe(cfg, params.audio, params.languages, params.providerOptions);
|
|
43
|
+
}
|
|
44
|
+
default:
|
|
45
|
+
throw new SpeechServiceError(`Unknown transcription provider: ${params.provider}`, "UNKNOWN_PROVIDER");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function requireConfig(config, provider, displayName) {
|
|
49
|
+
const providerConfig = config[provider];
|
|
50
|
+
if (!providerConfig) {
|
|
51
|
+
throw new SpeechServiceError(`${displayName} is not configured. Add "${provider}" to your config.`, "NOT_CONFIGURED", provider);
|
|
52
|
+
}
|
|
53
|
+
return providerConfig;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=transcribe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../src/transcribe.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
export interface AssemblyAIConfig {
|
|
2
|
+
apiKey: string;
|
|
3
|
+
}
|
|
4
|
+
export interface AzureConfig {
|
|
5
|
+
subscriptionKey: string;
|
|
6
|
+
region: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CartesiaConfig {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
}
|
|
11
|
+
export interface DeepgramConfig {
|
|
12
|
+
apiKey: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ElevenLabsConfig {
|
|
15
|
+
apiKey: string;
|
|
16
|
+
}
|
|
17
|
+
export interface GoogleConfig {
|
|
18
|
+
apiKey: string;
|
|
19
|
+
}
|
|
20
|
+
export interface OpenAIConfig {
|
|
21
|
+
apiKey: string;
|
|
22
|
+
}
|
|
23
|
+
export interface PlayHTConfig {
|
|
24
|
+
apiKey: string;
|
|
25
|
+
userId: string;
|
|
26
|
+
}
|
|
27
|
+
export interface RevAIConfig {
|
|
28
|
+
apiKey: string;
|
|
29
|
+
}
|
|
30
|
+
export interface SpeechmaticsConfig {
|
|
31
|
+
apiKey: string;
|
|
32
|
+
/** Regional endpoint. Default: "eu1". Options: "eu1", "us1", "au1" */
|
|
33
|
+
region?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ClientConfig {
|
|
36
|
+
assemblyai?: AssemblyAIConfig;
|
|
37
|
+
azure?: AzureConfig;
|
|
38
|
+
cartesia?: CartesiaConfig;
|
|
39
|
+
deepgram?: DeepgramConfig;
|
|
40
|
+
elevenlabs?: ElevenLabsConfig;
|
|
41
|
+
google?: GoogleConfig;
|
|
42
|
+
openai?: OpenAIConfig;
|
|
43
|
+
playht?: PlayHTConfig;
|
|
44
|
+
revai?: RevAIConfig;
|
|
45
|
+
speechmatics?: SpeechmaticsConfig;
|
|
46
|
+
}
|
|
47
|
+
export interface AssemblyAITranscribeOptions {
|
|
48
|
+
/** Speech model to use. Default: "universal" */
|
|
49
|
+
speechModel?: string;
|
|
50
|
+
/** How often to check if transcription is done (ms). Default: 3000 */
|
|
51
|
+
pollInterval?: number;
|
|
52
|
+
/** Max time to wait for transcription (ms). Default: 300000 (5 min) */
|
|
53
|
+
timeout?: number;
|
|
54
|
+
}
|
|
55
|
+
export interface AzureTranscribeOptions {
|
|
56
|
+
/** Transcription mode. "fast" is synchronous, "batch" requires a URL. Default: "fast" */
|
|
57
|
+
mode?: "fast" | "batch";
|
|
58
|
+
/** Profanity handling. Default: "none" */
|
|
59
|
+
profanityFilter?: "none" | "masked" | "removed";
|
|
60
|
+
/** How often to check if batch transcription is done (ms). Default: 5000 */
|
|
61
|
+
pollInterval?: number;
|
|
62
|
+
/** Max time to wait for batch transcription (ms). Default: 300000 (5 min) */
|
|
63
|
+
timeout?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface DeepgramTranscribeOptions {
|
|
66
|
+
/** STT model. Default: "nova-2" */
|
|
67
|
+
model?: string;
|
|
68
|
+
/** Enable smart formatting (punctuation, capitalization, numerals). Default: true */
|
|
69
|
+
smartFormat?: boolean;
|
|
70
|
+
/** Enable speaker diarization. Default: false */
|
|
71
|
+
diarize?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface ElevenLabsTranscribeOptions {
|
|
74
|
+
/** Speech-to-text model. Default: "scribe_v2" */
|
|
75
|
+
model?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface GoogleTranscribeOptions {
|
|
78
|
+
/** Recognition model. Default: "latest_long" */
|
|
79
|
+
model?: string;
|
|
80
|
+
/** Audio encoding (only needed for raw audio without headers). Examples: "LINEAR16", "FLAC", "MP3" */
|
|
81
|
+
encoding?: string;
|
|
82
|
+
/** Sample rate in Hz (only needed for raw audio without headers). */
|
|
83
|
+
sampleRateHertz?: number;
|
|
84
|
+
}
|
|
85
|
+
export interface OpenAITranscribeOptions {
|
|
86
|
+
/** STT model. Default: "whisper-1". Options: "whisper-1", "gpt-4o-transcribe", "gpt-4o-mini-transcribe" */
|
|
87
|
+
model?: string;
|
|
88
|
+
/** Optional prompt to guide the model's style. */
|
|
89
|
+
prompt?: string;
|
|
90
|
+
/** Sampling temperature (0 to 1). Default: 0 */
|
|
91
|
+
temperature?: number;
|
|
92
|
+
}
|
|
93
|
+
export interface RevAITranscribeOptions {
|
|
94
|
+
/** Skip speaker diarization. Default: false */
|
|
95
|
+
skipDiarization?: boolean;
|
|
96
|
+
/** Skip punctuation. Default: false */
|
|
97
|
+
skipPunctuation?: boolean;
|
|
98
|
+
/** Filter profanity. Default: false */
|
|
99
|
+
filterProfanity?: boolean;
|
|
100
|
+
/** How often to check if transcription is done (ms). Default: 5000 */
|
|
101
|
+
pollInterval?: number;
|
|
102
|
+
/** Max time to wait for transcription (ms). Default: 300000 (5 min) */
|
|
103
|
+
timeout?: number;
|
|
104
|
+
}
|
|
105
|
+
export interface SpeechmaticsTranscribeOptions {
|
|
106
|
+
/** Operating point. "standard" is faster, "enhanced" is more accurate. Default: "enhanced" */
|
|
107
|
+
operatingPoint?: "standard" | "enhanced";
|
|
108
|
+
/** Enable speaker diarization. Default: false */
|
|
109
|
+
diarization?: "none" | "speaker";
|
|
110
|
+
/** How often to check if transcription is done (ms). Default: 5000 */
|
|
111
|
+
pollInterval?: number;
|
|
112
|
+
/** Max time to wait for transcription (ms). Default: 300000 (5 min) */
|
|
113
|
+
timeout?: number;
|
|
114
|
+
}
|
|
115
|
+
export type TranscribeProvider = "assemblyai" | "azure" | "deepgram" | "elevenlabs" | "google" | "openai" | "revai" | "speechmatics";
|
|
116
|
+
export type TranscribeParams = ({
|
|
117
|
+
provider: "assemblyai";
|
|
118
|
+
audio: Buffer | string;
|
|
119
|
+
/** BCP-47 language codes. One → sets language, multiple → enables code-switching. Omit for auto-detection. */
|
|
120
|
+
languages?: string[];
|
|
121
|
+
providerOptions?: AssemblyAITranscribeOptions;
|
|
122
|
+
}) | ({
|
|
123
|
+
provider: "azure";
|
|
124
|
+
audio: Buffer | string;
|
|
125
|
+
/** BCP-47 language codes. Passed as candidate locales for language identification. Omit for multilingual model. */
|
|
126
|
+
languages?: string[];
|
|
127
|
+
providerOptions?: AzureTranscribeOptions;
|
|
128
|
+
}) | ({
|
|
129
|
+
provider: "deepgram";
|
|
130
|
+
audio: Buffer | string;
|
|
131
|
+
/** Language code (e.g. "en", "en-US", "multi"). Default: "en". */
|
|
132
|
+
languages?: string[];
|
|
133
|
+
providerOptions?: DeepgramTranscribeOptions;
|
|
134
|
+
}) | ({
|
|
135
|
+
provider: "elevenlabs";
|
|
136
|
+
audio: Buffer | string;
|
|
137
|
+
/** BCP-47 language codes. Only the first one is used (ElevenLabs accepts a single language). Omit for auto-detection. */
|
|
138
|
+
languages?: string[];
|
|
139
|
+
providerOptions?: ElevenLabsTranscribeOptions;
|
|
140
|
+
}) | ({
|
|
141
|
+
provider: "google";
|
|
142
|
+
audio: Buffer | string;
|
|
143
|
+
/** BCP-47 language codes. First is primary, rest are alternatives (up to 3 extra). Required by Google — defaults to ["en-US"]. */
|
|
144
|
+
languages?: string[];
|
|
145
|
+
providerOptions?: GoogleTranscribeOptions;
|
|
146
|
+
}) | ({
|
|
147
|
+
provider: "openai";
|
|
148
|
+
audio: Buffer | string;
|
|
149
|
+
/** ISO 639-1 language code (e.g. "en", "es"). Omit for auto-detection. Only the first element is used. */
|
|
150
|
+
languages?: string[];
|
|
151
|
+
providerOptions?: OpenAITranscribeOptions;
|
|
152
|
+
}) | ({
|
|
153
|
+
provider: "revai";
|
|
154
|
+
audio: Buffer | string;
|
|
155
|
+
/** ISO 639-1 language code. Only the first element is used. Default: "en". */
|
|
156
|
+
languages?: string[];
|
|
157
|
+
providerOptions?: RevAITranscribeOptions;
|
|
158
|
+
}) | ({
|
|
159
|
+
provider: "speechmatics";
|
|
160
|
+
audio: Buffer | string;
|
|
161
|
+
/** Language code (e.g. "en", "fr", "auto"). Only the first element is used. Default: "en". */
|
|
162
|
+
languages?: string[];
|
|
163
|
+
providerOptions?: SpeechmaticsTranscribeOptions;
|
|
164
|
+
});
|
|
165
|
+
export interface TranscribedWord {
|
|
166
|
+
text: string;
|
|
167
|
+
/** Start time in seconds */
|
|
168
|
+
startTime: number;
|
|
169
|
+
/** End time in seconds */
|
|
170
|
+
endTime: number;
|
|
171
|
+
/** Confidence score (0 to 1). Not all providers return this. */
|
|
172
|
+
confidence?: number;
|
|
173
|
+
/** Speaker label, if diarization was enabled. */
|
|
174
|
+
speaker?: string;
|
|
175
|
+
}
|
|
176
|
+
export interface TranscribeResult {
|
|
177
|
+
/** Full transcript text */
|
|
178
|
+
text: string;
|
|
179
|
+
/** Word-level timestamps */
|
|
180
|
+
words: TranscribedWord[];
|
|
181
|
+
/** Detected or specified language (normalized to BCP-47, e.g. "en-US") */
|
|
182
|
+
language: string;
|
|
183
|
+
/** Audio duration in seconds */
|
|
184
|
+
duration: number;
|
|
185
|
+
}
|
|
186
|
+
export interface VoiceInfo {
|
|
187
|
+
/** The value to pass to the provider (Azure ShortName, ElevenLabs voice_id, Google name) */
|
|
188
|
+
id: string;
|
|
189
|
+
/** Human-readable display name */
|
|
190
|
+
name: string;
|
|
191
|
+
/** Voice gender, if known */
|
|
192
|
+
gender?: "male" | "female";
|
|
193
|
+
/** BCP-47 locale like "en-US" */
|
|
194
|
+
locale: string;
|
|
195
|
+
/** Which TTS provider this voice belongs to */
|
|
196
|
+
provider: SynthesizeProvider;
|
|
197
|
+
}
|
|
198
|
+
export type SynthesizeProvider = "azure" | "cartesia" | "deepgram" | "elevenlabs" | "google" | "openai" | "playht";
|
|
199
|
+
export interface AzureSynthesizeOptions {
|
|
200
|
+
/** Azure output format string. Default: "audio-24khz-160kbitrate-mono-mp3" */
|
|
201
|
+
outputFormat?: string;
|
|
202
|
+
/** Speaking rate. Examples: "-5%", "+10%", "slow", "fast". Default: "-5%" */
|
|
203
|
+
speed?: string;
|
|
204
|
+
/** Pitch adjustment. Examples: "+5%", "-10%" */
|
|
205
|
+
pitch?: string;
|
|
206
|
+
/** Speaking style. Examples: "cheerful", "sad", "angry" */
|
|
207
|
+
style?: string;
|
|
208
|
+
}
|
|
209
|
+
export interface CartesiaSynthesizeOptions {
|
|
210
|
+
/** Model ID. Default: "sonic-3" */
|
|
211
|
+
modelId?: string;
|
|
212
|
+
/** Output container format. Default: "wav" */
|
|
213
|
+
container?: "wav" | "mp3" | "raw";
|
|
214
|
+
/** PCM encoding (for wav/raw containers). Default: "pcm_s16le" */
|
|
215
|
+
encoding?: string;
|
|
216
|
+
/** Sample rate in Hz. Default: 24000 */
|
|
217
|
+
sampleRate?: number;
|
|
218
|
+
/** Speech speed (0.6 to 1.5). Default: 1.0 */
|
|
219
|
+
speed?: number;
|
|
220
|
+
/** Emotion. Default: "neutral". Options: "neutral", "happy", "sad", "angry", "surprised", etc. */
|
|
221
|
+
emotion?: string;
|
|
222
|
+
}
|
|
223
|
+
export interface DeepgramSynthesizeOptions {
|
|
224
|
+
/** Audio encoding. Default: "mp3". Options: "mp3", "linear16", "mulaw", "alaw", "opus", "flac", "aac" */
|
|
225
|
+
encoding?: string;
|
|
226
|
+
/** Audio container. Examples: "wav", "ogg". Only needed for certain encodings. */
|
|
227
|
+
container?: string;
|
|
228
|
+
/** Sample rate in Hz. */
|
|
229
|
+
sampleRate?: number;
|
|
230
|
+
}
|
|
231
|
+
export interface ElevenLabsSynthesizeOptions {
|
|
232
|
+
/** TTS model. Default: "eleven_multilingual_v2" */
|
|
233
|
+
modelId?: string;
|
|
234
|
+
/** Output format. Default: "mp3_44100_128" */
|
|
235
|
+
outputFormat?: string;
|
|
236
|
+
/** Voice consistency (0 to 1). Lower = more expressive. Default: 0.5 */
|
|
237
|
+
stability?: number;
|
|
238
|
+
/** Voice similarity (0 to 1). Higher = closer to original voice. Default: 0.75 */
|
|
239
|
+
similarityBoost?: number;
|
|
240
|
+
/** Style exaggeration (0 to 1). Higher = more expressive but slower. Default: 0 */
|
|
241
|
+
style?: number;
|
|
242
|
+
/** Speech speed (0.7 to 1.2). Default: 1.0 */
|
|
243
|
+
speed?: number;
|
|
244
|
+
}
|
|
245
|
+
export interface GoogleSynthesizeOptions {
|
|
246
|
+
/** Audio encoding. Default: "MP3". Options: "MP3", "LINEAR16", "OGG_OPUS" */
|
|
247
|
+
audioEncoding?: string;
|
|
248
|
+
/** Speaking rate (0.25 to 2.0). Default: 1.0 */
|
|
249
|
+
speakingRate?: number;
|
|
250
|
+
/** Pitch in semitones (-20 to 20). Default: 0 */
|
|
251
|
+
pitch?: number;
|
|
252
|
+
}
|
|
253
|
+
export interface OpenAISynthesizeOptions {
|
|
254
|
+
/** TTS model. Default: "tts-1". Options: "tts-1", "tts-1-hd", "gpt-4o-mini-tts" */
|
|
255
|
+
model?: string;
|
|
256
|
+
/** Output format. Default: "mp3". Options: "mp3", "opus", "aac", "flac", "wav", "pcm" */
|
|
257
|
+
responseFormat?: string;
|
|
258
|
+
/** Speech speed (0.25 to 4.0). Default: 1.0 */
|
|
259
|
+
speed?: number;
|
|
260
|
+
/** Instructions for tone/style. Only works with gpt-4o-mini-tts. */
|
|
261
|
+
instructions?: string;
|
|
262
|
+
}
|
|
263
|
+
export interface PlayHTSynthesizeOptions {
|
|
264
|
+
/** Voice engine. Default: "Play3.0-mini" */
|
|
265
|
+
voiceEngine?: string;
|
|
266
|
+
/** Output format. Default: "mp3". Options: "mp3", "wav", "ogg", "flac", "mulaw" */
|
|
267
|
+
outputFormat?: string;
|
|
268
|
+
/** Speech speed (0.1 to 5.0). Default: 1.0 */
|
|
269
|
+
speed?: number;
|
|
270
|
+
/** Sample rate in Hz (8000 to 48000). */
|
|
271
|
+
sampleRate?: number;
|
|
272
|
+
/** Audio quality. Options: "draft", "low", "medium", "high", "premium" */
|
|
273
|
+
quality?: string;
|
|
274
|
+
}
|
|
275
|
+
export type SynthesizeParams = ({
|
|
276
|
+
provider: "azure";
|
|
277
|
+
text: string;
|
|
278
|
+
voice?: string;
|
|
279
|
+
gender?: "male" | "female";
|
|
280
|
+
languages?: string[];
|
|
281
|
+
providerOptions?: AzureSynthesizeOptions;
|
|
282
|
+
}) | ({
|
|
283
|
+
provider: "cartesia";
|
|
284
|
+
text: string;
|
|
285
|
+
voice?: string;
|
|
286
|
+
gender?: "male" | "female";
|
|
287
|
+
languages?: string[];
|
|
288
|
+
providerOptions?: CartesiaSynthesizeOptions;
|
|
289
|
+
}) | ({
|
|
290
|
+
provider: "deepgram";
|
|
291
|
+
text: string;
|
|
292
|
+
voice?: string;
|
|
293
|
+
gender?: "male" | "female";
|
|
294
|
+
languages?: string[];
|
|
295
|
+
providerOptions?: DeepgramSynthesizeOptions;
|
|
296
|
+
}) | ({
|
|
297
|
+
provider: "elevenlabs";
|
|
298
|
+
text: string;
|
|
299
|
+
voice?: string;
|
|
300
|
+
gender?: "male" | "female";
|
|
301
|
+
languages?: string[];
|
|
302
|
+
providerOptions?: ElevenLabsSynthesizeOptions;
|
|
303
|
+
}) | ({
|
|
304
|
+
provider: "google";
|
|
305
|
+
text: string;
|
|
306
|
+
voice?: string;
|
|
307
|
+
gender?: "male" | "female";
|
|
308
|
+
languages?: string[];
|
|
309
|
+
providerOptions?: GoogleSynthesizeOptions;
|
|
310
|
+
}) | ({
|
|
311
|
+
provider: "openai";
|
|
312
|
+
text: string;
|
|
313
|
+
voice?: string;
|
|
314
|
+
gender?: "male" | "female";
|
|
315
|
+
languages?: string[];
|
|
316
|
+
providerOptions?: OpenAISynthesizeOptions;
|
|
317
|
+
}) | ({
|
|
318
|
+
provider: "playht";
|
|
319
|
+
text: string;
|
|
320
|
+
voice?: string;
|
|
321
|
+
gender?: "male" | "female";
|
|
322
|
+
languages?: string[];
|
|
323
|
+
providerOptions?: PlayHTSynthesizeOptions;
|
|
324
|
+
});
|
|
325
|
+
export interface SynthesizeResult {
|
|
326
|
+
/** Audio data as a Buffer */
|
|
327
|
+
audio: Buffer;
|
|
328
|
+
/** Audio format (e.g. "mp3", "wav", "ogg") */
|
|
329
|
+
format: string;
|
|
330
|
+
/** The resolved voice ID that was used for synthesis */
|
|
331
|
+
voice: string;
|
|
332
|
+
}
|
|
333
|
+
export type DetectLocalesProvider = "assemblyai" | "azure" | "deepgram" | "elevenlabs" | "openai" | "speechmatics";
|
|
334
|
+
export interface DetectLocalesParams {
|
|
335
|
+
/** Audio to analyze. Buffer or URL string. */
|
|
336
|
+
audio: Buffer | string;
|
|
337
|
+
/** STT provider to use for language detection. Must support auto-detection. */
|
|
338
|
+
provider: DetectLocalesProvider;
|
|
339
|
+
/**
|
|
340
|
+
* Path to ffmpeg binary. Enables efficient sampling for long audio files.
|
|
341
|
+
* Short clips (~10s each) are extracted from different positions in the audio
|
|
342
|
+
* and language detection runs on each clip. ffprobe must be in the same directory.
|
|
343
|
+
*
|
|
344
|
+
* Without ffmpeg, only the first portion of the audio is analyzed (see maxBytes).
|
|
345
|
+
*/
|
|
346
|
+
ffmpegPath?: string;
|
|
347
|
+
/**
|
|
348
|
+
* Maximum bytes of audio to analyze when ffmpeg is not available.
|
|
349
|
+
* Truncates the Buffer to save cost on long files. Only applies to Buffer input.
|
|
350
|
+
* Default: 500_000 (~30 seconds of 128kbps MP3). Ignored when ffmpegPath is provided.
|
|
351
|
+
*/
|
|
352
|
+
maxBytes?: number;
|
|
353
|
+
}
|
|
354
|
+
export type FetchVoicesProvider = SynthesizeProvider;
|
|
355
|
+
export interface SpeechClient {
|
|
356
|
+
transcribe(params: TranscribeParams): Promise<TranscribeResult>;
|
|
357
|
+
synthesize(params: SynthesizeParams): Promise<SynthesizeResult>;
|
|
358
|
+
detectLocales(params: DetectLocalesParams): Promise<Map<string, number>>;
|
|
359
|
+
fetchVoices(provider: FetchVoicesProvider): Promise<VoiceInfo[]>;
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+EAA+E"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function poll<T>(fn: () => Promise<T>, isDone: (result: T) => boolean, interval: number, timeout: number, provider: string): Promise<T>;
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes a language code to BCP-47 format.
|
|
4
|
+
*
|
|
5
|
+
* Handles:
|
|
6
|
+
* - AssemblyAI format: "en_us" → "en-US"
|
|
7
|
+
* - ElevenLabs ISO 639-3: "eng" → "en"
|
|
8
|
+
* - Already BCP-47: "en-US" → "en-US" (passthrough)
|
|
9
|
+
* - Lowercase BCP-47: "en-us" → "en-US"
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeLanguageCode(code: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Extracts the base language from a BCP-47 code (e.g., "en-US" → "en").
|
|
14
|
+
*/
|
|
15
|
+
export declare function getBaseLanguage(code: string): string;
|
|
16
|
+
export declare function isUrl(input: string): boolean;
|
|
17
|
+
export declare function downloadAudio(url: string): Promise<Buffer>;
|
|
18
|
+
export declare function detectFormatFromString(format: string): string;
|
|
19
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CAAC,CAAC,EACxB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6B1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAID,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUhE;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS7D"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { SpeechServiceError } from "./errors.js";
|
|
2
|
+
// ─── Polling ────────────────────────────────────────────────────────────────
|
|
3
|
+
export async function poll(fn, isDone, interval, timeout, provider) {
|
|
4
|
+
const start = Date.now();
|
|
5
|
+
while (true) {
|
|
6
|
+
const result = await fn();
|
|
7
|
+
if (isDone(result))
|
|
8
|
+
return result;
|
|
9
|
+
if (Date.now() - start > timeout) {
|
|
10
|
+
throw new SpeechServiceError(`Transcription timed out after ${timeout}ms`, "TIMEOUT", provider);
|
|
11
|
+
}
|
|
12
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// ─── Language Code Normalization ────────────────────────────────────────────
|
|
16
|
+
const ISO_639_3_TO_1 = {
|
|
17
|
+
eng: "en", spa: "es", fra: "fr", deu: "de", ita: "it",
|
|
18
|
+
por: "pt", nld: "nl", rus: "ru", zho: "zh", jpn: "ja",
|
|
19
|
+
kor: "ko", ara: "ar", hin: "hi", tur: "tr", pol: "pl",
|
|
20
|
+
swe: "sv", nor: "no", dan: "da", fin: "fi", ces: "cs",
|
|
21
|
+
ron: "ro", hun: "hu", ell: "el", heb: "he", tha: "th",
|
|
22
|
+
vie: "vi", ind: "id", msa: "ms", ukr: "uk", cat: "ca",
|
|
23
|
+
hrv: "hr", bul: "bg", slk: "sk", slv: "sl", lit: "lt",
|
|
24
|
+
lav: "lv", est: "et", fil: "fil", tam: "ta", tel: "te",
|
|
25
|
+
ben: "bn", urd: "ur", fas: "fa", afr: "af", swa: "sw",
|
|
26
|
+
cmn: "zh", yue: "yue",
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Normalizes a language code to BCP-47 format.
|
|
30
|
+
*
|
|
31
|
+
* Handles:
|
|
32
|
+
* - AssemblyAI format: "en_us" → "en-US"
|
|
33
|
+
* - ElevenLabs ISO 639-3: "eng" → "en"
|
|
34
|
+
* - Already BCP-47: "en-US" → "en-US" (passthrough)
|
|
35
|
+
* - Lowercase BCP-47: "en-us" → "en-US"
|
|
36
|
+
*/
|
|
37
|
+
export function normalizeLanguageCode(code) {
|
|
38
|
+
if (!code)
|
|
39
|
+
return code;
|
|
40
|
+
// ISO 639-3 (3-letter code with no region)
|
|
41
|
+
const lower = code.toLowerCase();
|
|
42
|
+
if (lower.length === 3 && ISO_639_3_TO_1[lower]) {
|
|
43
|
+
return ISO_639_3_TO_1[lower];
|
|
44
|
+
}
|
|
45
|
+
// AssemblyAI underscore format: "en_us" → "en-US"
|
|
46
|
+
if (code.includes("_")) {
|
|
47
|
+
const parts = code.split("_");
|
|
48
|
+
if (parts.length === 2) {
|
|
49
|
+
return `${parts[0].toLowerCase()}-${parts[1].toUpperCase()}`;
|
|
50
|
+
}
|
|
51
|
+
return code;
|
|
52
|
+
}
|
|
53
|
+
// BCP-47 with region: "en-us" → "en-US"
|
|
54
|
+
if (code.includes("-")) {
|
|
55
|
+
const parts = code.split("-");
|
|
56
|
+
if (parts.length === 2 && parts[1].length === 2) {
|
|
57
|
+
return `${parts[0].toLowerCase()}-${parts[1].toUpperCase()}`;
|
|
58
|
+
}
|
|
59
|
+
return code;
|
|
60
|
+
}
|
|
61
|
+
// Just a 2-letter code like "en", return as-is
|
|
62
|
+
return code.toLowerCase();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Extracts the base language from a BCP-47 code (e.g., "en-US" → "en").
|
|
66
|
+
*/
|
|
67
|
+
export function getBaseLanguage(code) {
|
|
68
|
+
if (!code)
|
|
69
|
+
return code;
|
|
70
|
+
return code.split("-")[0].split("_")[0].toLowerCase();
|
|
71
|
+
}
|
|
72
|
+
// ─── Audio Input Helpers ────────────────────────────────────────────────────
|
|
73
|
+
export function isUrl(input) {
|
|
74
|
+
return input.startsWith("http://") || input.startsWith("https://") || input.startsWith("gs://");
|
|
75
|
+
}
|
|
76
|
+
export async function downloadAudio(url) {
|
|
77
|
+
const response = await fetch(url);
|
|
78
|
+
if (!response.ok) {
|
|
79
|
+
throw new SpeechServiceError(`Failed to download audio from ${url}: ${response.status} ${response.statusText}`, "DOWNLOAD_FAILED");
|
|
80
|
+
}
|
|
81
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
82
|
+
return Buffer.from(arrayBuffer);
|
|
83
|
+
}
|
|
84
|
+
// ─── Output Format Detection ────────────────────────────────────────────────
|
|
85
|
+
export function detectFormatFromString(format) {
|
|
86
|
+
const lower = format.toLowerCase();
|
|
87
|
+
if (lower.includes("mp3") || lower.includes("mpeg"))
|
|
88
|
+
return "mp3";
|
|
89
|
+
if (lower.includes("wav") || lower.includes("pcm") || lower.includes("riff") || lower.includes("linear16"))
|
|
90
|
+
return "wav";
|
|
91
|
+
if (lower.includes("ogg") || lower.includes("opus"))
|
|
92
|
+
return "ogg";
|
|
93
|
+
if (lower.includes("webm"))
|
|
94
|
+
return "webm";
|
|
95
|
+
if (lower.includes("flac"))
|
|
96
|
+
return "flac";
|
|
97
|
+
if (lower.includes("alaw") || lower.includes("mulaw") || lower.includes("ulaw"))
|
|
98
|
+
return "wav";
|
|
99
|
+
return "mp3";
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { VoiceInfo } from "./types.js";
|
|
2
|
+
export declare class VoiceCache {
|
|
3
|
+
private cache;
|
|
4
|
+
private ttl;
|
|
5
|
+
constructor(ttl?: number);
|
|
6
|
+
get(key: string): VoiceInfo[] | undefined;
|
|
7
|
+
set(key: string, voices: VoiceInfo[]): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=voice-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-cache.d.ts","sourceRoot":"","sources":["../src/voice-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,qBAAa,UAAU;IACnB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,SAAY;IAI3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,SAAS;IAUzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;CAG9C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class VoiceCache {
|
|
2
|
+
cache = new Map();
|
|
3
|
+
ttl;
|
|
4
|
+
constructor(ttl = 3_600_000) {
|
|
5
|
+
this.ttl = ttl;
|
|
6
|
+
}
|
|
7
|
+
get(key) {
|
|
8
|
+
const entry = this.cache.get(key);
|
|
9
|
+
if (!entry)
|
|
10
|
+
return undefined;
|
|
11
|
+
if (Date.now() > entry.expires) {
|
|
12
|
+
this.cache.delete(key);
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return entry.voices;
|
|
16
|
+
}
|
|
17
|
+
set(key, voices) {
|
|
18
|
+
this.cache.set(key, { voices, expires: Date.now() + this.ttl });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=voice-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-cache.js","sourceRoot":"","sources":["../src/voice-cache.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,UAAU;IACX,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,GAAG,CAAS;IAEpB,YAAY,GAAG,GAAG,SAAS;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,GAAW;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC;IACxB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAmB;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-resolver.d.ts","sourceRoot":"","sources":["../src/voice-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,wBAAgB,YAAY,CACxB,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAC1E,SAAS,CAKX"}
|