7cd1201c9a8b2aec02c80784d0659c0d39cc80948c64bb9e705e0e66c1254509.json 55 KB

1
  1. {"ast":null,"code":"\"use strict\";\n\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\nvar _asyncToGenerator = require(\"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/asyncToGenerator.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SynthesisAdapterBase = void 0;\nconst Exports_js_1 = require(\"../common/Exports.js\");\nconst Exports_js_2 = require(\"../sdk/Exports.js\");\nconst Exports_js_3 = require(\"./Exports.js\");\nconst SpeechConnectionMessage_Internal_js_1 = require(\"./SpeechConnectionMessage.Internal.js\");\nclass SynthesisAdapterBase {\n constructor(authentication, connectionFactory, synthesizerConfig, audioDestination) {\n this.speakOverride = undefined;\n this.receiveMessageOverride = undefined;\n this.connectImplOverride = undefined;\n this.configConnectionOverride = undefined;\n // A promise for a configured connection.\n // Do not consume directly, call fetchConnection instead.\n this.privConnectionConfigurationPromise = undefined;\n if (!authentication) {\n throw new Exports_js_1.ArgumentNullError(\"authentication\");\n }\n if (!connectionFactory) {\n throw new Exports_js_1.ArgumentNullError(\"connectionFactory\");\n }\n if (!synthesizerConfig) {\n throw new Exports_js_1.ArgumentNullError(\"synthesizerConfig\");\n }\n this.privAuthentication = authentication;\n this.privConnectionFactory = connectionFactory;\n this.privSynthesizerConfig = synthesizerConfig;\n this.privIsDisposed = false;\n this.privSessionAudioDestination = audioDestination;\n this.privSynthesisTurn = new Exports_js_3.SynthesisTurn();\n this.privConnectionEvents = new Exports_js_1.EventSource();\n this.privServiceEvents = new Exports_js_1.EventSource();\n this.privSynthesisContext = new Exports_js_3.SynthesisContext();\n this.privAgentConfig = new Exports_js_3.AgentConfig();\n this.connectionEvents.attach(connectionEvent => {\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\n const connectionClosedEvent = connectionEvent;\n if (connectionClosedEvent.statusCode !== 1000) {\n this.cancelSynthesisLocal(Exports_js_2.CancellationReason.Error, connectionClosedEvent.statusCode === 1007 ? Exports_js_2.CancellationErrorCode.BadRequestParameters : Exports_js_2.CancellationErrorCode.ConnectionFailure, `${connectionClosedEvent.reason} websocket error code: ${connectionClosedEvent.statusCode}`);\n }\n }\n });\n }\n get synthesisContext() {\n return this.privSynthesisContext;\n }\n get agentConfig() {\n return this.privAgentConfig;\n }\n get connectionEvents() {\n return this.privConnectionEvents;\n }\n get serviceEvents() {\n return this.privServiceEvents;\n }\n set activityTemplate(messagePayload) {\n this.privActivityTemplate = messagePayload;\n }\n get activityTemplate() {\n return this.privActivityTemplate;\n }\n set audioOutputFormat(format) {\n this.privAudioOutputFormat = format;\n this.privSynthesisTurn.audioOutputFormat = format;\n if (this.privSessionAudioDestination !== undefined) {\n this.privSessionAudioDestination.format = format;\n }\n if (this.synthesisContext !== undefined) {\n this.synthesisContext.audioOutputFormat = format;\n }\n }\n isDisposed() {\n return this.privIsDisposed;\n }\n dispose(reason) {\n var _this = this;\n return _asyncToGenerator(function* () {\n _this.privIsDisposed = true;\n if (_this.privSessionAudioDestination !== undefined) {\n _this.privSessionAudioDestination.close();\n }\n if (_this.privConnectionConfigurationPromise !== undefined) {\n const connection = yield _this.privConnectionConfigurationPromise;\n yield connection.dispose(reason);\n }\n })();\n }\n connect() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n yield _this2.connectImpl();\n })();\n }\n sendNetworkMessage(path, payload) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n const type = typeof payload === \"string\" ? Exports_js_1.MessageType.Text : Exports_js_1.MessageType.Binary;\n const contentType = typeof payload === \"string\" ? \"application/json\" : \"\";\n const connection = yield _this3.fetchConnection();\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(type, path, _this3.privSynthesisTurn.requestId, contentType, payload));\n })();\n }\n Speak(text, isSSML, requestId, successCallback, errorCallBack, audioDestination) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n let ssml;\n if (isSSML) {\n ssml = text;\n } else {\n ssml = _this4.privSynthesizer.buildSsml(text);\n }\n if (_this4.speakOverride !== undefined) {\n return _this4.speakOverride(ssml, requestId, successCallback, errorCallBack);\n }\n _this4.privSuccessCallback = successCallback;\n _this4.privErrorCallback = errorCallBack;\n _this4.privSynthesisTurn.startNewSynthesis(requestId, text, isSSML, audioDestination);\n try {\n yield _this4.connectImpl();\n const connection = yield _this4.fetchConnection();\n yield _this4.sendSynthesisContext(connection);\n yield _this4.sendSsmlMessage(connection, ssml, requestId);\n _this4.onSynthesisStarted(requestId);\n void _this4.receiveMessage();\n } catch (e) {\n _this4.cancelSynthesisLocal(Exports_js_2.CancellationReason.Error, Exports_js_2.CancellationErrorCode.ConnectionFailure, e);\n return Promise.reject(e);\n }\n })();\n }\n stopSpeaking() {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n yield _this5.connectImpl();\n const connection = yield _this5.fetchConnection();\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(Exports_js_1.MessageType.Text, \"synthesis.control\", _this5.privSynthesisTurn.requestId, \"application/json\", JSON.stringify({\n action: \"stop\"\n })));\n })();\n }\n // Cancels synthesis.\n cancelSynthesis(requestId, _cancellationReason, errorCode, error) {\n const properties = new Exports_js_2.PropertyCollection();\n properties.setProperty(Exports_js_3.CancellationErrorCodePropertyName, Exports_js_2.CancellationErrorCode[errorCode]);\n const result = new Exports_js_2.SpeechSynthesisResult(requestId, Exports_js_2.ResultReason.Canceled, undefined, error, properties);\n this.onSynthesisCancelled(result);\n if (!!this.privSuccessCallback) {\n try {\n this.privSuccessCallback(result);\n /* eslint-disable no-empty */\n } catch {}\n }\n }\n // Cancels synthesis.\n cancelSynthesisLocal(cancellationReason, errorCode, error) {\n if (!!this.privSynthesisTurn.isSynthesizing) {\n this.privSynthesisTurn.onStopSynthesizing();\n this.cancelSynthesis(this.privSynthesisTurn.requestId, cancellationReason, errorCode, error);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n processTypeSpecificMessages(_connectionMessage) {\n return true;\n }\n receiveMessage() {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n try {\n const connection = yield _this6.fetchConnection();\n const message = yield connection.read();\n if (_this6.receiveMessageOverride !== undefined) {\n return _this6.receiveMessageOverride();\n }\n if (_this6.privIsDisposed) {\n // We're done.\n return;\n }\n // indicates we are draining the queue and it came with no message;\n if (!message) {\n if (!_this6.privSynthesisTurn.isSynthesizing) {\n return;\n } else {\n return _this6.receiveMessage();\n }\n }\n const connectionMessage = SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage.fromConnectionMessage(message);\n if (connectionMessage.requestId.toLowerCase() === _this6.privSynthesisTurn.requestId.toLowerCase()) {\n switch (connectionMessage.path.toLowerCase()) {\n case \"turn.start\":\n _this6.privSynthesisTurn.onServiceTurnStartResponse(connectionMessage.textBody);\n break;\n case \"response\":\n _this6.privSynthesisTurn.onServiceResponseMessage(connectionMessage.textBody);\n break;\n case \"audio\":\n if (_this6.privSynthesisTurn.streamId.toLowerCase() === connectionMessage.streamId.toLowerCase() && !!connectionMessage.binaryBody) {\n _this6.privSynthesisTurn.onAudioChunkReceived(connectionMessage.binaryBody);\n _this6.onSynthesizing(connectionMessage.binaryBody);\n if (_this6.privSessionAudioDestination !== undefined) {\n _this6.privSessionAudioDestination.write(connectionMessage.binaryBody);\n }\n }\n break;\n case \"audio.metadata\":\n const metadataList = Exports_js_3.SynthesisAudioMetadata.fromJSON(connectionMessage.textBody).Metadata;\n for (const metadata of metadataList) {\n switch (metadata.Type) {\n case Exports_js_3.MetadataType.WordBoundary:\n case Exports_js_3.MetadataType.SentenceBoundary:\n _this6.privSynthesisTurn.onTextBoundaryEvent(metadata);\n const wordBoundaryEventArgs = new Exports_js_2.SpeechSynthesisWordBoundaryEventArgs(metadata.Data.Offset, metadata.Data.Duration, metadata.Data.text.Text, metadata.Data.text.Length, metadata.Type === Exports_js_3.MetadataType.WordBoundary ? _this6.privSynthesisTurn.currentTextOffset : _this6.privSynthesisTurn.currentSentenceOffset, metadata.Data.text.BoundaryType);\n _this6.onWordBoundary(wordBoundaryEventArgs);\n break;\n case Exports_js_3.MetadataType.Bookmark:\n const bookmarkEventArgs = new Exports_js_2.SpeechSynthesisBookmarkEventArgs(metadata.Data.Offset, metadata.Data.Bookmark);\n _this6.onBookmarkReached(bookmarkEventArgs);\n break;\n case Exports_js_3.MetadataType.Viseme:\n _this6.privSynthesisTurn.onVisemeMetadataReceived(metadata);\n if (metadata.Data.IsLastAnimation) {\n const visemeEventArgs = new Exports_js_2.SpeechSynthesisVisemeEventArgs(metadata.Data.Offset, metadata.Data.VisemeId, _this6.privSynthesisTurn.getAndClearVisemeAnimation());\n _this6.onVisemeReceived(visemeEventArgs);\n }\n break;\n case Exports_js_3.MetadataType.AvatarSignal:\n _this6.onAvatarEvent(metadata);\n break;\n case Exports_js_3.MetadataType.SessionEnd:\n _this6.privSynthesisTurn.onSessionEnd(metadata);\n break;\n }\n }\n break;\n case \"turn.end\":\n _this6.privSynthesisTurn.onServiceTurnEndResponse();\n let result;\n try {\n result = yield _this6.privSynthesisTurn.constructSynthesisResult();\n if (!!_this6.privSuccessCallback) {\n _this6.privSuccessCallback(result);\n }\n } catch (error) {\n if (!!_this6.privErrorCallback) {\n _this6.privErrorCallback(error);\n }\n }\n _this6.onSynthesisCompleted(result);\n break;\n default:\n if (!_this6.processTypeSpecificMessages(connectionMessage)) {\n // here are some messages that the derived class has not processed, dispatch them to connect class\n if (!!_this6.privServiceEvents) {\n _this6.serviceEvents.onEvent(new Exports_js_1.ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\n }\n }\n }\n }\n return _this6.receiveMessage();\n } catch (e) {\n // TODO: What goes here?\n }\n })();\n }\n sendSynthesisContext(connection) {\n this.setSynthesisContextSynthesisSection();\n const synthesisContextJson = this.synthesisContext.toJSON();\n if (synthesisContextJson) {\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(Exports_js_1.MessageType.Text, \"synthesis.context\", this.privSynthesisTurn.requestId, \"application/json\", synthesisContextJson));\n }\n return;\n }\n setSpeechConfigSynthesisSection() {\n return;\n }\n connectImpl(isUnAuthorized = false) {\n var _this7 = this;\n if (this.privConnectionPromise != null) {\n return this.privConnectionPromise.then(connection => {\n if (connection.state() === Exports_js_1.ConnectionState.Disconnected) {\n this.privConnectionId = null;\n this.privConnectionPromise = null;\n return this.connectImpl();\n }\n return this.privConnectionPromise;\n }, () => {\n this.privConnectionId = null;\n this.privConnectionPromise = null;\n return this.connectImpl();\n });\n }\n this.privAuthFetchEventId = Exports_js_1.createNoDashGuid();\n this.privConnectionId = Exports_js_1.createNoDashGuid();\n this.privSynthesisTurn.onPreConnectionStart(this.privAuthFetchEventId);\n const authPromise = isUnAuthorized ? this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId) : this.privAuthentication.fetch(this.privAuthFetchEventId);\n this.privConnectionPromise = authPromise.then( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (result) {\n _this7.privSynthesisTurn.onAuthCompleted(false);\n const connection = _this7.privConnectionFactory.create(_this7.privSynthesizerConfig, result, _this7.privConnectionId);\n // Attach to the underlying event. No need to hold onto the detach pointers as in the event the connection goes away,\n // it'll stop sending events.\n connection.events.attach(event => {\n _this7.connectionEvents.onEvent(event);\n });\n const response = yield connection.open();\n if (response.statusCode === 200) {\n _this7.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\n return Promise.resolve(connection);\n } else if (response.statusCode === 403 && !isUnAuthorized) {\n return _this7.connectImpl(true);\n } else {\n _this7.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\n return Promise.reject(`Unable to contact server. StatusCode: ${response.statusCode},\n ${_this7.privSynthesizerConfig.parameters.getProperty(Exports_js_2.PropertyId.SpeechServiceConnection_Url)} Reason: ${response.reason}`);\n }\n });\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }(), error => {\n this.privSynthesisTurn.onAuthCompleted(true);\n throw new Error(error);\n });\n // Attach an empty handler to allow the promise to run in the background while\n // other startup events happen. It'll eventually be awaited on.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.privConnectionPromise.catch(() => {});\n return this.privConnectionPromise;\n }\n sendSpeechServiceConfig(connection, SpeechServiceConfigJson) {\n if (SpeechServiceConfigJson) {\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(Exports_js_1.MessageType.Text, \"speech.config\", this.privSynthesisTurn.requestId, \"application/json\", SpeechServiceConfigJson));\n }\n }\n sendSsmlMessage(connection, ssml, requestId) {\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(Exports_js_1.MessageType.Text, \"ssml\", requestId, \"application/ssml+xml\", ssml));\n }\n fetchConnection() {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n if (_this8.privConnectionConfigurationPromise !== undefined) {\n return _this8.privConnectionConfigurationPromise.then(connection => {\n if (connection.state() === Exports_js_1.ConnectionState.Disconnected) {\n _this8.privConnectionId = null;\n _this8.privConnectionConfigurationPromise = undefined;\n return _this8.fetchConnection();\n }\n return _this8.privConnectionConfigurationPromise;\n }, () => {\n _this8.privConnectionId = null;\n _this8.privConnectionConfigurationPromise = undefined;\n return _this8.fetchConnection();\n });\n }\n _this8.privConnectionConfigurationPromise = _this8.configureConnection();\n return yield _this8.privConnectionConfigurationPromise;\n })();\n }\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\n configureConnection() {\n var _this9 = this;\n return _asyncToGenerator(function* () {\n const connection = yield _this9.connectImpl();\n if (_this9.configConnectionOverride !== undefined) {\n return _this9.configConnectionOverride(connection);\n }\n _this9.setSpeechConfigSynthesisSection();\n yield _this9.sendSpeechServiceConfig(connection, _this9.privSynthesizerConfig.SpeechServiceConfig.serialize());\n return connection;\n })();\n }\n onAvatarEvent(_metadata) {\n return;\n }\n onSynthesisStarted(_requestId) {\n return;\n }\n onSynthesizing(_audio) {\n return;\n }\n onSynthesisCancelled(_result) {\n return;\n }\n onSynthesisCompleted(_result) {\n return;\n }\n onWordBoundary(_wordBoundaryEventArgs) {\n return;\n }\n onVisemeReceived(_visemeEventArgs) {\n return;\n }\n onBookmarkReached(_bookmarkEventArgs) {\n return;\n }\n}\nexports.SynthesisAdapterBase = SynthesisAdapterBase;\nSynthesisAdapterBase.telemetryDataEnabled = true;","map":{"version":3,"names":["_asyncToGenerator","require","default","Object","defineProperty","exports","value","SynthesisAdapterBase","Exports_js_1","Exports_js_2","Exports_js_3","SpeechConnectionMessage_Internal_js_1","constructor","authentication","connectionFactory","synthesizerConfig","audioDestination","speakOverride","undefined","receiveMessageOverride","connectImplOverride","configConnectionOverride","privConnectionConfigurationPromise","ArgumentNullError","privAuthentication","privConnectionFactory","privSynthesizerConfig","privIsDisposed","privSessionAudioDestination","privSynthesisTurn","SynthesisTurn","privConnectionEvents","EventSource","privServiceEvents","privSynthesisContext","SynthesisContext","privAgentConfig","AgentConfig","connectionEvents","attach","connectionEvent","name","connectionClosedEvent","statusCode","cancelSynthesisLocal","CancellationReason","Error","CancellationErrorCode","BadRequestParameters","ConnectionFailure","reason","synthesisContext","agentConfig","serviceEvents","activityTemplate","messagePayload","privActivityTemplate","audioOutputFormat","format","privAudioOutputFormat","isDisposed","dispose","_this","close","connection","connect","_this2","connectImpl","sendNetworkMessage","path","payload","_this3","type","MessageType","Text","Binary","contentType","fetchConnection","send","SpeechConnectionMessage","requestId","Speak","text","isSSML","successCallback","errorCallBack","_this4","ssml","privSynthesizer","buildSsml","privSuccessCallback","privErrorCallback","startNewSynthesis","sendSynthesisContext","sendSsmlMessage","onSynthesisStarted","receiveMessage","e","Promise","reject","stopSpeaking","_this5","JSON","stringify","action","cancelSynthesis","_cancellationReason","errorCode","error","properties","PropertyCollection","setProperty","CancellationErrorCodePropertyName","result","SpeechSynthesisResult","ResultReason","Canceled","onSynthesisCancelled","cancellationReason","isSynthesizing","onStopSynthesizing","processTypeSpecificMessages","_connectionMessage","_this6","message","read","connectionMessage","fromConnectionMessage","toLowerCase","onServiceTurnStartResponse","textBody","onServiceResponseMessage","streamId","binaryBody","onAudioChunkReceived","onSynthesizing","write","metadataList","SynthesisAudioMetadata","fromJSON","Metadata","metadata","Type","MetadataType","WordBoundary","SentenceBoundary","onTextBoundaryEvent","wordBoundaryEventArgs","SpeechSynthesisWordBoundaryEventArgs","Data","Offset","Duration","Length","currentTextOffset","currentSentenceOffset","BoundaryType","onWordBoundary","Bookmark","bookmarkEventArgs","SpeechSynthesisBookmarkEventArgs","onBookmarkReached","Viseme","onVisemeMetadataReceived","IsLastAnimation","visemeEventArgs","SpeechSynthesisVisemeEventArgs","VisemeId","getAndClearVisemeAnimation","onVisemeReceived","AvatarSignal","onAvatarEvent","SessionEnd","onSessionEnd","onServiceTurnEndResponse","constructSynthesisResult","onSynthesisCompleted","onEvent","ServiceEvent","setSynthesisContextSynthesisSection","synthesisContextJson","toJSON","setSpeechConfigSynthesisSection","isUnAuthorized","_this7","privConnectionPromise","then","state","ConnectionState","Disconnected","privConnectionId","privAuthFetchEventId","createNoDashGuid","onPreConnectionStart","authPromise","fetchOnExpiry","fetch","_ref","onAuthCompleted","create","events","event","response","open","onConnectionEstablishCompleted","resolve","parameters","getProperty","PropertyId","SpeechServiceConnection_Url","_x","apply","arguments","catch","sendSpeechServiceConfig","SpeechServiceConfigJson","_this8","configureConnection","_this9","SpeechServiceConfig","serialize","_metadata","_requestId","_audio","_result","_wordBoundaryEventArgs","_visemeEventArgs","_bookmarkEventArgs","telemetryDataEnabled"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/SynthesisAdapterBase.js"],"sourcesContent":["\"use strict\";\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SynthesisAdapterBase = void 0;\nconst Exports_js_1 = require(\"../common/Exports.js\");\nconst Exports_js_2 = require(\"../sdk/Exports.js\");\nconst Exports_js_3 = require(\"./Exports.js\");\nconst SpeechConnectionMessage_Internal_js_1 = require(\"./SpeechConnectionMessage.Internal.js\");\nclass SynthesisAdapterBase {\n constructor(authentication, connectionFactory, synthesizerConfig, audioDestination) {\n this.speakOverride = undefined;\n this.receiveMessageOverride = undefined;\n this.connectImplOverride = undefined;\n this.configConnectionOverride = undefined;\n // A promise for a configured connection.\n // Do not consume directly, call fetchConnection instead.\n this.privConnectionConfigurationPromise = undefined;\n if (!authentication) {\n throw new Exports_js_1.ArgumentNullError(\"authentication\");\n }\n if (!connectionFactory) {\n throw new Exports_js_1.ArgumentNullError(\"connectionFactory\");\n }\n if (!synthesizerConfig) {\n throw new Exports_js_1.ArgumentNullError(\"synthesizerConfig\");\n }\n this.privAuthentication = authentication;\n this.privConnectionFactory = connectionFactory;\n this.privSynthesizerConfig = synthesizerConfig;\n this.privIsDisposed = false;\n this.privSessionAudioDestination = audioDestination;\n this.privSynthesisTurn = new Exports_js_3.SynthesisTurn();\n this.privConnectionEvents = new Exports_js_1.EventSource();\n this.privServiceEvents = new Exports_js_1.EventSource();\n this.privSynthesisContext = new Exports_js_3.SynthesisContext();\n this.privAgentConfig = new Exports_js_3.AgentConfig();\n this.connectionEvents.attach((connectionEvent) => {\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\n const connectionClosedEvent = connectionEvent;\n if (connectionClosedEvent.statusCode !== 1000) {\n this.cancelSynthesisLocal(Exports_js_2.CancellationReason.Error, connectionClosedEvent.statusCode === 1007 ? Exports_js_2.CancellationErrorCode.BadRequestParameters : Exports_js_2.CancellationErrorCode.ConnectionFailure, `${connectionClosedEvent.reason} websocket error code: ${connectionClosedEvent.statusCode}`);\n }\n }\n });\n }\n get synthesisContext() {\n return this.privSynthesisContext;\n }\n get agentConfig() {\n return this.privAgentConfig;\n }\n get connectionEvents() {\n return this.privConnectionEvents;\n }\n get serviceEvents() {\n return this.privServiceEvents;\n }\n set activityTemplate(messagePayload) {\n this.privActivityTemplate = messagePayload;\n }\n get activityTemplate() {\n return this.privActivityTemplate;\n }\n set audioOutputFormat(format) {\n this.privAudioOutputFormat = format;\n this.privSynthesisTurn.audioOutputFormat = format;\n if (this.privSessionAudioDestination !== undefined) {\n this.privSessionAudioDestination.format = format;\n }\n if (this.synthesisContext !== undefined) {\n this.synthesisContext.audioOutputFormat = format;\n }\n }\n isDisposed() {\n return this.privIsDisposed;\n }\n async dispose(reason) {\n this.privIsDisposed = true;\n if (this.privSessionAudioDestination !== undefined) {\n this.privSessionAudioDestination.close();\n }\n if (this.privConnectionConfigurationPromise !== undefined) {\n const connection = await this.privConnectionConfigurationPromise;\n await connection.dispose(reason);\n }\n }\n async connect() {\n await this.connectImpl();\n }\n async sendNetworkMessage(path, payload) {\n const type = typeof payload === \"string\" ? Exports_js_1.MessageType.Text : Exports_js_1.MessageType.Binary;\n const contentType = typeof payload === \"string\" ? \"application/json\" : \"\";\n const connection = await this.fetchConnection();\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(type, path, this.privSynthesisTurn.requestId, contentType, payload));\n }\n async Speak(text, isSSML, requestId, successCallback, errorCallBack, audioDestination) {\n let ssml;\n if (isSSML) {\n ssml = text;\n }\n else {\n ssml = this.privSynthesizer.buildSsml(text);\n }\n if (this.speakOverride !== undefined) {\n return this.speakOverride(ssml, requestId, successCallback, errorCallBack);\n }\n this.privSuccessCallback = successCallback;\n this.privErrorCallback = errorCallBack;\n this.privSynthesisTurn.startNewSynthesis(requestId, text, isSSML, audioDestination);\n try {\n await this.connectImpl();\n const connection = await this.fetchConnection();\n await this.sendSynthesisContext(connection);\n await this.sendSsmlMessage(connection, ssml, requestId);\n this.onSynthesisStarted(requestId);\n void this.receiveMessage();\n }\n catch (e) {\n this.cancelSynthesisLocal(Exports_js_2.CancellationReason.Error, Exports_js_2.CancellationErrorCode.ConnectionFailure, e);\n return Promise.reject(e);\n }\n }\n async stopSpeaking() {\n await this.connectImpl();\n const connection = await this.fetchConnection();\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(Exports_js_1.MessageType.Text, \"synthesis.control\", this.privSynthesisTurn.requestId, \"application/json\", JSON.stringify({\n action: \"stop\"\n })));\n }\n // Cancels synthesis.\n cancelSynthesis(requestId, _cancellationReason, errorCode, error) {\n const properties = new Exports_js_2.PropertyCollection();\n properties.setProperty(Exports_js_3.CancellationErrorCodePropertyName, Exports_js_2.CancellationErrorCode[errorCode]);\n const result = new Exports_js_2.SpeechSynthesisResult(requestId, Exports_js_2.ResultReason.Canceled, undefined, error, properties);\n this.onSynthesisCancelled(result);\n if (!!this.privSuccessCallback) {\n try {\n this.privSuccessCallback(result);\n /* eslint-disable no-empty */\n }\n catch { }\n }\n }\n // Cancels synthesis.\n cancelSynthesisLocal(cancellationReason, errorCode, error) {\n if (!!this.privSynthesisTurn.isSynthesizing) {\n this.privSynthesisTurn.onStopSynthesizing();\n this.cancelSynthesis(this.privSynthesisTurn.requestId, cancellationReason, errorCode, error);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n processTypeSpecificMessages(_connectionMessage) {\n return true;\n }\n async receiveMessage() {\n try {\n const connection = await this.fetchConnection();\n const message = await connection.read();\n if (this.receiveMessageOverride !== undefined) {\n return this.receiveMessageOverride();\n }\n if (this.privIsDisposed) {\n // We're done.\n return;\n }\n // indicates we are draining the queue and it came with no message;\n if (!message) {\n if (!this.privSynthesisTurn.isSynthesizing) {\n return;\n }\n else {\n return this.receiveMessage();\n }\n }\n const connectionMessage = SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage.fromConnectionMessage(message);\n if (connectionMessage.requestId.toLowerCase() === this.privSynthesisTurn.requestId.toLowerCase()) {\n switch (connectionMessage.path.toLowerCase()) {\n case \"turn.start\":\n this.privSynthesisTurn.onServiceTurnStartResponse(connectionMessage.textBody);\n break;\n case \"response\":\n this.privSynthesisTurn.onServiceResponseMessage(connectionMessage.textBody);\n break;\n case \"audio\":\n if (this.privSynthesisTurn.streamId.toLowerCase() === connectionMessage.streamId.toLowerCase()\n && !!connectionMessage.binaryBody) {\n this.privSynthesisTurn.onAudioChunkReceived(connectionMessage.binaryBody);\n this.onSynthesizing(connectionMessage.binaryBody);\n if (this.privSessionAudioDestination !== undefined) {\n this.privSessionAudioDestination.write(connectionMessage.binaryBody);\n }\n }\n break;\n case \"audio.metadata\":\n const metadataList = Exports_js_3.SynthesisAudioMetadata.fromJSON(connectionMessage.textBody).Metadata;\n for (const metadata of metadataList) {\n switch (metadata.Type) {\n case Exports_js_3.MetadataType.WordBoundary:\n case Exports_js_3.MetadataType.SentenceBoundary:\n this.privSynthesisTurn.onTextBoundaryEvent(metadata);\n const wordBoundaryEventArgs = new Exports_js_2.SpeechSynthesisWordBoundaryEventArgs(metadata.Data.Offset, metadata.Data.Duration, metadata.Data.text.Text, metadata.Data.text.Length, metadata.Type === Exports_js_3.MetadataType.WordBoundary\n ? this.privSynthesisTurn.currentTextOffset : this.privSynthesisTurn.currentSentenceOffset, metadata.Data.text.BoundaryType);\n this.onWordBoundary(wordBoundaryEventArgs);\n break;\n case Exports_js_3.MetadataType.Bookmark:\n const bookmarkEventArgs = new Exports_js_2.SpeechSynthesisBookmarkEventArgs(metadata.Data.Offset, metadata.Data.Bookmark);\n this.onBookmarkReached(bookmarkEventArgs);\n break;\n case Exports_js_3.MetadataType.Viseme:\n this.privSynthesisTurn.onVisemeMetadataReceived(metadata);\n if (metadata.Data.IsLastAnimation) {\n const visemeEventArgs = new Exports_js_2.SpeechSynthesisVisemeEventArgs(metadata.Data.Offset, metadata.Data.VisemeId, this.privSynthesisTurn.getAndClearVisemeAnimation());\n this.onVisemeReceived(visemeEventArgs);\n }\n break;\n case Exports_js_3.MetadataType.AvatarSignal:\n this.onAvatarEvent(metadata);\n break;\n case Exports_js_3.MetadataType.SessionEnd:\n this.privSynthesisTurn.onSessionEnd(metadata);\n break;\n }\n }\n break;\n case \"turn.end\":\n this.privSynthesisTurn.onServiceTurnEndResponse();\n let result;\n try {\n result = await this.privSynthesisTurn.constructSynthesisResult();\n if (!!this.privSuccessCallback) {\n this.privSuccessCallback(result);\n }\n }\n catch (error) {\n if (!!this.privErrorCallback) {\n this.privErrorCallback(error);\n }\n }\n this.onSynthesisCompleted(result);\n break;\n default:\n if (!this.processTypeSpecificMessages(connectionMessage)) {\n // here are some messages that the derived class has not processed, dispatch them to connect class\n if (!!this.privServiceEvents) {\n this.serviceEvents.onEvent(new Exports_js_1.ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\n }\n }\n }\n }\n return this.receiveMessage();\n }\n catch (e) {\n // TODO: What goes here?\n }\n }\n sendSynthesisContext(connection) {\n this.setSynthesisContextSynthesisSection();\n const synthesisContextJson = this.synthesisContext.toJSON();\n if (synthesisContextJson) {\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(Exports_js_1.MessageType.Text, \"synthesis.context\", this.privSynthesisTurn.requestId, \"application/json\", synthesisContextJson));\n }\n return;\n }\n setSpeechConfigSynthesisSection() {\n return;\n }\n connectImpl(isUnAuthorized = false) {\n if (this.privConnectionPromise != null) {\n return this.privConnectionPromise.then((connection) => {\n if (connection.state() === Exports_js_1.ConnectionState.Disconnected) {\n this.privConnectionId = null;\n this.privConnectionPromise = null;\n return this.connectImpl();\n }\n return this.privConnectionPromise;\n }, () => {\n this.privConnectionId = null;\n this.privConnectionPromise = null;\n return this.connectImpl();\n });\n }\n this.privAuthFetchEventId = Exports_js_1.createNoDashGuid();\n this.privConnectionId = Exports_js_1.createNoDashGuid();\n this.privSynthesisTurn.onPreConnectionStart(this.privAuthFetchEventId);\n const authPromise = isUnAuthorized ? this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId) : this.privAuthentication.fetch(this.privAuthFetchEventId);\n this.privConnectionPromise = authPromise.then(async (result) => {\n this.privSynthesisTurn.onAuthCompleted(false);\n const connection = this.privConnectionFactory.create(this.privSynthesizerConfig, result, this.privConnectionId);\n // Attach to the underlying event. No need to hold onto the detach pointers as in the event the connection goes away,\n // it'll stop sending events.\n connection.events.attach((event) => {\n this.connectionEvents.onEvent(event);\n });\n const response = await connection.open();\n if (response.statusCode === 200) {\n this.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\n return Promise.resolve(connection);\n }\n else if (response.statusCode === 403 && !isUnAuthorized) {\n return this.connectImpl(true);\n }\n else {\n this.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\n return Promise.reject(`Unable to contact server. StatusCode: ${response.statusCode},\r\n ${this.privSynthesizerConfig.parameters.getProperty(Exports_js_2.PropertyId.SpeechServiceConnection_Url)} Reason: ${response.reason}`);\n }\n }, (error) => {\n this.privSynthesisTurn.onAuthCompleted(true);\n throw new Error(error);\n });\n // Attach an empty handler to allow the promise to run in the background while\n // other startup events happen. It'll eventually be awaited on.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.privConnectionPromise.catch(() => { });\n return this.privConnectionPromise;\n }\n sendSpeechServiceConfig(connection, SpeechServiceConfigJson) {\n if (SpeechServiceConfigJson) {\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(Exports_js_1.MessageType.Text, \"speech.config\", this.privSynthesisTurn.requestId, \"application/json\", SpeechServiceConfigJson));\n }\n }\n sendSsmlMessage(connection, ssml, requestId) {\n return connection.send(new SpeechConnectionMessage_Internal_js_1.SpeechConnectionMessage(Exports_js_1.MessageType.Text, \"ssml\", requestId, \"application/ssml+xml\", ssml));\n }\n async fetchConnection() {\n if (this.privConnectionConfigurationPromise !== undefined) {\n return this.privConnectionConfigurationPromise.then((connection) => {\n if (connection.state() === Exports_js_1.ConnectionState.Disconnected) {\n this.privConnectionId = null;\n this.privConnectionConfigurationPromise = undefined;\n return this.fetchConnection();\n }\n return this.privConnectionConfigurationPromise;\n }, () => {\n this.privConnectionId = null;\n this.privConnectionConfigurationPromise = undefined;\n return this.fetchConnection();\n });\n }\n this.privConnectionConfigurationPromise = this.configureConnection();\n return await this.privConnectionConfigurationPromise;\n }\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\n async configureConnection() {\n const connection = await this.connectImpl();\n if (this.configConnectionOverride !== undefined) {\n return this.configConnectionOverride(connection);\n }\n this.setSpeechConfigSynthesisSection();\n await this.sendSpeechServiceConfig(connection, this.privSynthesizerConfig.SpeechServiceConfig.serialize());\n return connection;\n }\n onAvatarEvent(_metadata) {\n return;\n }\n onSynthesisStarted(_requestId) {\n return;\n }\n onSynthesizing(_audio) {\n return;\n }\n onSynthesisCancelled(_result) {\n return;\n }\n onSynthesisCompleted(_result) {\n return;\n }\n onWordBoundary(_wordBoundaryEventArgs) {\n return;\n }\n onVisemeReceived(_visemeEventArgs) {\n return;\n }\n onBookmarkReached(_bookmarkEventArgs) {\n return;\n }\n}\nexports.SynthesisAdapterBase = SynthesisAdapterBase;\nSynthesisAdapterBase.telemetryDataEnabled = true;\n\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}