#node.js #amazon-s3 #aws-lambda #alexa
#node.js #amazon-s3 #aws-lambda #alexa
Вопрос:
В настоящее время я создаю приложение Alexa в Node с помощью Lambda. У меня возникла необходимость конвертировать и объединить несколько аудиофайлов. В настоящее время я создаю аудиофайл с помощью преобразования текста в речь Google (длинная история о необходимости этого), который я записываю в / tmp, и извлекаю аудиофайл из s3, который я также записываю в / tmp. Затем я использую sox для объединения двух файлов (см. Ниже) и обратной записи в S3 (в настоящее время общедоступный), который я затем жестко запрограммировал для воспроизведения этого конкретного клипа.
Мой вопрос в том, возможно ли воспроизводить аудио непосредственно из папки / tmp, в отличие от необходимости записывать файл обратно в S3.
await lambdaAudio.sox('-m /tmp/google-formatted.mp3 /tmp/audio.mp3 /tmp/result.mp3')
// get data from resulting mp3
const data = await readFile('/tmp/result.mp3');
const base64data = new Buffer(data, 'binary');
// put file back on AWS for playing
s3.putObject({
Bucket: 'my-bucket',
Key: 'result.mp3',
Body: base64data,
ACL:'public-read'
},function (resp) {
console.log('Done');
});
return`<audio src="https://s3.amazonaws.com/my-bucket/result.mp3" />`;
Ответ №1:
Обычно я загружаю функцию lambda, архивируя код и модули и вообще все файлы, которые требуются моему коду. https://developer.amazon.com/blogs/post/Tx1UE9W1NQ0GYII/Publishing-Your-Skill-Code-to-Lambda-via-the-Command-Line-Interface Таким образом, если вы заархивируете каталог / tmp и опубликуете его как часть своего лямбда-кода, аудиофайл будет доступен вашей лямбда-функцией
Комментарии:
1. к сожалению, это звуковое диалоговое окно необходимо создавать «на лету», записывая в папку / tmp, а затем считывая, поэтому загрузка его невозможна.