9e8ffa1448d14a884424497c8d9df315f48e0919e979f2e30f66c3cfc7933e8e.json 24 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.FileAudioSource = 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\");\nclass FileAudioSource {\n constructor(file, filename, audioSourceId) {\n this.privStreams = {};\n this.privHeaderEnd = 44;\n this.privId = audioSourceId ? audioSourceId : Exports_js_2.createNoDashGuid();\n this.privEvents = new Exports_js_2.EventSource();\n this.privSource = file;\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && this.privSource instanceof Blob) {\n this.privFilename = file.name;\n } else {\n this.privFilename = filename || \"unknown.wav\";\n }\n // Read the header.\n this.privAudioFormatPromise = this.readHeader();\n }\n get format() {\n return this.privAudioFormatPromise;\n }\n turnOn() {\n if (this.privFilename.lastIndexOf(\".wav\") !== this.privFilename.length - 4) {\n const errorMsg = this.privFilename + \" is not supported. Only WAVE files are allowed at the moment.\";\n this.onEvent(new Exports_js_2.AudioSourceErrorEvent(errorMsg, \"\"));\n return Promise.reject(errorMsg);\n }\n this.onEvent(new Exports_js_2.AudioSourceInitializingEvent(this.privId)); // no stream id\n this.onEvent(new Exports_js_2.AudioSourceReadyEvent(this.privId));\n return;\n }\n id() {\n return this.privId;\n }\n attach(audioNodeId) {\n var _this = this;\n return _asyncToGenerator(function* () {\n _this.onEvent(new Exports_js_2.AudioStreamNodeAttachingEvent(_this.privId, audioNodeId));\n const stream = yield _this.upload(audioNodeId);\n _this.onEvent(new Exports_js_2.AudioStreamNodeAttachedEvent(_this.privId, audioNodeId));\n return Promise.resolve({\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 yield _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 for (const streamId in this.privStreams) {\n if (streamId) {\n const stream = this.privStreams[streamId];\n if (stream && !stream.isClosed) {\n stream.close();\n }\n }\n }\n this.onEvent(new Exports_js_2.AudioSourceOffEvent(this.privId)); // no stream now\n return Promise.resolve();\n }\n get events() {\n return this.privEvents;\n }\n get deviceInfo() {\n return this.privAudioFormatPromise.then(result => Promise.resolve({\n bitspersample: result.bitsPerSample,\n channelcount: result.channels,\n connectivity: Exports_js_1.connectivity.Unknown,\n manufacturer: \"Speech SDK\",\n model: \"File\",\n samplerate: result.samplesPerSec,\n type: Exports_js_1.type.File\n }));\n }\n readHeader() {\n // Read the wave header.\n const maxHeaderSize = 4296;\n const header = this.privSource.slice(0, maxHeaderSize);\n const headerResult = new Exports_js_2.Deferred();\n const processHeader = header => {\n const view = new DataView(header);\n const getWord = index => String.fromCharCode(view.getUint8(index), view.getUint8(index + 1), view.getUint8(index + 2), view.getUint8(index + 3));\n // RIFF 4 bytes.\n if (\"RIFF\" !== getWord(0)) {\n headerResult.reject(\"Invalid WAV header in file, RIFF was not found\");\n return;\n }\n // length, 4 bytes\n // RIFF Type & fmt 8 bytes\n if (\"WAVE\" !== getWord(8) || \"fmt \" !== getWord(12)) {\n headerResult.reject(\"Invalid WAV header in file, WAVEfmt was not found\");\n return;\n }\n const formatSize = view.getInt32(16, true);\n const channelCount = view.getUint16(22, true);\n const sampleRate = view.getUint32(24, true);\n const bitsPerSample = view.getUint16(34, true);\n // Confirm if header is 44 bytes long.\n let pos = 36 + Math.max(formatSize - 16, 0);\n for (; getWord(pos) !== \"data\"; pos += 2) {\n if (pos > maxHeaderSize - 8) {\n headerResult.reject(\"Invalid WAV header in file, data block was not found\");\n return;\n }\n }\n this.privHeaderEnd = pos + 8;\n headerResult.resolve(AudioStreamFormat_js_1.AudioStreamFormat.getWaveFormatPCM(sampleRate, bitsPerSample, channelCount));\n };\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && header instanceof Blob) {\n const reader = new FileReader();\n reader.onload = event => {\n const header = event.target.result;\n processHeader(header);\n };\n reader.readAsArrayBuffer(header);\n } else {\n const h = header;\n processHeader(h.buffer.slice(h.byteOffset, h.byteOffset + h.byteLength));\n }\n return headerResult.promise;\n }\n upload(audioNodeId) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n const onerror = error => {\n const errorMsg = `Error occurred while processing '${_this2.privFilename}'. ${error}`;\n _this2.onEvent(new Exports_js_2.AudioStreamNodeErrorEvent(_this2.privId, audioNodeId, errorMsg));\n throw new Error(errorMsg);\n };\n try {\n yield _this2.turnOn();\n const format = yield _this2.privAudioFormatPromise;\n const stream = new Exports_js_2.ChunkedArrayBufferStream(format.avgBytesPerSec / 10, audioNodeId);\n _this2.privStreams[audioNodeId] = stream;\n const chunk = _this2.privSource.slice(_this2.privHeaderEnd);\n const processFile = buff => {\n if (stream.isClosed) {\n return; // output stream was closed (somebody called TurnOff). We're done here.\n }\n stream.writeStreamChunk({\n buffer: buff,\n isEnd: false,\n timeReceived: Date.now()\n });\n stream.close();\n };\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && chunk instanceof Blob) {\n const reader = new FileReader();\n reader.onerror = ev => onerror(ev.toString());\n reader.onload = event => {\n const fileBuffer = event.target.result;\n processFile(fileBuffer);\n };\n reader.readAsArrayBuffer(chunk);\n } else {\n const c = chunk;\n processFile(c.buffer.slice(c.byteOffset, c.byteOffset + c.byteLength));\n }\n return stream;\n } catch (e) {\n onerror(e);\n }\n })();\n }\n onEvent(event) {\n this.privEvents.onEvent(event);\n Exports_js_2.Events.instance.onEvent(event);\n }\n}\nexports.FileAudioSource = FileAudioSource;","map":{"version":3,"names":["_asyncToGenerator","require","default","Object","defineProperty","exports","value","FileAudioSource","Exports_js_1","Exports_js_2","AudioStreamFormat_js_1","constructor","file","filename","audioSourceId","privStreams","privHeaderEnd","privId","createNoDashGuid","privEvents","EventSource","privSource","window","Blob","privFilename","name","privAudioFormatPromise","readHeader","format","turnOn","lastIndexOf","length","errorMsg","onEvent","AudioSourceErrorEvent","Promise","reject","AudioSourceInitializingEvent","AudioSourceReadyEvent","id","attach","audioNodeId","_this","AudioStreamNodeAttachingEvent","stream","upload","AudioStreamNodeAttachedEvent","resolve","detach","_ref","readEnded","AudioStreamNodeDetachedEvent","turnOff","apply","arguments","read","close","streamId","isClosed","AudioSourceOffEvent","events","deviceInfo","then","result","bitspersample","bitsPerSample","channelcount","channels","connectivity","Unknown","manufacturer","model","samplerate","samplesPerSec","type","File","maxHeaderSize","header","slice","headerResult","Deferred","processHeader","view","DataView","getWord","index","String","fromCharCode","getUint8","formatSize","getInt32","channelCount","getUint16","sampleRate","getUint32","pos","Math","max","AudioStreamFormat","getWaveFormatPCM","reader","FileReader","onload","event","target","readAsArrayBuffer","h","buffer","byteOffset","byteLength","promise","_this2","onerror","error","AudioStreamNodeErrorEvent","Error","ChunkedArrayBufferStream","avgBytesPerSec","chunk","processFile","buff","writeStreamChunk","isEnd","timeReceived","Date","now","ev","toString","fileBuffer","c","e","Events","instance"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/FileAudioSource.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.FileAudioSource = 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\");\nclass FileAudioSource {\n constructor(file, filename, audioSourceId) {\n this.privStreams = {};\n this.privHeaderEnd = 44;\n this.privId = audioSourceId ? audioSourceId : Exports_js_2.createNoDashGuid();\n this.privEvents = new Exports_js_2.EventSource();\n this.privSource = file;\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && this.privSource instanceof Blob) {\n this.privFilename = file.name;\n }\n else {\n this.privFilename = filename || \"unknown.wav\";\n }\n // Read the header.\n this.privAudioFormatPromise = this.readHeader();\n }\n get format() {\n return this.privAudioFormatPromise;\n }\n turnOn() {\n if (this.privFilename.lastIndexOf(\".wav\") !== this.privFilename.length - 4) {\n const errorMsg = this.privFilename + \" is not supported. Only WAVE files are allowed at the moment.\";\n this.onEvent(new Exports_js_2.AudioSourceErrorEvent(errorMsg, \"\"));\n return Promise.reject(errorMsg);\n }\n this.onEvent(new Exports_js_2.AudioSourceInitializingEvent(this.privId)); // no stream id\n this.onEvent(new Exports_js_2.AudioSourceReadyEvent(this.privId));\n return;\n }\n id() {\n return this.privId;\n }\n async attach(audioNodeId) {\n this.onEvent(new Exports_js_2.AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\n const stream = await this.upload(audioNodeId);\n this.onEvent(new Exports_js_2.AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\n return Promise.resolve({\n detach: async () => {\n stream.readEnded();\n delete this.privStreams[audioNodeId];\n this.onEvent(new Exports_js_2.AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\n await this.turnOff();\n },\n id: () => audioNodeId,\n read: () => stream.read(),\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 for (const streamId in this.privStreams) {\n if (streamId) {\n const stream = this.privStreams[streamId];\n if (stream && !stream.isClosed) {\n stream.close();\n }\n }\n }\n this.onEvent(new Exports_js_2.AudioSourceOffEvent(this.privId)); // no stream now\n return Promise.resolve();\n }\n get events() {\n return this.privEvents;\n }\n get deviceInfo() {\n return this.privAudioFormatPromise.then((result) => (Promise.resolve({\n bitspersample: result.bitsPerSample,\n channelcount: result.channels,\n connectivity: Exports_js_1.connectivity.Unknown,\n manufacturer: \"Speech SDK\",\n model: \"File\",\n samplerate: result.samplesPerSec,\n type: Exports_js_1.type.File,\n })));\n }\n readHeader() {\n // Read the wave header.\n const maxHeaderSize = 4296;\n const header = this.privSource.slice(0, maxHeaderSize);\n const headerResult = new Exports_js_2.Deferred();\n const processHeader = (header) => {\n const view = new DataView(header);\n const getWord = (index) => String.fromCharCode(view.getUint8(index), view.getUint8(index + 1), view.getUint8(index + 2), view.getUint8(index + 3));\n // RIFF 4 bytes.\n if (\"RIFF\" !== getWord(0)) {\n headerResult.reject(\"Invalid WAV header in file, RIFF was not found\");\n return;\n }\n // length, 4 bytes\n // RIFF Type & fmt 8 bytes\n if (\"WAVE\" !== getWord(8) || \"fmt \" !== getWord(12)) {\n headerResult.reject(\"Invalid WAV header in file, WAVEfmt was not found\");\n return;\n }\n const formatSize = view.getInt32(16, true);\n const channelCount = view.getUint16(22, true);\n const sampleRate = view.getUint32(24, true);\n const bitsPerSample = view.getUint16(34, true);\n // Confirm if header is 44 bytes long.\n let pos = 36 + Math.max(formatSize - 16, 0);\n for (; getWord(pos) !== \"data\"; pos += 2) {\n if (pos > maxHeaderSize - 8) {\n headerResult.reject(\"Invalid WAV header in file, data block was not found\");\n return;\n }\n }\n this.privHeaderEnd = pos + 8;\n headerResult.resolve(AudioStreamFormat_js_1.AudioStreamFormat.getWaveFormatPCM(sampleRate, bitsPerSample, channelCount));\n };\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && header instanceof Blob) {\n const reader = new FileReader();\n reader.onload = (event) => {\n const header = event.target.result;\n processHeader(header);\n };\n reader.readAsArrayBuffer(header);\n }\n else {\n const h = header;\n processHeader(h.buffer.slice(h.byteOffset, h.byteOffset + h.byteLength));\n }\n return headerResult.promise;\n }\n async upload(audioNodeId) {\n const onerror = (error) => {\n const errorMsg = `Error occurred while processing '${this.privFilename}'. ${error}`;\n this.onEvent(new Exports_js_2.AudioStreamNodeErrorEvent(this.privId, audioNodeId, errorMsg));\n throw new Error(errorMsg);\n };\n try {\n await this.turnOn();\n const format = await this.privAudioFormatPromise;\n const stream = new Exports_js_2.ChunkedArrayBufferStream(format.avgBytesPerSec / 10, audioNodeId);\n this.privStreams[audioNodeId] = stream;\n const chunk = this.privSource.slice(this.privHeaderEnd);\n const processFile = (buff) => {\n if (stream.isClosed) {\n return; // output stream was closed (somebody called TurnOff). We're done here.\n }\n stream.writeStreamChunk({\n buffer: buff,\n isEnd: false,\n timeReceived: Date.now(),\n });\n stream.close();\n };\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && chunk instanceof Blob) {\n const reader = new FileReader();\n reader.onerror = (ev) => onerror(ev.toString());\n reader.onload = (event) => {\n const fileBuffer = event.target.result;\n processFile(fileBuffer);\n };\n reader.readAsArrayBuffer(chunk);\n }\n else {\n const c = chunk;\n processFile(c.buffer.slice(c.byteOffset, c.byteOffset + c.byteLength));\n }\n return stream;\n }\n catch (e) {\n onerror(e);\n }\n }\n onEvent(event) {\n this.privEvents.onEvent(event);\n Exports_js_2.Events.instance.onEvent(event);\n }\n}\nexports.FileAudioSource = FileAudioSource;\n\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}