@ai-sdk/assemblyai 2.0.41 → 2.0.43
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 +34 -0
- package/README.md +1 -1
- package/dist/index.d.mts +36 -2
- package/dist/index.d.ts +36 -2
- package/dist/index.js +242 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +242 -25
- package/dist/index.mjs.map +1 -1
- package/docs/100-assemblyai.mdx +134 -9
- package/package.json +2 -2
- package/src/assemblyai-api-types.ts +84 -1
- package/src/assemblyai-provider.ts +1 -1
- package/src/assemblyai-transcription-model.ts +326 -19
- package/src/assemblyai-transcription-settings.ts +15 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/assemblyai-provider.ts","../src/assemblyai-transcription-model.ts","../src/assemblyai-error.ts","../src/version.ts"],"sourcesContent":["export { createAssemblyAI, assemblyai } from './assemblyai-provider';\nexport type {\n AssemblyAIProvider,\n AssemblyAIProviderSettings,\n} from './assemblyai-provider';\nexport type { AssemblyAITranscriptionModelOptions } from './assemblyai-transcription-model';\nexport { VERSION } from './version';\n","import {\n NoSuchModelError,\n type TranscriptionModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AssemblyAITranscriptionModel } from './assemblyai-transcription-model';\nimport type { AssemblyAITranscriptionModelId } from './assemblyai-transcription-settings';\nimport { VERSION } from './version';\n\nexport interface AssemblyAIProvider extends ProviderV3 {\n (\n modelId: 'best',\n settings?: {},\n ): {\n transcription: AssemblyAITranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: AssemblyAITranscriptionModelId): TranscriptionModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface AssemblyAIProviderSettings {\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 AssemblyAI provider instance.\n */\nexport function createAssemblyAI(\n options: AssemblyAIProviderSettings = {},\n): AssemblyAIProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n authorization: loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ASSEMBLYAI_API_KEY',\n description: 'AssemblyAI',\n }),\n ...options.headers,\n },\n `ai-sdk/assemblyai/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: AssemblyAITranscriptionModelId) =>\n new AssemblyAITranscriptionModel(modelId, {\n provider: `assemblyai.transcription`,\n url: ({ path }) => `https://api.assemblyai.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: AssemblyAITranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n\n provider.languageModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'languageModel',\n message: 'AssemblyAI does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider as AssemblyAIProvider;\n}\n\n/**\n * Default AssemblyAI provider instance.\n */\nexport const assemblyai = createAssemblyAI();\n","import type { TranscriptionModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n extractResponseHeaders,\n parseProviderOptions,\n postJsonToApi,\n postToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { AssemblyAIConfig } from './assemblyai-config';\nimport { assemblyaiFailedResponseHandler } from './assemblyai-error';\nimport type { AssemblyAITranscriptionModelId } from './assemblyai-transcription-settings';\nimport type { AssemblyAITranscriptionAPITypes } from './assemblyai-api-types';\n\n// https://www.assemblyai.com/docs/api-reference/transcripts/submit\nconst assemblyaiTranscriptionModelOptionsSchema = z.object({\n /**\n * End time of the audio in milliseconds.\n */\n audioEndAt: z.number().int().nullish(),\n /**\n * Start time of the audio in milliseconds.\n */\n audioStartFrom: z.number().int().nullish(),\n /**\n * Whether to automatically generate chapters for the transcription.\n */\n autoChapters: z.boolean().nullish(),\n /**\n * Whether to automatically generate highlights for the transcription.\n */\n autoHighlights: z.boolean().nullish(),\n /**\n * Boost parameter for the transcription.\n * Allowed values: 'low', 'default', 'high'.\n */\n boostParam: z.string().nullish(),\n /**\n * Whether to enable content safety filtering.\n */\n contentSafety: z.boolean().nullish(),\n /**\n * Confidence threshold for content safety filtering (25-100).\n */\n contentSafetyConfidence: z.number().int().min(25).max(100).nullish(),\n /**\n * Custom spelling rules for the transcription.\n */\n customSpelling: z\n .array(\n z.object({\n from: z.array(z.string()),\n to: z.string(),\n }),\n )\n .nullish(),\n /**\n * Whether to include filler words (um, uh, etc.) in the transcription.\n */\n disfluencies: z.boolean().nullish(),\n /**\n * Whether to enable entity detection.\n */\n entityDetection: z.boolean().nullish(),\n /**\n * Whether to filter profanity from the transcription.\n */\n filterProfanity: z.boolean().nullish(),\n /**\n * Whether to format text with punctuation and capitalization.\n */\n formatText: z.boolean().nullish(),\n /**\n * Whether to enable IAB categories detection.\n */\n iabCategories: z.boolean().nullish(),\n /**\n * Language code for the transcription.\n */\n languageCode: z.union([z.literal('en'), z.string()]).nullish(),\n /**\n * Confidence threshold for language detection.\n */\n languageConfidenceThreshold: z.number().nullish(),\n /**\n * Whether to enable language detection.\n */\n languageDetection: z.boolean().nullish(),\n /**\n * Whether to process audio as multichannel.\n */\n multichannel: z.boolean().nullish(),\n /**\n * Whether to add punctuation to the transcription.\n */\n punctuate: z.boolean().nullish(),\n /**\n * Whether to redact personally identifiable information (PII).\n */\n redactPii: z.boolean().nullish(),\n /**\n * Whether to redact PII in the audio file.\n */\n redactPiiAudio: z.boolean().nullish(),\n /**\n * Audio format for PII redaction.\n */\n redactPiiAudioQuality: z.string().nullish(),\n /**\n * List of PII types to redact.\n */\n redactPiiPolicies: z.array(z.string()).nullish(),\n /**\n * Substitution method for redacted PII.\n */\n redactPiiSub: z.string().nullish(),\n /**\n * Whether to enable sentiment analysis.\n */\n sentimentAnalysis: z.boolean().nullish(),\n /**\n * Whether to identify different speakers in the audio.\n */\n speakerLabels: z.boolean().nullish(),\n /**\n * Number of speakers expected in the audio.\n */\n speakersExpected: z.number().int().nullish(),\n /**\n * Threshold for speech detection (0-1).\n */\n speechThreshold: z.number().min(0).max(1).nullish(),\n /**\n * Whether to generate a summary of the transcription.\n */\n summarization: z.boolean().nullish(),\n /**\n * Model to use for summarization.\n */\n summaryModel: z.string().nullish(),\n /**\n * Type of summary to generate.\n */\n summaryType: z.string().nullish(),\n /**\n * Name of the authentication header for webhook requests.\n */\n webhookAuthHeaderName: z.string().nullish(),\n /**\n * Value of the authentication header for webhook requests.\n */\n webhookAuthHeaderValue: z.string().nullish(),\n /**\n * URL to send webhook notifications to.\n */\n webhookUrl: z.string().nullish(),\n /**\n * List of words to boost recognition for.\n */\n wordBoost: z.array(z.string()).nullish(),\n});\n\nexport type AssemblyAITranscriptionModelOptions = z.infer<\n typeof assemblyaiTranscriptionModelOptionsSchema\n>;\n\ninterface AssemblyAITranscriptionModelConfig extends AssemblyAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n /**\n * The polling interval for checking transcript status in milliseconds.\n */\n pollingInterval?: number;\n}\n\nexport class AssemblyAITranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n private readonly POLLING_INTERVAL_MS = 3000;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: AssemblyAITranscriptionModelId,\n private readonly config: AssemblyAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const assemblyaiOptions = await parseProviderOptions({\n provider: 'assemblyai',\n providerOptions,\n schema: assemblyaiTranscriptionModelOptionsSchema,\n });\n\n const body: Omit<AssemblyAITranscriptionAPITypes, 'audio_url'> = {\n speech_model: this.modelId,\n };\n\n // Add provider-specific options\n if (assemblyaiOptions) {\n body.audio_end_at = assemblyaiOptions.audioEndAt ?? undefined;\n body.audio_start_from = assemblyaiOptions.audioStartFrom ?? undefined;\n body.auto_chapters = assemblyaiOptions.autoChapters ?? undefined;\n body.auto_highlights = assemblyaiOptions.autoHighlights ?? undefined;\n body.boost_param = (assemblyaiOptions.boostParam as never) ?? undefined;\n body.content_safety = assemblyaiOptions.contentSafety ?? undefined;\n body.content_safety_confidence =\n assemblyaiOptions.contentSafetyConfidence ?? undefined;\n body.custom_spelling =\n (assemblyaiOptions.customSpelling as never) ?? undefined;\n body.disfluencies = assemblyaiOptions.disfluencies ?? undefined;\n body.entity_detection = assemblyaiOptions.entityDetection ?? undefined;\n body.filter_profanity = assemblyaiOptions.filterProfanity ?? undefined;\n body.format_text = assemblyaiOptions.formatText ?? undefined;\n body.iab_categories = assemblyaiOptions.iabCategories ?? undefined;\n body.language_code =\n (assemblyaiOptions.languageCode as never) ?? undefined;\n body.language_confidence_threshold =\n assemblyaiOptions.languageConfidenceThreshold ?? undefined;\n body.language_detection =\n assemblyaiOptions.languageDetection ?? undefined;\n body.multichannel = assemblyaiOptions.multichannel ?? undefined;\n body.punctuate = assemblyaiOptions.punctuate ?? undefined;\n body.redact_pii = assemblyaiOptions.redactPii ?? undefined;\n body.redact_pii_audio = assemblyaiOptions.redactPiiAudio ?? undefined;\n body.redact_pii_audio_quality =\n (assemblyaiOptions.redactPiiAudioQuality as never) ?? undefined;\n body.redact_pii_policies =\n (assemblyaiOptions.redactPiiPolicies as never) ?? undefined;\n body.redact_pii_sub =\n (assemblyaiOptions.redactPiiSub as never) ?? undefined;\n body.sentiment_analysis =\n assemblyaiOptions.sentimentAnalysis ?? undefined;\n body.speaker_labels = assemblyaiOptions.speakerLabels ?? undefined;\n body.speakers_expected = assemblyaiOptions.speakersExpected ?? undefined;\n body.speech_threshold = assemblyaiOptions.speechThreshold ?? undefined;\n body.summarization = assemblyaiOptions.summarization ?? undefined;\n body.summary_model =\n (assemblyaiOptions.summaryModel as never) ?? undefined;\n body.summary_type = (assemblyaiOptions.summaryType as never) ?? undefined;\n body.webhook_auth_header_name =\n assemblyaiOptions.webhookAuthHeaderName ?? undefined;\n body.webhook_auth_header_value =\n assemblyaiOptions.webhookAuthHeaderValue ?? undefined;\n body.webhook_url = assemblyaiOptions.webhookUrl ?? undefined;\n body.word_boost = assemblyaiOptions.wordBoost ?? undefined;\n }\n\n return {\n body,\n warnings,\n };\n }\n\n /**\n * Polls the given transcript until we have a status other than `processing` or `queued`.\n *\n * @see https://www.assemblyai.com/docs/getting-started/transcribe-an-audio-file#step-33\n */\n private async waitForCompletion(\n transcriptId: string,\n headers: Record<string, string | undefined> | undefined,\n abortSignal?: AbortSignal,\n ): Promise<{\n transcript: z.infer<typeof assemblyaiTranscriptionResponseSchema>;\n responseHeaders: Record<string, string>;\n }> {\n const pollingInterval =\n this.config.pollingInterval ?? this.POLLING_INTERVAL_MS;\n\n while (true) {\n if (abortSignal?.aborted) {\n throw new Error('Transcription request was aborted');\n }\n\n const response = await fetch(\n this.config.url({\n path: `/v2/transcript/${transcriptId}`,\n modelId: this.modelId,\n }),\n {\n method: 'GET',\n headers: combineHeaders(\n this.config.headers(),\n headers,\n ) as HeadersInit,\n signal: abortSignal,\n },\n );\n\n if (!response.ok) {\n throw await assemblyaiFailedResponseHandler({\n response,\n url: this.config.url({\n path: `/v2/transcript/${transcriptId}`,\n modelId: this.modelId,\n }),\n requestBodyValues: {},\n });\n }\n\n const transcript = assemblyaiTranscriptionResponseSchema.parse(\n await response.json(),\n );\n\n if (transcript.status === 'completed') {\n return {\n transcript,\n responseHeaders: extractResponseHeaders(response),\n };\n }\n\n if (transcript.status === 'error') {\n throw new Error(\n `Transcription failed: ${transcript.error ?? 'Unknown error'}`,\n );\n }\n\n await new Promise(resolve => setTimeout(resolve, pollingInterval));\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\n const { value: uploadResponse } = await postToApi({\n url: this.config.url({\n path: '/v2/upload',\n modelId: '',\n }),\n headers: {\n 'Content-Type': 'application/octet-stream',\n ...combineHeaders(this.config.headers(), options.headers),\n },\n body: {\n content: options.audio,\n values: options.audio,\n },\n failedResponseHandler: assemblyaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n assemblyaiUploadResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { body, warnings } = await this.getArgs(options);\n\n const { value: submitResponse } = await postJsonToApi({\n url: this.config.url({\n path: '/v2/transcript',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n audio_url: uploadResponse.upload_url,\n },\n failedResponseHandler: assemblyaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n assemblyaiSubmitResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { transcript, responseHeaders } = await this.waitForCompletion(\n submitResponse.id,\n options.headers,\n options.abortSignal,\n );\n\n return {\n text: transcript.text ?? '',\n segments:\n transcript.words?.map(word => ({\n text: word.text,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: transcript.language_code ?? undefined,\n durationInSeconds:\n transcript.audio_duration ?? transcript.words?.at(-1)?.end ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders, // Headers from final GET request\n body: transcript, // Raw response from final GET request\n },\n };\n }\n}\n\nconst assemblyaiUploadResponseSchema = z.object({\n upload_url: z.string(),\n});\n\nconst assemblyaiSubmitResponseSchema = z.object({\n id: z.string(),\n status: z.enum(['queued', 'processing', 'completed', 'error']),\n});\n\nconst assemblyaiTranscriptionResponseSchema = z.object({\n id: z.string(),\n status: z.enum(['queued', 'processing', 'completed', 'error']),\n text: z.string().nullish(),\n language_code: z.string().nullish(),\n words: z\n .array(\n z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n audio_duration: z.number().nullish(),\n error: z.string().nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const assemblyaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type AssemblyAIErrorData = z.infer<typeof assemblyaiErrorDataSchema>;\n\nexport const assemblyaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: assemblyaiErrorDataSchema,\n errorToMessage: data => data.error.message,\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/assemblyai-provider.ts","../src/assemblyai-transcription-model.ts","../src/assemblyai-error.ts","../src/version.ts"],"sourcesContent":["export { createAssemblyAI, assemblyai } from './assemblyai-provider';\nexport type {\n AssemblyAIProvider,\n AssemblyAIProviderSettings,\n} from './assemblyai-provider';\nexport type { AssemblyAITranscriptionModelOptions } from './assemblyai-transcription-model';\nexport { VERSION } from './version';\n","import {\n NoSuchModelError,\n type TranscriptionModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AssemblyAITranscriptionModel } from './assemblyai-transcription-model';\nimport type { AssemblyAITranscriptionModelId } from './assemblyai-transcription-settings';\nimport { VERSION } from './version';\n\nexport interface AssemblyAIProvider extends ProviderV3 {\n (\n modelId: AssemblyAITranscriptionModelId,\n settings?: {},\n ): {\n transcription: AssemblyAITranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: AssemblyAITranscriptionModelId): TranscriptionModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface AssemblyAIProviderSettings {\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 AssemblyAI provider instance.\n */\nexport function createAssemblyAI(\n options: AssemblyAIProviderSettings = {},\n): AssemblyAIProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n authorization: loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ASSEMBLYAI_API_KEY',\n description: 'AssemblyAI',\n }),\n ...options.headers,\n },\n `ai-sdk/assemblyai/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: AssemblyAITranscriptionModelId) =>\n new AssemblyAITranscriptionModel(modelId, {\n provider: `assemblyai.transcription`,\n url: ({ path }) => `https://api.assemblyai.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: AssemblyAITranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n\n provider.languageModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'languageModel',\n message: 'AssemblyAI does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider as AssemblyAIProvider;\n}\n\n/**\n * Default AssemblyAI provider instance.\n */\nexport const assemblyai = createAssemblyAI();\n","import type {\n TranscriptionModelV3,\n SharedV3Warning,\n SharedV3ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n extractResponseHeaders,\n parseProviderOptions,\n postJsonToApi,\n postToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { AssemblyAIConfig } from './assemblyai-config';\nimport { assemblyaiFailedResponseHandler } from './assemblyai-error';\nimport type { AssemblyAITranscriptionModelId } from './assemblyai-transcription-settings';\nimport type { AssemblyAITranscriptionAPITypes } from './assemblyai-api-types';\n\n// https://www.assemblyai.com/docs/api-reference/transcripts/submit\nconst assemblyaiTranscriptionModelOptionsSchema = z.object({\n /**\n * End time of the audio in milliseconds.\n */\n audioEndAt: z.number().int().nullish(),\n /**\n * Start time of the audio in milliseconds.\n */\n audioStartFrom: z.number().int().nullish(),\n /**\n * Whether to automatically generate chapters for the transcription.\n */\n autoChapters: z.boolean().nullish(),\n /**\n * Whether to automatically generate highlights for the transcription.\n */\n autoHighlights: z.boolean().nullish(),\n /**\n * Boost parameter for word boost (used with `wordBoost`).\n * Allowed values: 'low', 'default', 'high'.\n *\n * @deprecated Only applies to the deprecated `wordBoost` option. Use\n * `keytermsPrompt` instead, which works with the recommended `universal-*`\n * models.\n */\n boostParam: z.string().nullish(),\n /**\n * Whether to enable content safety filtering.\n */\n contentSafety: z.boolean().nullish(),\n /**\n * Confidence threshold for content safety filtering (25-100).\n */\n contentSafetyConfidence: z.number().int().min(25).max(100).nullish(),\n /**\n * Custom spelling rules for the transcription.\n */\n customSpelling: z\n .array(\n z.object({\n from: z.array(z.string()),\n to: z.string(),\n }),\n )\n .nullish(),\n /**\n * Whether to include filler words (um, uh, etc.) in the transcription.\n */\n disfluencies: z.boolean().nullish(),\n /**\n * Enable a domain-specific model to improve accuracy for specialized\n * terminology. Currently supports `'medical-v1'` (Medical Mode).\n */\n domain: z.string().nullish(),\n /**\n * Whether to enable entity detection.\n */\n entityDetection: z.boolean().nullish(),\n /**\n * Whether to filter profanity from the transcription.\n */\n filterProfanity: z.boolean().nullish(),\n /**\n * Whether to format text with punctuation and capitalization.\n */\n formatText: z.boolean().nullish(),\n /**\n * Whether to enable IAB categories detection.\n */\n iabCategories: z.boolean().nullish(),\n /**\n * Domain-specific keyterms to boost recognition for (max 6 words per phrase).\n * Replaces `wordBoost` for newer models: supported by `universal-3-pro` /\n * `universal-3-5-pro` and `slam-1` (and `universal-2` when metaphone is\n * enabled for the account).\n */\n keytermsPrompt: z.array(z.string()).nullish(),\n /**\n * Language code for the transcription.\n */\n languageCode: z.union([z.literal('en'), z.string()]).nullish(),\n /**\n * Confidence threshold for language detection.\n */\n languageConfidenceThreshold: z.number().nullish(),\n /**\n * Whether to enable language detection.\n */\n languageDetection: z.boolean().nullish(),\n /**\n * Options for automatic language detection.\n */\n languageDetectionOptions: z\n .object({\n /** List of languages expected in the audio file. */\n expectedLanguages: z.array(z.string()).nullish(),\n /** Fallback language if the detected language is not expected. */\n fallbackLanguage: z.string().nullish(),\n /** Whether code switching should be detected. */\n codeSwitching: z.boolean().nullish(),\n /** Confidence threshold for code switching detection (0-1). */\n codeSwitchingConfidenceThreshold: z.number().min(0).max(1).nullish(),\n })\n .nullish(),\n /**\n * Whether to process audio as multichannel.\n */\n multichannel: z.boolean().nullish(),\n /**\n * Provide natural-language context (up to 1,500 words) to steer the model.\n * Only supported by `universal-3-pro` / `universal-3-5-pro` and `slam-1`.\n */\n prompt: z.string().nullish(),\n /**\n * Whether to add punctuation to the transcription.\n */\n punctuate: z.boolean().nullish(),\n /**\n * Whether to redact personally identifiable information (PII).\n */\n redactPii: z.boolean().nullish(),\n /**\n * Whether to redact PII in the audio file.\n */\n redactPiiAudio: z.boolean().nullish(),\n /**\n * Options for PII-redacted audio files. Requires `redactPiiAudio`.\n */\n redactPiiAudioOptions: z\n .object({\n /** Return redacted audio even for files without detected speech. */\n returnRedactedNoSpeechAudio: z.boolean().nullish(),\n /** Redaction method; set to `'silence'` to replace PII with silence. */\n overrideAudioRedactionMethod: z.enum(['silence']).nullish(),\n })\n .nullish(),\n /**\n * Audio format for PII redaction.\n */\n redactPiiAudioQuality: z.string().nullish(),\n /**\n * List of PII types to redact.\n */\n redactPiiPolicies: z.array(z.string()).nullish(),\n /**\n * Return the original unredacted transcript alongside the redacted one.\n * Requires `redactPii`.\n */\n redactPiiReturnUnredacted: z.boolean().nullish(),\n /**\n * Substitution method for redacted PII.\n */\n redactPiiSub: z.string().nullish(),\n /**\n * Map of user-defined labels to exact terms to redact, e.g.\n * `{ INTERNAL_TOOL: ['Bearclaw'] }`. Applied on top of standard PII redaction\n * using `redactPiiSub`. Requires `redactPii`.\n */\n redactStaticEntities: z.record(z.string(), z.array(z.string())).nullish(),\n /**\n * Remove inline annotations from rich transcripts. `'all'` removes all inline\n * annotations; `'speaker'` removes only speaker cues. Universal-3 Pro models.\n */\n removeAudioTags: z.enum(['all', 'speaker']).nullish(),\n /**\n * Whether to enable sentiment analysis.\n */\n sentimentAnalysis: z.boolean().nullish(),\n /**\n * Whether to identify different speakers in the audio.\n */\n speakerLabels: z.boolean().nullish(),\n /**\n * Options for speaker diarization, e.g. a range of possible speakers.\n */\n speakerOptions: z\n .object({\n /** Minimum number of speakers expected in the audio file. */\n minSpeakersExpected: z.number().int().nullish(),\n /** Maximum number of speakers expected in the audio file. */\n maxSpeakersExpected: z.number().int().nullish(),\n })\n .nullish(),\n /**\n * Number of speakers expected in the audio.\n */\n speakersExpected: z.number().int().nullish(),\n /**\n * Threshold for speech detection (0-1).\n */\n speechThreshold: z.number().min(0).max(1).nullish(),\n /**\n * Whether to generate a summary of the transcription.\n */\n summarization: z.boolean().nullish(),\n /**\n * Model to use for summarization.\n */\n summaryModel: z.string().nullish(),\n /**\n * Type of summary to generate.\n */\n summaryType: z.string().nullish(),\n /**\n * Sampling temperature (0-1) controlling randomness. Universal-3 Pro models.\n */\n temperature: z.number().min(0).max(1).nullish(),\n /**\n * Name of the authentication header for webhook requests.\n */\n webhookAuthHeaderName: z.string().nullish(),\n /**\n * Value of the authentication header for webhook requests.\n */\n webhookAuthHeaderValue: z.string().nullish(),\n /**\n * URL to send webhook notifications to.\n */\n webhookUrl: z.string().nullish(),\n /**\n * List of words to boost recognition for.\n *\n * @deprecated `wordBoost` is rejected by `universal-3-pro` /\n * `universal-3-5-pro` and `slam-1` (it only works on `universal-2`/`best`).\n * Use `keytermsPrompt` instead.\n */\n wordBoost: z.array(z.string()).nullish(),\n});\n\nexport type AssemblyAITranscriptionModelOptions = z.infer<\n typeof assemblyaiTranscriptionModelOptionsSchema\n>;\n\ninterface AssemblyAITranscriptionModelConfig extends AssemblyAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n /**\n * The polling interval for checking transcript status in milliseconds.\n */\n pollingInterval?: number;\n}\n\nexport class AssemblyAITranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n private readonly POLLING_INTERVAL_MS = 3000;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: AssemblyAITranscriptionModelId,\n private readonly config: AssemblyAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const assemblyaiOptions = await parseProviderOptions({\n provider: 'assemblyai',\n providerOptions,\n schema: assemblyaiTranscriptionModelOptionsSchema,\n });\n\n const body: Omit<AssemblyAITranscriptionAPITypes, 'audio_url'> = {};\n\n // The legacy `best` model is selected via the deprecated singular\n // `speech_model` parameter. All other models (e.g. `universal-2`,\n // `universal-3-pro`, `universal-3-5-pro`) are only accessible via the\n // `speech_models` array and are rejected by `speech_model`.\n // See https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model\n if (this.modelId === 'best') {\n body.speech_model = this.modelId as 'best';\n warnings.push({\n type: 'other',\n message:\n \"The 'best' model is a legacy AssemblyAI model. Use 'universal-3-5-pro' instead. See documentation: https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model\",\n });\n } else {\n body.speech_models = [this.modelId];\n\n // Forward-looking nudge: universal-3-5-pro is AssemblyAI's latest\n // flagship and is set to replace universal-3-pro. Not a deprecation —\n // both models still work — so this is an informational warning only.\n if (\n this.modelId === 'universal-3-pro' ||\n this.modelId === 'universal-2'\n ) {\n const docsUrl =\n 'https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model';\n warnings.push({\n type: 'other',\n message:\n this.modelId === 'universal-3-pro'\n ? `'universal-3-5-pro' is AssemblyAI's latest flagship model and is set to replace 'universal-3-pro'. See ${docsUrl}`\n : `'universal-3-5-pro' is AssemblyAI's latest flagship model. See ${docsUrl}`,\n });\n }\n }\n\n // Add provider-specific options\n if (assemblyaiOptions) {\n body.audio_end_at = assemblyaiOptions.audioEndAt ?? undefined;\n body.audio_start_from = assemblyaiOptions.audioStartFrom ?? undefined;\n body.auto_chapters = assemblyaiOptions.autoChapters ?? undefined;\n body.auto_highlights = assemblyaiOptions.autoHighlights ?? undefined;\n body.boost_param = (assemblyaiOptions.boostParam as never) ?? undefined;\n body.content_safety = assemblyaiOptions.contentSafety ?? undefined;\n body.content_safety_confidence =\n assemblyaiOptions.contentSafetyConfidence ?? undefined;\n body.custom_spelling =\n (assemblyaiOptions.customSpelling as never) ?? undefined;\n body.disfluencies = assemblyaiOptions.disfluencies ?? undefined;\n body.entity_detection = assemblyaiOptions.entityDetection ?? undefined;\n body.filter_profanity = assemblyaiOptions.filterProfanity ?? undefined;\n body.format_text = assemblyaiOptions.formatText ?? undefined;\n body.iab_categories = assemblyaiOptions.iabCategories ?? undefined;\n body.language_code =\n (assemblyaiOptions.languageCode as never) ?? undefined;\n body.language_confidence_threshold =\n assemblyaiOptions.languageConfidenceThreshold ?? undefined;\n body.language_detection =\n assemblyaiOptions.languageDetection ?? undefined;\n body.multichannel = assemblyaiOptions.multichannel ?? undefined;\n body.punctuate = assemblyaiOptions.punctuate ?? undefined;\n body.redact_pii = assemblyaiOptions.redactPii ?? undefined;\n body.redact_pii_audio = assemblyaiOptions.redactPiiAudio ?? undefined;\n body.redact_pii_audio_quality =\n (assemblyaiOptions.redactPiiAudioQuality as never) ?? undefined;\n body.redact_pii_policies =\n (assemblyaiOptions.redactPiiPolicies as never) ?? undefined;\n body.redact_pii_sub =\n (assemblyaiOptions.redactPiiSub as never) ?? undefined;\n body.sentiment_analysis =\n assemblyaiOptions.sentimentAnalysis ?? undefined;\n body.speaker_labels = assemblyaiOptions.speakerLabels ?? undefined;\n body.speakers_expected = assemblyaiOptions.speakersExpected ?? undefined;\n body.speech_threshold = assemblyaiOptions.speechThreshold ?? undefined;\n body.summarization = assemblyaiOptions.summarization ?? undefined;\n body.summary_model =\n (assemblyaiOptions.summaryModel as never) ?? undefined;\n body.summary_type = (assemblyaiOptions.summaryType as never) ?? undefined;\n body.webhook_auth_header_name =\n assemblyaiOptions.webhookAuthHeaderName ?? undefined;\n body.webhook_auth_header_value =\n assemblyaiOptions.webhookAuthHeaderValue ?? undefined;\n body.webhook_url = assemblyaiOptions.webhookUrl ?? undefined;\n body.word_boost = assemblyaiOptions.wordBoost ?? undefined;\n body.keyterms_prompt = assemblyaiOptions.keytermsPrompt ?? undefined;\n body.prompt = assemblyaiOptions.prompt ?? undefined;\n body.temperature = assemblyaiOptions.temperature ?? undefined;\n body.remove_audio_tags = assemblyaiOptions.removeAudioTags ?? undefined;\n body.domain = assemblyaiOptions.domain ?? undefined;\n body.redact_pii_return_unredacted =\n assemblyaiOptions.redactPiiReturnUnredacted ?? undefined;\n body.redact_static_entities =\n assemblyaiOptions.redactStaticEntities ?? undefined;\n\n if (assemblyaiOptions.speakerOptions) {\n body.speaker_options = {\n min_speakers_expected:\n assemblyaiOptions.speakerOptions.minSpeakersExpected ?? undefined,\n max_speakers_expected:\n assemblyaiOptions.speakerOptions.maxSpeakersExpected ?? undefined,\n };\n }\n\n if (assemblyaiOptions.languageDetectionOptions) {\n body.language_detection_options = {\n expected_languages:\n assemblyaiOptions.languageDetectionOptions.expectedLanguages ??\n undefined,\n fallback_language:\n assemblyaiOptions.languageDetectionOptions.fallbackLanguage ??\n undefined,\n code_switching:\n assemblyaiOptions.languageDetectionOptions.codeSwitching ??\n undefined,\n code_switching_confidence_threshold:\n assemblyaiOptions.languageDetectionOptions\n .codeSwitchingConfidenceThreshold ?? undefined,\n };\n }\n\n if (assemblyaiOptions.redactPiiAudioOptions) {\n body.redact_pii_audio_options = {\n return_redacted_no_speech_audio:\n assemblyaiOptions.redactPiiAudioOptions\n .returnRedactedNoSpeechAudio ?? undefined,\n override_audio_redaction_method:\n assemblyaiOptions.redactPiiAudioOptions\n .overrideAudioRedactionMethod ?? undefined,\n };\n }\n\n const deprecatedBoostOptions: string[] = [];\n if (assemblyaiOptions.wordBoost != null) {\n deprecatedBoostOptions.push('wordBoost');\n }\n if (assemblyaiOptions.boostParam != null) {\n deprecatedBoostOptions.push('boostParam');\n }\n if (deprecatedBoostOptions.length > 0) {\n warnings.push({\n type: 'other',\n message: `${deprecatedBoostOptions.join(', ')} ${\n deprecatedBoostOptions.length > 1 ? 'are' : 'is'\n } deprecated and rejected by 'universal-3-pro' / 'universal-3-5-pro' and 'slam-1'. Use 'keytermsPrompt' instead.`,\n });\n }\n\n // The following options only take effect alongside a prerequisite\n // option; without it AssemblyAI either rejects the request (400) or\n // silently ignores the option. Warn rather than mutate user input.\n if (\n (assemblyaiOptions.redactPiiReturnUnredacted != null ||\n assemblyaiOptions.redactStaticEntities != null) &&\n !assemblyaiOptions.redactPii\n ) {\n warnings.push({\n type: 'other',\n message:\n \"'redactPiiReturnUnredacted' and 'redactStaticEntities' require 'redactPii' to be enabled; AssemblyAI rejects the request otherwise.\",\n });\n }\n if (\n assemblyaiOptions.redactPiiAudioOptions != null &&\n !assemblyaiOptions.redactPiiAudio\n ) {\n warnings.push({\n type: 'other',\n message:\n \"'redactPiiAudioOptions' only applies when 'redactPiiAudio' is enabled; it is otherwise ignored.\",\n });\n }\n if (\n assemblyaiOptions.languageCode != null &&\n assemblyaiOptions.languageDetection\n ) {\n warnings.push({\n type: 'other',\n message:\n \"'languageDetection' cannot be combined with an explicit 'languageCode'; AssemblyAI rejects requests that set both.\",\n });\n }\n }\n\n return {\n body,\n warnings,\n };\n }\n\n /**\n * Polls the given transcript until we have a status other than `processing` or `queued`.\n *\n * @see https://www.assemblyai.com/docs/getting-started/transcribe-an-audio-file#step-33\n */\n private async waitForCompletion(\n transcriptId: string,\n headers: Record<string, string | undefined> | undefined,\n abortSignal?: AbortSignal,\n ): Promise<{\n transcript: z.infer<typeof assemblyaiTranscriptionResponseSchema>;\n rawTranscript: unknown;\n responseHeaders: Record<string, string>;\n }> {\n const pollingInterval =\n this.config.pollingInterval ?? this.POLLING_INTERVAL_MS;\n\n // Honor a caller-provided fetch (proxy, auth injection, tests) for the\n // polling GETs, matching the upload/submit calls that use config.fetch.\n const fetchImpl = this.config.fetch ?? globalThis.fetch;\n\n while (true) {\n if (abortSignal?.aborted) {\n throw new Error('Transcription request was aborted');\n }\n\n const response = await fetchImpl(\n this.config.url({\n path: `/v2/transcript/${transcriptId}`,\n modelId: this.modelId,\n }),\n {\n method: 'GET',\n headers: combineHeaders(\n this.config.headers(),\n headers,\n ) as HeadersInit,\n signal: abortSignal,\n },\n );\n\n if (!response.ok) {\n throw await assemblyaiFailedResponseHandler({\n response,\n url: this.config.url({\n path: `/v2/transcript/${transcriptId}`,\n modelId: this.modelId,\n }),\n requestBodyValues: {},\n });\n }\n\n const rawTranscript = await response.json();\n const transcript =\n assemblyaiTranscriptionResponseSchema.parse(rawTranscript);\n\n if (transcript.status === 'completed') {\n return {\n transcript,\n rawTranscript,\n responseHeaders: extractResponseHeaders(response),\n };\n }\n\n if (transcript.status === 'error') {\n throw new Error(\n `Transcription failed: ${transcript.error ?? 'Unknown error'}`,\n );\n }\n\n await new Promise(resolve => setTimeout(resolve, pollingInterval));\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\n const { value: uploadResponse } = await postToApi({\n url: this.config.url({\n path: '/v2/upload',\n modelId: '',\n }),\n headers: {\n 'Content-Type': 'application/octet-stream',\n ...combineHeaders(this.config.headers(), options.headers),\n },\n body: {\n content: options.audio,\n values: options.audio,\n },\n failedResponseHandler: assemblyaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n assemblyaiUploadResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { body, warnings } = await this.getArgs(options);\n\n const { value: submitResponse } = await postJsonToApi({\n url: this.config.url({\n path: '/v2/transcript',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n audio_url: uploadResponse.upload_url,\n },\n failedResponseHandler: assemblyaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n assemblyaiSubmitResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { transcript, rawTranscript, responseHeaders } =\n await this.waitForCompletion(\n submitResponse.id,\n options.headers,\n options.abortSignal,\n );\n\n // Surface diarization and audio-intelligence results that the AI SDK's\n // `segments` shape can't represent, keyed under `assemblyai`. Presence is\n // gated on the parsed transcript, but values are taken from the raw\n // response so no fields are stripped by the schema.\n //\n // NOTE: timings inside these objects (e.g. `utterances[].start`) are in\n // milliseconds, matching the AssemblyAI API — unlike the top-level\n // `segments`, whose `startSecond`/`endSecond` are in seconds.\n const raw = (rawTranscript ?? {}) as Record<string, unknown>;\n const assemblyaiMetadata: Record<string, unknown> = {};\n if (transcript.utterances != null) {\n assemblyaiMetadata.utterances = raw.utterances;\n }\n if (transcript.sentiment_analysis_results != null) {\n assemblyaiMetadata.sentimentAnalysisResults =\n raw.sentiment_analysis_results;\n }\n if (transcript.entities != null) {\n assemblyaiMetadata.entities = raw.entities;\n }\n if (transcript.content_safety_labels != null) {\n assemblyaiMetadata.contentSafetyLabels = raw.content_safety_labels;\n }\n if (transcript.iab_categories_result != null) {\n assemblyaiMetadata.iabCategoriesResult = raw.iab_categories_result;\n }\n if (transcript.auto_highlights_result != null) {\n assemblyaiMetadata.autoHighlightsResult = raw.auto_highlights_result;\n }\n\n const lastWordEndMs = transcript.words?.at(-1)?.end;\n\n return {\n text: transcript.text ?? '',\n // AssemblyAI returns word timings in milliseconds; the AI SDK reports\n // segment timings in seconds.\n segments:\n transcript.words?.map(word => ({\n text: word.text,\n startSecond: word.start / 1000,\n endSecond: word.end / 1000,\n })) ?? [],\n language: transcript.language_code ?? undefined,\n durationInSeconds:\n transcript.audio_duration ??\n (lastWordEndMs != null ? lastWordEndMs / 1000 : undefined),\n warnings,\n ...(Object.keys(assemblyaiMetadata).length > 0 && {\n providerMetadata: {\n assemblyai: assemblyaiMetadata,\n } as SharedV3ProviderMetadata,\n }),\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders, // Headers from final GET request\n body: rawTranscript, // Full raw response from final GET request\n },\n };\n }\n}\n\nconst assemblyaiUploadResponseSchema = z.object({\n upload_url: z.string(),\n});\n\nconst assemblyaiSubmitResponseSchema = z.object({\n id: z.string(),\n status: z.enum(['queued', 'processing', 'completed', 'error']),\n});\n\nconst assemblyaiWordSchema = z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n confidence: z.number().nullish(),\n // Speaker label (e.g. 'A', 'B') when speaker diarization is enabled, else null.\n speaker: z.string().nullish(),\n channel: z.string().nullish(),\n});\n\nconst assemblyaiTranscriptionResponseSchema = z.object({\n id: z.string(),\n status: z.enum(['queued', 'processing', 'completed', 'error']),\n text: z.string().nullish(),\n language_code: z.string().nullish(),\n speech_model_used: z.string().nullish(),\n words: z.array(assemblyaiWordSchema).nullish(),\n // Speaker-diarized utterances (present when `speaker_labels` is enabled).\n utterances: z\n .array(\n z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n confidence: z.number().nullish(),\n speaker: z.string().nullish(),\n channel: z.string().nullish(),\n words: z.array(assemblyaiWordSchema).nullish(),\n }),\n )\n .nullish(),\n // Audio-intelligence results, present only when the matching feature is\n // enabled. Kept intentionally permissive (the full structures are also\n // available on the raw `response.body`).\n sentiment_analysis_results: z\n .array(\n z.object({\n text: z.string(),\n start: z.number().nullish(),\n end: z.number().nullish(),\n sentiment: z.string(),\n confidence: z.number().nullish(),\n speaker: z.string().nullish(),\n }),\n )\n .nullish(),\n entities: z\n .array(\n z.object({\n entity_type: z.string(),\n text: z.string(),\n start: z.number().nullish(),\n end: z.number().nullish(),\n }),\n )\n .nullish(),\n content_safety_labels: z.record(z.string(), z.any()).nullish(),\n iab_categories_result: z.record(z.string(), z.any()).nullish(),\n auto_highlights_result: z.record(z.string(), z.any()).nullish(),\n audio_duration: z.number().nullish(),\n error: z.string().nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const assemblyaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type AssemblyAIErrorData = z.infer<typeof assemblyaiErrorDataSchema>;\n\nexport const assemblyaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: assemblyaiErrorDataSchema,\n errorToMessage: data => data.error.message,\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"]}
|
package/dist/index.mjs
CHANGED
|
@@ -51,8 +51,12 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
51
51
|
*/
|
|
52
52
|
autoHighlights: z2.boolean().nullish(),
|
|
53
53
|
/**
|
|
54
|
-
* Boost parameter for
|
|
54
|
+
* Boost parameter for word boost (used with `wordBoost`).
|
|
55
55
|
* Allowed values: 'low', 'default', 'high'.
|
|
56
|
+
*
|
|
57
|
+
* @deprecated Only applies to the deprecated `wordBoost` option. Use
|
|
58
|
+
* `keytermsPrompt` instead, which works with the recommended `universal-*`
|
|
59
|
+
* models.
|
|
56
60
|
*/
|
|
57
61
|
boostParam: z2.string().nullish(),
|
|
58
62
|
/**
|
|
@@ -76,6 +80,11 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
76
80
|
* Whether to include filler words (um, uh, etc.) in the transcription.
|
|
77
81
|
*/
|
|
78
82
|
disfluencies: z2.boolean().nullish(),
|
|
83
|
+
/**
|
|
84
|
+
* Enable a domain-specific model to improve accuracy for specialized
|
|
85
|
+
* terminology. Currently supports `'medical-v1'` (Medical Mode).
|
|
86
|
+
*/
|
|
87
|
+
domain: z2.string().nullish(),
|
|
79
88
|
/**
|
|
80
89
|
* Whether to enable entity detection.
|
|
81
90
|
*/
|
|
@@ -92,6 +101,13 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
92
101
|
* Whether to enable IAB categories detection.
|
|
93
102
|
*/
|
|
94
103
|
iabCategories: z2.boolean().nullish(),
|
|
104
|
+
/**
|
|
105
|
+
* Domain-specific keyterms to boost recognition for (max 6 words per phrase).
|
|
106
|
+
* Replaces `wordBoost` for newer models: supported by `universal-3-pro` /
|
|
107
|
+
* `universal-3-5-pro` and `slam-1` (and `universal-2` when metaphone is
|
|
108
|
+
* enabled for the account).
|
|
109
|
+
*/
|
|
110
|
+
keytermsPrompt: z2.array(z2.string()).nullish(),
|
|
95
111
|
/**
|
|
96
112
|
* Language code for the transcription.
|
|
97
113
|
*/
|
|
@@ -104,10 +120,28 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
104
120
|
* Whether to enable language detection.
|
|
105
121
|
*/
|
|
106
122
|
languageDetection: z2.boolean().nullish(),
|
|
123
|
+
/**
|
|
124
|
+
* Options for automatic language detection.
|
|
125
|
+
*/
|
|
126
|
+
languageDetectionOptions: z2.object({
|
|
127
|
+
/** List of languages expected in the audio file. */
|
|
128
|
+
expectedLanguages: z2.array(z2.string()).nullish(),
|
|
129
|
+
/** Fallback language if the detected language is not expected. */
|
|
130
|
+
fallbackLanguage: z2.string().nullish(),
|
|
131
|
+
/** Whether code switching should be detected. */
|
|
132
|
+
codeSwitching: z2.boolean().nullish(),
|
|
133
|
+
/** Confidence threshold for code switching detection (0-1). */
|
|
134
|
+
codeSwitchingConfidenceThreshold: z2.number().min(0).max(1).nullish()
|
|
135
|
+
}).nullish(),
|
|
107
136
|
/**
|
|
108
137
|
* Whether to process audio as multichannel.
|
|
109
138
|
*/
|
|
110
139
|
multichannel: z2.boolean().nullish(),
|
|
140
|
+
/**
|
|
141
|
+
* Provide natural-language context (up to 1,500 words) to steer the model.
|
|
142
|
+
* Only supported by `universal-3-pro` / `universal-3-5-pro` and `slam-1`.
|
|
143
|
+
*/
|
|
144
|
+
prompt: z2.string().nullish(),
|
|
111
145
|
/**
|
|
112
146
|
* Whether to add punctuation to the transcription.
|
|
113
147
|
*/
|
|
@@ -120,6 +154,15 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
120
154
|
* Whether to redact PII in the audio file.
|
|
121
155
|
*/
|
|
122
156
|
redactPiiAudio: z2.boolean().nullish(),
|
|
157
|
+
/**
|
|
158
|
+
* Options for PII-redacted audio files. Requires `redactPiiAudio`.
|
|
159
|
+
*/
|
|
160
|
+
redactPiiAudioOptions: z2.object({
|
|
161
|
+
/** Return redacted audio even for files without detected speech. */
|
|
162
|
+
returnRedactedNoSpeechAudio: z2.boolean().nullish(),
|
|
163
|
+
/** Redaction method; set to `'silence'` to replace PII with silence. */
|
|
164
|
+
overrideAudioRedactionMethod: z2.enum(["silence"]).nullish()
|
|
165
|
+
}).nullish(),
|
|
123
166
|
/**
|
|
124
167
|
* Audio format for PII redaction.
|
|
125
168
|
*/
|
|
@@ -128,10 +171,26 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
128
171
|
* List of PII types to redact.
|
|
129
172
|
*/
|
|
130
173
|
redactPiiPolicies: z2.array(z2.string()).nullish(),
|
|
174
|
+
/**
|
|
175
|
+
* Return the original unredacted transcript alongside the redacted one.
|
|
176
|
+
* Requires `redactPii`.
|
|
177
|
+
*/
|
|
178
|
+
redactPiiReturnUnredacted: z2.boolean().nullish(),
|
|
131
179
|
/**
|
|
132
180
|
* Substitution method for redacted PII.
|
|
133
181
|
*/
|
|
134
182
|
redactPiiSub: z2.string().nullish(),
|
|
183
|
+
/**
|
|
184
|
+
* Map of user-defined labels to exact terms to redact, e.g.
|
|
185
|
+
* `{ INTERNAL_TOOL: ['Bearclaw'] }`. Applied on top of standard PII redaction
|
|
186
|
+
* using `redactPiiSub`. Requires `redactPii`.
|
|
187
|
+
*/
|
|
188
|
+
redactStaticEntities: z2.record(z2.string(), z2.array(z2.string())).nullish(),
|
|
189
|
+
/**
|
|
190
|
+
* Remove inline annotations from rich transcripts. `'all'` removes all inline
|
|
191
|
+
* annotations; `'speaker'` removes only speaker cues. Universal-3 Pro models.
|
|
192
|
+
*/
|
|
193
|
+
removeAudioTags: z2.enum(["all", "speaker"]).nullish(),
|
|
135
194
|
/**
|
|
136
195
|
* Whether to enable sentiment analysis.
|
|
137
196
|
*/
|
|
@@ -140,6 +199,15 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
140
199
|
* Whether to identify different speakers in the audio.
|
|
141
200
|
*/
|
|
142
201
|
speakerLabels: z2.boolean().nullish(),
|
|
202
|
+
/**
|
|
203
|
+
* Options for speaker diarization, e.g. a range of possible speakers.
|
|
204
|
+
*/
|
|
205
|
+
speakerOptions: z2.object({
|
|
206
|
+
/** Minimum number of speakers expected in the audio file. */
|
|
207
|
+
minSpeakersExpected: z2.number().int().nullish(),
|
|
208
|
+
/** Maximum number of speakers expected in the audio file. */
|
|
209
|
+
maxSpeakersExpected: z2.number().int().nullish()
|
|
210
|
+
}).nullish(),
|
|
143
211
|
/**
|
|
144
212
|
* Number of speakers expected in the audio.
|
|
145
213
|
*/
|
|
@@ -160,6 +228,10 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
160
228
|
* Type of summary to generate.
|
|
161
229
|
*/
|
|
162
230
|
summaryType: z2.string().nullish(),
|
|
231
|
+
/**
|
|
232
|
+
* Sampling temperature (0-1) controlling randomness. Universal-3 Pro models.
|
|
233
|
+
*/
|
|
234
|
+
temperature: z2.number().min(0).max(1).nullish(),
|
|
163
235
|
/**
|
|
164
236
|
* Name of the authentication header for webhook requests.
|
|
165
237
|
*/
|
|
@@ -174,6 +246,10 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
|
|
|
174
246
|
webhookUrl: z2.string().nullish(),
|
|
175
247
|
/**
|
|
176
248
|
* List of words to boost recognition for.
|
|
249
|
+
*
|
|
250
|
+
* @deprecated `wordBoost` is rejected by `universal-3-pro` /
|
|
251
|
+
* `universal-3-5-pro` and `slam-1` (it only works on `universal-2`/`best`).
|
|
252
|
+
* Use `keytermsPrompt` instead.
|
|
177
253
|
*/
|
|
178
254
|
wordBoost: z2.array(z2.string()).nullish()
|
|
179
255
|
});
|
|
@@ -190,16 +266,30 @@ var AssemblyAITranscriptionModel = class {
|
|
|
190
266
|
async getArgs({
|
|
191
267
|
providerOptions
|
|
192
268
|
}) {
|
|
193
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H;
|
|
269
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W;
|
|
194
270
|
const warnings = [];
|
|
195
271
|
const assemblyaiOptions = await parseProviderOptions({
|
|
196
272
|
provider: "assemblyai",
|
|
197
273
|
providerOptions,
|
|
198
274
|
schema: assemblyaiTranscriptionModelOptionsSchema
|
|
199
275
|
});
|
|
200
|
-
const body = {
|
|
201
|
-
|
|
202
|
-
|
|
276
|
+
const body = {};
|
|
277
|
+
if (this.modelId === "best") {
|
|
278
|
+
body.speech_model = this.modelId;
|
|
279
|
+
warnings.push({
|
|
280
|
+
type: "other",
|
|
281
|
+
message: "The 'best' model is a legacy AssemblyAI model. Use 'universal-3-5-pro' instead. See documentation: https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model"
|
|
282
|
+
});
|
|
283
|
+
} else {
|
|
284
|
+
body.speech_models = [this.modelId];
|
|
285
|
+
if (this.modelId === "universal-3-pro" || this.modelId === "universal-2") {
|
|
286
|
+
const docsUrl = "https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model";
|
|
287
|
+
warnings.push({
|
|
288
|
+
type: "other",
|
|
289
|
+
message: this.modelId === "universal-3-pro" ? `'universal-3-5-pro' is AssemblyAI's latest flagship model and is set to replace 'universal-3-pro'. See ${docsUrl}` : `'universal-3-5-pro' is AssemblyAI's latest flagship model. See ${docsUrl}`
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
}
|
|
203
293
|
if (assemblyaiOptions) {
|
|
204
294
|
body.audio_end_at = (_a = assemblyaiOptions.audioEndAt) != null ? _a : void 0;
|
|
205
295
|
body.audio_start_from = (_b = assemblyaiOptions.audioStartFrom) != null ? _b : void 0;
|
|
@@ -235,6 +325,64 @@ var AssemblyAITranscriptionModel = class {
|
|
|
235
325
|
body.webhook_auth_header_value = (_F = assemblyaiOptions.webhookAuthHeaderValue) != null ? _F : void 0;
|
|
236
326
|
body.webhook_url = (_G = assemblyaiOptions.webhookUrl) != null ? _G : void 0;
|
|
237
327
|
body.word_boost = (_H = assemblyaiOptions.wordBoost) != null ? _H : void 0;
|
|
328
|
+
body.keyterms_prompt = (_I = assemblyaiOptions.keytermsPrompt) != null ? _I : void 0;
|
|
329
|
+
body.prompt = (_J = assemblyaiOptions.prompt) != null ? _J : void 0;
|
|
330
|
+
body.temperature = (_K = assemblyaiOptions.temperature) != null ? _K : void 0;
|
|
331
|
+
body.remove_audio_tags = (_L = assemblyaiOptions.removeAudioTags) != null ? _L : void 0;
|
|
332
|
+
body.domain = (_M = assemblyaiOptions.domain) != null ? _M : void 0;
|
|
333
|
+
body.redact_pii_return_unredacted = (_N = assemblyaiOptions.redactPiiReturnUnredacted) != null ? _N : void 0;
|
|
334
|
+
body.redact_static_entities = (_O = assemblyaiOptions.redactStaticEntities) != null ? _O : void 0;
|
|
335
|
+
if (assemblyaiOptions.speakerOptions) {
|
|
336
|
+
body.speaker_options = {
|
|
337
|
+
min_speakers_expected: (_P = assemblyaiOptions.speakerOptions.minSpeakersExpected) != null ? _P : void 0,
|
|
338
|
+
max_speakers_expected: (_Q = assemblyaiOptions.speakerOptions.maxSpeakersExpected) != null ? _Q : void 0
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
if (assemblyaiOptions.languageDetectionOptions) {
|
|
342
|
+
body.language_detection_options = {
|
|
343
|
+
expected_languages: (_R = assemblyaiOptions.languageDetectionOptions.expectedLanguages) != null ? _R : void 0,
|
|
344
|
+
fallback_language: (_S = assemblyaiOptions.languageDetectionOptions.fallbackLanguage) != null ? _S : void 0,
|
|
345
|
+
code_switching: (_T = assemblyaiOptions.languageDetectionOptions.codeSwitching) != null ? _T : void 0,
|
|
346
|
+
code_switching_confidence_threshold: (_U = assemblyaiOptions.languageDetectionOptions.codeSwitchingConfidenceThreshold) != null ? _U : void 0
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
if (assemblyaiOptions.redactPiiAudioOptions) {
|
|
350
|
+
body.redact_pii_audio_options = {
|
|
351
|
+
return_redacted_no_speech_audio: (_V = assemblyaiOptions.redactPiiAudioOptions.returnRedactedNoSpeechAudio) != null ? _V : void 0,
|
|
352
|
+
override_audio_redaction_method: (_W = assemblyaiOptions.redactPiiAudioOptions.overrideAudioRedactionMethod) != null ? _W : void 0
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
const deprecatedBoostOptions = [];
|
|
356
|
+
if (assemblyaiOptions.wordBoost != null) {
|
|
357
|
+
deprecatedBoostOptions.push("wordBoost");
|
|
358
|
+
}
|
|
359
|
+
if (assemblyaiOptions.boostParam != null) {
|
|
360
|
+
deprecatedBoostOptions.push("boostParam");
|
|
361
|
+
}
|
|
362
|
+
if (deprecatedBoostOptions.length > 0) {
|
|
363
|
+
warnings.push({
|
|
364
|
+
type: "other",
|
|
365
|
+
message: `${deprecatedBoostOptions.join(", ")} ${deprecatedBoostOptions.length > 1 ? "are" : "is"} deprecated and rejected by 'universal-3-pro' / 'universal-3-5-pro' and 'slam-1'. Use 'keytermsPrompt' instead.`
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
if ((assemblyaiOptions.redactPiiReturnUnredacted != null || assemblyaiOptions.redactStaticEntities != null) && !assemblyaiOptions.redactPii) {
|
|
369
|
+
warnings.push({
|
|
370
|
+
type: "other",
|
|
371
|
+
message: "'redactPiiReturnUnredacted' and 'redactStaticEntities' require 'redactPii' to be enabled; AssemblyAI rejects the request otherwise."
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
if (assemblyaiOptions.redactPiiAudioOptions != null && !assemblyaiOptions.redactPiiAudio) {
|
|
375
|
+
warnings.push({
|
|
376
|
+
type: "other",
|
|
377
|
+
message: "'redactPiiAudioOptions' only applies when 'redactPiiAudio' is enabled; it is otherwise ignored."
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
if (assemblyaiOptions.languageCode != null && assemblyaiOptions.languageDetection) {
|
|
381
|
+
warnings.push({
|
|
382
|
+
type: "other",
|
|
383
|
+
message: "'languageDetection' cannot be combined with an explicit 'languageCode'; AssemblyAI rejects requests that set both."
|
|
384
|
+
});
|
|
385
|
+
}
|
|
238
386
|
}
|
|
239
387
|
return {
|
|
240
388
|
body,
|
|
@@ -247,13 +395,14 @@ var AssemblyAITranscriptionModel = class {
|
|
|
247
395
|
* @see https://www.assemblyai.com/docs/getting-started/transcribe-an-audio-file#step-33
|
|
248
396
|
*/
|
|
249
397
|
async waitForCompletion(transcriptId, headers, abortSignal) {
|
|
250
|
-
var _a, _b;
|
|
398
|
+
var _a, _b, _c;
|
|
251
399
|
const pollingInterval = (_a = this.config.pollingInterval) != null ? _a : this.POLLING_INTERVAL_MS;
|
|
400
|
+
const fetchImpl = (_b = this.config.fetch) != null ? _b : globalThis.fetch;
|
|
252
401
|
while (true) {
|
|
253
402
|
if (abortSignal == null ? void 0 : abortSignal.aborted) {
|
|
254
403
|
throw new Error("Transcription request was aborted");
|
|
255
404
|
}
|
|
256
|
-
const response = await
|
|
405
|
+
const response = await fetchImpl(
|
|
257
406
|
this.config.url({
|
|
258
407
|
path: `/v2/transcript/${transcriptId}`,
|
|
259
408
|
modelId: this.modelId
|
|
@@ -277,25 +426,25 @@ var AssemblyAITranscriptionModel = class {
|
|
|
277
426
|
requestBodyValues: {}
|
|
278
427
|
});
|
|
279
428
|
}
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
);
|
|
429
|
+
const rawTranscript = await response.json();
|
|
430
|
+
const transcript = assemblyaiTranscriptionResponseSchema.parse(rawTranscript);
|
|
283
431
|
if (transcript.status === "completed") {
|
|
284
432
|
return {
|
|
285
433
|
transcript,
|
|
434
|
+
rawTranscript,
|
|
286
435
|
responseHeaders: extractResponseHeaders(response)
|
|
287
436
|
};
|
|
288
437
|
}
|
|
289
438
|
if (transcript.status === "error") {
|
|
290
439
|
throw new Error(
|
|
291
|
-
`Transcription failed: ${(
|
|
440
|
+
`Transcription failed: ${(_c = transcript.error) != null ? _c : "Unknown error"}`
|
|
292
441
|
);
|
|
293
442
|
}
|
|
294
443
|
await new Promise((resolve) => setTimeout(resolve, pollingInterval));
|
|
295
444
|
}
|
|
296
445
|
}
|
|
297
446
|
async doGenerate(options) {
|
|
298
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j
|
|
447
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
299
448
|
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
300
449
|
const { value: uploadResponse } = await postToApi({
|
|
301
450
|
url: this.config.url({
|
|
@@ -335,28 +484,56 @@ var AssemblyAITranscriptionModel = class {
|
|
|
335
484
|
abortSignal: options.abortSignal,
|
|
336
485
|
fetch: this.config.fetch
|
|
337
486
|
});
|
|
338
|
-
const { transcript, responseHeaders } = await this.waitForCompletion(
|
|
487
|
+
const { transcript, rawTranscript, responseHeaders } = await this.waitForCompletion(
|
|
339
488
|
submitResponse.id,
|
|
340
489
|
options.headers,
|
|
341
490
|
options.abortSignal
|
|
342
491
|
);
|
|
492
|
+
const raw = rawTranscript != null ? rawTranscript : {};
|
|
493
|
+
const assemblyaiMetadata = {};
|
|
494
|
+
if (transcript.utterances != null) {
|
|
495
|
+
assemblyaiMetadata.utterances = raw.utterances;
|
|
496
|
+
}
|
|
497
|
+
if (transcript.sentiment_analysis_results != null) {
|
|
498
|
+
assemblyaiMetadata.sentimentAnalysisResults = raw.sentiment_analysis_results;
|
|
499
|
+
}
|
|
500
|
+
if (transcript.entities != null) {
|
|
501
|
+
assemblyaiMetadata.entities = raw.entities;
|
|
502
|
+
}
|
|
503
|
+
if (transcript.content_safety_labels != null) {
|
|
504
|
+
assemblyaiMetadata.contentSafetyLabels = raw.content_safety_labels;
|
|
505
|
+
}
|
|
506
|
+
if (transcript.iab_categories_result != null) {
|
|
507
|
+
assemblyaiMetadata.iabCategoriesResult = raw.iab_categories_result;
|
|
508
|
+
}
|
|
509
|
+
if (transcript.auto_highlights_result != null) {
|
|
510
|
+
assemblyaiMetadata.autoHighlightsResult = raw.auto_highlights_result;
|
|
511
|
+
}
|
|
512
|
+
const lastWordEndMs = (_e = (_d = transcript.words) == null ? void 0 : _d.at(-1)) == null ? void 0 : _e.end;
|
|
343
513
|
return {
|
|
344
|
-
text: (
|
|
345
|
-
|
|
514
|
+
text: (_f = transcript.text) != null ? _f : "",
|
|
515
|
+
// AssemblyAI returns word timings in milliseconds; the AI SDK reports
|
|
516
|
+
// segment timings in seconds.
|
|
517
|
+
segments: (_h = (_g = transcript.words) == null ? void 0 : _g.map((word) => ({
|
|
346
518
|
text: word.text,
|
|
347
|
-
startSecond: word.start,
|
|
348
|
-
endSecond: word.end
|
|
349
|
-
}))) != null ?
|
|
350
|
-
language: (
|
|
351
|
-
durationInSeconds: (
|
|
519
|
+
startSecond: word.start / 1e3,
|
|
520
|
+
endSecond: word.end / 1e3
|
|
521
|
+
}))) != null ? _h : [],
|
|
522
|
+
language: (_i = transcript.language_code) != null ? _i : void 0,
|
|
523
|
+
durationInSeconds: (_j = transcript.audio_duration) != null ? _j : lastWordEndMs != null ? lastWordEndMs / 1e3 : void 0,
|
|
352
524
|
warnings,
|
|
525
|
+
...Object.keys(assemblyaiMetadata).length > 0 && {
|
|
526
|
+
providerMetadata: {
|
|
527
|
+
assemblyai: assemblyaiMetadata
|
|
528
|
+
}
|
|
529
|
+
},
|
|
353
530
|
response: {
|
|
354
531
|
timestamp: currentDate,
|
|
355
532
|
modelId: this.modelId,
|
|
356
533
|
headers: responseHeaders,
|
|
357
534
|
// Headers from final GET request
|
|
358
|
-
body:
|
|
359
|
-
//
|
|
535
|
+
body: rawTranscript
|
|
536
|
+
// Full raw response from final GET request
|
|
360
537
|
}
|
|
361
538
|
};
|
|
362
539
|
}
|
|
@@ -368,24 +545,64 @@ var assemblyaiSubmitResponseSchema = z2.object({
|
|
|
368
545
|
id: z2.string(),
|
|
369
546
|
status: z2.enum(["queued", "processing", "completed", "error"])
|
|
370
547
|
});
|
|
548
|
+
var assemblyaiWordSchema = z2.object({
|
|
549
|
+
start: z2.number(),
|
|
550
|
+
end: z2.number(),
|
|
551
|
+
text: z2.string(),
|
|
552
|
+
confidence: z2.number().nullish(),
|
|
553
|
+
// Speaker label (e.g. 'A', 'B') when speaker diarization is enabled, else null.
|
|
554
|
+
speaker: z2.string().nullish(),
|
|
555
|
+
channel: z2.string().nullish()
|
|
556
|
+
});
|
|
371
557
|
var assemblyaiTranscriptionResponseSchema = z2.object({
|
|
372
558
|
id: z2.string(),
|
|
373
559
|
status: z2.enum(["queued", "processing", "completed", "error"]),
|
|
374
560
|
text: z2.string().nullish(),
|
|
375
561
|
language_code: z2.string().nullish(),
|
|
376
|
-
|
|
562
|
+
speech_model_used: z2.string().nullish(),
|
|
563
|
+
words: z2.array(assemblyaiWordSchema).nullish(),
|
|
564
|
+
// Speaker-diarized utterances (present when `speaker_labels` is enabled).
|
|
565
|
+
utterances: z2.array(
|
|
377
566
|
z2.object({
|
|
378
567
|
start: z2.number(),
|
|
379
568
|
end: z2.number(),
|
|
380
|
-
text: z2.string()
|
|
569
|
+
text: z2.string(),
|
|
570
|
+
confidence: z2.number().nullish(),
|
|
571
|
+
speaker: z2.string().nullish(),
|
|
572
|
+
channel: z2.string().nullish(),
|
|
573
|
+
words: z2.array(assemblyaiWordSchema).nullish()
|
|
574
|
+
})
|
|
575
|
+
).nullish(),
|
|
576
|
+
// Audio-intelligence results, present only when the matching feature is
|
|
577
|
+
// enabled. Kept intentionally permissive (the full structures are also
|
|
578
|
+
// available on the raw `response.body`).
|
|
579
|
+
sentiment_analysis_results: z2.array(
|
|
580
|
+
z2.object({
|
|
581
|
+
text: z2.string(),
|
|
582
|
+
start: z2.number().nullish(),
|
|
583
|
+
end: z2.number().nullish(),
|
|
584
|
+
sentiment: z2.string(),
|
|
585
|
+
confidence: z2.number().nullish(),
|
|
586
|
+
speaker: z2.string().nullish()
|
|
587
|
+
})
|
|
588
|
+
).nullish(),
|
|
589
|
+
entities: z2.array(
|
|
590
|
+
z2.object({
|
|
591
|
+
entity_type: z2.string(),
|
|
592
|
+
text: z2.string(),
|
|
593
|
+
start: z2.number().nullish(),
|
|
594
|
+
end: z2.number().nullish()
|
|
381
595
|
})
|
|
382
596
|
).nullish(),
|
|
597
|
+
content_safety_labels: z2.record(z2.string(), z2.any()).nullish(),
|
|
598
|
+
iab_categories_result: z2.record(z2.string(), z2.any()).nullish(),
|
|
599
|
+
auto_highlights_result: z2.record(z2.string(), z2.any()).nullish(),
|
|
383
600
|
audio_duration: z2.number().nullish(),
|
|
384
601
|
error: z2.string().nullish()
|
|
385
602
|
});
|
|
386
603
|
|
|
387
604
|
// src/version.ts
|
|
388
|
-
var VERSION = true ? "2.0.
|
|
605
|
+
var VERSION = true ? "2.0.43" : "0.0.0-test";
|
|
389
606
|
|
|
390
607
|
// src/assemblyai-provider.ts
|
|
391
608
|
function createAssemblyAI(options = {}) {
|