import { Router } from "express"; import multer from "multer"; import path from "path"; import fs from "fs"; const router = Router(); import { GoogleGenAI, createUserContent, createPartFromUri } from "@google/genai"; import dotenv from "dotenv"; dotenv.config(); 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 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); } router.post('/voice', async(req, res) => { try{ }catch(err){ console.error('Ошибка при обработке голосового сообщения:', err); res.status(500).json({ message: 'Ошибка при обработке голосового сообщения' }); } }) export default router;