diff --git a/src/ai.ts b/src/ai.ts index 41cf95d..335cee6 100644 --- a/src/ai.ts +++ b/src/ai.ts @@ -8,9 +8,9 @@ export type AiOptions = LLMOptions & { binary: string; /** Model: `ggml-base.en.bin` */ model: string; - /** Path to models */ - path: string; } + /** Path to models */ + path: string; } export class Ai { @@ -25,6 +25,7 @@ export class Ai { vision!: Vision; constructor(public readonly options: AiOptions) { + process.env.TRANSFORMERS_CACHE = options.path; this.audio = new Audio(this); this.language = new LLM(this); this.vision = new Vision(this); diff --git a/src/audio.ts b/src/audio.ts index 2e0e34b..c352e6a 100644 --- a/src/audio.ts +++ b/src/audio.ts @@ -48,7 +48,7 @@ export class Audio { async downloadAsrModel(model: string = this.whisperModel): Promise { if(!this.ai.options.whisper?.binary) throw new Error('Whisper not configured'); if(!model.endsWith('.bin')) model += '.bin'; - const p = Path.join(this.ai.options.whisper.path, model); + const p = Path.join(this.ai.options.path, model); if(await fs.stat(p).then(() => true).catch(() => false)) return p; if(!!this.downloads[model]) return this.downloads[model]; this.downloads[model] = fetch(`https://huggingface.co/ggerganov/whisper.cpp/resolve/main/${model}`) diff --git a/src/vision.ts b/src/vision.ts index 6ef05f6..c5506b7 100644 --- a/src/vision.ts +++ b/src/vision.ts @@ -15,7 +15,7 @@ export class Vision { return { abort: () => { worker?.terminate(); }, response: new Promise(async res => { - worker = await createWorker('eng'); + worker = await createWorker('eng', 1, {langPath: this.ai.options.path}); const {data} = await worker.recognize(path); await worker.terminate(); res(data.text.trim() || null);