{"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.MicAudioSource = exports.AudioWorkletSourceURLPropertyName = void 0;\nconst Exports_js_1 = require(\"../common.speech/Exports.js\");\nconst Exports_js_2 = require(\"../common/Exports.js\");\nconst AudioStreamFormat_js_1 = require(\"../sdk/Audio/AudioStreamFormat.js\");\nexports.AudioWorkletSourceURLPropertyName = \"MICROPHONE-WorkletSourceUrl\";\nclass MicAudioSource {\n constructor(privRecorder, deviceId, audioSourceId, mediaStream) {\n this.privRecorder = privRecorder;\n this.deviceId = deviceId;\n this.privStreams = {};\n this.privOutputChunkSize = MicAudioSource.AUDIOFORMAT.avgBytesPerSec / 10;\n this.privId = audioSourceId ? audioSourceId : Exports_js_2.createNoDashGuid();\n this.privEvents = new Exports_js_2.EventSource();\n this.privMediaStream = mediaStream || null;\n this.privIsClosing = false;\n }\n get format() {\n return Promise.resolve(MicAudioSource.AUDIOFORMAT);\n }\n turnOn() {\n if (this.privInitializeDeferral) {\n return this.privInitializeDeferral.promise;\n }\n this.privInitializeDeferral = new Exports_js_2.Deferred();\n try {\n this.createAudioContext();\n } catch (error) {\n if (error instanceof Error) {\n const typedError = error;\n this.privInitializeDeferral.reject(typedError.name + \": \" + typedError.message);\n } else {\n this.privInitializeDeferral.reject(error);\n }\n return this.privInitializeDeferral.promise;\n }\n const nav = window.navigator;\n let getUserMedia =\n // eslint-disable-next-line\n nav.getUserMedia || nav.webkitGetUserMedia || nav.mozGetUserMedia || nav.msGetUserMedia;\n if (!!nav.mediaDevices) {\n getUserMedia = (constraints, successCallback, errorCallback) => {\n nav.mediaDevices.getUserMedia(constraints).then(successCallback).catch(errorCallback);\n };\n }\n if (!getUserMedia) {\n const errorMsg = \"Browser does not support getUserMedia.\";\n this.privInitializeDeferral.reject(errorMsg);\n this.onEvent(new Exports_js_2.AudioSourceErrorEvent(errorMsg, \"\")); // mic initialized error - no streamid at this point\n } else {\n const next = () => {\n this.onEvent(new Exports_js_2.AudioSourceInitializingEvent(this.privId)); // no stream id\n if (this.privMediaStream && this.privMediaStream.active) {\n this.onEvent(new Exports_js_2.AudioSourceReadyEvent(this.privId));\n this.privInitializeDeferral.resolve();\n } else {\n getUserMedia({\n audio: this.deviceId ? {\n deviceId: this.deviceId\n } : true,\n video: false\n }, mediaStream => {\n this.privMediaStream = mediaStream;\n this.onEvent(new Exports_js_2.AudioSourceReadyEvent(this.privId));\n this.privInitializeDeferral.resolve();\n }, error => {\n const errorMsg = `Error occurred during microphone initialization: ${error}`;\n this.privInitializeDeferral.reject(errorMsg);\n this.onEvent(new Exports_js_2.AudioSourceErrorEvent(this.privId, errorMsg));\n });\n }\n };\n if (this.privContext.state === \"suspended\") {\n // NOTE: On iOS, the Web Audio API requires sounds to be triggered from an explicit user action.\n // https://github.com/WebAudio/web-audio-api/issues/790\n this.privContext.resume().then(next).catch(reason => {\n this.privInitializeDeferral.reject(`Failed to initialize audio context: ${reason}`);\n });\n } else {\n next();\n }\n }\n return this.privInitializeDeferral.promise;\n }\n id() {\n return this.privId;\n }\n attach(audioNodeId) {\n var _this = this;\n this.onEvent(new Exports_js_2.AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\n return this.listen(audioNodeId).then(stream => {\n this.onEvent(new Exports_js_2.AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\n return {\n detach: function () {\n var _ref = _asyncToGenerator(function* () {\n stream.readEnded();\n delete _this.privStreams[audioNodeId];\n _this.onEvent(new Exports_js_2.AudioStreamNodeDetachedEvent(_this.privId, audioNodeId));\n return _this.turnOff();\n });\n return function detach() {\n return _ref.apply(this, arguments);\n };\n }(),\n id: () => audioNodeId,\n read: () => stream.read()\n };\n });\n }\n detach(audioNodeId) {\n if (audioNodeId && this.privStreams[audioNodeId]) {\n this.privStreams[audioNodeId].close();\n delete this.privStreams[audioNodeId];\n this.onEvent(new Exports_js_2.AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\n }\n }\n turnOff() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n for (const streamId in _this2.privStreams) {\n if (streamId) {\n const stream = _this2.privStreams[streamId];\n if (stream) {\n stream.close();\n }\n }\n }\n _this2.onEvent(new Exports_js_2.AudioSourceOffEvent(_this2.privId)); // no stream now\n if (_this2.privInitializeDeferral) {\n // Correctly handle when browser forces mic off before turnOn() completes\n // eslint-disable-next-line @typescript-eslint/await-thenable\n yield _this2.privInitializeDeferral;\n _this2.privInitializeDeferral = null;\n }\n yield _this2.destroyAudioContext();\n return;\n })();\n }\n get events() {\n return this.privEvents;\n }\n get deviceInfo() {\n return this.getMicrophoneLabel().then(label => ({\n bitspersample: MicAudioSource.AUDIOFORMAT.bitsPerSample,\n channelcount: MicAudioSource.AUDIOFORMAT.channels,\n connectivity: Exports_js_1.connectivity.Unknown,\n manufacturer: \"Speech SDK\",\n model: label,\n samplerate: MicAudioSource.AUDIOFORMAT.samplesPerSec,\n type: Exports_js_1.type.Microphones\n }));\n }\n setProperty(name, value) {\n if (name === exports.AudioWorkletSourceURLPropertyName) {\n this.privRecorder.setWorkletUrl(value);\n } else {\n throw new Error(\"Property '\" + name + \"' is not supported on Microphone.\");\n }\n }\n getMicrophoneLabel() {\n const defaultMicrophoneName = \"microphone\";\n // If we did this already, return the value.\n if (this.privMicrophoneLabel !== undefined) {\n return Promise.resolve(this.privMicrophoneLabel);\n }\n // If the stream isn't currently running, we can't query devices because security.\n if (this.privMediaStream === undefined || !this.privMediaStream.active) {\n return Promise.resolve(defaultMicrophoneName);\n }\n // Setup a default\n this.privMicrophoneLabel = defaultMicrophoneName;\n // Get the id of the device running the audio track.\n const microphoneDeviceId = this.privMediaStream.getTracks()[0].getSettings().deviceId;\n // If the browser doesn't support getting the device ID, set a default and return.\n if (undefined === microphoneDeviceId) {\n return Promise.resolve(this.privMicrophoneLabel);\n }\n const deferred = new Exports_js_2.Deferred();\n // Enumerate the media devices.\n navigator.mediaDevices.enumerateDevices().then(devices => {\n for (const device of devices) {\n if (device.deviceId === microphoneDeviceId) {\n // Found the device\n this.privMicrophoneLabel = device.label;\n break;\n }\n }\n deferred.resolve(this.privMicrophoneLabel);\n }, () => deferred.resolve(this.privMicrophoneLabel));\n return deferred.promise;\n }\n listen(audioNodeId) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n yield _this3.turnOn();\n const stream = new Exports_js_2.ChunkedArrayBufferStream(_this3.privOutputChunkSize, audioNodeId);\n _this3.privStreams[audioNodeId] = stream;\n try {\n _this3.privRecorder.record(_this3.privContext, _this3.privMediaStream, stream);\n } catch (error) {\n _this3.onEvent(new Exports_js_2.AudioStreamNodeErrorEvent(_this3.privId, audioNodeId, error));\n throw error;\n }\n const result = stream;\n return result;\n })();\n }\n onEvent(event) {\n this.privEvents.onEvent(event);\n Exports_js_2.Events.instance.onEvent(event);\n }\n createAudioContext() {\n if (!!this.privContext) {\n return;\n }\n this.privContext = AudioStreamFormat_js_1.AudioStreamFormatImpl.getAudioContext(MicAudioSource.AUDIOFORMAT.samplesPerSec);\n }\n destroyAudioContext() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n if (!_this4.privContext) {\n return;\n }\n _this4.privRecorder.releaseMediaResources(_this4.privContext);\n // This pattern brought to you by a bug in the TypeScript compiler where it\n // confuses the (\"close\" in this.privContext) with this.privContext always being null as the alternate.\n // https://github.com/Microsoft/TypeScript/issues/11498\n let hasClose = false;\n if (\"close\" in _this4.privContext) {\n hasClose = true;\n }\n if (hasClose) {\n if (!_this4.privIsClosing) {\n // The audio context close may take enough time that the close is called twice\n _this4.privIsClosing = true;\n yield _this4.privContext.close();\n _this4.privContext = null;\n _this4.privIsClosing = false;\n }\n } else if (null !== _this4.privContext && _this4.privContext.state === \"running\") {\n // Suspend actually takes a callback, but analogous to the\n // resume method, it'll be only fired if suspend is called\n // in a direct response to a user action. The later is not always\n // the case, as TurnOff is also called, when we receive an\n // end-of-speech message from the service. So, doing a best effort\n // fire-and-forget here.\n yield _this4.privContext.suspend();\n }\n })();\n }\n}\nexports.MicAudioSource = MicAudioSource;\nMicAudioSource.AUDIOFORMAT = AudioStreamFormat_js_1.AudioStreamFormat.getDefaultInputFormat();","map":{"version":3,"names":["_asyncToGenerator","require","default","Object","defineProperty","exports","value","MicAudioSource","AudioWorkletSourceURLPropertyName","Exports_js_1","Exports_js_2","AudioStreamFormat_js_1","constructor","privRecorder","deviceId","audioSourceId","mediaStream","privStreams","privOutputChunkSize","AUDIOFORMAT","avgBytesPerSec","privId","createNoDashGuid","privEvents","EventSource","privMediaStream","privIsClosing","format","Promise","resolve","turnOn","privInitializeDeferral","promise","Deferred","createAudioContext","error","Error","typedError","reject","name","message","nav","window","navigator","getUserMedia","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","mediaDevices","constraints","successCallback","errorCallback","then","catch","errorMsg","onEvent","AudioSourceErrorEvent","next","AudioSourceInitializingEvent","active","AudioSourceReadyEvent","audio","video","privContext","state","resume","reason","id","attach","audioNodeId","_this","AudioStreamNodeAttachingEvent","listen","stream","AudioStreamNodeAttachedEvent","detach","_ref","readEnded","AudioStreamNodeDetachedEvent","turnOff","apply","arguments","read","close","_this2","streamId","AudioSourceOffEvent","destroyAudioContext","events","deviceInfo","getMicrophoneLabel","label","bitspersample","bitsPerSample","channelcount","channels","connectivity","Unknown","manufacturer","model","samplerate","samplesPerSec","type","Microphones","setProperty","setWorkletUrl","defaultMicrophoneName","privMicrophoneLabel","undefined","microphoneDeviceId","getTracks","getSettings","deferred","enumerateDevices","devices","device","_this3","ChunkedArrayBufferStream","record","AudioStreamNodeErrorEvent","result","event","Events","instance","AudioStreamFormatImpl","getAudioContext","_this4","releaseMediaResources","hasClose","suspend","AudioStreamFormat","getDefaultInputFormat"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/MicAudioSource.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.MicAudioSource = exports.AudioWorkletSourceURLPropertyName = void 0;\nconst Exports_js_1 = require(\"../common.speech/Exports.js\");\nconst Exports_js_2 = require(\"../common/Exports.js\");\nconst AudioStreamFormat_js_1 = require(\"../sdk/Audio/AudioStreamFormat.js\");\nexports.AudioWorkletSourceURLPropertyName = \"MICROPHONE-WorkletSourceUrl\";\nclass MicAudioSource {\n constructor(privRecorder, deviceId, audioSourceId, mediaStream) {\n this.privRecorder = privRecorder;\n this.deviceId = deviceId;\n this.privStreams = {};\n this.privOutputChunkSize = MicAudioSource.AUDIOFORMAT.avgBytesPerSec / 10;\n this.privId = audioSourceId ? audioSourceId : Exports_js_2.createNoDashGuid();\n this.privEvents = new Exports_js_2.EventSource();\n this.privMediaStream = mediaStream || null;\n this.privIsClosing = false;\n }\n get format() {\n return Promise.resolve(MicAudioSource.AUDIOFORMAT);\n }\n turnOn() {\n if (this.privInitializeDeferral) {\n return this.privInitializeDeferral.promise;\n }\n this.privInitializeDeferral = new Exports_js_2.Deferred();\n try {\n this.createAudioContext();\n }\n catch (error) {\n if (error instanceof Error) {\n const typedError = error;\n this.privInitializeDeferral.reject(typedError.name + \": \" + typedError.message);\n }\n else {\n this.privInitializeDeferral.reject(error);\n }\n return this.privInitializeDeferral.promise;\n }\n const nav = window.navigator;\n let getUserMedia = (\n // eslint-disable-next-line\n nav.getUserMedia ||\n nav.webkitGetUserMedia ||\n nav.mozGetUserMedia ||\n nav.msGetUserMedia);\n if (!!nav.mediaDevices) {\n getUserMedia = (constraints, successCallback, errorCallback) => {\n nav.mediaDevices\n .getUserMedia(constraints)\n .then(successCallback)\n .catch(errorCallback);\n };\n }\n if (!getUserMedia) {\n const errorMsg = \"Browser does not support getUserMedia.\";\n this.privInitializeDeferral.reject(errorMsg);\n this.onEvent(new Exports_js_2.AudioSourceErrorEvent(errorMsg, \"\")); // mic initialized error - no streamid at this point\n }\n else {\n const next = () => {\n this.onEvent(new Exports_js_2.AudioSourceInitializingEvent(this.privId)); // no stream id\n if (this.privMediaStream && this.privMediaStream.active) {\n this.onEvent(new Exports_js_2.AudioSourceReadyEvent(this.privId));\n this.privInitializeDeferral.resolve();\n }\n else {\n getUserMedia({ audio: this.deviceId ? { deviceId: this.deviceId } : true, video: false }, (mediaStream) => {\n this.privMediaStream = mediaStream;\n this.onEvent(new Exports_js_2.AudioSourceReadyEvent(this.privId));\n this.privInitializeDeferral.resolve();\n }, (error) => {\n const errorMsg = `Error occurred during microphone initialization: ${error}`;\n this.privInitializeDeferral.reject(errorMsg);\n this.onEvent(new Exports_js_2.AudioSourceErrorEvent(this.privId, errorMsg));\n });\n }\n };\n if (this.privContext.state === \"suspended\") {\n // NOTE: On iOS, the Web Audio API requires sounds to be triggered from an explicit user action.\n // https://github.com/WebAudio/web-audio-api/issues/790\n this.privContext.resume()\n .then(next)\n .catch((reason) => {\n this.privInitializeDeferral.reject(`Failed to initialize audio context: ${reason}`);\n });\n }\n else {\n next();\n }\n }\n return this.privInitializeDeferral.promise;\n }\n id() {\n return this.privId;\n }\n attach(audioNodeId) {\n this.onEvent(new Exports_js_2.AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\n return this.listen(audioNodeId).then((stream) => {\n this.onEvent(new Exports_js_2.AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\n return {\n detach: async () => {\n stream.readEnded();\n delete this.privStreams[audioNodeId];\n this.onEvent(new Exports_js_2.AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\n return this.turnOff();\n },\n id: () => audioNodeId,\n read: () => stream.read(),\n };\n });\n }\n detach(audioNodeId) {\n if (audioNodeId && this.privStreams[audioNodeId]) {\n this.privStreams[audioNodeId].close();\n delete this.privStreams[audioNodeId];\n this.onEvent(new Exports_js_2.AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\n }\n }\n async turnOff() {\n for (const streamId in this.privStreams) {\n if (streamId) {\n const stream = this.privStreams[streamId];\n if (stream) {\n stream.close();\n }\n }\n }\n this.onEvent(new Exports_js_2.AudioSourceOffEvent(this.privId)); // no stream now\n if (this.privInitializeDeferral) {\n // Correctly handle when browser forces mic off before turnOn() completes\n // eslint-disable-next-line @typescript-eslint/await-thenable\n await this.privInitializeDeferral;\n this.privInitializeDeferral = null;\n }\n await this.destroyAudioContext();\n return;\n }\n get events() {\n return this.privEvents;\n }\n get deviceInfo() {\n return this.getMicrophoneLabel().then((label) => ({\n bitspersample: MicAudioSource.AUDIOFORMAT.bitsPerSample,\n channelcount: MicAudioSource.AUDIOFORMAT.channels,\n connectivity: Exports_js_1.connectivity.Unknown,\n manufacturer: \"Speech SDK\",\n model: label,\n samplerate: MicAudioSource.AUDIOFORMAT.samplesPerSec,\n type: Exports_js_1.type.Microphones,\n }));\n }\n setProperty(name, value) {\n if (name === exports.AudioWorkletSourceURLPropertyName) {\n this.privRecorder.setWorkletUrl(value);\n }\n else {\n throw new Error(\"Property '\" + name + \"' is not supported on Microphone.\");\n }\n }\n getMicrophoneLabel() {\n const defaultMicrophoneName = \"microphone\";\n // If we did this already, return the value.\n if (this.privMicrophoneLabel !== undefined) {\n return Promise.resolve(this.privMicrophoneLabel);\n }\n // If the stream isn't currently running, we can't query devices because security.\n if (this.privMediaStream === undefined || !this.privMediaStream.active) {\n return Promise.resolve(defaultMicrophoneName);\n }\n // Setup a default\n this.privMicrophoneLabel = defaultMicrophoneName;\n // Get the id of the device running the audio track.\n const microphoneDeviceId = this.privMediaStream.getTracks()[0].getSettings().deviceId;\n // If the browser doesn't support getting the device ID, set a default and return.\n if (undefined === microphoneDeviceId) {\n return Promise.resolve(this.privMicrophoneLabel);\n }\n const deferred = new Exports_js_2.Deferred();\n // Enumerate the media devices.\n navigator.mediaDevices.enumerateDevices().then((devices) => {\n for (const device of devices) {\n if (device.deviceId === microphoneDeviceId) {\n // Found the device\n this.privMicrophoneLabel = device.label;\n break;\n }\n }\n deferred.resolve(this.privMicrophoneLabel);\n }, () => deferred.resolve(this.privMicrophoneLabel));\n return deferred.promise;\n }\n async listen(audioNodeId) {\n await this.turnOn();\n const stream = new Exports_js_2.ChunkedArrayBufferStream(this.privOutputChunkSize, audioNodeId);\n this.privStreams[audioNodeId] = stream;\n try {\n this.privRecorder.record(this.privContext, this.privMediaStream, stream);\n }\n catch (error) {\n this.onEvent(new Exports_js_2.AudioStreamNodeErrorEvent(this.privId, audioNodeId, error));\n throw error;\n }\n const result = stream;\n return result;\n }\n onEvent(event) {\n this.privEvents.onEvent(event);\n Exports_js_2.Events.instance.onEvent(event);\n }\n createAudioContext() {\n if (!!this.privContext) {\n return;\n }\n this.privContext = AudioStreamFormat_js_1.AudioStreamFormatImpl.getAudioContext(MicAudioSource.AUDIOFORMAT.samplesPerSec);\n }\n async destroyAudioContext() {\n if (!this.privContext) {\n return;\n }\n this.privRecorder.releaseMediaResources(this.privContext);\n // This pattern brought to you by a bug in the TypeScript compiler where it\n // confuses the (\"close\" in this.privContext) with this.privContext always being null as the alternate.\n // https://github.com/Microsoft/TypeScript/issues/11498\n let hasClose = false;\n if (\"close\" in this.privContext) {\n hasClose = true;\n }\n if (hasClose) {\n if (!this.privIsClosing) {\n // The audio context close may take enough time that the close is called twice\n this.privIsClosing = true;\n await this.privContext.close();\n this.privContext = null;\n this.privIsClosing = false;\n }\n }\n else if (null !== this.privContext && this.privContext.state === \"running\") {\n // Suspend actually takes a callback, but analogous to the\n // resume method, it'll be only fired if suspend is called\n // in a direct response to a user action. The later is not always\n // the case, as TurnOff is also called, when we receive an\n // end-of-speech message from the service. So, doing a best effort\n // fire-and-forget here.\n await this.privContext.suspend();\n }\n }\n}\nexports.MicAudioSource = MicAudioSource;\nMicAudioSource.AUDIOFORMAT = AudioStreamFormat_js_1.AudioStreamFormat.getDefaultInputFormat();\n\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}