You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
685 B
29 lines
685 B
class OpenAiTTS {
|
|
constructor() {
|
|
if (!process.env.TTS_OPEN_AI_KEY)
|
|
throw new Error("No OpenAI API key was set.");
|
|
const { OpenAI: OpenAIApi } = require("openai");
|
|
this.openai = new OpenAIApi({
|
|
apiKey: process.env.TTS_OPEN_AI_KEY,
|
|
});
|
|
this.voice = process.env.TTS_OPEN_AI_VOICE_MODEL ?? "alloy";
|
|
}
|
|
|
|
async ttsBuffer(textInput) {
|
|
try {
|
|
const result = await this.openai.audio.speech.create({
|
|
model: "tts-1",
|
|
voice: this.voice,
|
|
input: textInput,
|
|
});
|
|
return Buffer.from(await result.arrayBuffer());
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
OpenAiTTS,
|
|
};
|