تخطَّ إلى المحتوى
ARAB CODEمجتمع المطورين العرب

صوت لي نص

javascriptv1MITنُشر ٢٢ أغسطس ٢٠٢٦· ♥ 0 · ⬇ 1 · 💬 0

تحويل الصوت لي نص

// plugins/transcribe.js
import axios from 'axios';
import FormData from 'form-data';

const API_URL = 'https://2b.hidenfree.com';

async function uploadAudio(buffer) {
    const fd = new FormData();
    fd.append('file', buffer, { filename: 'audio_' + Date.now() + '.mp3' });
    fd.append('type', 'permanent');
    const r = await axios.post('https://tmp.malvryx.dev/upload', fd, {
        headers: fd.getHeaders(),
        timeout: 45000,
        maxBodyLength: Infinity,
        maxContentLength: Infinity
    });
    return r.data?.cdnUrl || r.data?.directUrl || null;
}

let handler = async (m, { conn, text }) => {
    let audioBuffer = null;

    if (m.quoted?.mtype === 'audioMessage' || m.quoted?.mediaType === 'audio') {
        audioBuffer = await m.quoted.download();
    }
    if (m.mtype === 'audioMessage' || m.mediaType === 'audio') {
        audioBuffer = await m.download();
    }

    if (!audioBuffer) {
        return m.reply('🎤 *تفريغ صوتي*\n\n📌 رد على رسالة صوتية');
    }

    await m.react('🎤');

    try {
        const audioUrl = await uploadAudio(audioBuffer);
        if (!audioUrl) throw new Error('فشل رفع الصوت');

        const result = await axios.get(`${API_URL}/api/transcribe/public`, {
            params: { api_key: 'free_key', url: audioUrl },
            timeout: 180000,
            validateStatus: () => true
        });

        const data = result.data;

        if (!data?.success || !data?.transcription) {
            throw new Error(data?.error || 'فشل التفريغ');
        }

        let msg = `📝 *التفريغ الصوتي*\n\n`;
        msg += `${data.transcription}\n\n`;
        if (data.language) msg += `🌍 اللغة: ${data.language}\n`;
        if (data.duration) msg += `⏱️ المدة: ${data.duration} ثانية`;

        await m.reply(msg);
        await m.react('✅');

    } catch (e) {
        console.error('[Transcribe]', e.message);
        await m.react('❌');
        m.reply('❌ ' + e.message);
    }
};

handler.command = /^(لنص|تفريغ|transcribe|نسخ)$/i;
handler.tags = ['ai'];
export default handler;

التعليقات (0)

سجّل الدخول للتعليق.