16d236eb0fe3779790dc9f49ecc25e43c05ccd6ad49b05e3126353b6941f192c.json 31 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.SpeakerAudioDestination = void 0;\nconst Exports_js_1 = require(\"../../common/Exports.js\");\nconst AudioOutputStream_js_1 = require(\"./AudioOutputStream.js\");\nconst AudioStreamFormat_js_1 = require(\"./AudioStreamFormat.js\");\nconst MediaDurationPlaceholderSeconds = 60 * 30;\nconst AudioFormatToMimeType = {\n [AudioStreamFormat_js_1.AudioFormatTag.PCM]: \"audio/wav\",\n [AudioStreamFormat_js_1.AudioFormatTag.MuLaw]: \"audio/x-wav\",\n [AudioStreamFormat_js_1.AudioFormatTag.MP3]: \"audio/mpeg\",\n [AudioStreamFormat_js_1.AudioFormatTag.OGG_OPUS]: \"audio/ogg\",\n [AudioStreamFormat_js_1.AudioFormatTag.WEBM_OPUS]: \"audio/webm; codecs=opus\",\n [AudioStreamFormat_js_1.AudioFormatTag.ALaw]: \"audio/x-wav\",\n [AudioStreamFormat_js_1.AudioFormatTag.FLAC]: \"audio/flac\",\n [AudioStreamFormat_js_1.AudioFormatTag.AMR_WB]: \"audio/amr-wb\",\n [AudioStreamFormat_js_1.AudioFormatTag.G722]: \"audio/G722\"\n};\n/**\n * Represents the speaker playback audio destination, which only works in browser.\n * Note: the SDK will try to use <a href=\"https://www.w3.org/TR/media-source/\">Media Source Extensions</a> to play audio.\n * Mp3 format has better supports on Microsoft Edge, Chrome and Safari (desktop), so, it's better to specify mp3 format for playback.\n * @class SpeakerAudioDestination\n * Updated in version 1.17.0\n */\nclass SpeakerAudioDestination {\n constructor(audioDestinationId) {\n this.privPlaybackStarted = false;\n this.privAppendingToBuffer = false;\n this.privMediaSourceOpened = false;\n this.privBytesReceived = 0;\n this.privId = audioDestinationId ? audioDestinationId : Exports_js_1.createNoDashGuid();\n this.privIsPaused = false;\n this.privIsClosed = false;\n }\n id() {\n return this.privId;\n }\n write(buffer, cb, err) {\n if (this.privAudioBuffer !== undefined) {\n this.privAudioBuffer.push(buffer);\n this.updateSourceBuffer().then(() => {\n if (!!cb) {\n cb();\n }\n }, error => {\n if (!!err) {\n err(error);\n }\n });\n } else if (this.privAudioOutputStream !== undefined) {\n this.privAudioOutputStream.write(buffer);\n this.privBytesReceived += buffer.byteLength;\n }\n }\n close(cb, err) {\n this.privIsClosed = true;\n if (this.privSourceBuffer !== undefined) {\n this.handleSourceBufferUpdateEnd().then(() => {\n if (!!cb) {\n cb();\n }\n }, error => {\n if (!!err) {\n err(error);\n }\n });\n } else if (this.privAudioOutputStream !== undefined && typeof window !== \"undefined\") {\n if ((this.privFormat.formatTag === AudioStreamFormat_js_1.AudioFormatTag.PCM || this.privFormat.formatTag === AudioStreamFormat_js_1.AudioFormatTag.MuLaw || this.privFormat.formatTag === AudioStreamFormat_js_1.AudioFormatTag.ALaw) && this.privFormat.hasHeader === false) {\n // eslint-disable-next-line no-console\n console.warn(\"Play back is not supported for raw PCM, mulaw or alaw format without header.\");\n if (!!this.onAudioEnd) {\n this.onAudioEnd(this);\n }\n } else {\n let receivedAudio = new ArrayBuffer(this.privBytesReceived);\n this.privAudioOutputStream.read(receivedAudio).then(() => {\n receivedAudio = this.privFormat.addHeader(receivedAudio);\n const audioBlob = new Blob([receivedAudio], {\n type: AudioFormatToMimeType[this.privFormat.formatTag]\n });\n this.privAudio.src = window.URL.createObjectURL(audioBlob);\n this.notifyPlayback().then(() => {\n if (!!cb) {\n cb();\n }\n }, error => {\n if (!!err) {\n err(error);\n }\n });\n }, error => {\n if (!!err) {\n err(error);\n }\n });\n }\n } else {\n // unsupported format, call onAudioEnd directly.\n if (!!this.onAudioEnd) {\n this.onAudioEnd(this);\n }\n }\n }\n set format(format) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof AudioContext !== \"undefined\" || typeof window !== \"undefined\" && typeof window.webkitAudioContext !== \"undefined\") {\n this.privFormat = format;\n const mimeType = AudioFormatToMimeType[this.privFormat.formatTag];\n if (mimeType === undefined) {\n // eslint-disable-next-line no-console\n console.warn(`Unknown mimeType for format ${AudioStreamFormat_js_1.AudioFormatTag[this.privFormat.formatTag]}; playback is not supported.`);\n } else if (typeof MediaSource !== \"undefined\" && MediaSource.isTypeSupported(mimeType)) {\n this.privAudio = new Audio();\n this.privAudioBuffer = [];\n this.privMediaSource = new MediaSource();\n this.privAudio.src = URL.createObjectURL(this.privMediaSource);\n this.privAudio.load();\n this.privMediaSource.onsourceopen = () => {\n this.privMediaSourceOpened = true;\n this.privMediaSource.duration = MediaDurationPlaceholderSeconds;\n this.privSourceBuffer = this.privMediaSource.addSourceBuffer(mimeType);\n this.privSourceBuffer.onupdate = () => {\n this.updateSourceBuffer().catch(reason => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n };\n this.privSourceBuffer.onupdateend = () => {\n this.handleSourceBufferUpdateEnd().catch(reason => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n };\n this.privSourceBuffer.onupdatestart = () => {\n this.privAppendingToBuffer = false;\n };\n };\n this.updateSourceBuffer().catch(reason => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n } else {\n // eslint-disable-next-line no-console\n console.warn(`Format ${AudioStreamFormat_js_1.AudioFormatTag[this.privFormat.formatTag]} could not be played by MSE, streaming playback is not enabled.`);\n this.privAudioOutputStream = new AudioOutputStream_js_1.PullAudioOutputStreamImpl();\n this.privAudioOutputStream.format = this.privFormat;\n this.privAudio = new Audio();\n }\n }\n }\n get volume() {\n var _this$privAudio$volum, _this$privAudio;\n return (_this$privAudio$volum = (_this$privAudio = this.privAudio) === null || _this$privAudio === void 0 ? void 0 : _this$privAudio.volume) !== null && _this$privAudio$volum !== void 0 ? _this$privAudio$volum : -1;\n }\n set volume(volume) {\n if (!!this.privAudio) {\n this.privAudio.volume = volume;\n }\n }\n mute() {\n if (!!this.privAudio) {\n this.privAudio.muted = true;\n }\n }\n unmute() {\n if (!!this.privAudio) {\n this.privAudio.muted = false;\n }\n }\n get isClosed() {\n return this.privIsClosed;\n }\n get currentTime() {\n if (this.privAudio !== undefined) {\n return this.privAudio.currentTime;\n }\n return -1;\n }\n pause() {\n if (!this.privIsPaused && this.privAudio !== undefined) {\n this.privAudio.pause();\n this.privIsPaused = true;\n }\n }\n resume(cb, err) {\n if (this.privIsPaused && this.privAudio !== undefined) {\n this.privAudio.play().then(() => {\n if (!!cb) {\n cb();\n }\n }, error => {\n if (!!err) {\n err(error);\n }\n });\n this.privIsPaused = false;\n }\n }\n get internalAudio() {\n return this.privAudio;\n }\n updateSourceBuffer() {\n var _this = this;\n return _asyncToGenerator(function* () {\n if (_this.privAudioBuffer !== undefined && _this.privAudioBuffer.length > 0 && _this.sourceBufferAvailable()) {\n _this.privAppendingToBuffer = true;\n const binary = _this.privAudioBuffer.shift();\n try {\n _this.privSourceBuffer.appendBuffer(binary);\n } catch (error) {\n _this.privAudioBuffer.unshift(binary);\n // eslint-disable-next-line no-console\n console.log(\"buffer filled, pausing addition of binaries until space is made\");\n return;\n }\n yield _this.notifyPlayback();\n } else if (_this.canEndStream()) {\n yield _this.handleSourceBufferUpdateEnd();\n }\n })();\n }\n handleSourceBufferUpdateEnd() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n if (_this2.canEndStream() && _this2.sourceBufferAvailable()) {\n _this2.privMediaSource.endOfStream();\n yield _this2.notifyPlayback();\n }\n })();\n }\n notifyPlayback() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n if (!_this3.privPlaybackStarted && _this3.privAudio !== undefined) {\n _this3.privPlaybackStarted = true;\n if (!!_this3.onAudioStart) {\n _this3.onAudioStart(_this3);\n }\n _this3.privAudio.onended = () => {\n if (!!_this3.onAudioEnd) {\n _this3.onAudioEnd(_this3);\n }\n };\n if (!_this3.privIsPaused) {\n yield _this3.privAudio.play();\n }\n }\n })();\n }\n canEndStream() {\n return this.isClosed && this.privSourceBuffer !== undefined && this.privAudioBuffer.length === 0 && this.privMediaSourceOpened && !this.privAppendingToBuffer && this.privMediaSource.readyState === \"open\";\n }\n sourceBufferAvailable() {\n return this.privSourceBuffer !== undefined && !this.privSourceBuffer.updating;\n }\n}\nexports.SpeakerAudioDestination = SpeakerAudioDestination;","map":{"version":3,"names":["_asyncToGenerator","require","default","Object","defineProperty","exports","value","SpeakerAudioDestination","Exports_js_1","AudioOutputStream_js_1","AudioStreamFormat_js_1","MediaDurationPlaceholderSeconds","AudioFormatToMimeType","AudioFormatTag","PCM","MuLaw","MP3","OGG_OPUS","WEBM_OPUS","ALaw","FLAC","AMR_WB","G722","constructor","audioDestinationId","privPlaybackStarted","privAppendingToBuffer","privMediaSourceOpened","privBytesReceived","privId","createNoDashGuid","privIsPaused","privIsClosed","id","write","buffer","cb","err","privAudioBuffer","undefined","push","updateSourceBuffer","then","error","privAudioOutputStream","byteLength","close","privSourceBuffer","handleSourceBufferUpdateEnd","window","privFormat","formatTag","hasHeader","console","warn","onAudioEnd","receivedAudio","ArrayBuffer","read","addHeader","audioBlob","Blob","type","privAudio","src","URL","createObjectURL","notifyPlayback","format","AudioContext","webkitAudioContext","mimeType","MediaSource","isTypeSupported","Audio","privMediaSource","load","onsourceopen","duration","addSourceBuffer","onupdate","catch","reason","Events","instance","onEvent","BackgroundEvent","onupdateend","onupdatestart","PullAudioOutputStreamImpl","volume","_this$privAudio$volum","_this$privAudio","mute","muted","unmute","isClosed","currentTime","pause","resume","play","internalAudio","_this","length","sourceBufferAvailable","binary","shift","appendBuffer","unshift","log","canEndStream","_this2","endOfStream","_this3","onAudioStart","onended","readyState","updating"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/SpeakerAudioDestination.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.SpeakerAudioDestination = void 0;\nconst Exports_js_1 = require(\"../../common/Exports.js\");\nconst AudioOutputStream_js_1 = require(\"./AudioOutputStream.js\");\nconst AudioStreamFormat_js_1 = require(\"./AudioStreamFormat.js\");\nconst MediaDurationPlaceholderSeconds = 60 * 30;\nconst AudioFormatToMimeType = {\n [AudioStreamFormat_js_1.AudioFormatTag.PCM]: \"audio/wav\",\n [AudioStreamFormat_js_1.AudioFormatTag.MuLaw]: \"audio/x-wav\",\n [AudioStreamFormat_js_1.AudioFormatTag.MP3]: \"audio/mpeg\",\n [AudioStreamFormat_js_1.AudioFormatTag.OGG_OPUS]: \"audio/ogg\",\n [AudioStreamFormat_js_1.AudioFormatTag.WEBM_OPUS]: \"audio/webm; codecs=opus\",\n [AudioStreamFormat_js_1.AudioFormatTag.ALaw]: \"audio/x-wav\",\n [AudioStreamFormat_js_1.AudioFormatTag.FLAC]: \"audio/flac\",\n [AudioStreamFormat_js_1.AudioFormatTag.AMR_WB]: \"audio/amr-wb\",\n [AudioStreamFormat_js_1.AudioFormatTag.G722]: \"audio/G722\",\n};\n/**\n * Represents the speaker playback audio destination, which only works in browser.\n * Note: the SDK will try to use <a href=\"https://www.w3.org/TR/media-source/\">Media Source Extensions</a> to play audio.\n * Mp3 format has better supports on Microsoft Edge, Chrome and Safari (desktop), so, it's better to specify mp3 format for playback.\n * @class SpeakerAudioDestination\n * Updated in version 1.17.0\n */\nclass SpeakerAudioDestination {\n constructor(audioDestinationId) {\n this.privPlaybackStarted = false;\n this.privAppendingToBuffer = false;\n this.privMediaSourceOpened = false;\n this.privBytesReceived = 0;\n this.privId = audioDestinationId ? audioDestinationId : Exports_js_1.createNoDashGuid();\n this.privIsPaused = false;\n this.privIsClosed = false;\n }\n id() {\n return this.privId;\n }\n write(buffer, cb, err) {\n if (this.privAudioBuffer !== undefined) {\n this.privAudioBuffer.push(buffer);\n this.updateSourceBuffer().then(() => {\n if (!!cb) {\n cb();\n }\n }, (error) => {\n if (!!err) {\n err(error);\n }\n });\n }\n else if (this.privAudioOutputStream !== undefined) {\n this.privAudioOutputStream.write(buffer);\n this.privBytesReceived += buffer.byteLength;\n }\n }\n close(cb, err) {\n this.privIsClosed = true;\n if (this.privSourceBuffer !== undefined) {\n this.handleSourceBufferUpdateEnd().then(() => {\n if (!!cb) {\n cb();\n }\n }, (error) => {\n if (!!err) {\n err(error);\n }\n });\n }\n else if (this.privAudioOutputStream !== undefined && typeof window !== \"undefined\") {\n if ((this.privFormat.formatTag === AudioStreamFormat_js_1.AudioFormatTag.PCM || this.privFormat.formatTag === AudioStreamFormat_js_1.AudioFormatTag.MuLaw\n || this.privFormat.formatTag === AudioStreamFormat_js_1.AudioFormatTag.ALaw) && this.privFormat.hasHeader === false) {\n // eslint-disable-next-line no-console\n console.warn(\"Play back is not supported for raw PCM, mulaw or alaw format without header.\");\n if (!!this.onAudioEnd) {\n this.onAudioEnd(this);\n }\n }\n else {\n let receivedAudio = new ArrayBuffer(this.privBytesReceived);\n this.privAudioOutputStream.read(receivedAudio).then(() => {\n receivedAudio = this.privFormat.addHeader(receivedAudio);\n const audioBlob = new Blob([receivedAudio], { type: AudioFormatToMimeType[this.privFormat.formatTag] });\n this.privAudio.src = window.URL.createObjectURL(audioBlob);\n this.notifyPlayback().then(() => {\n if (!!cb) {\n cb();\n }\n }, (error) => {\n if (!!err) {\n err(error);\n }\n });\n }, (error) => {\n if (!!err) {\n err(error);\n }\n });\n }\n }\n else {\n // unsupported format, call onAudioEnd directly.\n if (!!this.onAudioEnd) {\n this.onAudioEnd(this);\n }\n }\n }\n set format(format) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof (AudioContext) !== \"undefined\" || (typeof (window) !== \"undefined\" && typeof (window.webkitAudioContext) !== \"undefined\")) {\n this.privFormat = format;\n const mimeType = AudioFormatToMimeType[this.privFormat.formatTag];\n if (mimeType === undefined) {\n // eslint-disable-next-line no-console\n console.warn(`Unknown mimeType for format ${AudioStreamFormat_js_1.AudioFormatTag[this.privFormat.formatTag]}; playback is not supported.`);\n }\n else if (typeof (MediaSource) !== \"undefined\" && MediaSource.isTypeSupported(mimeType)) {\n this.privAudio = new Audio();\n this.privAudioBuffer = [];\n this.privMediaSource = new MediaSource();\n this.privAudio.src = URL.createObjectURL(this.privMediaSource);\n this.privAudio.load();\n this.privMediaSource.onsourceopen = () => {\n this.privMediaSourceOpened = true;\n this.privMediaSource.duration = MediaDurationPlaceholderSeconds;\n this.privSourceBuffer = this.privMediaSource.addSourceBuffer(mimeType);\n this.privSourceBuffer.onupdate = () => {\n this.updateSourceBuffer().catch((reason) => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n };\n this.privSourceBuffer.onupdateend = () => {\n this.handleSourceBufferUpdateEnd().catch((reason) => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n };\n this.privSourceBuffer.onupdatestart = () => {\n this.privAppendingToBuffer = false;\n };\n };\n this.updateSourceBuffer().catch((reason) => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n }\n else {\n // eslint-disable-next-line no-console\n console.warn(`Format ${AudioStreamFormat_js_1.AudioFormatTag[this.privFormat.formatTag]} could not be played by MSE, streaming playback is not enabled.`);\n this.privAudioOutputStream = new AudioOutputStream_js_1.PullAudioOutputStreamImpl();\n this.privAudioOutputStream.format = this.privFormat;\n this.privAudio = new Audio();\n }\n }\n }\n get volume() {\n return this.privAudio?.volume ?? -1;\n }\n set volume(volume) {\n if (!!this.privAudio) {\n this.privAudio.volume = volume;\n }\n }\n mute() {\n if (!!this.privAudio) {\n this.privAudio.muted = true;\n }\n }\n unmute() {\n if (!!this.privAudio) {\n this.privAudio.muted = false;\n }\n }\n get isClosed() {\n return this.privIsClosed;\n }\n get currentTime() {\n if (this.privAudio !== undefined) {\n return this.privAudio.currentTime;\n }\n return -1;\n }\n pause() {\n if (!this.privIsPaused && this.privAudio !== undefined) {\n this.privAudio.pause();\n this.privIsPaused = true;\n }\n }\n resume(cb, err) {\n if (this.privIsPaused && this.privAudio !== undefined) {\n this.privAudio.play().then(() => {\n if (!!cb) {\n cb();\n }\n }, (error) => {\n if (!!err) {\n err(error);\n }\n });\n this.privIsPaused = false;\n }\n }\n get internalAudio() {\n return this.privAudio;\n }\n async updateSourceBuffer() {\n if (this.privAudioBuffer !== undefined && (this.privAudioBuffer.length > 0) && this.sourceBufferAvailable()) {\n this.privAppendingToBuffer = true;\n const binary = this.privAudioBuffer.shift();\n try {\n this.privSourceBuffer.appendBuffer(binary);\n }\n catch (error) {\n this.privAudioBuffer.unshift(binary);\n // eslint-disable-next-line no-console\n console.log(\"buffer filled, pausing addition of binaries until space is made\");\n return;\n }\n await this.notifyPlayback();\n }\n else if (this.canEndStream()) {\n await this.handleSourceBufferUpdateEnd();\n }\n }\n async handleSourceBufferUpdateEnd() {\n if (this.canEndStream() && this.sourceBufferAvailable()) {\n this.privMediaSource.endOfStream();\n await this.notifyPlayback();\n }\n }\n async notifyPlayback() {\n if (!this.privPlaybackStarted && this.privAudio !== undefined) {\n this.privPlaybackStarted = true;\n if (!!this.onAudioStart) {\n this.onAudioStart(this);\n }\n this.privAudio.onended = () => {\n if (!!this.onAudioEnd) {\n this.onAudioEnd(this);\n }\n };\n if (!this.privIsPaused) {\n await this.privAudio.play();\n }\n }\n }\n canEndStream() {\n return (this.isClosed && this.privSourceBuffer !== undefined && (this.privAudioBuffer.length === 0)\n && this.privMediaSourceOpened && !this.privAppendingToBuffer && this.privMediaSource.readyState === \"open\");\n }\n sourceBufferAvailable() {\n return (this.privSourceBuffer !== undefined && !this.privSourceBuffer.updating);\n }\n}\nexports.SpeakerAudioDestination = SpeakerAudioDestination;\n\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}