UNPKG

umbot

Version:

Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф

332 lines (331 loc) 15.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSoundInDB = getSoundInDB; exports.soundProcessing = soundProcessing; const index_1 = require("../../../index"); const utils_1 = require("../Base/utils"); const constants_1 = require("./constants"); const API_1 = require("../API"); /** * Массив стандартных звуков Алисы * * Содержит предопределенные звуки для различных категорий: * - Игровые звуки (победа, поражение, монеты и др.) * - Природные звуки (ветер, гром, дождь и др.) * - Звуки предметов (телефон, дверь, колокол и др.) * - Звуки животных */ const STANDARD_SOUNDS = [ { key: index_1.SoundConstants.S_AUDIO_GAME_WIN, sounds: [ '<speaker audio="alice-sounds-game-win-1.opus">', '<speaker audio="alice-sounds-game-win-2.opus">', '<speaker audio="alice-sounds-game-win-3.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_GAME_LOSS, sounds: [ '<speaker audio="alice-sounds-game-loss-1.opus">', '<speaker audio="alice-sounds-game-loss-2.opus">', '<speaker audio="alice-sounds-game-loss-3.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_GAME_BOOT, sounds: ['<speaker audio="alice-sounds-game-boot-1.opus">'], }, { key: index_1.SoundConstants.S_AUDIO_GAME_8_BIT_COIN, sounds: [ '<speaker audio="alice-sounds-game-8-bit-coin-1.opus">', '<speaker audio="alice-sounds-game-8-bit-coin-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_GAME_PING, sounds: ['<speaker audio="alice-sounds-game-ping-1.opus">'], }, { key: index_1.SoundConstants.S_AUDIO_GAME_8_BIT_FLYBY, sounds: ['<speaker audio="alice-sounds-game-8-bit-flyby-1.opus">'], }, { key: index_1.SoundConstants.S_AUDIO_GAME_8_BIT_MACHINE_GUN, sounds: ['<speaker audio="alice-sounds-game-8-bit-machine-gun-1.opus">'], }, { key: index_1.SoundConstants.S_AUDIO_GAME_8_BIT_PHONE, sounds: ['<speaker audio="alice-sounds-game-8-bit-phone-1.opus">'], }, { key: index_1.SoundConstants.S_AUDIO_GAME_POWERUP, sounds: [ '<speaker audio="alice-sounds-game-powerup-1.opus">', '<speaker audio="alice-sounds-game-powerup-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_WIND, sounds: [ '<speaker audio="alice-sounds-nature-wind-1.opus">', '<speaker audio="alice-sounds-nature-wind-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_THUNDER, sounds: [ '<speaker audio="alice-sounds-nature-thunder-1.opus">', '<speaker audio="alice-sounds-nature-thunder-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_JUNGLE, sounds: [ '<speaker audio="alice-sounds-nature-jungle-1.opus">', '<speaker audio="alice-sounds-nature-jungle-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_RAIN, sounds: [ '<speaker audio="alice-sounds-nature-rain-1.opus">', '<speaker audio="alice-sounds-nature-rain-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_FOREST, sounds: [ '<speaker audio="alice-sounds-nature-forest-1.opus">', '<speaker audio="alice-sounds-nature-forest-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_SEA, sounds: [ '<speaker audio="alice-sounds-nature-sea-1.opus">', '<speaker audio="alice-sounds-nature-sea-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_FIRE, sounds: [ '<speaker audio="alice-sounds-nature-fire-1.opus">', '<speaker audio="alice-sounds-nature-fire-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_STREAM, sounds: [ '<speaker audio="alice-sounds-nature-stream-1.opus">', '<speaker audio="alice-sounds-nature-stream-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_THING_CHAINSAW, sounds: [ '<speaker audio="alice-sounds-things-chainsaw-1.opus">', '<speaker audio="alice-sounds-things-explosion-1.opus">', '<speaker audio="alice-sounds-things-water-3.opus">', '<speaker audio="alice-sounds-things-water-1.opus">', '<speaker audio="alice-sounds-things-water-2.opus">', '<speaker audio="alice-sounds-things-switch-1.opus">', '<speaker audio="alice-sounds-things-switch-2.opus">', '<speaker audio="alice-sounds-things-gun-1.opus">', '<speaker audio="alice-sounds-transport-ship-horn-1.opus">', '<speaker audio="alice-sounds-transport-ship-horn-2.opus">', '<speaker audio="alice-sounds-things-door-1.opus">', '<speaker audio="alice-sounds-things-door-2.opus">', '<speaker audio="alice-sounds-things-glass-2.opus">', '<speaker audio="alice-sounds-things-bell-1.opus">', '<speaker audio="alice-sounds-things-bell-2.opus">', '<speaker audio="alice-sounds-things-car-1.opus">', '<speaker audio="alice-sounds-things-car-2.opus">', '<speaker audio="alice-sounds-things-sword-2.opus">', '<speaker audio="alice-sounds-things-sword-1.opus">', '<speaker audio="alice-sounds-things-sword-3.opus">', '<speaker audio="alice-sounds-things-siren-1.opus">', '<speaker audio="alice-sounds-things-siren-2.opus">', '<speaker audio="alice-sounds-things-old-phone-1.opus">', '<speaker audio="alice-sounds-things-old-phone-2.opus">', '<speaker audio="alice-sounds-things-glass-1.opus">', '<speaker audio="alice-sounds-things-construction-2.opus">', '<speaker audio="alice-sounds-things-construction-1.opus">', '<speaker audio="alice-sounds-things-phone-1.opus">', '<speaker audio="alice-sounds-things-phone-2.opus">', '<speaker audio="alice-sounds-things-phone-3.opus">', '<speaker audio="alice-sounds-things-phone-4.opus">', '<speaker audio="alice-sounds-things-phone-5.opus">', '<speaker audio="alice-sounds-things-toilet-1.opus">', '<speaker audio="alice-sounds-things-cuckoo-clock-2.opus">', '<speaker audio="alice-sounds-things-cuckoo-clock-1.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_ANIMALS, sounds: [ '<speaker audio="alice-sounds-animals-wolf-1.opus">', '<speaker audio="alice-sounds-animals-crow-1.opus">', '<speaker audio="alice-sounds-animals-crow-2.opus">', '<speaker audio="alice-sounds-animals-cow-1.opus">', '<speaker audio="alice-sounds-animals-cow-2.opus">', '<speaker audio="alice-sounds-animals-cow-3.opus">', '<speaker audio="alice-sounds-animals-cat-1.opus">', '<speaker audio="alice-sounds-animals-cat-2.opus">', '<speaker audio="alice-sounds-animals-cat-3.opus">', '<speaker audio="alice-sounds-animals-cat-4.opus">', '<speaker audio="alice-sounds-animals-cat-5.opus">', '<speaker audio="alice-sounds-animals-cuckoo-1.opus">', '<speaker audio="alice-sounds-animals-chicken-1.opus">', '<speaker audio="alice-sounds-animals-lion-1.opus">', '<speaker audio="alice-sounds-animals-lion-2.opus">', '<speaker audio="alice-sounds-animals-horse-1.opus">', '<speaker audio="alice-sounds-animals-horse-2.opus">', '<speaker audio="alice-sounds-animals-horse-galloping-1.opus">', '<speaker audio="alice-sounds-animals-horse-walking-1.opus">', '<speaker audio="alice-sounds-animals-frog-1.opus">', '<speaker audio="alice-sounds-animals-seagull-1.opus">', '<speaker audio="alice-sounds-animals-monkey-1.opus">', '<speaker audio="alice-sounds-animals-sheep-1.opus">', '<speaker audio="alice-sounds-animals-sheep-2.opus">', '<speaker audio="alice-sounds-animals-rooster-1.opus">', '<speaker audio="alice-sounds-animals-elephant-1.opus">', '<speaker audio="alice-sounds-animals-elephant-2.opus">', '<speaker audio="alice-sounds-animals-dog-1.opus">', '<speaker audio="alice-sounds-animals-dog-2.opus">', '<speaker audio="alice-sounds-animals-dog-3.opus">', '<speaker audio="alice-sounds-animals-dog-4.opus">', '<speaker audio="alice-sounds-animals-dog-5.opus">', '<speaker audio="alice-sounds-animals-owl-1.opus">', '<speaker audio="alice-sounds-animals-owl-2.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_NATURE_HUMAN, sounds: [ '<speaker audio="alice-sounds-human-cheer-1.opus">', '<speaker audio="alice-sounds-human-cheer-2.opus">', '<speaker audio="alice-sounds-human-kids-1.opus">', '<speaker audio="alice-sounds-human-walking-dead-1.opus">', '<speaker audio="alice-sounds-human-walking-dead-2.opus">', '<speaker audio="alice-sounds-human-walking-dead-3.opus">', '<speaker audio="alice-sounds-human-cough-1.opus">', '<speaker audio="alice-sounds-human-cough-2.opus">', '<speaker audio="alice-sounds-human-laugh-1.opus">', '<speaker audio="alice-sounds-human-laugh-2.opus">', '<speaker audio="alice-sounds-human-laugh-3.opus">', '<speaker audio="alice-sounds-human-laugh-4.opus">', '<speaker audio="alice-sounds-human-laugh-5.opus">', '<speaker audio="alice-sounds-human-crowd-1.opus">', '<speaker audio="alice-sounds-human-crowd-2.opus">', '<speaker audio="alice-sounds-human-crowd-3.opus">', '<speaker audio="alice-sounds-human-crowd-4.opus">', '<speaker audio="alice-sounds-human-crowd-5.opus">', '<speaker audio="alice-sounds-human-crowd-7.opus">', '<speaker audio="alice-sounds-human-crowd-6.opus">', '<speaker audio="alice-sounds-human-sneeze-1.opus">', '<speaker audio="alice-sounds-human-sneeze-2.opus">', '<speaker audio="alice-sounds-human-walking-room-1.opus">', '<speaker audio="alice-sounds-human-walking-snow-1.opus">', ], }, { key: index_1.SoundConstants.S_AUDIO_MUSIC, sounds: [ '<speaker audio="alice-music-harp-1.opus">', '<speaker audio="alice-music-drums-1.opus">', '<speaker audio="alice-music-drums-2.opus">', '<speaker audio="alice-music-drums-3.opus">', '<speaker audio="alice-music-drum-loop-1.opus">', '<speaker audio="alice-music-drum-loop-2.opus">', '<speaker audio="alice-music-tambourine-80bpm-1.opus">', '<speaker audio="alice-music-tambourine-100bpm-1.opus">', '<speaker audio="alice-music-tambourine-120bpm-1.opus">', '<speaker audio="alice-music-bagpipes-1.opus">', '<speaker audio="alice-music-bagpipes-2.opus">', '<speaker audio="alice-music-guitar-c-1.opus">', '<speaker audio="alice-music-guitar-e-1.opus">', '<speaker audio="alice-music-guitar-g-1.opus">', '<speaker audio="alice-music-guitar-a-1.opus">', '<speaker audio="alice-music-gong-1.opus">', '<speaker audio="alice-music-gong-2.opus">', '<speaker audio="alice-music-horn-2.opus">', '<speaker audio="alice-music-violin-c-1.opus">', '<speaker audio="alice-music-violin-c-2.opus">', '<speaker audio="alice-music-violin-a-1.opus">', '<speaker audio="alice-music-violin-e-1.opus">', '<speaker audio="alice-music-violin-d-1.opus">', '<speaker audio="alice-music-violin-b-1.opus">', '<speaker audio="alice-music-violin-g-1.opus">', '<speaker audio="alice-music-violin-f-1.opus">', '<speaker audio="alice-music-horn-1.opus">', '<speaker audio="alice-music-piano-c-1.opus">', '<speaker audio="alice-music-piano-c-2.opus">', '<speaker audio="alice-music-piano-a-1.opus">', '<speaker audio="alice-music-piano-e-1.opus">', '<speaker audio="alice-music-piano-d-1.opus">', '<speaker audio="alice-music-piano-b-1.opus">', '<speaker audio="alice-music-piano-g-1.opus">', ], }, ]; const STANDARD_EFFECTS = [ { key: index_1.SoundConstants.S_EFFECT_BEHIND_THE_WALL, effect: '<speaker effect="behind_the_wall">', }, { key: index_1.SoundConstants.S_EFFECT_HAMSTER, effect: '<speaker effect="hamster">', }, { key: index_1.SoundConstants.S_EFFECT_MEGAPHONE, effect: '<speaker effect="megaphone">', }, { key: index_1.SoundConstants.S_EFFECT_PITCH_DOWN, effect: '<speaker effect="pitch_down">', }, { key: index_1.SoundConstants.S_EFFECT_PSYCHODELIC, effect: '<speaker effect="psychodelic">', }, { key: index_1.SoundConstants.S_EFFECT_PULSE, effect: '<speaker effect="pulse">', }, { key: index_1.SoundConstants.S_EFFECT_TRAIN_ANNOUNCE, effect: '<speaker effect="train_announce"', }, { key: index_1.SoundConstants.S_EFFECT_END, effect: '<speaker effect="-">', }, ]; /** * Получение токена, необходимого для воспроизведения звуков в Алисе * @param controller Контроллер приложения * @param path Путь до аудиофайла */ async function getSoundInDB(controller, path) { return (0, utils_1.getSoundToken)(path, constants_1.T_ALISA, controller, async (model) => { const yandexApi = new API_1.YandexSoundRequest(controller.appContext.appConfig.tokens[constants_1.T_ALISA]?.token, controller.platformOptions.appId, controller.appContext); const res = await yandexApi.downloadSoundFile(path); if (res?.id) { model.soundToken = res.id; if (await model.save(true)) { return model.soundToken; } } return null; }); } /** * Получение корректного ответа для озвучивания запроса пользователю Алисы * @param soundInfo Информация необходимая для обработки аудио */ function soundProcessing(soundInfo) { return (0, utils_1.defaultSoundProcessing)(soundInfo, STANDARD_SOUNDS, STANDARD_EFFECTS); }