UNPKG

@voice-ping/cognitive-services-speech

Version:

VoicePing Cognitive Services Speech SDK for JavaScript forked from Microsoft

275 lines (273 loc) 10.6 kB
"use strict"; // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. Object.defineProperty(exports, "__esModule", { value: true }); var Exports_1 = require("../common.speech/Exports"); var Exports_2 = require("../common/Exports"); var Contracts_1 = require("./Contracts"); var Exports_3 = require("./Exports"); /** * Defines the base class Recognizer which mainly contains common event handlers. * @class Recognizer */ var Recognizer = /** @class */ (function () { /** * Creates and initializes an instance of a Recognizer * @constructor * @param {AudioConfig} audioInput - An optional audio input stream associated with the recognizer */ function Recognizer(audioConfig, properties, connectionFactory) { this.audioConfig = (audioConfig !== undefined) ? audioConfig : Exports_3.AudioConfig.fromDefaultMicrophoneInput(); this.privDisposed = false; this.privProperties = properties.clone(); this.privConnectionFactory = connectionFactory; this.implCommonRecognizerSetup(); } /** * Dispose of associated resources. * @member Recognizer.prototype.close * @function * @public */ Recognizer.prototype.close = function () { Contracts_1.Contracts.throwIfDisposed(this.privDisposed); this.dispose(true); }; Object.defineProperty(Recognizer.prototype, "internalData", { /** * @Internal * Internal data member to support fromRecognizer* pattern methods on other classes. * Do not use externally, object returned will change without warning or notice. */ get: function () { return this.privReco; }, enumerable: true, configurable: true }); /** * This method performs cleanup of resources. * The Boolean parameter disposing indicates whether the method is called * from Dispose (if disposing is true) or from the finalizer (if disposing is false). * Derived classes should override this method to dispose resource if needed. * @member Recognizer.prototype.dispose * @function * @public * @param {boolean} disposing - Flag to request disposal. */ Recognizer.prototype.dispose = function (disposing) { if (this.privDisposed) { return; } if (disposing) { if (this.privReco) { this.privReco.audioSource.turnOff(); this.privReco.dispose(); } } this.privDisposed = true; }; Object.defineProperty(Recognizer, "telemetryEnabled", { /** * This method returns the current state of the telemetry setting. * @member Recognizer.prototype.telemetryEnabled * @function * @public * @returns true if the telemetry is enabled, false otherwise. */ get: function () { return Exports_1.ServiceRecognizerBase.telemetryDataEnabled; }, enumerable: true, configurable: true }); /** * This method globally enables or disables telemetry. * @member Recognizer.prototype.enableTelemetry * @function * @public * @param enabled - Global setting for telemetry collection. * If set to true, telemetry information like microphone errors, * recognition errors are collected and sent to Microsoft. * If set to false, no telemetry is sent to Microsoft. */ /* tslint:disable:member-ordering */ Recognizer.enableTelemetry = function (enabled) { Exports_1.ServiceRecognizerBase.telemetryDataEnabled = enabled; }; // Does the generic recognizer setup that is common across all recognizer types. Recognizer.prototype.implCommonRecognizerSetup = function () { var _this = this; var osPlatform = (typeof window !== "undefined") ? "Browser" : "Node"; var osName = "unknown"; var osVersion = "unknown"; if (typeof navigator !== "undefined") { osPlatform = osPlatform + "/" + navigator.platform; osName = navigator.userAgent; osVersion = navigator.appVersion; } var recognizerConfig = this.createRecognizerConfig(new Exports_1.SpeechServiceConfig(new Exports_1.Context(new Exports_1.OS(osPlatform, osName, osVersion)))); var subscriptionKey = this.privProperties.getProperty(Exports_3.PropertyId.SpeechServiceConnection_Key, undefined); var authentication = (subscriptionKey && subscriptionKey !== "") ? new Exports_1.CognitiveSubscriptionKeyAuthentication(subscriptionKey) : new Exports_1.CognitiveTokenAuthentication(function (authFetchEventId) { var authorizationToken = _this.privProperties.getProperty(Exports_3.PropertyId.SpeechServiceAuthorization_Token, undefined); return Exports_2.PromiseHelper.fromResult(authorizationToken); }, function (authFetchEventId) { var authorizationToken = _this.privProperties.getProperty(Exports_3.PropertyId.SpeechServiceAuthorization_Token, undefined); return Exports_2.PromiseHelper.fromResult(authorizationToken); }); this.privReco = this.createServiceRecognizer(authentication, this.privConnectionFactory, this.audioConfig, recognizerConfig); }; Recognizer.prototype.recognizeOnceAsyncImpl = function (recognitionMode, cb, err) { var _this = this; try { Contracts_1.Contracts.throwIfDisposed(this.privDisposed); this.implRecognizerStop().on(function (_) { try { _this.privReco.recognize(recognitionMode, function (e) { _this.implRecognizerStop().on(function (_) { if (!!cb) { cb(e); } }, function (error) { if (!!err) { err(error); } }); }, function (e) { _this.implRecognizerStop(); // We're already in an error path so best effort here. if (!!err) { err(e); } /* tslint:disable:no-empty */ }).on(function (_) { }, function (error) { if (!!err) { err(error); } }); } catch (error) { if (!!err) { if (error instanceof Error) { var typedError = error; err(typedError.name + ": " + typedError.message); } else { err(error); } } // Destroy the recognizer. _this.dispose(true); } }, function (error) { if (!!err) { err(error); } }); } catch (error) { if (!!err) { if (error instanceof Error) { var typedError = error; err(typedError.name + ": " + typedError.message); } else { err(error); } } // Destroy the recognizer. this.dispose(true); } }; Recognizer.prototype.startContinuousRecognitionAsyncImpl = function (recognitionMode, cb, err) { var _this = this; try { Contracts_1.Contracts.throwIfDisposed(this.privDisposed); this.implRecognizerStop().on(function (_) { _this.privReco.recognize(recognitionMode, undefined, undefined).on(function (_) { // report result to promise. if (!!cb) { try { cb(); } catch (e) { if (!!err) { err(e); } } cb = undefined; } }, function (error) { if (!!err) { err(error); } // Destroy the recognizer. _this.dispose(true); }); }, function (error) { if (!!err) { err(error); } // Destroy the recognizer. _this.dispose(true); }); } catch (error) { if (!!err) { if (error instanceof Error) { var typedError = error; err(typedError.name + ": " + typedError.message); } else { err(error); } } // Destroy the recognizer. this.dispose(true); } }; Recognizer.prototype.stopContinuousRecognitionAsyncImpl = function (cb, err) { try { Contracts_1.Contracts.throwIfDisposed(this.privDisposed); this.implRecognizerStop().on(function (_) { if (!!cb) { try { cb(); } catch (e) { if (!!err) { err(e); } } } }, function (error) { if (!!err) { err(error); } }); } catch (error) { if (!!err) { if (error instanceof Error) { var typedError = error; err(typedError.name + ": " + typedError.message); } else { err(error); } } // Destroy the recognizer. this.dispose(true); } }; Recognizer.prototype.implRecognizerStop = function () { if (this.privReco) { return this.privReco.stopRecognizing(); } return Exports_2.PromiseHelper.fromResult(true); }; return Recognizer; }()); exports.Recognizer = Recognizer; //# sourceMappingURL=Recognizer.js.map