mirror of
https://github.com/Mintplex-Labs/anything-llm.git
synced 2024-11-14 10:30:10 +01:00
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
|
const fs = require("fs");
|
||
|
|
||
|
class OpenAiWhisper {
|
||
|
constructor({ options }) {
|
||
|
const { Configuration, OpenAIApi } = require("openai");
|
||
|
if (!options.openAiKey) throw new Error("No OpenAI API key was set.");
|
||
|
|
||
|
const config = new Configuration({
|
||
|
apiKey: options.openAiKey,
|
||
|
});
|
||
|
this.openai = new OpenAIApi(config);
|
||
|
this.model = "whisper-1";
|
||
|
this.temperature = 0;
|
||
|
this.#log("Initialized.");
|
||
|
}
|
||
|
|
||
|
#log(text, ...args) {
|
||
|
console.log(`\x1b[32m[OpenAiWhisper]\x1b[0m ${text}`, ...args);
|
||
|
}
|
||
|
|
||
|
async processFile(fullFilePath) {
|
||
|
return await this.openai
|
||
|
.createTranscription(
|
||
|
fs.createReadStream(fullFilePath),
|
||
|
this.model,
|
||
|
undefined,
|
||
|
"text",
|
||
|
this.temperature
|
||
|
)
|
||
|
.then((res) => {
|
||
|
if (res.hasOwnProperty("data"))
|
||
|
return { content: res.data, error: null };
|
||
|
return { content: "", error: "No content was able to be transcribed." };
|
||
|
})
|
||
|
.catch((e) => {
|
||
|
this.#log(`Could not get any response from openai whisper`, e.message);
|
||
|
return { content: "", error: e.message };
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
OpenAiWhisper,
|
||
|
};
|