Я использую API для преобразования текста в речь.На почтальоне, когда я напрямую вызываю API, я могу воспроизвести возвращенный аудиофайл в почтальоне.Но когда я вызываю API через сервер узлов и сохраняю его, файл не воспроизводится.
Я пытался сохранить файл в mp3
и mpeg
, но оба не могли быть воспроизведены.
app.post("/", (req, res) => {
req.on("data", (data, err) => {
let body = JSON.parse(data);
body = querystring.stringify(body);
request(
{
headers: {
"X-NCP-APIGW-API-KEY-ID": "123123",//dummy variable
"X-NCP-APIGW-API-KEY": "123123",//dummy variable
"Content-Type": "application/x-www-form-urlencoded"
},
uri: "https://naveropenapi.apigw.ntruss.com/voice/v1/tts",
timeout: 100000,
method: "POST",
body
},
(err, response, body) => {
console.log(body);
if (err) res.status(400).send(err);
else {
fs.writeFile("./src/temp/file.mpeg", body, err => {
if (err) console.log(err);
res.status(200).send("success");
});
}
}
);
});
});
Вот входные данные и результат почтальона (заголовки эквивалентны приведенному выше коду): KEY-ID ,
clientSecret`
Код сохранил file.mpeg
в правильном каталоге, но звук не может быть воспроизведен.
Ниже находится console.log(body)
.Как видите, что-то сломано.
Если заменить body = querystring.stringify(body)
на let {body} = req
, я получаю следующую ошибку:
_http_outgoing.js:595
throw new ERR_INVALID_ARG_TYPE('first argument',
^
TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string or Buffer. Received type object
at write_ (_http_outgoing.js:595:11)
at ClientRequest.write (_http_outgoing.js:567:10)
at Request.write (C:\Users\Sihoon Kim\Desktop\development\ZEPETO\node_modules\request\request.js:1500:27)
at end (C:\Users\Sihoon Kim\Desktop\development\ZEPETO\node_modules\request\request.js:549:18)
at Immediate.<anonymous> (C:\Users\Sihoon Kim\Desktop\development\ZEPETO\node_modules\request\request.js:578:7)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)