rynn-k / gists
aidictation-transcribe.js javascript
const axios = require('axios');
const FormData = require('form-data');

async function aidictation(audio) {
    try {
        if (!Buffer.isBuffer(audio)) throw new Error('Audio buffer is required.');
        
        const { data: cf } = await axios.post('https://rynekoo-cf.hf.space/action', {
            url: 'https://aidictation.com/tools/transcribe',
            siteKey: '0x4AAAAAACgbDnY2xQyOrOfk',
            mode: 'turnstile-min'
        });
        
        if (!cf?.data?.token) throw new Error('Failed to get cf token.');
        
        const form = new FormData();
        form.append('file', audio, `${Date.now()}_rynn.mp3`);
        form.append('turnstile_token', cf.data.token);
        const { data } = await axios.post('https://aidictation.com/api/transcribe', form, {
            headers: {
                ...form.getHeaders(),
                origin: 'https://aidictation.com',
                referer: 'https://aidictation.com/tools/transcribe'
            }
        });
        
        return data;
    } catch (error) {
        throw new Error(error.message);
    }
}

// Usage:
const fs = require('fs');
aidictation(fs.readFileSync('./ex/jawa.mp3')).then(console.log);
1197 bytes ยท Updated Mar 23, 2026