簡體   English   中英

無法將文件轉換為二進制格式以使用node.js發送到wit.ai api

[英]Unable to convert file to binary format for sending to wit.ai api using node.js

我在將音頻文件轉換為二進制格式時遇到問題。 我需要將其發送到Wit.AI api,該api希望使用該格式的數據。 我正在使用node.js。 在前端,我正在使用麥克風記錄器模塊記錄用戶語音。 歡迎任何建議。

我的前端代碼:

var recorder;
function startRecording() {
    recorder = new MicRecorder({
        bitRate: 128
    });
    recorder.start()
}

function stopRecording() {
    recorder.stop().getMp3().then(([buffer, blob]) => {
        console.log(buffer, blob);
        const file = new File(buffer, 'music.mp3', {
            type: blob.type,
            lastModified: Date.now()
        })
        console.log(file)
        axios({
            method: 'post',
            url: `${appUrl}/open_api/voice/send?data=${buffer}`
        }).then(function (res) {
            console.log(res)
            if (res.data.success) {
                console.log('done',res)
            } else {
                console.log(res.data)
            }
        })
    })
};

成功錄制后,我想將文件發送到我的api以便調用wit.ai / speech api。

我的后端代碼是:

router.post('/voice/send',                                //chatbot response api
    async (req, res, next) => {
        let thread_id = '99-99-99-99'
        let audioBinary = req.query.data
        console.log(audioBinary)
        let appId = "5d07621d6b79be66a73f4005"
        let sessionId ="10-10-10-10"
        let accessToken = await db.model('ChatBotApp').findOne({
            _id: req.query.key
        }, {
            access_token: 1
        }).lean() 
        var options = {

            method: 'POST',
            uri: 'https://api.wit.ai/speech?v=20190513',
            body : audioBinary,
            encoding: null,
            headers: {
                'Authorization': 'Bearer ' + "HY3ZWSUGPBPD5LWZLRSZ3QJCDC27M6EW",
                'Content-Type': 'audio/mpeg',
            },
            // json: true // Automatically stringifies the body to JSON
        };
        rp(options)
        .then(async function (parsedBody) {
            console.log('this called',parsedBody)
            return
            // let response = await firstEntityValue(parsedBody, appId, message, thread_id)
            // events.emit('Chats', appId, thread_id, message, sessionId, response);
            return res.apiOk(response)
        })
        .catch(function (err) {
            console.log(err)
            return res.apiError('Issue while creating app!', err);
        })


    }
)
 var recorder

   function startRecording() {
     recorder = new MicRecorder({
       bitRate: 128
     });
     recorder.start()
   }

   function stopRecording() {
     recorder.stop().getMp3().then(([buffer, blob]) => {
       console.log(buffer, blob);

       const file = new File(buffer, 'music.mp3', {
         type: blob.type,
         lastModified: Date.now()
       })
       var bodyFormData = new FormData();
       bodyFormData.append('file', file);
       console.log(file)

       axios({
         method: 'post',
         url: `${appUrl}/open_api/voice/send`,
         headers: {
           'Content-Type': 'multipart/form-data'
         },
         data: bodyFormData
       }).then(function (res) {
         console.log(res)
         if (res.data.success) {
           console.log('done', res)
         } else {
           console.log(res.data)
         }
       })
     })
   };


API 
router.post('/voice/send',upload.single('file'), //chatbot response api
        async (req, res, next) => {

            console.log(req.file)
            let thread_id = '99-99-99-99'
            let audioBinary = req.file.buffer
            let appId = "5d07621d6b79be66a73f4005"
            let sessionId = "10-10-10-10"
            let accessToken = await db.model('ChatBotApp').findOne({
                _id: req.query.key
            }, {
                access_token: 1
            }).lean()
            var options = {

                method: 'POST',
                uri: 'https://api.wit.ai/speech?v=20190513',
                headers: {
                    'Authorization': 'Bearer ' + "HY3ZWSUGPBPD5LWZLRSZ3QJCDC27M6EW",
                    'Content-Type': 'audio/mpeg',
                },
                body: audioBinary

                // json: true // Automatically stringifies the body to JSON
            };
            rp(options)
                .then(async function (parsedBody) {
                    console.log('this called', parsedBody)
                    return
                    // let response = await firstEntityValue(parsedBody, appId, message, thread_id)
                    // events.emit('Chats', appId, thread_id, message, sessionId, response);
                    return res.apiOk(response)
                })
                .catch(function (err) {
                    console.log(err)
                    return res.apiError('Issue while creating app!', err);
                })
        })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM