@markitdownjs/audio 0.1.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/__tests__/audio-converter.test.d.ts +2 -0
- package/dist/__tests__/audio-converter.test.d.ts.map +1 -0
- package/dist/__tests__/audio-converter.test.js +59 -0
- package/dist/__tests__/audio-converter.test.js.map +1 -0
- package/dist/audio-converter.d.ts +14 -0
- package/dist/audio-converter.d.ts.map +1 -0
- package/dist/audio-converter.js +76 -0
- package/dist/audio-converter.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-converter.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/audio-converter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { AudioConverter } from '../audio-converter.js';
|
|
3
|
+
describe('AudioConverter', () => {
|
|
4
|
+
const converter = new AudioConverter();
|
|
5
|
+
it('should detect audio by MIME type', async () => {
|
|
6
|
+
expect(await converter.canConvert({ data: '', mimeType: 'audio/mpeg' })).toBe(true);
|
|
7
|
+
expect(await converter.canConvert({ data: '', mimeType: 'audio/wav' })).toBe(true);
|
|
8
|
+
expect(await converter.canConvert({ data: '', mimeType: 'audio/mp4' })).toBe(true);
|
|
9
|
+
expect(await converter.canConvert({ data: '', mimeType: 'audio/ogg' })).toBe(true);
|
|
10
|
+
expect(await converter.canConvert({ data: '', mimeType: 'audio/flac' })).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
it('should detect audio by extension', async () => {
|
|
13
|
+
expect(await converter.canConvert({ data: '', fileName: 'test.mp3' })).toBe(true);
|
|
14
|
+
expect(await converter.canConvert({ data: '', fileName: 'test.wav' })).toBe(true);
|
|
15
|
+
expect(await converter.canConvert({ data: '', fileName: 'test.m4a' })).toBe(true);
|
|
16
|
+
expect(await converter.canConvert({ data: '', fileName: 'test.ogg' })).toBe(true);
|
|
17
|
+
expect(await converter.canConvert({ data: '', fileName: 'test.flac' })).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it('should reject non-audio files', async () => {
|
|
20
|
+
expect(await converter.canConvert({ data: '', fileName: 'test.txt' })).toBe(false);
|
|
21
|
+
expect(await converter.canConvert({ data: '', mimeType: 'text/plain' })).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
it('should return placeholder when no provider is set', async () => {
|
|
24
|
+
const result = await converter.convert({
|
|
25
|
+
data: new Uint8Array([0, 1, 2, 3]),
|
|
26
|
+
mimeType: 'audio/mpeg',
|
|
27
|
+
});
|
|
28
|
+
expect(result.markdown).toContain('Transcription unavailable');
|
|
29
|
+
expect(result.ast).toBeDefined();
|
|
30
|
+
expect(result.ast.type).toBe('document');
|
|
31
|
+
});
|
|
32
|
+
it('should use provider when set', async () => {
|
|
33
|
+
converter.setProvider({
|
|
34
|
+
async transcribe() {
|
|
35
|
+
return 'Hello from transcription';
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
const result = await converter.convert({
|
|
39
|
+
data: new Uint8Array([0, 1, 2, 3]),
|
|
40
|
+
mimeType: 'audio/mpeg',
|
|
41
|
+
});
|
|
42
|
+
expect(result.markdown).toBe('Hello from transcription');
|
|
43
|
+
});
|
|
44
|
+
it('should pass mimeType to provider', async () => {
|
|
45
|
+
let receivedMimeType = '';
|
|
46
|
+
converter.setProvider({
|
|
47
|
+
async transcribe(_data, mimeType) {
|
|
48
|
+
receivedMimeType = mimeType;
|
|
49
|
+
return 'done';
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
await converter.convert({
|
|
53
|
+
data: 'audio data',
|
|
54
|
+
mimeType: 'audio/wav',
|
|
55
|
+
});
|
|
56
|
+
expect(receivedMimeType).toBe('audio/wav');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=audio-converter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-converter.test.js","sourceRoot":"","sources":["../../src/__tests__/audio-converter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Converter, ConversionInput, ConversionResult } from "@markitdownjs/shared";
|
|
2
|
+
export interface AudioTranscriptionProvider {
|
|
3
|
+
transcribe(audioData: Uint8Array, mimeType: string): Promise<string>;
|
|
4
|
+
}
|
|
5
|
+
export declare class AudioConverter implements Converter {
|
|
6
|
+
readonly id = "audio";
|
|
7
|
+
readonly supportedMimeTypes: string[];
|
|
8
|
+
readonly supportedExtensions: string[];
|
|
9
|
+
private provider;
|
|
10
|
+
setProvider(provider: AudioTranscriptionProvider): void;
|
|
11
|
+
canConvert(input: ConversionInput): Promise<boolean>;
|
|
12
|
+
convert(input: ConversionInput): Promise<ConversionResult>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=audio-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-converter.d.ts","sourceRoot":"","sources":["../src/audio-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtE;AAED,qBAAa,cAAe,YAAW,SAAS;IAC9C,QAAQ,CAAC,EAAE,WAAW;IACtB,QAAQ,CAAC,kBAAkB,WAMzB;IACF,QAAQ,CAAC,mBAAmB,WAA6C;IAEzE,OAAO,CAAC,QAAQ,CAA2C;IAE3D,WAAW,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;IAIjD,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAepD,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAoDjE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { createNode, readInputData } from "@markitdownjs/shared";
|
|
2
|
+
export class AudioConverter {
|
|
3
|
+
id = "audio";
|
|
4
|
+
supportedMimeTypes = [
|
|
5
|
+
"audio/mpeg",
|
|
6
|
+
"audio/wav",
|
|
7
|
+
"audio/mp4",
|
|
8
|
+
"audio/ogg",
|
|
9
|
+
"audio/flac",
|
|
10
|
+
];
|
|
11
|
+
supportedExtensions = [".mp3", ".wav", ".m4a", ".ogg", ".flac"];
|
|
12
|
+
provider = null;
|
|
13
|
+
setProvider(provider) {
|
|
14
|
+
this.provider = provider;
|
|
15
|
+
}
|
|
16
|
+
async canConvert(input) {
|
|
17
|
+
if (input.mimeType && this.supportedMimeTypes.includes(input.mimeType)) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
if (input.fileName) {
|
|
21
|
+
const ext = input.fileName.slice(input.fileName.lastIndexOf(".")).toLowerCase();
|
|
22
|
+
if (this.supportedExtensions.includes(ext)) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
async convert(input) {
|
|
29
|
+
const startTime = performance.now();
|
|
30
|
+
const data = await readInputData(input.data);
|
|
31
|
+
const mimeType = input.mimeType ?? "audio/mpeg";
|
|
32
|
+
let transcription;
|
|
33
|
+
if (this.provider) {
|
|
34
|
+
transcription = await this.provider.transcribe(data, mimeType);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
transcription =
|
|
38
|
+
"[Transcription unavailable: no AudioTranscriptionProvider configured. Call setProvider() to inject a transcription service.]";
|
|
39
|
+
}
|
|
40
|
+
const textNode = createNode({
|
|
41
|
+
type: "text",
|
|
42
|
+
value: transcription,
|
|
43
|
+
});
|
|
44
|
+
const paragraphNode = createNode({
|
|
45
|
+
type: "paragraph",
|
|
46
|
+
children: [textNode],
|
|
47
|
+
});
|
|
48
|
+
const documentNode = createNode({
|
|
49
|
+
type: "document",
|
|
50
|
+
children: [paragraphNode],
|
|
51
|
+
});
|
|
52
|
+
const endTime = performance.now();
|
|
53
|
+
const stats = {
|
|
54
|
+
startTime,
|
|
55
|
+
endTime,
|
|
56
|
+
duration: endTime - startTime,
|
|
57
|
+
inputSize: data.length,
|
|
58
|
+
outputSize: transcription.length,
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
markdown: transcription,
|
|
62
|
+
metadata: {
|
|
63
|
+
wordCount: transcription.split(/\s+/).filter(Boolean).length,
|
|
64
|
+
},
|
|
65
|
+
assets: [],
|
|
66
|
+
tables: [],
|
|
67
|
+
images: [],
|
|
68
|
+
headings: [],
|
|
69
|
+
ast: documentNode,
|
|
70
|
+
format: "markdown",
|
|
71
|
+
converterId: this.id,
|
|
72
|
+
stats,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=audio-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-converter.js","sourceRoot":"","sources":["../src/audio-converter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMjE,MAAM,OAAO,cAAc;IAChB,EAAE,GAAG,OAAO,CAAC;IACb,kBAAkB,GAAG;QAC5B,YAAY;QACZ,WAAW;QACX,WAAW;QACX,WAAW;QACX,YAAY;KACb,CAAC;IACO,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjE,QAAQ,GAAsC,IAAI,CAAC;IAE3D,WAAW,CAAC,QAAoC;QAC9C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACrC,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAChF,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAsB;QAClC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC;QAEhD,IAAI,aAAqB,CAAC;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,aAAa;gBACX,8HAA8H,CAAC;QACnI,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC;YAC1B,IAAI,EAAE,MAAe;YACrB,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,UAAU,CAAC;YAC/B,IAAI,EAAE,WAAoB;YAC1B,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,UAAU,CAAC;YAC9B,IAAI,EAAE,UAAmB;YACzB,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,KAAK,GAAoB;YAC7B,SAAS;YACT,OAAO;YACP,QAAQ,EAAE,OAAO,GAAG,SAAS;YAC7B,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,UAAU,EAAE,aAAa,CAAC,MAAM;SACjC,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE;gBACR,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;aAC7D;YACD,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,GAAG,EAAE,YAAY;YACjB,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,IAAI,CAAC,EAAE;YACpB,KAAK;SACN,CAAC;IACJ,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@markitdownjs/audio",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Audio file converter for MarkItDownJS",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@markitdownjs/shared": "0.1.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.5.0"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsc --project tsconfig.json",
|
|
27
|
+
"dev": "tsc --watch --project tsconfig.json",
|
|
28
|
+
"typecheck": "tsc --noEmit",
|
|
29
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
30
|
+
}
|
|
31
|
+
}
|