Created
July 19, 2019 10:33
-
-
Save antirek/8f81097bef058b258248960ed40a6716 to your computer and use it in GitHub Desktop.
Yandex Cloud SpeechKit (TTS) Example on Node.js - Пример работы с API технологии синтеза речи Yandex Cloud SpeechKit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fetch = require('node-fetch'); | |
const api_key = 'API_KEY'; | |
const { URLSearchParams } = require('url'); | |
const fs = require('fs'); | |
const params = new URLSearchParams(); | |
const text = 'Добрый день, у нас новая акция! Пицца Добряк сегодня за полцены, закажите по телефону 222. Уже ждем вашего заказа :) ' | |
params.append('text', text); | |
params.append('voice', 'zahar'); | |
params.append('emotion', 'good'); | |
params.append('lang', 'ru-RU'); | |
params.append('speed', '1.0'); | |
params.append('format', 'oggopus'); | |
fetch('https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize', { | |
method: 'post', | |
body: params, | |
headers: { | |
// 'Content-Type': 'application/x-www-form-urlencoded', | |
'Authorization': 'Api-Key ' + api_key, | |
}, | |
}) | |
.then(res => { | |
console.log(res); | |
// return res.json(); | |
const dest = fs.createWriteStream('./octocat.ogg'); | |
res.body.pipe(dest); | |
}) | |
.catch(err => console.error(err)); |
@DIMANVAZ распознавание нужно делать на бекенде, потому что при запросе к API яндекса фигурирует твой личный api-ключ.
Любой программист сможет у тебя его изъять через devtools.
Текст с твоего фронта (сайта) -> твой бекенд: запрос+api_ключ -> Яндекс speech api -(результат в бинарнике)> твой бекенд -(результат в base64, допустим)> твой сайт (воспроизведение аудио)
То-же самое можно провернуть и через axios
const params = new URLSearchParams();
const text = 'Привет, сосочка-девочка'
params.append('text', text);
params.append('lang', 'ru-RU');
params.append('voice', 'ermil');
params.append('format', 'mp3');
params.append('emotion', 'good');
params.append('speed', '1.0');
(async () =>{
const result = await axios ({
method: 'POST',
url: api,
responseType: 'stream',
headers: {
Authorization: "Api-Key " + YA_API_KEY,
},
data: params
})
result.data.pipe(fs.createWriteStream('./newFile.mp3'))
})();
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Возможно ли адаптировать для просто JS? для сайта. Спасибо!