@agent-media/providers 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/local/index.d.ts +3 -3
- package/dist/local/index.d.ts.map +1 -1
- package/dist/local/index.js +22 -4
- package/dist/local/index.js.map +1 -1
- package/dist/transformers/background-removal.d.ts +10 -0
- package/dist/transformers/background-removal.d.ts.map +1 -0
- package/dist/transformers/background-removal.js +112 -0
- package/dist/transformers/background-removal.js.map +1 -0
- package/dist/transformers/index.d.ts +15 -0
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +52 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/transcribe.d.ts +10 -0
- package/dist/transformers/transcribe.d.ts.map +1 -0
- package/dist/transformers/transcribe.js +140 -0
- package/dist/transformers/transcribe.js.map +1 -0
- package/package.json +10 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { localProvider } from './local/index.js';
|
|
2
|
+
export { transformersProvider } from './transformers/index.js';
|
|
2
3
|
export { falProvider } from './fal/index.js';
|
|
3
4
|
export { replicateProvider } from './replicate/index.js';
|
|
4
5
|
export { runpodProvider } from './runpod/index.js';
|
|
@@ -7,12 +8,15 @@ export { runpodProvider } from './runpod/index.js';
|
|
|
7
8
|
*/
|
|
8
9
|
export declare const providers: {
|
|
9
10
|
local: import("@agent-media/core").MediaProvider;
|
|
11
|
+
transformers: import("@agent-media/core").MediaProvider;
|
|
10
12
|
fal: import("@agent-media/core").MediaProvider;
|
|
11
13
|
replicate: import("@agent-media/core").MediaProvider;
|
|
12
14
|
runpod: import("@agent-media/core").MediaProvider;
|
|
13
15
|
};
|
|
14
16
|
/**
|
|
15
17
|
* Register all providers with the global registry
|
|
18
|
+
* Order matters: local providers (local, transformers) are registered first
|
|
19
|
+
* so they are preferred for actions they support when no explicit provider is specified.
|
|
16
20
|
*/
|
|
17
21
|
export declare function registerAllProviders(): void;
|
|
18
22
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { globalRegistry } from '@agent-media/core';
|
|
2
2
|
import { localProvider } from './local/index.js';
|
|
3
|
+
import { transformersProvider } from './transformers/index.js';
|
|
3
4
|
import { falProvider } from './fal/index.js';
|
|
4
5
|
import { replicateProvider } from './replicate/index.js';
|
|
5
6
|
import { runpodProvider } from './runpod/index.js';
|
|
6
7
|
// Export individual providers
|
|
7
8
|
export { localProvider } from './local/index.js';
|
|
9
|
+
export { transformersProvider } from './transformers/index.js';
|
|
8
10
|
export { falProvider } from './fal/index.js';
|
|
9
11
|
export { replicateProvider } from './replicate/index.js';
|
|
10
12
|
export { runpodProvider } from './runpod/index.js';
|
|
@@ -13,15 +15,19 @@ export { runpodProvider } from './runpod/index.js';
|
|
|
13
15
|
*/
|
|
14
16
|
export const providers = {
|
|
15
17
|
local: localProvider,
|
|
18
|
+
transformers: transformersProvider,
|
|
16
19
|
fal: falProvider,
|
|
17
20
|
replicate: replicateProvider,
|
|
18
21
|
runpod: runpodProvider,
|
|
19
22
|
};
|
|
20
23
|
/**
|
|
21
24
|
* Register all providers with the global registry
|
|
25
|
+
* Order matters: local providers (local, transformers) are registered first
|
|
26
|
+
* so they are preferred for actions they support when no explicit provider is specified.
|
|
22
27
|
*/
|
|
23
28
|
export function registerAllProviders() {
|
|
24
29
|
globalRegistry.register(localProvider);
|
|
30
|
+
globalRegistry.register(transformersProvider);
|
|
25
31
|
globalRegistry.register(falProvider);
|
|
26
32
|
globalRegistry.register(replicateProvider);
|
|
27
33
|
globalRegistry.register(runpodProvider);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,aAAa;IACpB,GAAG,EAAE,WAAW;IAChB,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,aAAa;IACpB,YAAY,EAAE,oBAAoB;IAClC,GAAG,EAAE,WAAW;IAChB,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC9C,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC3C,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/local/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { MediaProvider } from '@agent-media/core';
|
|
2
2
|
/**
|
|
3
|
-
* Local provider
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* Local provider for zero-API-key operations
|
|
4
|
+
* - Sharp: resize, convert, extend
|
|
5
|
+
* - Transformers.js: remove-background, transcribe
|
|
6
6
|
*/
|
|
7
7
|
export declare const localProvider: MediaProvider;
|
|
8
8
|
export default localProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAQd,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAQd,MAAM,mBAAmB,CAAC;AA8D3B;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,aA8C3B,CAAC;AAsOF,eAAe,aAAa,CAAC"}
|
package/dist/local/index.js
CHANGED
|
@@ -2,10 +2,14 @@ import sharp from 'sharp';
|
|
|
2
2
|
import { stat } from 'node:fs/promises';
|
|
3
3
|
import { createReadStream } from 'node:fs';
|
|
4
4
|
import { createSuccess, createError, ensureOutputDir, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
|
|
5
|
+
import { executeBackgroundRemoval } from '../transformers/background-removal.js';
|
|
6
|
+
import { executeTranscribe } from '../transformers/transcribe.js';
|
|
5
7
|
/**
|
|
6
8
|
* Actions supported by the local provider
|
|
9
|
+
* - Sharp: resize, convert, extend
|
|
10
|
+
* - Transformers.js: remove-background, transcribe
|
|
7
11
|
*/
|
|
8
|
-
const SUPPORTED_ACTIONS = ['resize', 'convert', 'extend'];
|
|
12
|
+
const SUPPORTED_ACTIONS = ['resize', 'convert', 'extend', 'remove-background', 'transcribe'];
|
|
9
13
|
/**
|
|
10
14
|
* MIME types for image formats
|
|
11
15
|
*/
|
|
@@ -43,9 +47,9 @@ async function getInputBuffer(source, isUrl) {
|
|
|
43
47
|
});
|
|
44
48
|
}
|
|
45
49
|
/**
|
|
46
|
-
* Local provider
|
|
47
|
-
*
|
|
48
|
-
*
|
|
50
|
+
* Local provider for zero-API-key operations
|
|
51
|
+
* - Sharp: resize, convert, extend
|
|
52
|
+
* - Transformers.js: remove-background, transcribe
|
|
49
53
|
*/
|
|
50
54
|
export const localProvider = {
|
|
51
55
|
name: 'local',
|
|
@@ -62,6 +66,20 @@ export const localProvider = {
|
|
|
62
66
|
return await executeConvert(actionConfig.options, context);
|
|
63
67
|
case 'extend':
|
|
64
68
|
return await executeExtend(actionConfig.options, context);
|
|
69
|
+
case 'remove-background': {
|
|
70
|
+
const result = await executeBackgroundRemoval(actionConfig.options, context);
|
|
71
|
+
if (result.ok) {
|
|
72
|
+
return { ...result, provider: 'local' };
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
case 'transcribe': {
|
|
77
|
+
const result = await executeTranscribe(actionConfig.options, context);
|
|
78
|
+
if (result.ok) {
|
|
79
|
+
return { ...result, provider: 'local' };
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
65
83
|
default:
|
|
66
84
|
return createError(ErrorCodes.INVALID_INPUT, `Action '${actionConfig.action}' not supported by local provider`);
|
|
67
85
|
}
|
package/dist/local/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAW3C,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MediaResult, ActionContext, RemoveBackgroundOptions } from '@agent-media/core';
|
|
2
|
+
/**
|
|
3
|
+
* Dispose of the cached pipeline to prevent cleanup errors
|
|
4
|
+
*/
|
|
5
|
+
export declare function disposePipeline(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Execute background removal using Transformers.js background-removal pipeline
|
|
8
|
+
*/
|
|
9
|
+
export declare function executeBackgroundRemoval(options: RemoveBackgroundOptions, context: ActionContext): Promise<MediaResult>;
|
|
10
|
+
//# sourceMappingURL=background-removal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-removal.d.ts","sourceRoot":"","sources":["../../src/transformers/background-removal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAuC3B;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AA8BD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAuEtB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { pipeline, env } from '@huggingface/transformers';
|
|
2
|
+
import sharp from 'sharp';
|
|
3
|
+
import { stat } from 'node:fs/promises';
|
|
4
|
+
import { createSuccess, createError, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
|
|
5
|
+
// Disable local model loading from disk cache check warnings
|
|
6
|
+
env.allowLocalModels = false;
|
|
7
|
+
/**
|
|
8
|
+
* Default model for background removal
|
|
9
|
+
* Xenova/modnet is publicly accessible (~25MB)
|
|
10
|
+
* briaai/RMBG-2.0 requires HuggingFace authentication
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_MODEL = 'Xenova/modnet';
|
|
13
|
+
/**
|
|
14
|
+
* Model aliases for user-friendly selection
|
|
15
|
+
*/
|
|
16
|
+
const MODEL_ALIASES = {
|
|
17
|
+
'modnet': 'Xenova/modnet',
|
|
18
|
+
'rmbg-2.0': 'briaai/RMBG-2.0',
|
|
19
|
+
'rmbg-1.4': 'briaai/RMBG-1.4',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Cache for loaded pipelines to avoid reloading models
|
|
23
|
+
*/
|
|
24
|
+
let cachedPipeline = null;
|
|
25
|
+
let cachedModelId = null;
|
|
26
|
+
/**
|
|
27
|
+
* Dispose of the cached pipeline to prevent cleanup errors
|
|
28
|
+
*/
|
|
29
|
+
export async function disposePipeline() {
|
|
30
|
+
if (cachedPipeline && typeof cachedPipeline.dispose === 'function') {
|
|
31
|
+
await cachedPipeline.dispose();
|
|
32
|
+
}
|
|
33
|
+
cachedPipeline = null;
|
|
34
|
+
cachedModelId = null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get or create pipeline for background removal
|
|
38
|
+
*/
|
|
39
|
+
async function getBackgroundRemovalPipeline(modelId) {
|
|
40
|
+
if (cachedPipeline && cachedModelId === modelId) {
|
|
41
|
+
return cachedPipeline;
|
|
42
|
+
}
|
|
43
|
+
cachedPipeline = await pipeline('background-removal', modelId, {
|
|
44
|
+
device: 'cpu',
|
|
45
|
+
});
|
|
46
|
+
cachedModelId = modelId;
|
|
47
|
+
return cachedPipeline;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolve model name from alias or use as-is
|
|
51
|
+
*/
|
|
52
|
+
function resolveModel(model) {
|
|
53
|
+
if (!model) {
|
|
54
|
+
return DEFAULT_MODEL;
|
|
55
|
+
}
|
|
56
|
+
const lowerModel = model.toLowerCase();
|
|
57
|
+
return MODEL_ALIASES[lowerModel] || model;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Execute background removal using Transformers.js background-removal pipeline
|
|
61
|
+
*/
|
|
62
|
+
export async function executeBackgroundRemoval(options, context) {
|
|
63
|
+
const { input, model } = options;
|
|
64
|
+
if (!input?.source) {
|
|
65
|
+
return createError(ErrorCodes.INVALID_INPUT, 'Input source is required for background removal');
|
|
66
|
+
}
|
|
67
|
+
const modelId = resolveModel(model);
|
|
68
|
+
try {
|
|
69
|
+
// Get or create the background removal pipeline
|
|
70
|
+
const remover = await getBackgroundRemovalPipeline(modelId);
|
|
71
|
+
// Run background removal - accepts URL or file path
|
|
72
|
+
const result = await remover(input.source);
|
|
73
|
+
// Result is an array of RawImage objects with transparency
|
|
74
|
+
const outputImage = Array.isArray(result) ? result[0] : result;
|
|
75
|
+
if (!outputImage) {
|
|
76
|
+
return createError(ErrorCodes.PROVIDER_ERROR, 'No image returned from background removal');
|
|
77
|
+
}
|
|
78
|
+
// Convert RawImage to PNG using sharp (toBlob only works in browser)
|
|
79
|
+
// RawImage has data (Uint8ClampedArray), width, height, and channels properties
|
|
80
|
+
const { data, width, height, channels } = outputImage;
|
|
81
|
+
// Create sharp instance from raw pixel data
|
|
82
|
+
const sharpInstance = sharp(Buffer.from(data.buffer), {
|
|
83
|
+
raw: {
|
|
84
|
+
width,
|
|
85
|
+
height,
|
|
86
|
+
channels: channels,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
const outputFilename = generateOutputFilename('png', 'nobg');
|
|
90
|
+
const outputPath = getOutputPath(context.outputDir, outputFilename);
|
|
91
|
+
// Save as PNG
|
|
92
|
+
await sharpInstance.png().toFile(outputPath);
|
|
93
|
+
const stats = await stat(outputPath);
|
|
94
|
+
return createSuccess({
|
|
95
|
+
mediaType: 'image',
|
|
96
|
+
action: 'remove-background',
|
|
97
|
+
provider: 'transformers',
|
|
98
|
+
outputPath: outputPath,
|
|
99
|
+
mime: 'image/png',
|
|
100
|
+
bytes: stats.size,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
105
|
+
// Provide helpful error for model download issues
|
|
106
|
+
if (message.includes('fetch') || message.includes('network')) {
|
|
107
|
+
return createError(ErrorCodes.NETWORK_ERROR, `Failed to download model ${modelId}. Ensure you have internet connectivity. Models are cached after first download.`);
|
|
108
|
+
}
|
|
109
|
+
return createError(ErrorCodes.PROVIDER_ERROR, message);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=background-removal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-removal.js","sourceRoot":"","sources":["../../src/transformers/background-removal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MediaProvider } from '@agent-media/core';
|
|
2
|
+
/**
|
|
3
|
+
* Transformers.js provider for local ML inference
|
|
4
|
+
* Uses @huggingface/transformers for zero-API-key operations
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - remove-background: Xenova/modnet (default), briaai/RMBG-2.0 (requires HF auth)
|
|
8
|
+
* - transcribe: Moonshine (default, 5x faster than Whisper), Whisper, Distil-Whisper
|
|
9
|
+
*
|
|
10
|
+
* Models are downloaded on first use and cached locally (~/.cache/huggingface/).
|
|
11
|
+
* No API keys required.
|
|
12
|
+
*/
|
|
13
|
+
export declare const transformersProvider: MediaProvider;
|
|
14
|
+
export default transformersProvider;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,mBAAmB,CAAC;AAgB3B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAmClC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createError, ensureOutputDir, ErrorCodes } from '@agent-media/core';
|
|
2
|
+
import { executeBackgroundRemoval } from './background-removal.js';
|
|
3
|
+
import { executeTranscribe } from './transcribe.js';
|
|
4
|
+
/**
|
|
5
|
+
* Note: ONNX runtime on macOS may cause a mutex error during cleanup.
|
|
6
|
+
* This does not affect output - the JSON result and saved files are correct.
|
|
7
|
+
* The error "mutex lock failed: Invalid argument" can be safely ignored.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Actions supported by the transformers provider
|
|
11
|
+
*/
|
|
12
|
+
const SUPPORTED_ACTIONS = ['remove-background', 'transcribe'];
|
|
13
|
+
/**
|
|
14
|
+
* Transformers.js provider for local ML inference
|
|
15
|
+
* Uses @huggingface/transformers for zero-API-key operations
|
|
16
|
+
*
|
|
17
|
+
* Supports:
|
|
18
|
+
* - remove-background: Xenova/modnet (default), briaai/RMBG-2.0 (requires HF auth)
|
|
19
|
+
* - transcribe: Moonshine (default, 5x faster than Whisper), Whisper, Distil-Whisper
|
|
20
|
+
*
|
|
21
|
+
* Models are downloaded on first use and cached locally (~/.cache/huggingface/).
|
|
22
|
+
* No API keys required.
|
|
23
|
+
*/
|
|
24
|
+
export const transformersProvider = {
|
|
25
|
+
name: 'transformers',
|
|
26
|
+
supports(action) {
|
|
27
|
+
return SUPPORTED_ACTIONS.includes(action);
|
|
28
|
+
},
|
|
29
|
+
async execute(actionConfig, context) {
|
|
30
|
+
try {
|
|
31
|
+
await ensureOutputDir(context.outputDir);
|
|
32
|
+
let result;
|
|
33
|
+
switch (actionConfig.action) {
|
|
34
|
+
case 'remove-background':
|
|
35
|
+
result = await executeBackgroundRemoval(actionConfig.options, context);
|
|
36
|
+
break;
|
|
37
|
+
case 'transcribe':
|
|
38
|
+
result = await executeTranscribe(actionConfig.options, context);
|
|
39
|
+
break;
|
|
40
|
+
default:
|
|
41
|
+
return createError(ErrorCodes.INVALID_INPUT, `Action '${actionConfig.action}' not supported by transformers provider`);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
return createError(ErrorCodes.PROVIDER_ERROR, message);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
export default transformersProvider;
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;GAIG;AAEH;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,IAAI,EAAE,cAAc;IAEpB,QAAQ,CAAC,MAAc;QACrB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,YAA2B,EAC3B,OAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,IAAI,MAAmB,CAAC;YACxB,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC5B,KAAK,mBAAmB;oBACtB,MAAM,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACvE,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAChE,MAAM;gBACR;oBACE,OAAO,WAAW,CAChB,UAAU,CAAC,aAAa,EACxB,WAAW,YAAY,CAAC,MAAM,0CAA0C,CACzE,CAAC;YACN,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MediaResult, ActionContext, TranscribeOptions } from '@agent-media/core';
|
|
2
|
+
/**
|
|
3
|
+
* Dispose of the cached pipeline to prevent cleanup errors
|
|
4
|
+
*/
|
|
5
|
+
export declare function disposePipeline(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Execute transcription using Transformers.js automatic-speech-recognition pipeline
|
|
8
|
+
*/
|
|
9
|
+
export declare function executeTranscribe(options: TranscribeOptions, context: ActionContext): Promise<MediaResult>;
|
|
10
|
+
//# sourceMappingURL=transcribe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe.d.ts","sourceRoot":"","sources":["../../src/transformers/transcribe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AA0D3B;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AA8BD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAqGtB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { pipeline, env } from '@huggingface/transformers';
|
|
2
|
+
import { writeFile } from 'node:fs/promises';
|
|
3
|
+
import { createError, createTranscriptionSuccess, generateOutputFilename, getOutputPath, ErrorCodes, } from '@agent-media/core';
|
|
4
|
+
// Disable local model loading from disk cache check warnings
|
|
5
|
+
env.allowLocalModels = false;
|
|
6
|
+
/**
|
|
7
|
+
* Default model for transcription
|
|
8
|
+
* Moonshine is 5x faster than Whisper for short audio with better accuracy
|
|
9
|
+
* https://huggingface.co/onnx-community/moonshine-base-ONNX
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_MODEL = 'onnx-community/moonshine-base-ONNX';
|
|
12
|
+
/**
|
|
13
|
+
* Model aliases for user-friendly selection
|
|
14
|
+
*/
|
|
15
|
+
const MODEL_ALIASES = {
|
|
16
|
+
// Moonshine models (recommended - faster and more accurate)
|
|
17
|
+
'moonshine-tiny': 'onnx-community/moonshine-tiny-ONNX',
|
|
18
|
+
'moonshine-base': 'onnx-community/moonshine-base-ONNX',
|
|
19
|
+
// Whisper models (for compatibility)
|
|
20
|
+
'whisper-tiny': 'Xenova/whisper-tiny',
|
|
21
|
+
'whisper-base': 'Xenova/whisper-base',
|
|
22
|
+
'whisper-small': 'Xenova/whisper-small',
|
|
23
|
+
'whisper-medium': 'Xenova/whisper-medium',
|
|
24
|
+
'whisper-large-v3-turbo': 'onnx-community/whisper-large-v3-turbo',
|
|
25
|
+
// Distil-Whisper (fast, English only)
|
|
26
|
+
'distil-whisper': 'distil-whisper/distil-large-v3.5-ONNX',
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Cache for loaded pipelines to avoid reloading models
|
|
30
|
+
*/
|
|
31
|
+
let cachedPipeline = null;
|
|
32
|
+
let cachedModelId = null;
|
|
33
|
+
/**
|
|
34
|
+
* Dispose of the cached pipeline to prevent cleanup errors
|
|
35
|
+
*/
|
|
36
|
+
export async function disposePipeline() {
|
|
37
|
+
if (cachedPipeline && typeof cachedPipeline.dispose === 'function') {
|
|
38
|
+
await cachedPipeline.dispose();
|
|
39
|
+
}
|
|
40
|
+
cachedPipeline = null;
|
|
41
|
+
cachedModelId = null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get or create pipeline for automatic speech recognition
|
|
45
|
+
*/
|
|
46
|
+
async function getASRPipeline(modelId) {
|
|
47
|
+
if (cachedPipeline && cachedModelId === modelId) {
|
|
48
|
+
return cachedPipeline;
|
|
49
|
+
}
|
|
50
|
+
cachedPipeline = await pipeline('automatic-speech-recognition', modelId, {
|
|
51
|
+
device: 'cpu',
|
|
52
|
+
});
|
|
53
|
+
cachedModelId = modelId;
|
|
54
|
+
return cachedPipeline;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolve model name from alias or use as-is
|
|
58
|
+
*/
|
|
59
|
+
function resolveModel(model) {
|
|
60
|
+
if (!model) {
|
|
61
|
+
return DEFAULT_MODEL;
|
|
62
|
+
}
|
|
63
|
+
const lowerModel = model.toLowerCase();
|
|
64
|
+
return MODEL_ALIASES[lowerModel] || model;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Execute transcription using Transformers.js automatic-speech-recognition pipeline
|
|
68
|
+
*/
|
|
69
|
+
export async function executeTranscribe(options, context) {
|
|
70
|
+
const { input, diarize = false, language, model } = options;
|
|
71
|
+
if (!input?.source) {
|
|
72
|
+
return createError(ErrorCodes.INVALID_INPUT, 'Input source is required for transcription');
|
|
73
|
+
}
|
|
74
|
+
// Diarization is not supported locally - return helpful error
|
|
75
|
+
if (diarize) {
|
|
76
|
+
return createError(ErrorCodes.INVALID_INPUT, 'Diarization (speaker identification) is not supported by the local transformers provider. Use --provider fal or --provider replicate for diarization support.');
|
|
77
|
+
}
|
|
78
|
+
const modelId = resolveModel(model);
|
|
79
|
+
try {
|
|
80
|
+
// Get or create the ASR pipeline
|
|
81
|
+
const transcriber = await getASRPipeline(modelId);
|
|
82
|
+
// Run transcription with timestamp chunks
|
|
83
|
+
// The pipeline accepts URL or file path directly
|
|
84
|
+
const result = await transcriber(input.source, {
|
|
85
|
+
return_timestamps: 'word',
|
|
86
|
+
chunk_length_s: 30,
|
|
87
|
+
stride_length_s: 5,
|
|
88
|
+
language: language || undefined,
|
|
89
|
+
});
|
|
90
|
+
// Result can be a single object or array
|
|
91
|
+
const output = (Array.isArray(result) ? result[0] : result);
|
|
92
|
+
if (!output || typeof output.text !== 'string') {
|
|
93
|
+
return createError(ErrorCodes.PROVIDER_ERROR, 'No transcription output returned from model');
|
|
94
|
+
}
|
|
95
|
+
// Build transcription data
|
|
96
|
+
const chunks = output.chunks;
|
|
97
|
+
const transcription = {
|
|
98
|
+
text: output.text.trim(),
|
|
99
|
+
language: language || 'auto',
|
|
100
|
+
segments: chunks
|
|
101
|
+
? chunks.map((chunk) => ({
|
|
102
|
+
start: chunk.timestamp[0] ?? 0,
|
|
103
|
+
end: chunk.timestamp[1] ?? 0,
|
|
104
|
+
text: chunk.text.trim(),
|
|
105
|
+
}))
|
|
106
|
+
: [
|
|
107
|
+
{
|
|
108
|
+
start: 0,
|
|
109
|
+
end: 0,
|
|
110
|
+
text: output.text.trim(),
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
};
|
|
114
|
+
// Save transcription to JSON file
|
|
115
|
+
const outputFilename = generateOutputFilename('json', 'transcription');
|
|
116
|
+
const outputPath = getOutputPath(context.outputDir, outputFilename);
|
|
117
|
+
await writeFile(outputPath, JSON.stringify(transcription, null, 2));
|
|
118
|
+
return createTranscriptionSuccess({
|
|
119
|
+
mediaType: 'audio',
|
|
120
|
+
provider: 'transformers',
|
|
121
|
+
outputPath: outputPath,
|
|
122
|
+
transcription,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
127
|
+
// Provide helpful error for model download issues
|
|
128
|
+
if (message.includes('fetch') || message.includes('network')) {
|
|
129
|
+
return createError(ErrorCodes.NETWORK_ERROR, `Failed to download model ${modelId}. Ensure you have internet connectivity. Models are cached after first download.`);
|
|
130
|
+
}
|
|
131
|
+
// Handle audio format issues
|
|
132
|
+
if (message.includes('audio') ||
|
|
133
|
+
message.includes('decode') ||
|
|
134
|
+
message.includes('format')) {
|
|
135
|
+
return createError(ErrorCodes.INVALID_FORMAT, `Failed to process audio file. Supported formats: mp3, wav, mp4, m4a, webm, ogg. Error: ${message}`);
|
|
136
|
+
}
|
|
137
|
+
return createError(ErrorCodes.PROVIDER_ERROR, message);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=transcribe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../../src/transformers/transcribe.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-media/providers",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Media providers for agent-media toolkit",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
"./runpod": {
|
|
32
32
|
"types": "./dist/runpod/index.d.ts",
|
|
33
33
|
"import": "./dist/runpod/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./transformers": {
|
|
36
|
+
"types": "./dist/transformers/index.d.ts",
|
|
37
|
+
"import": "./dist/transformers/index.js"
|
|
34
38
|
}
|
|
35
39
|
},
|
|
36
40
|
"files": [
|
|
@@ -38,17 +42,21 @@
|
|
|
38
42
|
],
|
|
39
43
|
"dependencies": {
|
|
40
44
|
"@ai-sdk/fal": "^2.0.6",
|
|
45
|
+
"@huggingface/transformers": "^3.3.3",
|
|
41
46
|
"@ai-sdk/replicate": "^2.0.6",
|
|
42
47
|
"@fal-ai/client": "^1.8.3",
|
|
43
48
|
"@runpod/ai-sdk-provider": "^1.1.0",
|
|
44
49
|
"ai": "^6.0.33",
|
|
45
|
-
"sharp": "^0.
|
|
50
|
+
"sharp": "^0.34.1",
|
|
46
51
|
"@agent-media/core": "0.3.0"
|
|
47
52
|
},
|
|
48
53
|
"devDependencies": {
|
|
49
54
|
"@types/node": "^22.0.0",
|
|
50
55
|
"typescript": "^5.7.0"
|
|
51
56
|
},
|
|
57
|
+
"publishConfig": {
|
|
58
|
+
"access": "public"
|
|
59
|
+
},
|
|
52
60
|
"scripts": {
|
|
53
61
|
"build": "tsc",
|
|
54
62
|
"clean": "rm -rf dist",
|