Files
bot-ai/gemini.js
2026-01-28 18:04:17 +04:00

107 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { GoogleGenAI, createUserContent, createPartFromUri } from "@google/genai";
import dotenv from "dotenv";
dotenv.config();
import wav from 'wav';
// The client gets the API key from the environment variable `GEMINI_API_KEY`.
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_KEY});
const AUDIO_URL = "https://s3.twcstorage.ru/22b2a814-mhand/audio_2026-01-28_12-59-38.ogg"
async function saveWaveFile(
filename,
pcmData,
channels = 1,
rate = 24000,
sampleWidth = 2,
) {
return new Promise((resolve, reject) => {
const writer = new wav.FileWriter(filename, {
channels,
sampleRate: rate,
bitDepth: sampleWidth * 8,
});
writer.on('finish', resolve);
writer.on('error', reject);
writer.write(pcmData);
writer.end();
});
}
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-lite",
contents: "Что ты умеешь делать? На какой модели ты построен?",
});
console.log(response.text);
}
async function pepe(){
const prompt = 'Нужно сделать анализ аудиофайла и вывести текстовую расшифровку.'
const response = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: {
parts:[
{
fileData: {
fileUri:AUDIO_URL,
},
},
{
text: prompt
}
]
}
})
console.log(response.text)
}
async function shneine(){
const myfile = await ai.files.upload({
file:'./pedik.ogg',
config:{
mimeType:'audio/ogg',
}
});
const response = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: createUserContent([
createPartFromUri(myfile.uri, myfile.mimeType),
'Нужно сделать анализ аудиофайла, краткую выжимку самого важного, вывести тезисы.'
])
})
console.log(response.text)
}
//await shneine();
async function fawatafa() {
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-tts",
contents: [{ parts: [{ text: `Say aggresive: А перекинул я этот пост, потому что его Саша переслал. И вот вдумайся: Саше 30 лет, и вот на него это полностью работает. То есть он верит, что можно заставить Дурова открыть представительство в России, и это снимет к нему все вопросы, и Телеграм оставят незаблокированным` }] }],
config: {
responseModalities: ['AUDIO'],
speechConfig: {
voiceConfig: {
prebuiltVoiceConfig: { voiceName: 'Leda' },
},
},
},
});
const data = response.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data;
const audioBuffer = Buffer.from(data, 'base64');
const fileName = 'outMarat5.wav';
await saveWaveFile(fileName, audioBuffer);
}
await fawatafa();