UNPKG

unserver-unify

Version:

243 lines 7.18 kB
'use strict'; angular.module('bamboo').controller('SpeachController', function(ApiService, CommonService, $scope, $timeout) { var self = this; var langs = { 'Afrikaans': 'af-ZA', 'አማርኛ': 'am-ET', 'Azərbaycanca': 'az-AZ', 'বাংলা': { 'bn-BD': 'বাংলাদেশ', 'bn-IN': 'ভারত' }, 'Bahasa Indonesia': 'id-ID', 'Bahasa Melayu': 'ms-MY', 'Català': 'ca-ES', 'Čeština': 'cs-CZ', 'Dansk': 'da-DK', 'Deutsch': 'de-DE', 'English': { 'en-AU': 'Australia', 'en-CA': 'Canada', 'en-IN': 'India', 'en-KE': 'Kenya', 'en-TZ': 'Tanzania', 'en-GH': 'Ghana', 'en-NZ': 'New Zealand', 'en-NG': 'Nigeria', 'en-ZA': 'South Africa', 'en-PH': 'Philippines', 'en-GB': 'United Kingdom', 'en-US': 'United States' }, 'Español': { 'es-AR': 'Argentina', 'es-BO': 'Bolivia', 'es-CL': 'Chile', 'es-CO': 'Colombia', 'es-CR': 'Costa Rica', 'es-EC': 'Ecuador', 'es-SV': 'El Salvador', 'es-ES': 'España', 'es-US': 'Estados Unidos', 'es-GT': 'Guatemala', 'es-HN': 'Honduras', 'es-MX': 'México', 'es-NI': 'Nicaragua', 'es-PA': 'Panamá', 'es-PY': 'Paraguay', 'es-PE': 'Perú', 'es-PR': 'Puerto Rico', 'es-DO': 'República Dominicana', 'es-UY': 'Uruguay', 'es-VE': 'Venezuela' }, 'Euskara': 'eu-ES', 'Filipino': 'fil-PH', 'Français': 'fr-FR', 'Basa Jawa': 'jv-ID', 'Galego': 'gl-ES', 'ગુજરાતી': 'gu-IN', 'Hrvatski': 'hr-HR', 'IsiZulu': 'zu-ZA', 'Íslenska': 'is-IS', 'Italiano': { 'it-IT': 'Italia', 'it-CH': 'Svizzera' }, 'ಕನ್ನಡ': 'kn-IN', 'ភាសាខ្មែរ': 'km-KH', 'Latviešu': 'lv-LV', 'Lietuvių': 'lt-LT', 'മലയാളം': 'ml-IN', 'मराठी': 'mr-IN', 'Magyar': 'hu-HU', 'ລາວ': 'lo-LA', 'Nederlands': 'nl-NL', 'नेपाली भाषा': 'ne-NP', 'Norsk bokmål': 'nb-NO', 'Polski': 'pl-PL', 'Português': { 'pt-BR': 'Brasil', 'pt-PT': 'Portugal' }, 'Română': 'ro-RO', 'සිංහල': 'si-LK', 'Slovenščina': 'sl-SI', 'Basa Sunda': 'su-ID', 'Slovenčina': 'sk-SK', 'Suomi': 'fi-FI', 'Svenska': 'sv-SE', 'Kiswahili': { 'sw-TZ': 'Tanzania', 'sw-KE': 'Kenya' }, 'ქართული': 'ka-GE', 'Հայերեն': 'hy-AM', 'தமிழ்': { 'ta-IN': 'இந்தியா', 'ta-SG': 'சிங்கப்பூர்', 'ta-LK': 'இலங்கை', 'ta-MY': 'மலேசியா', }, 'తెలుగు': 'te-IN', 'Tiếng Việt': 'vi-VN', 'Türkçe': 'tr-TR', 'اُردُو': { 'ur-PK': 'پاکستان', 'ur-IN': 'بھارت' }, 'Ελληνικά': 'el-GR', 'български': 'bg-BG', 'Pусский': 'ru-RU', 'Српски': 'sr-RS', 'Українська': 'uk-UA', '한국어': 'ko-KR', '中文': { 'cmn-Hans-CN': '普通话 (中国大陆)', 'cmn-Hans-HK': '普通话 (香港)', 'cmn-Hant-TW': '中文 (台灣)', 'yue-Hant-HK': '粵語 (香港)' }, '日本語': 'ja-JP', 'हिन्दी': 'hi-IN', 'ภาษาไทย': 'th-TH' }; this.languageList = []; angular.forEach(langs, function(val, key) { var option = { name: key, val: val, } self.languageList.push(option); }) console.log(this.languageList); this.dialectList = []; var selectLanguage; this.LanguageUsed; this.change = function(item) { console.log(item); self.dialectList = []; if (typeof item.val === 'string') { console.log('languange found', item.val); selectLanguage = item.val; self.LanguageUsed = item.name; } else if (typeof item.val === 'object') { console.log("json found"); angular.forEach(item.val, function(val, key) { var option = { name: val, val: key, } self.dialectList.push(option); }) console.log(self.dialectList); } // console.log(self.selected); } this.changeDialet = function(item) { selectLanguage = item.val; self.LanguageUsed = item.name; console.log('languange found', item.val); } this.final_transcript=""; this.interim_transcript=""; var start_timestamp; this.recognizing = false; var recognition = new webkitSpeechRecognition(); recognition.continuous = true; recognition.interimResults = true; recognition.onstart = function() { self.recognizing = true; $scope.$apply(); // CommonService.showInfo('Started'); console.log("started"); // start_img.src = '/intl/en/chrome/assets/common/images/content/mic-animate.gif'; }; recognition.onerror = function(event) { if (event.error == 'no-speech') { CommonService.showError('Speech function is not supported by your browser!') } if (event.error == 'audio-capture') { CommonService.showError('Can not get your mic!') } if (event.error == 'not-allowed') { if (event.timeStamp - start_timestamp < 100) { CommonService.showError('Mic is blocked'); } else { CommonService.showError('Mic is Denied'); } } }; recognition.onend = function() { self.recognizing = false; $scope.$apply(); console.log(); if (!self.final_transcript) { CommonService.showInfo('Nothing decoded'); return; } // CommonService.showInfo('Stoped'); }; recognition.onresult = function(event) { // var interim_transcript = ''; // console.log(event.results); if (typeof(event.results) == 'undefined') { recognition.onend = null; recognition.stop(); CommonService.showError('Sth wrong!'); return; } for (var i = event.resultIndex; i < event.results.length; ++i) { if (event.results[i].isFinal) { console.log(event.results[i][0]); self.final_transcript += event.results[i][0].transcript +" "+ parseInt(event.results[i][0].confidence*100)+'% ' } else { self.interim_transcript = event.results[i][0].transcript; } } $timeout(function() { console.log(self.final_transcript); }, 10); /* final_transcript = capitalize(final_transcript); if (final_transcript || interim_transcript) { showButtons('inline-block'); }*/ }; this.start = function(event) { if (!selectLanguage) { CommonService.showError('No Language selected!') return; } self.final_transcript = ''; recognition.lang = selectLanguage; recognition.start(); start_timestamp = new Date(); console.log("Started"); } this.stop=function(){ if (self.recognizing) { recognition.stop(); return; } } });