@aalis/plugin-asr-whisper-cpp 0.2.0 → 0.5.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 CHANGED
@@ -6,6 +6,7 @@ export declare const provides: string[];
6
6
  export declare const inject: {
7
7
  required: string[];
8
8
  };
9
+ export declare const reusable = true;
9
10
  interface Cfg {
10
11
  binaryPath: string;
11
12
  modelPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAOzD,eAAO,MAAM,IAAI,kCAAkC,CAAC;AACpD,eAAO,MAAM,WAAW,yCAAqB,CAAC;AAC9C,eAAO,MAAM,SAAS,UAAU,CAAC;AACjC,eAAO,MAAM,QAAQ,EAAE,MAAM,EAAO,CAAC;AACrC,eAAO,MAAM,MAAM;;CAAgD,CAAC;AAEpE,UAAU,GAAG;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,YAAY,EAAE,YAM1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,GAM3B,CAAC;AAqEF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAgEtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAQzD,eAAO,MAAM,IAAI,kCAAkC,CAAC;AACpD,eAAO,MAAM,WAAW,yCAAqB,CAAC;AAC9C,eAAO,MAAM,SAAS,UAAU,CAAC;AACjC,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,MAAM;;CAAuC,CAAC;AAC3D,eAAO,MAAM,QAAQ,OAAO,CAAC;AAE7B,UAAU,GAAG;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,YAAY,EAAE,YAM1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,GAM3B,CAAC;AAmDF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAqDtE"}
package/dist/index.js CHANGED
@@ -10,11 +10,13 @@
10
10
  import { Buffer } from 'node:buffer';
11
11
  import { createProcessGateway } from '@aalis/plugin-process-api';
12
12
  import { createStorageGateway } from '@aalis/plugin-storage-api';
13
+ import { safeFetch } from '@aalis/util-network-guard';
13
14
  export const name = '@aalis/plugin-asr-whisper-cpp';
14
15
  export const displayName = 'Whisper.cpp 本地转写';
15
16
  export const subsystem = 'media';
16
- export const provides = [];
17
- export const inject = { required: ['media', 'process', 'storage'] };
17
+ export const provides = ['asr'];
18
+ export const inject = { required: ['process', 'storage'] };
19
+ export const reusable = true;
18
20
  export const configSchema = {
19
21
  binaryPath: { type: 'string', label: 'whisper-cli 路径', default: 'whisper-cli' },
20
22
  modelPath: { type: 'string', label: '模型文件路径 (.bin)', default: '' },
@@ -29,87 +31,76 @@ export const defaultConfig = {
29
31
  threads: 4,
30
32
  priority: 80,
31
33
  };
34
+ /**
35
+ * 把附件 data 解析为本地可读路径;返回路径 + 清理函数(仅对下载/解码出的临时文件有意义)。
36
+ * 与 plugin-media 的规范实现 ffmpeg.ts:materializeAttachment 对齐:base64 data URL、file://、
37
+ * http(s)、storage URI(scheme:/)、以及历史裸相对路径 `data/...`(补成 `data:/...`)都支持。
38
+ */
32
39
  async function materializeAudio(proc, storage, data) {
33
- if (data.startsWith('file://')) {
34
- return { path: data.slice(7), tmp: null, audioBase: null };
35
- }
36
- // storage URI(如 data:/audios/...)
37
- if (/^[a-z][a-z0-9_-]*:\//.test(data) &&
38
- !data.startsWith('http://') &&
39
- !data.startsWith('https://') &&
40
- !data.startsWith('data:')) {
41
- try {
42
- const local = await storage.resolveLocalPath?.(data, 'read');
43
- if (local)
44
- return { path: local, tmp: null, audioBase: null };
45
- }
46
- catch {
47
- /* fall through */
48
- }
40
+ // base64 data URL(必须带 ;base64,,借此与 storage URI `data:/...` 区分)
41
+ const dataUri = data.match(/^data:([^;]+);base64,(.+)$/);
42
+ if (dataUri) {
43
+ const tmp = await proc.makeTempDir('whisper-in');
44
+ const ext = dataUri[1].split('/')[1]?.split(';')[0] ?? 'bin';
45
+ await storage.writeFile(`${tmp.uri}/audio.${ext}`, Buffer.from(dataUri[2], 'base64'));
46
+ return { path: `${tmp.path}/audio.${ext}`, cleanup: tmp.cleanup };
49
47
  }
50
- const tmp = await proc.makeTempDir('whisper');
51
- let buf;
52
- let ext = 'bin';
53
- if (data.startsWith('data:')) {
54
- const m = data.match(/^data:([^;]+);base64,(.+)$/);
55
- if (!m) {
56
- await tmp.cleanup();
57
- throw new Error('无效 data URL');
58
- }
59
- buf = Buffer.from(m[2], 'base64');
60
- ext = m[1].split('/')[1]?.split(';')[0] ?? 'bin';
48
+ if (data.startsWith('file://')) {
49
+ return { path: data.slice('file://'.length), cleanup: async () => { } };
61
50
  }
62
- else if (data.startsWith('http://') || data.startsWith('https://')) {
63
- const resp = await fetch(data);
64
- if (!resp.ok) {
65
- await tmp.cleanup();
51
+ if (data.startsWith('http://') || data.startsWith('https://')) {
52
+ const resp = await safeFetch(data);
53
+ if (!resp.ok)
66
54
  throw new Error(`下载失败 ${resp.status}`);
67
- }
68
- buf = Buffer.from(await resp.arrayBuffer());
69
- ext = data.split('.').pop()?.split('?')[0] ?? 'bin';
55
+ const tmp = await proc.makeTempDir('whisper-in');
56
+ const ext = data.split('.').pop()?.split('?')[0] ?? 'bin';
57
+ await storage.writeFile(`${tmp.uri}/audio.${ext}`, Buffer.from(await resp.arrayBuffer()));
58
+ return { path: `${tmp.path}/audio.${ext}`, cleanup: tmp.cleanup };
70
59
  }
71
- else {
72
- await tmp.cleanup();
73
- throw new Error(`不支持的附件来源: ${data.slice(0, 32)}`);
60
+ // storage URI(scheme:/...)或历史裸相对路径(data/... → data:/...),统一解析到本地路径
61
+ let storageUri = null;
62
+ if (/^[a-z][a-z0-9_-]*:\//.test(data))
63
+ storageUri = data;
64
+ else if (/^data\//.test(data))
65
+ storageUri = `data:/${data.slice('data/'.length)}`;
66
+ if (storageUri) {
67
+ const local = await storage.resolveLocalPath?.(storageUri, 'read');
68
+ if (local)
69
+ return { path: local, cleanup: async () => { } };
74
70
  }
75
- const audioBase = `audio.${ext}`;
76
- await storage.writeFile(`${tmp.uri}/${audioBase}`, buf);
77
- const path = await storage.resolveLocalPath(`${tmp.uri}/${audioBase}`, 'read');
78
- return { path, tmp, audioBase };
71
+ throw new Error(`不支持的附件来源: ${data.slice(0, 32)}`);
79
72
  }
80
- /** 用 ffmpeg 把任意音频转成 whisper 需要的 16kHz mono wav。 */
81
- async function toWav16k(proc, input) {
82
- const out = `${input}.16k.wav`;
73
+ /** 用 ffmpeg 把任意音频转成 whisper 需要的 16kHz mono wav,写到 outLocal。 */
74
+ async function toWav16k(proc, input, outLocal) {
83
75
  await proc
84
- .execFile('ffmpeg', ['-y', '-i', input, '-ar', '16000', '-ac', '1', '-c:a', 'pcm_s16le', out])
76
+ .execFile('ffmpeg', ['-y', '-i', input, '-ar', '16000', '-ac', '1', '-c:a', 'pcm_s16le', outLocal])
85
77
  .catch((err) => {
86
78
  throw new Error(`ffmpeg 转码失败: ${(err.result?.stderr ?? err.message).slice(-200)}`);
87
79
  });
88
- return out;
89
80
  }
90
81
  export function apply(ctx, raw) {
91
82
  const cfg = { ...defaultConfig, ...raw };
92
83
  const logger = ctx.logger.child('asr-whisper-cpp');
93
84
  if (!cfg.modelPath) {
94
- logger.warn('未配置 modelPath,插件不会注册 processor');
95
- return;
85
+ // 缺必填配置抛清晰错误(而非静默 return),避免 provides:['asr'] 未注册触发难懂的校验错
86
+ throw new Error('Whisper.cpp 需要配置 modelPath(GGML 模型文件 .bin 路径)');
96
87
  }
97
88
  const proc = createProcessGateway(ctx);
98
89
  const storage = createStorageGateway(ctx);
99
- const processor = {
100
- name: `asr-whisper-cpp:${cfg.modelPath.split('/').pop() ?? 'model'}`,
101
- capabilities: ['audio'],
102
- priority: cfg.priority,
90
+ const asr = {
103
91
  async transcribe(input) {
104
- const local = await materializeAudio(proc, storage, input.attachment.data);
92
+ const src = await materializeAudio(proc, storage, input.attachment.data);
93
+ // ffmpeg 与 whisper-cli 的产物统一落在专用临时目录,避免污染输入所在的数据目录
94
+ const work = await proc.makeTempDir('whisper');
105
95
  try {
106
- const wav = await toWav16k(proc, local.path);
96
+ const wavLocal = `${work.path}/audio.16k.wav`;
97
+ await toWav16k(proc, src.path, wavLocal);
107
98
  const lang = input.language ?? cfg.language;
108
99
  const args = [
109
100
  '-m',
110
101
  cfg.modelPath,
111
102
  '-f',
112
- wav,
103
+ wavLocal,
113
104
  '-l',
114
105
  lang,
115
106
  '-t',
@@ -120,37 +111,24 @@ export function apply(ctx, raw) {
120
111
  const r = await proc.execFile(cfg.binaryPath, args).catch((err) => {
121
112
  throw new Error(`whisper-cli 失败: ${(err.result?.stderr ?? err.message).slice(-200)}`);
122
113
  });
123
- // 读取生成的 .txt(whisper-cli 默认在输入路径旁生成 <wav>.txt
114
+ // whisper-cli wav 旁生成 <wav>.txt(即 work 目录内);读不到时回退 stdout
124
115
  let text = '';
125
- if (local.tmp && local.audioBase) {
126
- const txtUri = `${local.tmp.uri}/${local.audioBase}.16k.wav.txt`;
127
- try {
128
- const raw = await storage.readFile(txtUri, 'utf-8');
129
- text = String(raw).trim();
130
- }
131
- catch {
132
- text = r.stdout.replace(/\[[^\]]+\]/g, '').trim();
133
- }
116
+ try {
117
+ const raw = await storage.readFile(`${work.uri}/audio.16k.wav.txt`, 'utf-8');
118
+ text = String(raw).trim();
134
119
  }
135
- else {
136
- // 输入是外部 file:// 或 storage URI,txt 与 wav 在同目录但不一定在我们的 root 内:回退 stdout
120
+ catch {
137
121
  text = r.stdout.replace(/\[[^\]]+\]/g, '').trim();
138
122
  }
139
123
  return { text };
140
124
  }
141
125
  finally {
142
- if (local.tmp)
143
- await local.tmp.cleanup();
126
+ await work.cleanup();
127
+ await src.cleanup();
144
128
  }
145
129
  },
146
130
  };
147
- const media = ctx.getService('media');
148
- if (!media) {
149
- logger.error('media 服务不可用');
150
- return;
151
- }
152
- const dispose = media.registerProcessor(processor);
153
- ctx.onDispose(() => dispose());
154
- logger.info(`Whisper.cpp 转写已注册 (model=${cfg.modelPath}, prio=${cfg.priority})`);
131
+ ctx.provide('asr', asr, { priority: cfg.priority });
132
+ logger.info(`Whisper.cpp ASR 已注册 (model=${cfg.modelPath}, prio=${cfg.priority})`);
155
133
  }
156
134
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,sDAAsD;AACtD,EAAE;AACF,yCAAyC;AACzC,+CAA+C;AAC/C,8BAA8B;AAC9B,EAAE;AACF,gDAAgD;AAChD,+DAA+D;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,+BAA+B,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAa,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;AAUpE,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE;IAC/E,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE;IAClE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IAC5D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IACrD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;CAChE,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAQ;IAChC,UAAU,EAAE,aAAa;IACzB,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,EAAE;CACb,CAAC;AAWF,KAAK,UAAU,gBAAgB,CAAC,IAAoB,EAAE,OAAuB,EAAE,IAAY;IACzF,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7D,CAAC;IACD,kCAAkC;IAClC,IACE,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC3B,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC5B,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EACzB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,KAAK;gBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,GAAW,CAAC;IAChB,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACnD,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAClC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACnD,CAAC;SAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;IACjC,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,gBAAiB,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;IAChF,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,mDAAmD;AACnD,KAAK,UAAU,QAAQ,CAAC,IAAoB,EAAE,KAAa;IACzD,MAAM,GAAG,GAAG,GAAG,KAAK,UAAU,CAAC;IAC/B,MAAM,IAAI;SACP,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;SAC7F,KAAK,CAAC,CAAC,GAA4C,EAAE,EAAE;QACtD,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IACL,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,GAA4B;IAC9D,MAAM,GAAG,GAAQ,EAAE,GAAG,aAAa,EAAE,GAAI,GAAoB,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEnD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAmB;QAChC,IAAI,EAAE,mBAAmB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,EAAE;QACpE,YAAY,EAAE,CAAC,OAAO,CAAC;QACvB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,CAAC,UAAU,CAAC,KAAsB;YACrC,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3E,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC;gBAC5C,MAAM,IAAI,GAAG;oBACX,IAAI;oBACJ,GAAG,CAAC,SAAS;oBACb,IAAI;oBACJ,GAAG;oBACH,IAAI;oBACJ,IAAI;oBACJ,IAAI;oBACJ,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;oBACnB,KAAK,EAAE,0BAA0B;oBACjC,cAAc;iBACf,CAAC;gBACF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAA4C,EAAE,EAAE;oBACzG,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;gBACH,+CAA+C;gBAC/C,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACjC,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,cAAc,CAAC;oBACjE,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wBACpD,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5B,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,sEAAsE;oBACtE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpD,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,CAAC;oBAAS,CAAC;gBACT,IAAI,KAAK,CAAC,GAAG;oBAAE,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;KACF,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAA2D,OAAO,CAAC,CAAC;IAChG,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACnD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CAAC,4BAA4B,GAAG,CAAC,SAAS,UAAU,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@aalis/plugin-asr-whisper-cpp",
3
- "version": "0.2.0",
3
+ "version": "0.5.0",
4
4
  "license": "MIT",
5
5
  "description": "语音识别(ASR)—— 本地 whisper.cpp 提供者",
6
6
  "type": "module",
7
7
  "keywords": [
8
+ "aalis",
8
9
  "aalis-plugin"
9
10
  ],
10
11
  "main": "dist/index.js",
@@ -13,22 +14,22 @@
13
14
  "dist"
14
15
  ],
15
16
  "dependencies": {
16
- "@aalis/plugin-storage-api": "^0.2.0",
17
- "@aalis/plugin-process-api": "^0.2.0"
17
+ "@aalis/plugin-process-api": "^0.5.0",
18
+ "@aalis/util-network-guard": "^0.5.0",
19
+ "@aalis/plugin-storage-api": "^0.5.0"
18
20
  },
19
21
  "devDependencies": {
20
22
  "@types/node": "^22.0.0",
21
23
  "typescript": "^5.7.0",
22
- "@aalis/core": "0.2.0",
23
- "@aalis/plugin-media-api": "0.2.0"
24
+ "@aalis/core": "0.5.0",
25
+ "@aalis/plugin-asr-api": "0.5.0"
24
26
  },
25
27
  "peerDependencies": {
26
- "@aalis/core": "^0.2.0"
28
+ "@aalis/core": ">=0.2.0 <1.0.0"
27
29
  },
28
30
  "aalis": {
29
31
  "service": {
30
32
  "required": [
31
- "media",
32
33
  "process",
33
34
  "storage"
34
35
  ]