1// ***************************************************************************************************** 2// ******* speak2web UNIVERSAL VOICE SEARCH *********** 3// ******* AI Service requires subcriptions *********** 4// ******* Get your subscription at *********** 5// ******* https://speak2web.com/plugin#plans *********** 6// ******* Need support? https://speak2web.com/support *********** 7// ******* Licensed GPLv2+ *********** 8//****************************************************************************************************** 9 10 11//#################################### 12// PLUGIN LANGUAGE 13//#################################### 14var uvsTypeOfSelectedLanguage = (typeof (vs.uvsSelectedLanguage) != 'undefined' && vs.uvsSelectedLanguage !== null) ? vs.uvsSelectedLanguage.trim() : 'English'; 15var uvsSelectedLang = (typeof (vs.uvsSelectedLanguage) != 'undefined' && vs.uvsSelectedLanguage !== null) ? vs.uvsSelectedLanguage.trim() : 'en-US'; 16 17var uvsIsSttLangCtx = typeof _uvsSttLanguageContext != 'undefined' && !!_uvsSttLanguageContext && _uvsSttLanguageContext instanceof Object ? true : false; 18var uvsSttLanguageContext = { 19 'gcp': { 20 'stt': null, 21 'langCode': null, 22 'endPoint': null, 23 'key': null, 24 'qs': { 'key': null } 25 } 26} 27 28if (uvsIsSttLangCtx === true) { 29 //############################### 30 // GCP 31 //############################### 32 let gcp = 'gcp' in _uvsSttLanguageContext && _uvsSttLanguageContext['gcp'] instanceof Object ? _uvsSttLanguageContext['gcp'] : {}; 33 uvsSttLanguageContext['gcp']['stt'] = 'stt' in gcp && gcp['stt'] == 'Y' ? true : false; 34 35 if (!!uvsSttLanguageContext['gcp']['stt']) { 36 uvsSttLanguageContext['gcp']['endPoint'] = 'endPoint' in gcp && typeof gcp['endPoint'] != 'undefined' && !!gcp['endPoint'] ? gcp['endPoint'] : null; 37 uvsSttLanguageContext['gcp']['key'] = 'key' in gcp && typeof gcp['key'] != 'undefined' && !!gcp['key'] ? gcp['key'] : null; 38 uvsSttLanguageContext['gcp']['langCode'] = 'langCode' in gcp && typeof gcp['langCode'] != 'undefined' && !!gcp['langCode'] ? gcp['langCode'] : null; 39 40 let qs = 'qs' in gcp && gcp['qs'] instanceof Object ? gcp['qs'] : {}; 41 uvsSttLanguageContext['gcp']['qs']['key'] = 'key' in qs && typeof qs['key'] != 'undefined' && !!qs['key'] ? qs['key'] : null; 42 } 43} 44 45//#################################### 46// CLIENT INFO 47//#################################### 48let uvsNavigator = { 'navigatorUserAgent': navigator.userAgent.toLowerCase(), 'navigatorPlatform': navigator.platform }; 49var uvsClientInfo = { 50 'chrome': uvsNavigator.navigatorUserAgent.indexOf('chrome') > -1, 51 'firefox': uvsNavigator.navigatorUserAgent.indexOf('firefox') > -1, 52 'edge': uvsNavigator.navigatorUserAgent.indexOf('edge') > -1 || uvsNavigator.navigatorUserAgent.indexOf('edg') > -1, 53 'ie': uvsNavigator.navigatorUserAgent.indexOf('msie') > -1 || uvsNavigator.navigatorUserAgent.indexOf('trident') > -1, 54 'opera': uvsNavigator.navigatorUserAgent.indexOf('opera') > -1 || uvsNavigator.navigatorUserAgent.indexOf('opr') > -1, 55 56 'ios': !!uvsNavigator.navigatorPlatform && /iPad|iPhone|iPod/.test(uvsNavigator.navigatorPlatform), 57 'android': uvsNavigator.navigatorUserAgent.indexOf("android") > -1, 58 'windows': uvsNavigator.navigatorUserAgent.indexOf("windows") > -1, 59 'linux': uvsNavigator.navigatorUserAgent.indexOf("linux") > -1, 60 61 'macSafari': uvsNavigator.navigatorUserAgent.indexOf('mac') > -1 && uvsNavigator.navigatorUserAgent.indexOf('safari') > -1 && uvsNavigator.navigatorUserAgent.indexOf('chrome') === -1, 62 'iosSafari': this.ios === true && uvsNavigator.navigatorUserAgent.indexOf('safari') > -1, 63}; 64 65if (uvsClientInfo['chrome'] === true && (uvsClientInfo['opera'] === true || uvsClientInfo['edge'] === true)) { 66 uvsClientInfo['chrome'] = false;
67} 68 69/** 70 * Path map for audio files of short phrases 71 * 72 */ 73var uvsAudioShortPharasesPaths = { 74 'root': 'short_phrases/', 75 'voice': uvsSelectedLang + '/', 76 'random': 'random/', 77 'general': 'general/', 78 'getRandomVoicesPath': function () { 79 return this.root + this.random + this.voice + uvsSelectedLang + '_'; 80 }, 81 'getGeneralVoicesPath': function () { 82 return this.root + this.general + this.voice + uvsSelectedLang + '_'; 83 } 84} 85 86let uvsRandomShortPhrasePath = uvsAudioShortPharasesPaths.getRandomVoicesPath(); 87let uvsGeneralShortPhrasePath = uvsAudioShortPharasesPaths.getGeneralVoicesPath(); 88let uvsSilenceSoundPath = uvsAudioShortPharasesPaths.root + 'silence.mp3'; 89 90/** 91 * Alternative response audio files to be played/spoken 92 * 93 */ 94var uvsAlternativeResponse = { 95 /** 96 * Text in audio file: Let me search it 97 */ 98 'basic': uvsGeneralShortPhrasePath + "basic.mp3", 99 /** 100 * Text in audio file: I am sorry but I am unable to access your microphone, Please connect a microphone or you can also type your question if needed 101 */ 102 'micConnect': uvsGeneralShortPhrasePath + "mic_connect.mp3", 103 /** 104 * Text in audio file: Voice search is currently unavailable, Please try again after some time 105 */ 106 'unavailable': uvsGeneralShortPhrasePath + "unavailable.mp3", 107 /** 108 * Text in audio file: I am unable to hear you 109 */ 110 'notAudible': uvsGeneralShortPhrasePath + "not_audible.mp3", 111 'randomLib': [ 112 /** 113 * Text in audio file: Just a second please 114 */ 115 uvsRandomShortPhrasePath + "0.mp3", 116 /** 117 * Text in audio file: I am on it 118 */ 119 uvsRandomShortPhrasePath + "1.mp3", 120 /** 121 * Text in audio file: No problem 122 */ 123 uvsRandomShortPhrasePath + "2.mp3", 124 /** 125 * Text in audio file: Just a moment, I need a brief rest 126 */ 127 uvsRandomShortPhrasePath + "3.mp3", 128 /** 129 * Text in audio file: You seem to work too hard, Get your self a coffee and I will find it up for you 130 */ 131 uvsRandomShortPhrasePath + "4.mp3", 132 /** 133 * Text in audio file: Coming right up 134 */ 135 uvsRandomShortPhrasePath + "5.mp3", 136 /** 137 * Text in audio file: I will do my best 138 */ 139 uvsRandomShortPhrasePath + "6.mp3", 140 /** 141 * Text in audio file: Anything for you. I will get right on it 142 */ 143 uvsRandomShortPhrasePath + "7.mp3", 144 /** 145 * Text in audio file: Working on it, One moment please 146 */ 147 uvsRandomShortPhrasePath + "8.mp3", 148 /** 149 * Text in audio file: Beep - Beep - Beep, just kidding, One moment please 150 */ 151 uvsRandomShortPhrasePath + "9.mp3" 152 ], 153}; 154 155var uvsMessages = _uvsTextPhrases['uvsMessages']; 156var uvsErrorLibrary = _uvsTextPhrases['uvsErrorLibrary']; 157var uvsWidgetMessages = _uvsTextPhrases['uvsWidgetMessages']; 158 159var uvsIsMuteSimon = typeof vs._uvsMuteAudioPhrases != 'undefined' && !!vs._uvsMuteAudioPhrases && vs._uvsMuteAudioPhrases == 'yes' ? true : false; 160var uvsIsSingleClick = typeof vs._uvsSingleClick != 'undefined' && !!vs._uvsSingleClick && vs._uvsSingleClick == 'yes' ? true : false; 161var uvsIsElementor = typeof vs._uvsElementor != 'undefined' && !!vs._uvsElementor && vs._uvsElementor == 'yes' ? true : false;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.