@ai-sdk/elevenlabs 3.0.0-beta.0 → 3.0.0-beta.10
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/CHANGELOG.md +79 -4
- package/README.md +2 -0
- package/dist/index.d.mts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -5
- package/src/elevenlabs-provider.ts +7 -7
- package/src/elevenlabs-speech-model.ts +7 -7
- package/src/elevenlabs-transcription-model.ts +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
# @ai-sdk/elevenlabs
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 38fc777: Add AI Gateway hint to provider READMEs
|
|
8
|
+
|
|
9
|
+
## 3.0.0-beta.9
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [2e17091]
|
|
14
|
+
- @ai-sdk/provider-utils@5.0.0-beta.9
|
|
15
|
+
|
|
16
|
+
## 3.0.0-beta.8
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Updated dependencies [986c6fd]
|
|
21
|
+
- Updated dependencies [493295c]
|
|
22
|
+
- @ai-sdk/provider-utils@5.0.0-beta.8
|
|
23
|
+
|
|
24
|
+
## 3.0.0-beta.7
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- Updated dependencies [1f509d4]
|
|
29
|
+
- @ai-sdk/provider-utils@5.0.0-beta.7
|
|
30
|
+
- @ai-sdk/provider@4.0.0-beta.5
|
|
31
|
+
|
|
32
|
+
## 3.0.0-beta.6
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- Updated dependencies [3887c70]
|
|
37
|
+
- @ai-sdk/provider-utils@5.0.0-beta.6
|
|
38
|
+
- @ai-sdk/provider@4.0.0-beta.4
|
|
39
|
+
|
|
40
|
+
## 3.0.0-beta.5
|
|
41
|
+
|
|
42
|
+
### Patch Changes
|
|
43
|
+
|
|
44
|
+
- Updated dependencies [776b617]
|
|
45
|
+
- @ai-sdk/provider-utils@5.0.0-beta.5
|
|
46
|
+
- @ai-sdk/provider@4.0.0-beta.3
|
|
47
|
+
|
|
48
|
+
## 3.0.0-beta.4
|
|
49
|
+
|
|
50
|
+
### Patch Changes
|
|
51
|
+
|
|
52
|
+
- Updated dependencies [61753c3]
|
|
53
|
+
- @ai-sdk/provider-utils@5.0.0-beta.4
|
|
54
|
+
|
|
55
|
+
## 3.0.0-beta.3
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- Updated dependencies [f7d4f01]
|
|
60
|
+
- @ai-sdk/provider-utils@5.0.0-beta.3
|
|
61
|
+
- @ai-sdk/provider@4.0.0-beta.2
|
|
62
|
+
|
|
63
|
+
## 3.0.0-beta.2
|
|
64
|
+
|
|
65
|
+
### Patch Changes
|
|
66
|
+
|
|
67
|
+
- Updated dependencies [5c2a5a2]
|
|
68
|
+
- @ai-sdk/provider@4.0.0-beta.1
|
|
69
|
+
- @ai-sdk/provider-utils@5.0.0-beta.2
|
|
70
|
+
|
|
71
|
+
## 3.0.0-beta.1
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- Updated dependencies [531251e]
|
|
76
|
+
- @ai-sdk/provider-utils@5.0.0-beta.1
|
|
77
|
+
|
|
3
78
|
## 3.0.0-beta.0
|
|
4
79
|
|
|
5
80
|
### Major Changes
|
|
@@ -204,13 +279,13 @@
|
|
|
204
279
|
Before
|
|
205
280
|
|
|
206
281
|
```ts
|
|
207
|
-
model.textEmbeddingModel(
|
|
282
|
+
model.textEmbeddingModel("my-model-id");
|
|
208
283
|
```
|
|
209
284
|
|
|
210
285
|
After
|
|
211
286
|
|
|
212
287
|
```ts
|
|
213
|
-
model.embeddingModel(
|
|
288
|
+
model.embeddingModel("my-model-id");
|
|
214
289
|
```
|
|
215
290
|
|
|
216
291
|
- 95f65c2: chore: use import \* from zod/v4
|
|
@@ -410,13 +485,13 @@
|
|
|
410
485
|
Before
|
|
411
486
|
|
|
412
487
|
```ts
|
|
413
|
-
model.textEmbeddingModel(
|
|
488
|
+
model.textEmbeddingModel("my-model-id");
|
|
414
489
|
```
|
|
415
490
|
|
|
416
491
|
After
|
|
417
492
|
|
|
418
493
|
```ts
|
|
419
|
-
model.embeddingModel(
|
|
494
|
+
model.embeddingModel("my-model-id");
|
|
420
495
|
```
|
|
421
496
|
|
|
422
497
|
- Updated dependencies [8d9e8ad]
|
package/README.md
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
The **[ElevenLabs provider](https://ai-sdk.dev/providers/ai-sdk-providers/elevenlabs)** for the [AI SDK](https://ai-sdk.dev/docs)
|
|
4
4
|
contains language model support for the ElevenLabs chat and completion APIs and embedding model support for the ElevenLabs embeddings API.
|
|
5
5
|
|
|
6
|
+
> **Deploying to Vercel?** With Vercel's AI Gateway you can access ElevenLabs (and hundreds of models from other providers) — no additional packages, API keys, or extra cost. [Get started with AI Gateway](https://vercel.com/ai-gateway).
|
|
7
|
+
|
|
6
8
|
## Setup
|
|
7
9
|
|
|
8
10
|
The ElevenLabs provider is available in the `@ai-sdk/elevenlabs` module. You can install it with
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TranscriptionModelV4, ProviderV4, SpeechModelV4 } from '@ai-sdk/provider';
|
|
2
2
|
import { FetchFunction } from '@ai-sdk/provider-utils';
|
|
3
3
|
import { z } from 'zod/v4';
|
|
4
4
|
|
|
@@ -36,31 +36,31 @@ interface ElevenLabsTranscriptionModelConfig extends ElevenLabsConfig {
|
|
|
36
36
|
currentDate?: () => Date;
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
-
declare class ElevenLabsTranscriptionModel implements
|
|
39
|
+
declare class ElevenLabsTranscriptionModel implements TranscriptionModelV4 {
|
|
40
40
|
readonly modelId: ElevenLabsTranscriptionModelId;
|
|
41
41
|
private readonly config;
|
|
42
|
-
readonly specificationVersion = "
|
|
42
|
+
readonly specificationVersion = "v4";
|
|
43
43
|
get provider(): string;
|
|
44
44
|
constructor(modelId: ElevenLabsTranscriptionModelId, config: ElevenLabsTranscriptionModelConfig);
|
|
45
45
|
private getArgs;
|
|
46
|
-
doGenerate(options: Parameters<
|
|
46
|
+
doGenerate(options: Parameters<TranscriptionModelV4['doGenerate']>[0]): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>>;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
type ElevenLabsSpeechModelId = 'eleven_v3' | 'eleven_multilingual_v2' | 'eleven_flash_v2_5' | 'eleven_flash_v2' | 'eleven_turbo_v2_5' | 'eleven_turbo_v2' | 'eleven_monolingual_v1' | 'eleven_multilingual_v1' | (string & {});
|
|
50
50
|
type ElevenLabsSpeechVoiceId = string;
|
|
51
51
|
|
|
52
|
-
interface ElevenLabsProvider extends
|
|
52
|
+
interface ElevenLabsProvider extends ProviderV4 {
|
|
53
53
|
(modelId: 'scribe_v1', settings?: {}): {
|
|
54
54
|
transcription: ElevenLabsTranscriptionModel;
|
|
55
55
|
};
|
|
56
56
|
/**
|
|
57
57
|
* Creates a model for transcription.
|
|
58
58
|
*/
|
|
59
|
-
transcription(modelId: ElevenLabsTranscriptionModelId):
|
|
59
|
+
transcription(modelId: ElevenLabsTranscriptionModelId): TranscriptionModelV4;
|
|
60
60
|
/**
|
|
61
61
|
* Creates a model for speech generation.
|
|
62
62
|
*/
|
|
63
|
-
speech(modelId: ElevenLabsSpeechModelId):
|
|
63
|
+
speech(modelId: ElevenLabsSpeechModelId): SpeechModelV4;
|
|
64
64
|
/**
|
|
65
65
|
* @deprecated Use `embeddingModel` instead.
|
|
66
66
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TranscriptionModelV4, ProviderV4, SpeechModelV4 } from '@ai-sdk/provider';
|
|
2
2
|
import { FetchFunction } from '@ai-sdk/provider-utils';
|
|
3
3
|
import { z } from 'zod/v4';
|
|
4
4
|
|
|
@@ -36,31 +36,31 @@ interface ElevenLabsTranscriptionModelConfig extends ElevenLabsConfig {
|
|
|
36
36
|
currentDate?: () => Date;
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
-
declare class ElevenLabsTranscriptionModel implements
|
|
39
|
+
declare class ElevenLabsTranscriptionModel implements TranscriptionModelV4 {
|
|
40
40
|
readonly modelId: ElevenLabsTranscriptionModelId;
|
|
41
41
|
private readonly config;
|
|
42
|
-
readonly specificationVersion = "
|
|
42
|
+
readonly specificationVersion = "v4";
|
|
43
43
|
get provider(): string;
|
|
44
44
|
constructor(modelId: ElevenLabsTranscriptionModelId, config: ElevenLabsTranscriptionModelConfig);
|
|
45
45
|
private getArgs;
|
|
46
|
-
doGenerate(options: Parameters<
|
|
46
|
+
doGenerate(options: Parameters<TranscriptionModelV4['doGenerate']>[0]): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>>;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
type ElevenLabsSpeechModelId = 'eleven_v3' | 'eleven_multilingual_v2' | 'eleven_flash_v2_5' | 'eleven_flash_v2' | 'eleven_turbo_v2_5' | 'eleven_turbo_v2' | 'eleven_monolingual_v1' | 'eleven_multilingual_v1' | (string & {});
|
|
50
50
|
type ElevenLabsSpeechVoiceId = string;
|
|
51
51
|
|
|
52
|
-
interface ElevenLabsProvider extends
|
|
52
|
+
interface ElevenLabsProvider extends ProviderV4 {
|
|
53
53
|
(modelId: 'scribe_v1', settings?: {}): {
|
|
54
54
|
transcription: ElevenLabsTranscriptionModel;
|
|
55
55
|
};
|
|
56
56
|
/**
|
|
57
57
|
* Creates a model for transcription.
|
|
58
58
|
*/
|
|
59
|
-
transcription(modelId: ElevenLabsTranscriptionModelId):
|
|
59
|
+
transcription(modelId: ElevenLabsTranscriptionModelId): TranscriptionModelV4;
|
|
60
60
|
/**
|
|
61
61
|
* Creates a model for speech generation.
|
|
62
62
|
*/
|
|
63
|
-
speech(modelId: ElevenLabsSpeechModelId):
|
|
63
|
+
speech(modelId: ElevenLabsSpeechModelId): SpeechModelV4;
|
|
64
64
|
/**
|
|
65
65
|
* @deprecated Use `embeddingModel` instead.
|
|
66
66
|
*/
|
package/dist/index.js
CHANGED
|
@@ -18,13 +18,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
20
|
// src/index.ts
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
23
|
VERSION: () => VERSION,
|
|
24
24
|
createElevenLabs: () => createElevenLabs,
|
|
25
25
|
elevenlabs: () => elevenlabs
|
|
26
26
|
});
|
|
27
|
-
module.exports = __toCommonJS(
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
28
28
|
|
|
29
29
|
// src/elevenlabs-provider.ts
|
|
30
30
|
var import_provider = require("@ai-sdk/provider");
|
|
@@ -61,7 +61,7 @@ var ElevenLabsTranscriptionModel = class {
|
|
|
61
61
|
constructor(modelId, config) {
|
|
62
62
|
this.modelId = modelId;
|
|
63
63
|
this.config = config;
|
|
64
|
-
this.specificationVersion = "
|
|
64
|
+
this.specificationVersion = "v4";
|
|
65
65
|
}
|
|
66
66
|
get provider() {
|
|
67
67
|
return this.config.provider;
|
|
@@ -207,7 +207,7 @@ var ElevenLabsSpeechModel = class {
|
|
|
207
207
|
constructor(modelId, config) {
|
|
208
208
|
this.modelId = modelId;
|
|
209
209
|
this.config = config;
|
|
210
|
-
this.specificationVersion = "
|
|
210
|
+
this.specificationVersion = "v4";
|
|
211
211
|
}
|
|
212
212
|
get provider() {
|
|
213
213
|
return this.config.provider;
|
|
@@ -364,7 +364,7 @@ var ElevenLabsSpeechModel = class {
|
|
|
364
364
|
};
|
|
365
365
|
|
|
366
366
|
// src/version.ts
|
|
367
|
-
var VERSION = true ? "3.0.0-beta.
|
|
367
|
+
var VERSION = true ? "3.0.0-beta.10" : "0.0.0-test";
|
|
368
368
|
|
|
369
369
|
// src/elevenlabs-provider.ts
|
|
370
370
|
function createElevenLabs(options = {}) {
|
|
@@ -396,7 +396,7 @@ function createElevenLabs(options = {}) {
|
|
|
396
396
|
transcription: createTranscriptionModel(modelId)
|
|
397
397
|
};
|
|
398
398
|
};
|
|
399
|
-
provider.specificationVersion = "
|
|
399
|
+
provider.specificationVersion = "v4";
|
|
400
400
|
provider.transcription = createTranscriptionModel;
|
|
401
401
|
provider.transcriptionModel = createTranscriptionModel;
|
|
402
402
|
provider.speech = createSpeechModel;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/elevenlabs-provider.ts","../src/elevenlabs-transcription-model.ts","../src/elevenlabs-error.ts","../src/elevenlabs-speech-model.ts","../src/version.ts"],"sourcesContent":["export { createElevenLabs, elevenlabs } from './elevenlabs-provider';\nexport type {\n ElevenLabsProvider,\n ElevenLabsProviderSettings,\n} from './elevenlabs-provider';\nexport type {\n ElevenLabsSpeechModelId,\n ElevenLabsSpeechVoiceId,\n} from './elevenlabs-speech-options';\nexport type { ElevenLabsSpeechModelOptions } from './elevenlabs-speech-model';\nexport type { ElevenLabsTranscriptionModelOptions } from './elevenlabs-transcription-model';\nexport { VERSION } from './version';\n","import {\n TranscriptionModelV3,\n SpeechModelV3,\n ProviderV3,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { ElevenLabsTranscriptionModel } from './elevenlabs-transcription-model';\nimport { ElevenLabsTranscriptionModelId } from './elevenlabs-transcription-options';\nimport { ElevenLabsSpeechModel } from './elevenlabs-speech-model';\nimport { ElevenLabsSpeechModelId } from './elevenlabs-speech-options';\nimport { VERSION } from './version';\n\nexport interface ElevenLabsProvider extends ProviderV3 {\n (\n modelId: 'scribe_v1',\n settings?: {},\n ): {\n transcription: ElevenLabsTranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: ElevenLabsTranscriptionModelId): TranscriptionModelV3;\n\n /**\n * Creates a model for speech generation.\n */\n speech(modelId: ElevenLabsSpeechModelId): SpeechModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface ElevenLabsProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n * Create an ElevenLabs provider instance.\n */\nexport function createElevenLabs(\n options: ElevenLabsProviderSettings = {},\n): ElevenLabsProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n 'xi-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ELEVENLABS_API_KEY',\n description: 'ElevenLabs',\n }),\n ...options.headers,\n },\n `ai-sdk/elevenlabs/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: ElevenLabsTranscriptionModelId) =>\n new ElevenLabsTranscriptionModel(modelId, {\n provider: `elevenlabs.transcription`,\n url: ({ path }) => `https://api.elevenlabs.io${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: ElevenLabsSpeechModelId) =>\n new ElevenLabsSpeechModel(modelId, {\n provider: `elevenlabs.speech`,\n url: ({ path }) => `https://api.elevenlabs.io${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: ElevenLabsTranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n provider.languageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n message: 'ElevenLabs does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message: 'ElevenLabs does not provide embedding models',\n });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message: 'ElevenLabs does not provide image models',\n });\n };\n\n return provider as ElevenLabsProvider;\n}\n\n/**\n * Default ElevenLabs provider instance.\n */\nexport const elevenlabs = createElevenLabs();\n","import { TranscriptionModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { ElevenLabsConfig } from './elevenlabs-config';\nimport { elevenlabsFailedResponseHandler } from './elevenlabs-error';\nimport { ElevenLabsTranscriptionModelId } from './elevenlabs-transcription-options';\nimport { ElevenLabsTranscriptionAPITypes } from './elevenlabs-api-types';\n\n// https://elevenlabs.io/docs/api-reference/speech-to-text/convert\nconst elevenLabsTranscriptionModelOptionsSchema = z.object({\n languageCode: z.string().nullish(),\n tagAudioEvents: z.boolean().nullish().default(true),\n numSpeakers: z.number().int().min(1).max(32).nullish(),\n timestampsGranularity: z\n .enum(['none', 'word', 'character'])\n .nullish()\n .default('word'),\n diarize: z.boolean().nullish().default(false),\n fileFormat: z.enum(['pcm_s16le_16', 'other']).nullish().default('other'),\n});\n\nexport type ElevenLabsTranscriptionModelOptions = z.infer<\n typeof elevenLabsTranscriptionModelOptionsSchema\n>;\n\ninterface ElevenLabsTranscriptionModelConfig extends ElevenLabsConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ElevenLabsTranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ElevenLabsTranscriptionModelId,\n private readonly config: ElevenLabsTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const elevenlabsOptions = await parseProviderOptions({\n provider: 'elevenlabs',\n providerOptions,\n schema: elevenLabsTranscriptionModelOptionsSchema,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model_id', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n formData.append('diarize', 'true');\n\n // Add provider-specific options\n if (elevenlabsOptions) {\n const transcriptionModelOptions: ElevenLabsTranscriptionAPITypes = {\n language_code: elevenlabsOptions.languageCode ?? undefined,\n tag_audio_events: elevenlabsOptions.tagAudioEvents ?? undefined,\n num_speakers: elevenlabsOptions.numSpeakers ?? undefined,\n timestamps_granularity:\n elevenlabsOptions.timestampsGranularity ?? undefined,\n file_format: elevenlabsOptions.fileFormat ?? undefined,\n };\n\n if (typeof elevenlabsOptions.diarize === 'boolean') {\n formData.append('diarize', String(elevenlabsOptions.diarize));\n }\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof ElevenLabsTranscriptionAPITypes\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/v1/speech-to-text',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: elevenlabsFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n elevenlabsTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.words?.map(word => ({\n text: word.text,\n startSecond: word.start ?? 0,\n endSecond: word.end ?? 0,\n })) ?? [],\n language: response.language_code,\n durationInSeconds: response.words?.at(-1)?.end ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst elevenlabsTranscriptionResponseSchema = z.object({\n language_code: z.string(),\n language_probability: z.number(),\n text: z.string(),\n words: z\n .array(\n z.object({\n text: z.string(),\n type: z.enum(['word', 'spacing', 'audio_event']),\n start: z.number().nullish(),\n end: z.number().nullish(),\n speaker_id: z.string().nullish(),\n characters: z\n .array(\n z.object({\n text: z.string(),\n start: z.number().nullish(),\n end: z.number().nullish(),\n }),\n )\n .nullish(),\n }),\n )\n .nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const elevenlabsErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type ElevenLabsErrorData = z.infer<typeof elevenlabsErrorDataSchema>;\n\nexport const elevenlabsFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: elevenlabsErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { SpeechModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { ElevenLabsConfig } from './elevenlabs-config';\nimport { elevenlabsFailedResponseHandler } from './elevenlabs-error';\nimport { ElevenLabsSpeechAPITypes } from './elevenlabs-speech-api-types';\nimport {\n ElevenLabsSpeechModelId,\n ElevenLabsSpeechVoiceId,\n} from './elevenlabs-speech-options';\n\n// Schema for camelCase input from users\nconst elevenLabsSpeechModelOptionsSchema = z.object({\n languageCode: z.string().optional(),\n voiceSettings: z\n .object({\n stability: z.number().min(0).max(1).optional(),\n similarityBoost: z.number().min(0).max(1).optional(),\n style: z.number().min(0).max(1).optional(),\n useSpeakerBoost: z.boolean().optional(),\n })\n .optional(),\n pronunciationDictionaryLocators: z\n .array(\n z.object({\n pronunciationDictionaryId: z.string(),\n versionId: z.string().optional(),\n }),\n )\n .max(3)\n .optional(),\n seed: z.number().min(0).max(4294967295).optional(),\n previousText: z.string().optional(),\n nextText: z.string().optional(),\n previousRequestIds: z.array(z.string()).max(3).optional(),\n nextRequestIds: z.array(z.string()).max(3).optional(),\n applyTextNormalization: z.enum(['auto', 'on', 'off']).optional(),\n applyLanguageTextNormalization: z.boolean().optional(),\n enableLogging: z.boolean().optional(),\n});\n\nexport type ElevenLabsSpeechModelOptions = z.infer<\n typeof elevenLabsSpeechModelOptionsSchema\n>;\n\ninterface ElevenLabsSpeechModelConfig extends ElevenLabsConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ElevenLabsSpeechModel implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ElevenLabsSpeechModelId,\n private readonly config: ElevenLabsSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = '21m00Tcm4TlvDq8ikWAM',\n outputFormat = 'mp3_44100_128',\n instructions,\n language,\n speed,\n providerOptions,\n }: Parameters<SpeechModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const elevenLabsOptions = await parseProviderOptions({\n provider: 'elevenlabs',\n providerOptions,\n schema: elevenLabsSpeechModelOptionsSchema,\n });\n\n // Create request body\n const requestBody: ElevenLabsSpeechAPITypes = {\n text,\n model_id: this.modelId,\n };\n\n // Prepare query parameters\n const queryParams: Record<string, string> = {};\n\n // Map outputFormat to ElevenLabs format (as query param)\n if (outputFormat) {\n const formatMap: Record<string, string> = {\n mp3: 'mp3_44100_128',\n mp3_32: 'mp3_44100_32',\n mp3_64: 'mp3_44100_64',\n mp3_96: 'mp3_44100_96',\n mp3_128: 'mp3_44100_128',\n mp3_192: 'mp3_44100_192',\n pcm: 'pcm_44100',\n pcm_16000: 'pcm_16000',\n pcm_22050: 'pcm_22050',\n pcm_24000: 'pcm_24000',\n pcm_44100: 'pcm_44100',\n ulaw: 'ulaw_8000',\n };\n\n const mappedFormat = formatMap[outputFormat] || outputFormat;\n queryParams.output_format = mappedFormat;\n }\n\n // Add language code if provided\n if (language) {\n requestBody.language_code = language;\n }\n\n const voiceSettings: typeof requestBody.voice_settings = {};\n\n if (speed != null) {\n voiceSettings.speed = speed;\n }\n\n // Add provider-specific options - map from camelCase to snake_case\n if (elevenLabsOptions) {\n if (elevenLabsOptions.voiceSettings) {\n // Map camelCase voice settings to snake_case for API\n if (elevenLabsOptions.voiceSettings.stability != null) {\n voiceSettings.stability = elevenLabsOptions.voiceSettings.stability;\n }\n if (elevenLabsOptions.voiceSettings.similarityBoost != null) {\n voiceSettings.similarity_boost =\n elevenLabsOptions.voiceSettings.similarityBoost;\n }\n if (elevenLabsOptions.voiceSettings.style != null) {\n voiceSettings.style = elevenLabsOptions.voiceSettings.style;\n }\n if (elevenLabsOptions.voiceSettings.useSpeakerBoost != null) {\n voiceSettings.use_speaker_boost =\n elevenLabsOptions.voiceSettings.useSpeakerBoost;\n }\n }\n // Add language code from provider options if not already set\n if (elevenLabsOptions.languageCode && !requestBody.language_code) {\n requestBody.language_code = elevenLabsOptions.languageCode;\n }\n\n // Map pronunciation dictionary locators\n if (elevenLabsOptions.pronunciationDictionaryLocators) {\n requestBody.pronunciation_dictionary_locators =\n elevenLabsOptions.pronunciationDictionaryLocators.map(locator => ({\n pronunciation_dictionary_id: locator.pronunciationDictionaryId,\n ...(locator.versionId && { version_id: locator.versionId }),\n }));\n }\n\n if (elevenLabsOptions.seed != null) {\n requestBody.seed = elevenLabsOptions.seed;\n }\n if (elevenLabsOptions.previousText) {\n requestBody.previous_text = elevenLabsOptions.previousText;\n }\n if (elevenLabsOptions.nextText) {\n requestBody.next_text = elevenLabsOptions.nextText;\n }\n\n // Add previous and next request IDs\n if (elevenLabsOptions.previousRequestIds) {\n requestBody.previous_request_ids = elevenLabsOptions.previousRequestIds;\n }\n if (elevenLabsOptions.nextRequestIds) {\n requestBody.next_request_ids = elevenLabsOptions.nextRequestIds;\n }\n\n // Add text normalization options\n if (elevenLabsOptions.applyTextNormalization) {\n requestBody.apply_text_normalization =\n elevenLabsOptions.applyTextNormalization;\n }\n if (elevenLabsOptions.applyLanguageTextNormalization != null) {\n requestBody.apply_language_text_normalization =\n elevenLabsOptions.applyLanguageTextNormalization;\n }\n\n // enable_logging is a query parameter\n if (elevenLabsOptions.enableLogging != null) {\n queryParams.enable_logging = String(elevenLabsOptions.enableLogging);\n }\n }\n\n // Only add voice_settings if there are settings to add\n if (Object.keys(voiceSettings).length > 0) {\n requestBody.voice_settings = voiceSettings;\n }\n\n if (instructions) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details: `ElevenLabs speech models do not support instructions. Instructions parameter was ignored.`,\n });\n }\n\n return {\n requestBody,\n queryParams,\n warnings,\n voiceId: voice as ElevenLabsSpeechVoiceId,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, queryParams, warnings, voiceId } =\n await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: (() => {\n const baseUrl = this.config.url({\n path: `/v1/text-to-speech/${voiceId}`,\n modelId: this.modelId,\n });\n const queryString = new URLSearchParams(queryParams).toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n })(),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: elevenlabsFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4","_a","_b","import_provider_utils","import_v4"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/elevenlabs-provider.ts","../src/elevenlabs-transcription-model.ts","../src/elevenlabs-error.ts","../src/elevenlabs-speech-model.ts","../src/version.ts"],"sourcesContent":["export { createElevenLabs, elevenlabs } from './elevenlabs-provider';\nexport type {\n ElevenLabsProvider,\n ElevenLabsProviderSettings,\n} from './elevenlabs-provider';\nexport type {\n ElevenLabsSpeechModelId,\n ElevenLabsSpeechVoiceId,\n} from './elevenlabs-speech-options';\nexport type { ElevenLabsSpeechModelOptions } from './elevenlabs-speech-model';\nexport type { ElevenLabsTranscriptionModelOptions } from './elevenlabs-transcription-model';\nexport { VERSION } from './version';\n","import {\n TranscriptionModelV4,\n SpeechModelV4,\n ProviderV4,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { ElevenLabsTranscriptionModel } from './elevenlabs-transcription-model';\nimport { ElevenLabsTranscriptionModelId } from './elevenlabs-transcription-options';\nimport { ElevenLabsSpeechModel } from './elevenlabs-speech-model';\nimport { ElevenLabsSpeechModelId } from './elevenlabs-speech-options';\nimport { VERSION } from './version';\n\nexport interface ElevenLabsProvider extends ProviderV4 {\n (\n modelId: 'scribe_v1',\n settings?: {},\n ): {\n transcription: ElevenLabsTranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: ElevenLabsTranscriptionModelId): TranscriptionModelV4;\n\n /**\n * Creates a model for speech generation.\n */\n speech(modelId: ElevenLabsSpeechModelId): SpeechModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface ElevenLabsProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n * Create an ElevenLabs provider instance.\n */\nexport function createElevenLabs(\n options: ElevenLabsProviderSettings = {},\n): ElevenLabsProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n 'xi-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ELEVENLABS_API_KEY',\n description: 'ElevenLabs',\n }),\n ...options.headers,\n },\n `ai-sdk/elevenlabs/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: ElevenLabsTranscriptionModelId) =>\n new ElevenLabsTranscriptionModel(modelId, {\n provider: `elevenlabs.transcription`,\n url: ({ path }) => `https://api.elevenlabs.io${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: ElevenLabsSpeechModelId) =>\n new ElevenLabsSpeechModel(modelId, {\n provider: `elevenlabs.speech`,\n url: ({ path }) => `https://api.elevenlabs.io${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: ElevenLabsTranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v4' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n provider.languageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n message: 'ElevenLabs does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message: 'ElevenLabs does not provide embedding models',\n });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message: 'ElevenLabs does not provide image models',\n });\n };\n\n return provider as ElevenLabsProvider;\n}\n\n/**\n * Default ElevenLabs provider instance.\n */\nexport const elevenlabs = createElevenLabs();\n","import { TranscriptionModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { ElevenLabsConfig } from './elevenlabs-config';\nimport { elevenlabsFailedResponseHandler } from './elevenlabs-error';\nimport { ElevenLabsTranscriptionModelId } from './elevenlabs-transcription-options';\nimport { ElevenLabsTranscriptionAPITypes } from './elevenlabs-api-types';\n\n// https://elevenlabs.io/docs/api-reference/speech-to-text/convert\nconst elevenLabsTranscriptionModelOptionsSchema = z.object({\n languageCode: z.string().nullish(),\n tagAudioEvents: z.boolean().nullish().default(true),\n numSpeakers: z.number().int().min(1).max(32).nullish(),\n timestampsGranularity: z\n .enum(['none', 'word', 'character'])\n .nullish()\n .default('word'),\n diarize: z.boolean().nullish().default(false),\n fileFormat: z.enum(['pcm_s16le_16', 'other']).nullish().default('other'),\n});\n\nexport type ElevenLabsTranscriptionModelOptions = z.infer<\n typeof elevenLabsTranscriptionModelOptionsSchema\n>;\n\ninterface ElevenLabsTranscriptionModelConfig extends ElevenLabsConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ElevenLabsTranscriptionModel implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ElevenLabsTranscriptionModelId,\n private readonly config: ElevenLabsTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n\n // Parse provider options\n const elevenlabsOptions = await parseProviderOptions({\n provider: 'elevenlabs',\n providerOptions,\n schema: elevenLabsTranscriptionModelOptionsSchema,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model_id', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n formData.append('diarize', 'true');\n\n // Add provider-specific options\n if (elevenlabsOptions) {\n const transcriptionModelOptions: ElevenLabsTranscriptionAPITypes = {\n language_code: elevenlabsOptions.languageCode ?? undefined,\n tag_audio_events: elevenlabsOptions.tagAudioEvents ?? undefined,\n num_speakers: elevenlabsOptions.numSpeakers ?? undefined,\n timestamps_granularity:\n elevenlabsOptions.timestampsGranularity ?? undefined,\n file_format: elevenlabsOptions.fileFormat ?? undefined,\n };\n\n if (typeof elevenlabsOptions.diarize === 'boolean') {\n formData.append('diarize', String(elevenlabsOptions.diarize));\n }\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof ElevenLabsTranscriptionAPITypes\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/v1/speech-to-text',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: elevenlabsFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n elevenlabsTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.words?.map(word => ({\n text: word.text,\n startSecond: word.start ?? 0,\n endSecond: word.end ?? 0,\n })) ?? [],\n language: response.language_code,\n durationInSeconds: response.words?.at(-1)?.end ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst elevenlabsTranscriptionResponseSchema = z.object({\n language_code: z.string(),\n language_probability: z.number(),\n text: z.string(),\n words: z\n .array(\n z.object({\n text: z.string(),\n type: z.enum(['word', 'spacing', 'audio_event']),\n start: z.number().nullish(),\n end: z.number().nullish(),\n speaker_id: z.string().nullish(),\n characters: z\n .array(\n z.object({\n text: z.string(),\n start: z.number().nullish(),\n end: z.number().nullish(),\n }),\n )\n .nullish(),\n }),\n )\n .nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const elevenlabsErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type ElevenLabsErrorData = z.infer<typeof elevenlabsErrorDataSchema>;\n\nexport const elevenlabsFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: elevenlabsErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { SpeechModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { ElevenLabsConfig } from './elevenlabs-config';\nimport { elevenlabsFailedResponseHandler } from './elevenlabs-error';\nimport { ElevenLabsSpeechAPITypes } from './elevenlabs-speech-api-types';\nimport {\n ElevenLabsSpeechModelId,\n ElevenLabsSpeechVoiceId,\n} from './elevenlabs-speech-options';\n\n// Schema for camelCase input from users\nconst elevenLabsSpeechModelOptionsSchema = z.object({\n languageCode: z.string().optional(),\n voiceSettings: z\n .object({\n stability: z.number().min(0).max(1).optional(),\n similarityBoost: z.number().min(0).max(1).optional(),\n style: z.number().min(0).max(1).optional(),\n useSpeakerBoost: z.boolean().optional(),\n })\n .optional(),\n pronunciationDictionaryLocators: z\n .array(\n z.object({\n pronunciationDictionaryId: z.string(),\n versionId: z.string().optional(),\n }),\n )\n .max(3)\n .optional(),\n seed: z.number().min(0).max(4294967295).optional(),\n previousText: z.string().optional(),\n nextText: z.string().optional(),\n previousRequestIds: z.array(z.string()).max(3).optional(),\n nextRequestIds: z.array(z.string()).max(3).optional(),\n applyTextNormalization: z.enum(['auto', 'on', 'off']).optional(),\n applyLanguageTextNormalization: z.boolean().optional(),\n enableLogging: z.boolean().optional(),\n});\n\nexport type ElevenLabsSpeechModelOptions = z.infer<\n typeof elevenLabsSpeechModelOptionsSchema\n>;\n\ninterface ElevenLabsSpeechModelConfig extends ElevenLabsConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ElevenLabsSpeechModel implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ElevenLabsSpeechModelId,\n private readonly config: ElevenLabsSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = '21m00Tcm4TlvDq8ikWAM',\n outputFormat = 'mp3_44100_128',\n instructions,\n language,\n speed,\n providerOptions,\n }: Parameters<SpeechModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n\n // Parse provider options\n const elevenLabsOptions = await parseProviderOptions({\n provider: 'elevenlabs',\n providerOptions,\n schema: elevenLabsSpeechModelOptionsSchema,\n });\n\n // Create request body\n const requestBody: ElevenLabsSpeechAPITypes = {\n text,\n model_id: this.modelId,\n };\n\n // Prepare query parameters\n const queryParams: Record<string, string> = {};\n\n // Map outputFormat to ElevenLabs format (as query param)\n if (outputFormat) {\n const formatMap: Record<string, string> = {\n mp3: 'mp3_44100_128',\n mp3_32: 'mp3_44100_32',\n mp3_64: 'mp3_44100_64',\n mp3_96: 'mp3_44100_96',\n mp3_128: 'mp3_44100_128',\n mp3_192: 'mp3_44100_192',\n pcm: 'pcm_44100',\n pcm_16000: 'pcm_16000',\n pcm_22050: 'pcm_22050',\n pcm_24000: 'pcm_24000',\n pcm_44100: 'pcm_44100',\n ulaw: 'ulaw_8000',\n };\n\n const mappedFormat = formatMap[outputFormat] || outputFormat;\n queryParams.output_format = mappedFormat;\n }\n\n // Add language code if provided\n if (language) {\n requestBody.language_code = language;\n }\n\n const voiceSettings: typeof requestBody.voice_settings = {};\n\n if (speed != null) {\n voiceSettings.speed = speed;\n }\n\n // Add provider-specific options - map from camelCase to snake_case\n if (elevenLabsOptions) {\n if (elevenLabsOptions.voiceSettings) {\n // Map camelCase voice settings to snake_case for API\n if (elevenLabsOptions.voiceSettings.stability != null) {\n voiceSettings.stability = elevenLabsOptions.voiceSettings.stability;\n }\n if (elevenLabsOptions.voiceSettings.similarityBoost != null) {\n voiceSettings.similarity_boost =\n elevenLabsOptions.voiceSettings.similarityBoost;\n }\n if (elevenLabsOptions.voiceSettings.style != null) {\n voiceSettings.style = elevenLabsOptions.voiceSettings.style;\n }\n if (elevenLabsOptions.voiceSettings.useSpeakerBoost != null) {\n voiceSettings.use_speaker_boost =\n elevenLabsOptions.voiceSettings.useSpeakerBoost;\n }\n }\n // Add language code from provider options if not already set\n if (elevenLabsOptions.languageCode && !requestBody.language_code) {\n requestBody.language_code = elevenLabsOptions.languageCode;\n }\n\n // Map pronunciation dictionary locators\n if (elevenLabsOptions.pronunciationDictionaryLocators) {\n requestBody.pronunciation_dictionary_locators =\n elevenLabsOptions.pronunciationDictionaryLocators.map(locator => ({\n pronunciation_dictionary_id: locator.pronunciationDictionaryId,\n ...(locator.versionId && { version_id: locator.versionId }),\n }));\n }\n\n if (elevenLabsOptions.seed != null) {\n requestBody.seed = elevenLabsOptions.seed;\n }\n if (elevenLabsOptions.previousText) {\n requestBody.previous_text = elevenLabsOptions.previousText;\n }\n if (elevenLabsOptions.nextText) {\n requestBody.next_text = elevenLabsOptions.nextText;\n }\n\n // Add previous and next request IDs\n if (elevenLabsOptions.previousRequestIds) {\n requestBody.previous_request_ids = elevenLabsOptions.previousRequestIds;\n }\n if (elevenLabsOptions.nextRequestIds) {\n requestBody.next_request_ids = elevenLabsOptions.nextRequestIds;\n }\n\n // Add text normalization options\n if (elevenLabsOptions.applyTextNormalization) {\n requestBody.apply_text_normalization =\n elevenLabsOptions.applyTextNormalization;\n }\n if (elevenLabsOptions.applyLanguageTextNormalization != null) {\n requestBody.apply_language_text_normalization =\n elevenLabsOptions.applyLanguageTextNormalization;\n }\n\n // enable_logging is a query parameter\n if (elevenLabsOptions.enableLogging != null) {\n queryParams.enable_logging = String(elevenLabsOptions.enableLogging);\n }\n }\n\n // Only add voice_settings if there are settings to add\n if (Object.keys(voiceSettings).length > 0) {\n requestBody.voice_settings = voiceSettings;\n }\n\n if (instructions) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details: `ElevenLabs speech models do not support instructions. Instructions parameter was ignored.`,\n });\n }\n\n return {\n requestBody,\n queryParams,\n warnings,\n voiceId: voice as ElevenLabsSpeechVoiceId,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, queryParams, warnings, voiceId } =\n await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: (() => {\n const baseUrl = this.config.url({\n path: `/v1/text-to-speech/${voiceId}`,\n modelId: this.modelId,\n });\n const queryString = new URLSearchParams(queryParams).toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n })(),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: elevenlabsFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4","_a","_b","import_provider_utils","import_v4"]}
|
package/dist/index.mjs
CHANGED
|
@@ -45,7 +45,7 @@ var ElevenLabsTranscriptionModel = class {
|
|
|
45
45
|
constructor(modelId, config) {
|
|
46
46
|
this.modelId = modelId;
|
|
47
47
|
this.config = config;
|
|
48
|
-
this.specificationVersion = "
|
|
48
|
+
this.specificationVersion = "v4";
|
|
49
49
|
}
|
|
50
50
|
get provider() {
|
|
51
51
|
return this.config.provider;
|
|
@@ -196,7 +196,7 @@ var ElevenLabsSpeechModel = class {
|
|
|
196
196
|
constructor(modelId, config) {
|
|
197
197
|
this.modelId = modelId;
|
|
198
198
|
this.config = config;
|
|
199
|
-
this.specificationVersion = "
|
|
199
|
+
this.specificationVersion = "v4";
|
|
200
200
|
}
|
|
201
201
|
get provider() {
|
|
202
202
|
return this.config.provider;
|
|
@@ -353,7 +353,7 @@ var ElevenLabsSpeechModel = class {
|
|
|
353
353
|
};
|
|
354
354
|
|
|
355
355
|
// src/version.ts
|
|
356
|
-
var VERSION = true ? "3.0.0-beta.
|
|
356
|
+
var VERSION = true ? "3.0.0-beta.10" : "0.0.0-test";
|
|
357
357
|
|
|
358
358
|
// src/elevenlabs-provider.ts
|
|
359
359
|
function createElevenLabs(options = {}) {
|
|
@@ -385,7 +385,7 @@ function createElevenLabs(options = {}) {
|
|
|
385
385
|
transcription: createTranscriptionModel(modelId)
|
|
386
386
|
};
|
|
387
387
|
};
|
|
388
|
-
provider.specificationVersion = "
|
|
388
|
+
provider.specificationVersion = "v4";
|
|
389
389
|
provider.transcription = createTranscriptionModel;
|
|
390
390
|
provider.transcriptionModel = createTranscriptionModel;
|
|
391
391
|
provider.speech = createSpeechModel;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/elevenlabs-provider.ts","../src/elevenlabs-transcription-model.ts","../src/elevenlabs-error.ts","../src/elevenlabs-speech-model.ts","../src/version.ts"],"sourcesContent":["import {\n TranscriptionModelV3,\n SpeechModelV3,\n ProviderV3,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { ElevenLabsTranscriptionModel } from './elevenlabs-transcription-model';\nimport { ElevenLabsTranscriptionModelId } from './elevenlabs-transcription-options';\nimport { ElevenLabsSpeechModel } from './elevenlabs-speech-model';\nimport { ElevenLabsSpeechModelId } from './elevenlabs-speech-options';\nimport { VERSION } from './version';\n\nexport interface ElevenLabsProvider extends ProviderV3 {\n (\n modelId: 'scribe_v1',\n settings?: {},\n ): {\n transcription: ElevenLabsTranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: ElevenLabsTranscriptionModelId): TranscriptionModelV3;\n\n /**\n * Creates a model for speech generation.\n */\n speech(modelId: ElevenLabsSpeechModelId): SpeechModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface ElevenLabsProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n * Create an ElevenLabs provider instance.\n */\nexport function createElevenLabs(\n options: ElevenLabsProviderSettings = {},\n): ElevenLabsProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n 'xi-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ELEVENLABS_API_KEY',\n description: 'ElevenLabs',\n }),\n ...options.headers,\n },\n `ai-sdk/elevenlabs/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: ElevenLabsTranscriptionModelId) =>\n new ElevenLabsTranscriptionModel(modelId, {\n provider: `elevenlabs.transcription`,\n url: ({ path }) => `https://api.elevenlabs.io${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: ElevenLabsSpeechModelId) =>\n new ElevenLabsSpeechModel(modelId, {\n provider: `elevenlabs.speech`,\n url: ({ path }) => `https://api.elevenlabs.io${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: ElevenLabsTranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n provider.languageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n message: 'ElevenLabs does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message: 'ElevenLabs does not provide embedding models',\n });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message: 'ElevenLabs does not provide image models',\n });\n };\n\n return provider as ElevenLabsProvider;\n}\n\n/**\n * Default ElevenLabs provider instance.\n */\nexport const elevenlabs = createElevenLabs();\n","import { TranscriptionModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { ElevenLabsConfig } from './elevenlabs-config';\nimport { elevenlabsFailedResponseHandler } from './elevenlabs-error';\nimport { ElevenLabsTranscriptionModelId } from './elevenlabs-transcription-options';\nimport { ElevenLabsTranscriptionAPITypes } from './elevenlabs-api-types';\n\n// https://elevenlabs.io/docs/api-reference/speech-to-text/convert\nconst elevenLabsTranscriptionModelOptionsSchema = z.object({\n languageCode: z.string().nullish(),\n tagAudioEvents: z.boolean().nullish().default(true),\n numSpeakers: z.number().int().min(1).max(32).nullish(),\n timestampsGranularity: z\n .enum(['none', 'word', 'character'])\n .nullish()\n .default('word'),\n diarize: z.boolean().nullish().default(false),\n fileFormat: z.enum(['pcm_s16le_16', 'other']).nullish().default('other'),\n});\n\nexport type ElevenLabsTranscriptionModelOptions = z.infer<\n typeof elevenLabsTranscriptionModelOptionsSchema\n>;\n\ninterface ElevenLabsTranscriptionModelConfig extends ElevenLabsConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ElevenLabsTranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ElevenLabsTranscriptionModelId,\n private readonly config: ElevenLabsTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const elevenlabsOptions = await parseProviderOptions({\n provider: 'elevenlabs',\n providerOptions,\n schema: elevenLabsTranscriptionModelOptionsSchema,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model_id', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n formData.append('diarize', 'true');\n\n // Add provider-specific options\n if (elevenlabsOptions) {\n const transcriptionModelOptions: ElevenLabsTranscriptionAPITypes = {\n language_code: elevenlabsOptions.languageCode ?? undefined,\n tag_audio_events: elevenlabsOptions.tagAudioEvents ?? undefined,\n num_speakers: elevenlabsOptions.numSpeakers ?? undefined,\n timestamps_granularity:\n elevenlabsOptions.timestampsGranularity ?? undefined,\n file_format: elevenlabsOptions.fileFormat ?? undefined,\n };\n\n if (typeof elevenlabsOptions.diarize === 'boolean') {\n formData.append('diarize', String(elevenlabsOptions.diarize));\n }\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof ElevenLabsTranscriptionAPITypes\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/v1/speech-to-text',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: elevenlabsFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n elevenlabsTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.words?.map(word => ({\n text: word.text,\n startSecond: word.start ?? 0,\n endSecond: word.end ?? 0,\n })) ?? [],\n language: response.language_code,\n durationInSeconds: response.words?.at(-1)?.end ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst elevenlabsTranscriptionResponseSchema = z.object({\n language_code: z.string(),\n language_probability: z.number(),\n text: z.string(),\n words: z\n .array(\n z.object({\n text: z.string(),\n type: z.enum(['word', 'spacing', 'audio_event']),\n start: z.number().nullish(),\n end: z.number().nullish(),\n speaker_id: z.string().nullish(),\n characters: z\n .array(\n z.object({\n text: z.string(),\n start: z.number().nullish(),\n end: z.number().nullish(),\n }),\n )\n .nullish(),\n }),\n )\n .nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const elevenlabsErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type ElevenLabsErrorData = z.infer<typeof elevenlabsErrorDataSchema>;\n\nexport const elevenlabsFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: elevenlabsErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { SpeechModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { ElevenLabsConfig } from './elevenlabs-config';\nimport { elevenlabsFailedResponseHandler } from './elevenlabs-error';\nimport { ElevenLabsSpeechAPITypes } from './elevenlabs-speech-api-types';\nimport {\n ElevenLabsSpeechModelId,\n ElevenLabsSpeechVoiceId,\n} from './elevenlabs-speech-options';\n\n// Schema for camelCase input from users\nconst elevenLabsSpeechModelOptionsSchema = z.object({\n languageCode: z.string().optional(),\n voiceSettings: z\n .object({\n stability: z.number().min(0).max(1).optional(),\n similarityBoost: z.number().min(0).max(1).optional(),\n style: z.number().min(0).max(1).optional(),\n useSpeakerBoost: z.boolean().optional(),\n })\n .optional(),\n pronunciationDictionaryLocators: z\n .array(\n z.object({\n pronunciationDictionaryId: z.string(),\n versionId: z.string().optional(),\n }),\n )\n .max(3)\n .optional(),\n seed: z.number().min(0).max(4294967295).optional(),\n previousText: z.string().optional(),\n nextText: z.string().optional(),\n previousRequestIds: z.array(z.string()).max(3).optional(),\n nextRequestIds: z.array(z.string()).max(3).optional(),\n applyTextNormalization: z.enum(['auto', 'on', 'off']).optional(),\n applyLanguageTextNormalization: z.boolean().optional(),\n enableLogging: z.boolean().optional(),\n});\n\nexport type ElevenLabsSpeechModelOptions = z.infer<\n typeof elevenLabsSpeechModelOptionsSchema\n>;\n\ninterface ElevenLabsSpeechModelConfig extends ElevenLabsConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ElevenLabsSpeechModel implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ElevenLabsSpeechModelId,\n private readonly config: ElevenLabsSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = '21m00Tcm4TlvDq8ikWAM',\n outputFormat = 'mp3_44100_128',\n instructions,\n language,\n speed,\n providerOptions,\n }: Parameters<SpeechModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const elevenLabsOptions = await parseProviderOptions({\n provider: 'elevenlabs',\n providerOptions,\n schema: elevenLabsSpeechModelOptionsSchema,\n });\n\n // Create request body\n const requestBody: ElevenLabsSpeechAPITypes = {\n text,\n model_id: this.modelId,\n };\n\n // Prepare query parameters\n const queryParams: Record<string, string> = {};\n\n // Map outputFormat to ElevenLabs format (as query param)\n if (outputFormat) {\n const formatMap: Record<string, string> = {\n mp3: 'mp3_44100_128',\n mp3_32: 'mp3_44100_32',\n mp3_64: 'mp3_44100_64',\n mp3_96: 'mp3_44100_96',\n mp3_128: 'mp3_44100_128',\n mp3_192: 'mp3_44100_192',\n pcm: 'pcm_44100',\n pcm_16000: 'pcm_16000',\n pcm_22050: 'pcm_22050',\n pcm_24000: 'pcm_24000',\n pcm_44100: 'pcm_44100',\n ulaw: 'ulaw_8000',\n };\n\n const mappedFormat = formatMap[outputFormat] || outputFormat;\n queryParams.output_format = mappedFormat;\n }\n\n // Add language code if provided\n if (language) {\n requestBody.language_code = language;\n }\n\n const voiceSettings: typeof requestBody.voice_settings = {};\n\n if (speed != null) {\n voiceSettings.speed = speed;\n }\n\n // Add provider-specific options - map from camelCase to snake_case\n if (elevenLabsOptions) {\n if (elevenLabsOptions.voiceSettings) {\n // Map camelCase voice settings to snake_case for API\n if (elevenLabsOptions.voiceSettings.stability != null) {\n voiceSettings.stability = elevenLabsOptions.voiceSettings.stability;\n }\n if (elevenLabsOptions.voiceSettings.similarityBoost != null) {\n voiceSettings.similarity_boost =\n elevenLabsOptions.voiceSettings.similarityBoost;\n }\n if (elevenLabsOptions.voiceSettings.style != null) {\n voiceSettings.style = elevenLabsOptions.voiceSettings.style;\n }\n if (elevenLabsOptions.voiceSettings.useSpeakerBoost != null) {\n voiceSettings.use_speaker_boost =\n elevenLabsOptions.voiceSettings.useSpeakerBoost;\n }\n }\n // Add language code from provider options if not already set\n if (elevenLabsOptions.languageCode && !requestBody.language_code) {\n requestBody.language_code = elevenLabsOptions.languageCode;\n }\n\n // Map pronunciation dictionary locators\n if (elevenLabsOptions.pronunciationDictionaryLocators) {\n requestBody.pronunciation_dictionary_locators =\n elevenLabsOptions.pronunciationDictionaryLocators.map(locator => ({\n pronunciation_dictionary_id: locator.pronunciationDictionaryId,\n ...(locator.versionId && { version_id: locator.versionId }),\n }));\n }\n\n if (elevenLabsOptions.seed != null) {\n requestBody.seed = elevenLabsOptions.seed;\n }\n if (elevenLabsOptions.previousText) {\n requestBody.previous_text = elevenLabsOptions.previousText;\n }\n if (elevenLabsOptions.nextText) {\n requestBody.next_text = elevenLabsOptions.nextText;\n }\n\n // Add previous and next request IDs\n if (elevenLabsOptions.previousRequestIds) {\n requestBody.previous_request_ids = elevenLabsOptions.previousRequestIds;\n }\n if (elevenLabsOptions.nextRequestIds) {\n requestBody.next_request_ids = elevenLabsOptions.nextRequestIds;\n }\n\n // Add text normalization options\n if (elevenLabsOptions.applyTextNormalization) {\n requestBody.apply_text_normalization =\n elevenLabsOptions.applyTextNormalization;\n }\n if (elevenLabsOptions.applyLanguageTextNormalization != null) {\n requestBody.apply_language_text_normalization =\n elevenLabsOptions.applyLanguageTextNormalization;\n }\n\n // enable_logging is a query parameter\n if (elevenLabsOptions.enableLogging != null) {\n queryParams.enable_logging = String(elevenLabsOptions.enableLogging);\n }\n }\n\n // Only add voice_settings if there are settings to add\n if (Object.keys(voiceSettings).length > 0) {\n requestBody.voice_settings = voiceSettings;\n }\n\n if (instructions) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details: `ElevenLabs speech models do not support instructions. Instructions parameter was ignored.`,\n });\n }\n\n return {\n requestBody,\n queryParams,\n warnings,\n voiceId: voice as ElevenLabsSpeechVoiceId,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, queryParams, warnings, voiceId } =\n await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: (() => {\n const baseUrl = this.config.url({\n path: `/v1/text-to-speech/${voiceId}`,\n modelId: this.modelId,\n });\n const queryString = new URLSearchParams(queryParams).toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n })(),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: elevenlabsFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","_a","_b","combineHeaders","parseProviderOptions","z","z","parseProviderOptions","combineHeaders"]}
|
|
1
|
+
{"version":3,"sources":["../src/elevenlabs-provider.ts","../src/elevenlabs-transcription-model.ts","../src/elevenlabs-error.ts","../src/elevenlabs-speech-model.ts","../src/version.ts"],"sourcesContent":["import {\n TranscriptionModelV4,\n SpeechModelV4,\n ProviderV4,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { ElevenLabsTranscriptionModel } from './elevenlabs-transcription-model';\nimport { ElevenLabsTranscriptionModelId } from './elevenlabs-transcription-options';\nimport { ElevenLabsSpeechModel } from './elevenlabs-speech-model';\nimport { ElevenLabsSpeechModelId } from './elevenlabs-speech-options';\nimport { VERSION } from './version';\n\nexport interface ElevenLabsProvider extends ProviderV4 {\n (\n modelId: 'scribe_v1',\n settings?: {},\n ): {\n transcription: ElevenLabsTranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: ElevenLabsTranscriptionModelId): TranscriptionModelV4;\n\n /**\n * Creates a model for speech generation.\n */\n speech(modelId: ElevenLabsSpeechModelId): SpeechModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface ElevenLabsProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n * Create an ElevenLabs provider instance.\n */\nexport function createElevenLabs(\n options: ElevenLabsProviderSettings = {},\n): ElevenLabsProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n 'xi-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ELEVENLABS_API_KEY',\n description: 'ElevenLabs',\n }),\n ...options.headers,\n },\n `ai-sdk/elevenlabs/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: ElevenLabsTranscriptionModelId) =>\n new ElevenLabsTranscriptionModel(modelId, {\n provider: `elevenlabs.transcription`,\n url: ({ path }) => `https://api.elevenlabs.io${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: ElevenLabsSpeechModelId) =>\n new ElevenLabsSpeechModel(modelId, {\n provider: `elevenlabs.speech`,\n url: ({ path }) => `https://api.elevenlabs.io${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: ElevenLabsTranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v4' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n provider.languageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n message: 'ElevenLabs does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message: 'ElevenLabs does not provide embedding models',\n });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message: 'ElevenLabs does not provide image models',\n });\n };\n\n return provider as ElevenLabsProvider;\n}\n\n/**\n * Default ElevenLabs provider instance.\n */\nexport const elevenlabs = createElevenLabs();\n","import { TranscriptionModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { ElevenLabsConfig } from './elevenlabs-config';\nimport { elevenlabsFailedResponseHandler } from './elevenlabs-error';\nimport { ElevenLabsTranscriptionModelId } from './elevenlabs-transcription-options';\nimport { ElevenLabsTranscriptionAPITypes } from './elevenlabs-api-types';\n\n// https://elevenlabs.io/docs/api-reference/speech-to-text/convert\nconst elevenLabsTranscriptionModelOptionsSchema = z.object({\n languageCode: z.string().nullish(),\n tagAudioEvents: z.boolean().nullish().default(true),\n numSpeakers: z.number().int().min(1).max(32).nullish(),\n timestampsGranularity: z\n .enum(['none', 'word', 'character'])\n .nullish()\n .default('word'),\n diarize: z.boolean().nullish().default(false),\n fileFormat: z.enum(['pcm_s16le_16', 'other']).nullish().default('other'),\n});\n\nexport type ElevenLabsTranscriptionModelOptions = z.infer<\n typeof elevenLabsTranscriptionModelOptionsSchema\n>;\n\ninterface ElevenLabsTranscriptionModelConfig extends ElevenLabsConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ElevenLabsTranscriptionModel implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ElevenLabsTranscriptionModelId,\n private readonly config: ElevenLabsTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n\n // Parse provider options\n const elevenlabsOptions = await parseProviderOptions({\n provider: 'elevenlabs',\n providerOptions,\n schema: elevenLabsTranscriptionModelOptionsSchema,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model_id', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n formData.append('diarize', 'true');\n\n // Add provider-specific options\n if (elevenlabsOptions) {\n const transcriptionModelOptions: ElevenLabsTranscriptionAPITypes = {\n language_code: elevenlabsOptions.languageCode ?? undefined,\n tag_audio_events: elevenlabsOptions.tagAudioEvents ?? undefined,\n num_speakers: elevenlabsOptions.numSpeakers ?? undefined,\n timestamps_granularity:\n elevenlabsOptions.timestampsGranularity ?? undefined,\n file_format: elevenlabsOptions.fileFormat ?? undefined,\n };\n\n if (typeof elevenlabsOptions.diarize === 'boolean') {\n formData.append('diarize', String(elevenlabsOptions.diarize));\n }\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof ElevenLabsTranscriptionAPITypes\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/v1/speech-to-text',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: elevenlabsFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n elevenlabsTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.words?.map(word => ({\n text: word.text,\n startSecond: word.start ?? 0,\n endSecond: word.end ?? 0,\n })) ?? [],\n language: response.language_code,\n durationInSeconds: response.words?.at(-1)?.end ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst elevenlabsTranscriptionResponseSchema = z.object({\n language_code: z.string(),\n language_probability: z.number(),\n text: z.string(),\n words: z\n .array(\n z.object({\n text: z.string(),\n type: z.enum(['word', 'spacing', 'audio_event']),\n start: z.number().nullish(),\n end: z.number().nullish(),\n speaker_id: z.string().nullish(),\n characters: z\n .array(\n z.object({\n text: z.string(),\n start: z.number().nullish(),\n end: z.number().nullish(),\n }),\n )\n .nullish(),\n }),\n )\n .nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const elevenlabsErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type ElevenLabsErrorData = z.infer<typeof elevenlabsErrorDataSchema>;\n\nexport const elevenlabsFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: elevenlabsErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { SpeechModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { ElevenLabsConfig } from './elevenlabs-config';\nimport { elevenlabsFailedResponseHandler } from './elevenlabs-error';\nimport { ElevenLabsSpeechAPITypes } from './elevenlabs-speech-api-types';\nimport {\n ElevenLabsSpeechModelId,\n ElevenLabsSpeechVoiceId,\n} from './elevenlabs-speech-options';\n\n// Schema for camelCase input from users\nconst elevenLabsSpeechModelOptionsSchema = z.object({\n languageCode: z.string().optional(),\n voiceSettings: z\n .object({\n stability: z.number().min(0).max(1).optional(),\n similarityBoost: z.number().min(0).max(1).optional(),\n style: z.number().min(0).max(1).optional(),\n useSpeakerBoost: z.boolean().optional(),\n })\n .optional(),\n pronunciationDictionaryLocators: z\n .array(\n z.object({\n pronunciationDictionaryId: z.string(),\n versionId: z.string().optional(),\n }),\n )\n .max(3)\n .optional(),\n seed: z.number().min(0).max(4294967295).optional(),\n previousText: z.string().optional(),\n nextText: z.string().optional(),\n previousRequestIds: z.array(z.string()).max(3).optional(),\n nextRequestIds: z.array(z.string()).max(3).optional(),\n applyTextNormalization: z.enum(['auto', 'on', 'off']).optional(),\n applyLanguageTextNormalization: z.boolean().optional(),\n enableLogging: z.boolean().optional(),\n});\n\nexport type ElevenLabsSpeechModelOptions = z.infer<\n typeof elevenLabsSpeechModelOptionsSchema\n>;\n\ninterface ElevenLabsSpeechModelConfig extends ElevenLabsConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ElevenLabsSpeechModel implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ElevenLabsSpeechModelId,\n private readonly config: ElevenLabsSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = '21m00Tcm4TlvDq8ikWAM',\n outputFormat = 'mp3_44100_128',\n instructions,\n language,\n speed,\n providerOptions,\n }: Parameters<SpeechModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n\n // Parse provider options\n const elevenLabsOptions = await parseProviderOptions({\n provider: 'elevenlabs',\n providerOptions,\n schema: elevenLabsSpeechModelOptionsSchema,\n });\n\n // Create request body\n const requestBody: ElevenLabsSpeechAPITypes = {\n text,\n model_id: this.modelId,\n };\n\n // Prepare query parameters\n const queryParams: Record<string, string> = {};\n\n // Map outputFormat to ElevenLabs format (as query param)\n if (outputFormat) {\n const formatMap: Record<string, string> = {\n mp3: 'mp3_44100_128',\n mp3_32: 'mp3_44100_32',\n mp3_64: 'mp3_44100_64',\n mp3_96: 'mp3_44100_96',\n mp3_128: 'mp3_44100_128',\n mp3_192: 'mp3_44100_192',\n pcm: 'pcm_44100',\n pcm_16000: 'pcm_16000',\n pcm_22050: 'pcm_22050',\n pcm_24000: 'pcm_24000',\n pcm_44100: 'pcm_44100',\n ulaw: 'ulaw_8000',\n };\n\n const mappedFormat = formatMap[outputFormat] || outputFormat;\n queryParams.output_format = mappedFormat;\n }\n\n // Add language code if provided\n if (language) {\n requestBody.language_code = language;\n }\n\n const voiceSettings: typeof requestBody.voice_settings = {};\n\n if (speed != null) {\n voiceSettings.speed = speed;\n }\n\n // Add provider-specific options - map from camelCase to snake_case\n if (elevenLabsOptions) {\n if (elevenLabsOptions.voiceSettings) {\n // Map camelCase voice settings to snake_case for API\n if (elevenLabsOptions.voiceSettings.stability != null) {\n voiceSettings.stability = elevenLabsOptions.voiceSettings.stability;\n }\n if (elevenLabsOptions.voiceSettings.similarityBoost != null) {\n voiceSettings.similarity_boost =\n elevenLabsOptions.voiceSettings.similarityBoost;\n }\n if (elevenLabsOptions.voiceSettings.style != null) {\n voiceSettings.style = elevenLabsOptions.voiceSettings.style;\n }\n if (elevenLabsOptions.voiceSettings.useSpeakerBoost != null) {\n voiceSettings.use_speaker_boost =\n elevenLabsOptions.voiceSettings.useSpeakerBoost;\n }\n }\n // Add language code from provider options if not already set\n if (elevenLabsOptions.languageCode && !requestBody.language_code) {\n requestBody.language_code = elevenLabsOptions.languageCode;\n }\n\n // Map pronunciation dictionary locators\n if (elevenLabsOptions.pronunciationDictionaryLocators) {\n requestBody.pronunciation_dictionary_locators =\n elevenLabsOptions.pronunciationDictionaryLocators.map(locator => ({\n pronunciation_dictionary_id: locator.pronunciationDictionaryId,\n ...(locator.versionId && { version_id: locator.versionId }),\n }));\n }\n\n if (elevenLabsOptions.seed != null) {\n requestBody.seed = elevenLabsOptions.seed;\n }\n if (elevenLabsOptions.previousText) {\n requestBody.previous_text = elevenLabsOptions.previousText;\n }\n if (elevenLabsOptions.nextText) {\n requestBody.next_text = elevenLabsOptions.nextText;\n }\n\n // Add previous and next request IDs\n if (elevenLabsOptions.previousRequestIds) {\n requestBody.previous_request_ids = elevenLabsOptions.previousRequestIds;\n }\n if (elevenLabsOptions.nextRequestIds) {\n requestBody.next_request_ids = elevenLabsOptions.nextRequestIds;\n }\n\n // Add text normalization options\n if (elevenLabsOptions.applyTextNormalization) {\n requestBody.apply_text_normalization =\n elevenLabsOptions.applyTextNormalization;\n }\n if (elevenLabsOptions.applyLanguageTextNormalization != null) {\n requestBody.apply_language_text_normalization =\n elevenLabsOptions.applyLanguageTextNormalization;\n }\n\n // enable_logging is a query parameter\n if (elevenLabsOptions.enableLogging != null) {\n queryParams.enable_logging = String(elevenLabsOptions.enableLogging);\n }\n }\n\n // Only add voice_settings if there are settings to add\n if (Object.keys(voiceSettings).length > 0) {\n requestBody.voice_settings = voiceSettings;\n }\n\n if (instructions) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details: `ElevenLabs speech models do not support instructions. Instructions parameter was ignored.`,\n });\n }\n\n return {\n requestBody,\n queryParams,\n warnings,\n voiceId: voice as ElevenLabsSpeechVoiceId,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, queryParams, warnings, voiceId } =\n await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: (() => {\n const baseUrl = this.config.url({\n path: `/v1/text-to-speech/${voiceId}`,\n modelId: this.modelId,\n });\n const queryString = new URLSearchParams(queryParams).toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n })(),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: elevenlabsFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","_a","_b","combineHeaders","parseProviderOptions","z","z","parseProviderOptions","combineHeaders"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/elevenlabs",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.10",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@ai-sdk/provider": "4.0.0-beta.
|
|
33
|
-
"@ai-sdk/provider-utils": "5.0.0-beta.
|
|
32
|
+
"@ai-sdk/provider": "4.0.0-beta.5",
|
|
33
|
+
"@ai-sdk/provider-utils": "5.0.0-beta.9"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "20.17.24",
|
|
@@ -64,9 +64,7 @@
|
|
|
64
64
|
"build": "tsup --tsconfig tsconfig.build.json",
|
|
65
65
|
"build:watch": "tsup --tsconfig tsconfig.build.json --watch",
|
|
66
66
|
"clean": "del-cli dist docs && del-cli internal/dist",
|
|
67
|
-
"lint": "eslint \"./**/*.ts*\"",
|
|
68
67
|
"type-check": "tsc --noEmit",
|
|
69
|
-
"prettier-check": "prettier --check \"./**/*.ts*\"",
|
|
70
68
|
"test": "pnpm test:node && pnpm test:edge",
|
|
71
69
|
"test:update": "pnpm test:node -u",
|
|
72
70
|
"test:watch": "vitest --config vitest.node.config.js",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
TranscriptionModelV4,
|
|
3
|
+
SpeechModelV4,
|
|
4
|
+
ProviderV4,
|
|
5
5
|
NoSuchModelError,
|
|
6
6
|
} from '@ai-sdk/provider';
|
|
7
7
|
import {
|
|
@@ -15,7 +15,7 @@ import { ElevenLabsSpeechModel } from './elevenlabs-speech-model';
|
|
|
15
15
|
import { ElevenLabsSpeechModelId } from './elevenlabs-speech-options';
|
|
16
16
|
import { VERSION } from './version';
|
|
17
17
|
|
|
18
|
-
export interface ElevenLabsProvider extends
|
|
18
|
+
export interface ElevenLabsProvider extends ProviderV4 {
|
|
19
19
|
(
|
|
20
20
|
modelId: 'scribe_v1',
|
|
21
21
|
settings?: {},
|
|
@@ -26,12 +26,12 @@ export interface ElevenLabsProvider extends ProviderV3 {
|
|
|
26
26
|
/**
|
|
27
27
|
* Creates a model for transcription.
|
|
28
28
|
*/
|
|
29
|
-
transcription(modelId: ElevenLabsTranscriptionModelId):
|
|
29
|
+
transcription(modelId: ElevenLabsTranscriptionModelId): TranscriptionModelV4;
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Creates a model for speech generation.
|
|
33
33
|
*/
|
|
34
|
-
speech(modelId: ElevenLabsSpeechModelId):
|
|
34
|
+
speech(modelId: ElevenLabsSpeechModelId): SpeechModelV4;
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* @deprecated Use `embeddingModel` instead.
|
|
@@ -98,7 +98,7 @@ export function createElevenLabs(
|
|
|
98
98
|
};
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
provider.specificationVersion = '
|
|
101
|
+
provider.specificationVersion = 'v4' as const;
|
|
102
102
|
provider.transcription = createTranscriptionModel;
|
|
103
103
|
provider.transcriptionModel = createTranscriptionModel;
|
|
104
104
|
provider.speech = createSpeechModel;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SpeechModelV4, SharedV4Warning } from '@ai-sdk/provider';
|
|
2
2
|
import {
|
|
3
3
|
combineHeaders,
|
|
4
4
|
createBinaryResponseHandler,
|
|
@@ -54,8 +54,8 @@ interface ElevenLabsSpeechModelConfig extends ElevenLabsConfig {
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
export class ElevenLabsSpeechModel implements
|
|
58
|
-
readonly specificationVersion = '
|
|
57
|
+
export class ElevenLabsSpeechModel implements SpeechModelV4 {
|
|
58
|
+
readonly specificationVersion = 'v4';
|
|
59
59
|
|
|
60
60
|
get provider(): string {
|
|
61
61
|
return this.config.provider;
|
|
@@ -74,8 +74,8 @@ export class ElevenLabsSpeechModel implements SpeechModelV3 {
|
|
|
74
74
|
language,
|
|
75
75
|
speed,
|
|
76
76
|
providerOptions,
|
|
77
|
-
}: Parameters<
|
|
78
|
-
const warnings:
|
|
77
|
+
}: Parameters<SpeechModelV4['doGenerate']>[0]) {
|
|
78
|
+
const warnings: SharedV4Warning[] = [];
|
|
79
79
|
|
|
80
80
|
// Parse provider options
|
|
81
81
|
const elevenLabsOptions = await parseProviderOptions({
|
|
@@ -214,8 +214,8 @@ export class ElevenLabsSpeechModel implements SpeechModelV3 {
|
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
async doGenerate(
|
|
217
|
-
options: Parameters<
|
|
218
|
-
): Promise<Awaited<ReturnType<
|
|
217
|
+
options: Parameters<SpeechModelV4['doGenerate']>[0],
|
|
218
|
+
): Promise<Awaited<ReturnType<SpeechModelV4['doGenerate']>>> {
|
|
219
219
|
const currentDate = this.config._internal?.currentDate?.() ?? new Date();
|
|
220
220
|
const { requestBody, queryParams, warnings, voiceId } =
|
|
221
221
|
await this.getArgs(options);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TranscriptionModelV4, SharedV4Warning } from '@ai-sdk/provider';
|
|
2
2
|
import {
|
|
3
3
|
combineHeaders,
|
|
4
4
|
convertBase64ToUint8Array,
|
|
@@ -36,8 +36,8 @@ interface ElevenLabsTranscriptionModelConfig extends ElevenLabsConfig {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
export class ElevenLabsTranscriptionModel implements
|
|
40
|
-
readonly specificationVersion = '
|
|
39
|
+
export class ElevenLabsTranscriptionModel implements TranscriptionModelV4 {
|
|
40
|
+
readonly specificationVersion = 'v4';
|
|
41
41
|
|
|
42
42
|
get provider(): string {
|
|
43
43
|
return this.config.provider;
|
|
@@ -52,8 +52,8 @@ export class ElevenLabsTranscriptionModel implements TranscriptionModelV3 {
|
|
|
52
52
|
audio,
|
|
53
53
|
mediaType,
|
|
54
54
|
providerOptions,
|
|
55
|
-
}: Parameters<
|
|
56
|
-
const warnings:
|
|
55
|
+
}: Parameters<TranscriptionModelV4['doGenerate']>[0]) {
|
|
56
|
+
const warnings: SharedV4Warning[] = [];
|
|
57
57
|
|
|
58
58
|
// Parse provider options
|
|
59
59
|
const elevenlabsOptions = await parseProviderOptions({
|
|
@@ -111,8 +111,8 @@ export class ElevenLabsTranscriptionModel implements TranscriptionModelV3 {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
async doGenerate(
|
|
114
|
-
options: Parameters<
|
|
115
|
-
): Promise<Awaited<ReturnType<
|
|
114
|
+
options: Parameters<TranscriptionModelV4['doGenerate']>[0],
|
|
115
|
+
): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>> {
|
|
116
116
|
const currentDate = this.config._internal?.currentDate?.() ?? new Date();
|
|
117
117
|
const { formData, warnings } = await this.getArgs(options);
|
|
118
118
|
|