将音频从URL转换为Node.js中的base64?

时间:2019-06-05 19:05:27

标签: javascript node.js facebook audio base64

我想将语音剪辑发送到Facebook Messenger,并使用Google Cloud Speech转换为文本。但是,facebook Messenger格式将URL设置为文件,并且我不知道将其转换为base64。如果它是.png和.jpg之类的图像,那很好,有用于此的程序包。但是我正在尝试转换.mp3和.m4a文件之类的音频。是否有任何工具可以与nodejs一起使用。

我不想将音频文件另存为本地文件,因为我正在使用Google App Engine部署服务器,这样做只会使事情变得非常复杂。

2 个答案:

答案 0 :(得分:0)

您可以查看FileReader API以及可能的AudioData API-在这两者之间,您应该拥有所需的一切。通过有线发送音频文件时,您不会将它们作为base64传输。我相信它是二进制或blob iirc。

您可以使用FileReader api-使用FileReader.readAsArrayBuffer()读取音频文件,该文件会将文件转换为映射的数组。从那里,您可以将其变成blob对象,然后将其推到需要的位置。

             var uInt8Array     = new Uint8Array(mappedArray);
             var arrayBuffer    = uInt8Array.buffer;
             var blob           = new Blob([arrayBuffer]);
             var url            = URL.createObjectURL(blob);

与亚马逊的Polly一起使用时,我使用相同的方法将文本转换为语音

答案 1 :(得分:0)

我从here获得了所需的东西。虽然问题是关于图像的,但代码似乎可以正常运行。

const getBase64 = async (url) => {
    try {
        var result =  await  axios
            .get(url, {
                responseType: 'arraybuffer'
            })
            .then(response =>  new Buffer.from(response.data, 'binary').toString('base64'))


        return { data: result}
    }catch (e) {
        return {error: e};
    }
}