我想将语音剪辑发送到Facebook Messenger,并使用Google Cloud Speech转换为文本。但是,facebook Messenger格式将URL设置为文件,并且我不知道将其转换为base64。如果它是.png和.jpg之类的图像,那很好,有用于此的程序包。但是我正在尝试转换.mp3和.m4a文件之类的音频。是否有任何工具可以与nodejs一起使用。
我不想将音频文件另存为本地文件,因为我正在使用Google App Engine部署服务器,这样做只会使事情变得非常复杂。
答案 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};
}
}