// API Proxy for Pocket TTS export default async function handler(req, res) { if (req.method !== 'POST') { return res.status(405).json({ message: 'Method not allowed' }); } const { text } = req.body; try { // Simulate processing await new Promise(resolve => setTimeout(resolve, 1000)); // Create a minimal valid WAV file header + silence // This ensures the audio player actually renders something const sampleRate = 24000; const numChannels = 1; const bitsPerSample = 16; const dataSize = sampleRate * numChannels * (bitsPerSample / 8) * 1; // 1 second of audio const buffer = Buffer.alloc(44 + dataSize); // RIFF chunk descriptor buffer.write('RIFF', 0); buffer.writeUInt32LE(36 + dataSize, 4); buffer.write('WAVE', 8); // fmt sub-chunk buffer.write('fmt ', 12); buffer.writeUInt32LE(16, 16); // Subchunk1Size buffer.writeUInt16LE(1, 20); // AudioFormat (PCM) buffer.writeUInt16LE(numChannels, 22); buffer.writeUInt32LE(sampleRate, 24); buffer.writeUInt32LE(sampleRate * numChannels * (bitsPerSample / 8), 28); // ByteRate buffer.writeUInt16LE(numChannels * (bitsPerSample / 8), 32); // BlockAlign buffer.writeUInt16LE(bitsPerSample, 34); // data sub-chunk buffer.write('data', 36); buffer.writeUInt32LE(dataSize, 40); // The rest of the buffer is already zeros (silence) res.setHeader('Content-Type', 'audio/wav'); return res.status(200).send(buffer); } catch (error) { console.error('TTS Error:', error); return res.status(500).json({ message: 'Internal Server Error' }); } }