#node.js #text-to-speech #ibm-watson #speech-to-text
#node.js #преобразование текста в речь #ibm-watson #преобразование речи в текст
Вопрос:
Я пытаюсь получить доступ к службе преобразования текста в речь, предоставляемой IBM Watson в моем приложении NodeJS, но я вижу ошибку отказа в доступе, поскольку служба была заблокирована политикой CORS. Перепробовал все способы, настроив связанные заголовки в app.js но не удается решить проблему.
https://cloud.ibm.com/apidocs/text-to-speech?code=node
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:3000");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
Всякий раз, когда я отправляю какой-либо текст из своего приложения NodeJS, должна быть слышна речь с соответствующим ответом.
Комментарии:
1.
https://cloud.ibm.com/apidocs/text-to-speech?code=node
Если вы не являетесь владельцем этого ресурса и владелец установил ограничительнуюCORS
политику, ответ на ваш вопрос невозможен
Ответ №1:
Ошибки CORS должны возникать только в том случае, если вы пытаетесь вызвать службу из javascript на стороне браузера. Сказав это, у меня создалось впечатление, что преобразование текста в речь было одной из служб Watson, которая поддерживала CORS
Если вы вызываете службу со стороны сервера на node.js тогда приложение должно иметь возможность вызывать текст в речь для службы без каких-либо ограничений CORS.
Короче говоря, если вы правильно вызываете службу, вы не должны видеть никаких ошибок CORS. Что говорит о том, что вы неправильно вызываете службу. На основе документации API — https://cloud.ibm.com/apidocs/text-to-speech?code=node
Ваш код должен выглядеть примерно так:
var TextToSpeechV1 = require('watson-developer-cloud/text-to-speech/v1');
var fs = require('fs');
var textToSpeech = new TextToSpeechV1({
iam_apikey: '{apikey}',
url: '{url}'
});
var synthesizeParams = {
text: 'Hello world',
accept: 'audio/wav',
voice: 'en-US_AllisonVoice'
};
// Pipe the synthesized text to a file.
textToSpeech.synthesize(synthesizeParams).on('error', function(error) {
console.log(error);
}).pipe(fs.createWriteStream('hello_world.wav'));
где ваша url
конечная точка должна быть чем-то вроде https://stream.watsonplatform.net/text-to-speech/api