Конвертировать аудио из URL в base64 в nodejs? - PullRequest
0 голосов
/ 05 июня 2019

Я хочу отправить голосовой клип в мессенджер Facebook и перевести его в текст, используя Google Cloud Speech to text.Тем не менее, формат мессенджера facebook установил URL файла, и я понятия не имею, преобразовать ли его в base 64. Если это изображение типа .png и .jpg, то все в порядке, для этого есть пакеты.Но я пытаюсь конвертировать аудио как файлы .mp3 и .m4a.Есть ли какой-нибудь инструмент для этого для работы с nodejs.

Я бы предпочел не сохранять аудиофайл как локальный файл, потому что я развертываю сервер с помощью Google App Engine, и это просто решит проблему.супер сложный.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Я получил то, что мне нужно от здесь . В то время как вопрос об изображении, кажется, код работает нормально.

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};
    }
}
0 голосов
/ 05 июня 2019

Вы можете заглянуть в FileReader API и, возможно, AudioData API - между этими двумя у вас должно быть все, что вам нужно. Отправляя аудиофайлы по проводам, вы не передаете их как base64. Я полагаю, что это либо бинарный, либо blob-код iirc.

Вы можете использовать API FileReader для чтения в вашем аудиофайле с помощью FileReader.readAsArrayBuffer (), который преобразует ваш файл в сопоставленный массив. Оттуда вы можете превратить его в объект BLOB-объекта и отправить его туда, куда вам нужно.

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

Я использую этот же подход при работе с Amazon Polly, чтобы превратить текст в речь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...