STT.js 1.87 KB
const apiRequest = require('./apiRequest');
const isBase64 = require('is-base64');
//const Lame = require("node-lame").Lame;
const fs = require("fs");
//const Mp32Wav = require('mp3-to-wav')

const apiReq = async ( clientData ) => {
    fs.writeFileSync('./audio/audio_input.mp3', Buffer.from(clientData.audio.replace('data:audio/mp3; codecs=opus;base64,', ''), 'base64'));
    const mp32Wav = new Mp32Wav('./audio/audio_input.mp3')
    mp32Wav.saveForWav(Buffer.from(clientData.audio.replace('data:audio/mp3; codecs=opus;base64,', ''), 'base64'),'./audio/audio_input.wav',_,16000,1)
    //let audiodata = fs.readFileSync('./audio/audio_input.mp3').toString('base64')
    console.log(Buffer(clientData.audio,'base64'))
    

    let getSTT = {};
    try {
        getSTT = await apiRequest.ETRI( "WiseASR/Recognition", { "language_code" : "korean", "audio" : audiodata } );
    }
    catch ( err ) {
        throw new Error ( err.message );
    }

    return { "text" : getSTT.return_object.recognized };
}

const STT = async ( req, res ) => { 
    let clientData,
        voiceTemp;

    try {
        clientData = req.body.data
        if( !clientData.audio.length ) {
            throw new Error( "client audio empty" );
        }
        else if( !isBase64( clientData.audio ) ) {
            throw new Error( "Type error : audio type should be base64" );
        }
    }
    catch( err ) {
        console.log( err );
        res.json( { "return_code" : -1, "error_code" : err.message } );
        res.status( 403 );
        return false;
    }
    
    try {
        voiceTemp = await apiReq( clientData );
    }
    catch( err ) {
        console.log( err );
        res.json( { "return_code" : -1, "error_code" : err.message } );
        res.status( 502 );
        return false;
    }
    
    res.send( { "return_code" : 0, "return_data" : voiceTemp } );
    res.status( 200 );
};

module.exports=STT;