Как отправить запрос на Yandex speechKit синтез речи на node js
есть json по которому я хочу достучаться до синтеза речи Yandex SpeechKit text.json
{
"text": "Привет, братишка, хочу поздравить тебя с твоим гейским праздником",
"lang": "ru",
"emotion": "ermil",
"format": "mp3",
}
Я отправляю запрос через nodeJS Axios на const api = https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize
const req = fs.createReadStream('./text.json');
(async ()=>{
const result = await axios({
method: "POST",
url: api,
headers: {
"Transfer-Encoding": "chunked",
'Authorization': 'Api-Key ' + YA_API_KEY
},
data: JSON.parse(fs.readFileSync('./text.json'))
})
result.data.pipe(fs.createWriteStream('./what.mp3'))
})();
Поверьте, это не единственная вариация кода, которую я использовал
const chunks = [];
req.on('data', chunk => chunks.push(chunk))
req.on('end', async () => {
const axiosConfig = {
method: 'POST',
url: api,
headers: {
"Transfer-Encoding": "chunked",
'Authorization': `Bearer ${YA_API_KEY}`
},
data: Buffer.concat(chunks)
}
axios(axiosConfig).then(res => console.log(res.data))
})
Также я пробовал передавать text.json - utf8. Ничего не выходит, выдаёт ошибку 400
AxiosError: Request failed with status code 400
at settle (C:\Users\User\Desktop\test\node_modules\axios\dist\node\axios.cjs:1909:12)
at IncomingMessage.handleStreamEnd (C:\Users\User\Desktop\test\node_modules\axios\dist\node\axios.cjs:2989:11)
at IncomingMessage.emit (node:events:525:35)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'ERR_BAD_REQUEST', ...
В документации вообще ничего нет... Помогите разобраться)
Источник: Stack Overflow на русском