web-speech-cognitive-services
Version:
Polyfill Web Speech API with Cognitive Services Speech-to-Text service
1 lines • 102 kB
Source Map (JSON)
{"version":3,"sources":["../src/SpeechServices/SpeechToText/createSpeechRecognitionPonyfill.ts","../src/SpeechServices/patchOptions.ts","../src/SpeechServices/resolveFunctionOrReturnValue.ts","../src/SpeechServices/SpeechSDK.ts","../src/SpeechServices/SpeechToText/validation/credentialsSchema.ts","../src/SpeechServices/SpeechToText/validation/enableTelemetrySchema.ts","../src/SpeechServices/SpeechToText/validation/initialSilenceTimeoutSchema.ts","../src/SpeechServices/SpeechToText/validation/looseEventsSchema.ts","../src/SpeechServices/SpeechToText/validation/referenceGrammarsSchema.ts","../src/SpeechServices/SpeechToText/validation/speechRecognitionEndpointIdSchema.ts","../src/SpeechServices/SpeechToText/validation/textNormalizationSchema.ts","../src/SpeechServices/SpeechToText/createSpeechRecognitionPonyfillFromRecognizer.ts","../../../node_modules/p-defer/index.js","../src/Util/createPromiseQueue.js","../src/SpeechServices/SpeechToText/SpeechRecognitionAlternative.ts","../src/SpeechServices/SpeechToText/private/FakeArray.ts","../src/SpeechServices/SpeechToText/SpeechRecognitionResult.ts","../src/SpeechServices/SpeechToText/cognitiveServiceEventResultToWebSpeechRecognitionResult.ts","../src/SpeechServices/SpeechToText/cognitiveServicesAsyncToPromise.ts","../src/SpeechServices/SpeechToText/private/EventListenerMap.ts","../src/SpeechServices/SpeechToText/private/prepareAudioConfig.ts","../src/SpeechServices/SpeechToText/private/averageAmplitude.ts","../src/SpeechServices/SpeechToText/private/serializeRecognitionResult.ts","../src/SpeechServices/SpeechToText/SpeechGrammarList.ts","../src/SpeechServices/SpeechToText/SpeechRecognitionErrorEvent.ts","../src/SpeechServices/SpeechToText/SpeechRecognitionResultList.ts","../src/SpeechServices/SpeechToText/SpeechRecognitionEvent.ts","../src/SpeechServices/TextToSpeech/createSpeechSynthesisPonyfill.js","../src/SpeechServices/TextToSpeech/AudioContextQueue.js","../src/SpeechServices/TextToSpeech/AudioContextConsumer.js","../src/SpeechServices/TextToSpeech/SpeechSynthesisEvent.js","../src/SpeechServices/TextToSpeech/SpeechSynthesisUtterance.js","../src/SpeechServices/TextToSpeech/fetchSpeechData.js","../src/SpeechServices/TextToSpeech/buildSSML.js","../src/SpeechServices/TextToSpeech/isSSML.js","../src/SpeechServices/TextToSpeech/subscribeEvent.js","../src/SpeechServices/TextToSpeech/SpeechSynthesisVoice.js","../src/SpeechServices/TextToSpeech/fetchCustomVoices.js","../src/SpeechServices/TextToSpeech/fetchVoices.js","../src/SpeechServices/TextToSpeech.js","../src/SpeechServices/fetchAuthorizationToken.ts","../src/SpeechServices.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint complexity: [\"error\", 70] */\n/* eslint no-await-in-loop: \"off\" */\n/* eslint no-empty-function: \"off\" */\n/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 100, 150] }] */\n\nimport { PropertyId } from 'microsoft-cognitiveservices-speech-sdk';\nimport patchOptions, { type PatchOptionsInit } from '../patchOptions';\nimport SpeechSDK from '../SpeechSDK';\nimport createSpeechRecognitionPonyfillFromRecognizer from './createSpeechRecognitionPonyfillFromRecognizer';\n\nconst { OutputFormat, SpeechConfig, SpeechRecognizer } = SpeechSDK;\n\nexport default function createSpeechRecognitionPonyfill(options: PatchOptionsInit) {\n const {\n audioConfig,\n enableTelemetry,\n fetchCredentials,\n initialSilenceTimeout,\n looseEvents,\n referenceGrammars,\n speechRecognitionEndpointId,\n textNormalization\n } = patchOptions(options);\n\n if (!audioConfig && (!window.navigator.mediaDevices || !window.navigator.mediaDevices.getUserMedia)) {\n throw new Error(\n 'web-speech-cognitive-services: This browser does not support Media Capture and Streams API and it will not work with Cognitive Services Speech Services.'\n );\n }\n\n const createRecognizer = async (lang: string) => {\n const credentials = await fetchCredentials();\n let speechConfig;\n\n if (typeof credentials.speechRecognitionHostname !== 'undefined') {\n const host = new URL('wss://localhost:443');\n\n host.hostname = credentials.speechRecognitionHostname;\n\n if (credentials.authorizationToken) {\n speechConfig = SpeechConfig.fromHost(host);\n speechConfig.authorizationToken = credentials.authorizationToken;\n } else {\n speechConfig = SpeechConfig.fromHost(host, credentials.subscriptionKey);\n }\n } else {\n speechConfig =\n typeof credentials.authorizationToken !== 'undefined'\n ? SpeechConfig.fromAuthorizationToken(credentials.authorizationToken, credentials.region)\n : SpeechConfig.fromSubscription(credentials.subscriptionKey, credentials.region);\n }\n\n if (speechRecognitionEndpointId) {\n speechConfig.endpointId = speechRecognitionEndpointId;\n }\n\n speechConfig.outputFormat = OutputFormat.Detailed;\n speechConfig.speechRecognitionLanguage = lang || 'en-US';\n typeof initialSilenceTimeout === 'number' &&\n speechConfig.setProperty(PropertyId.SpeechServiceConnection_InitialSilenceTimeoutMs, '' + initialSilenceTimeout);\n\n return new SpeechRecognizer(speechConfig, audioConfig);\n };\n\n return createSpeechRecognitionPonyfillFromRecognizer({\n createRecognizer,\n enableTelemetry,\n looseEvents,\n referenceGrammars,\n textNormalization\n });\n}\n","import { type AudioConfig as AudioConfigType } from 'microsoft-cognitiveservices-speech-sdk';\nimport { parse } from 'valibot';\n\nimport resolveFunctionOrReturnValue from './resolveFunctionOrReturnValue';\nimport SpeechSDK from './SpeechSDK';\nimport credentialsSchema, { type Credentials } from './SpeechToText/validation/credentialsSchema';\nimport enableTelemetrySchema, { EnableTelemetry } from './SpeechToText/validation/enableTelemetrySchema';\nimport initialSilenceTimeoutSchema, {\n InitialSilenceTimeout\n} from './SpeechToText/validation/initialSilenceTimeoutSchema';\nimport looseEventsSchema, { LooseEvents } from './SpeechToText/validation/looseEventsSchema';\nimport referenceGrammarsSchema, { ReferenceGrammars } from './SpeechToText/validation/referenceGrammarsSchema';\nimport speechRecognitionEndpointIdSchema, {\n SpeechRecognitionEndpointId\n} from './SpeechToText/validation/speechRecognitionEndpointIdSchema';\nimport textNormalizationSchema, { TextNormalization } from './SpeechToText/validation/textNormalizationSchema';\n\nconst { AudioConfig } = SpeechSDK;\n\nlet shouldWarnOnSubscriptionKey = true;\n\ntype PatchOptionsInit = {\n audioConfig?: AudioConfigType | undefined;\n credentials: (() => Credentials | Promise<Credentials>) | Credentials | Promise<Credentials>;\n enableTelemetry?: boolean | undefined;\n initialSilenceTimeout?: number | undefined;\n looseEvent?: boolean | undefined;\n looseEvents?: boolean | undefined;\n referenceGrammars?: readonly string[] | undefined;\n speechRecognitionEndpointId?: string | undefined;\n textNormalization?: 'display' | 'itn' | 'lexical' | 'maskeditn' | undefined;\n};\n\ntype PatchedOptions = Readonly<{\n audioConfig: AudioConfigType;\n enableTelemetry: EnableTelemetry;\n fetchCredentials: () => Promise<Credentials>;\n initialSilenceTimeout: InitialSilenceTimeout;\n looseEvents: LooseEvents;\n referenceGrammars: ReferenceGrammars;\n speechRecognitionEndpointId: SpeechRecognitionEndpointId;\n textNormalization: TextNormalization;\n}>;\n\nexport default function patchOptions(init: PatchOptionsInit): PatchedOptions {\n const {\n audioConfig,\n credentials,\n enableTelemetry,\n initialSilenceTimeout,\n looseEvent,\n referenceGrammars,\n speechRecognitionEndpointId,\n textNormalization\n } = init;\n\n let { looseEvents } = init;\n\n if (typeof looseEvent !== 'undefined') {\n console.warn('web-speech-cognitive-services: The option \"looseEvent\" should be named as \"looseEvents\".');\n\n looseEvents = looseEvent;\n }\n\n return Object.freeze({\n audioConfig: audioConfig || AudioConfig.fromDefaultMicrophoneInput(),\n // We set telemetry to true to honor the default telemetry settings of Speech SDK\n // https://github.com/Microsoft/cognitive-services-speech-sdk-js#data--telemetry\n enableTelemetry: parse(enableTelemetrySchema, enableTelemetry),\n fetchCredentials: async () => {\n const parsedCredentials = parse(credentialsSchema, await resolveFunctionOrReturnValue<Credentials>(credentials));\n\n if (shouldWarnOnSubscriptionKey && parsedCredentials.subscriptionKey) {\n console.warn(\n 'web-speech-cognitive-services: In production environment, subscription key should not be used, authorization token should be used instead.'\n );\n\n shouldWarnOnSubscriptionKey = false;\n }\n\n return parsedCredentials;\n },\n initialSilenceTimeout: parse(initialSilenceTimeoutSchema, initialSilenceTimeout),\n looseEvents: parse(looseEventsSchema, looseEvents),\n referenceGrammars: parse(referenceGrammarsSchema, referenceGrammars),\n speechRecognitionEndpointId: parse(speechRecognitionEndpointIdSchema, speechRecognitionEndpointId),\n textNormalization: parse(textNormalizationSchema, textNormalization)\n });\n}\n\nexport type { Credentials, PatchedOptions, PatchOptionsInit };\n","function isFunction(value: unknown): value is () => unknown {\n return typeof value === 'function';\n}\n\nexport default function resolveFunctionOrReturnValue<T>(\n fnOrValue: (() => Promise<T> | T) | Promise<T> | T\n): Promise<T> | T {\n return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;\n}\n","// We are only importing what we need.\n\nimport {\n AudioConfig,\n OutputFormat,\n ResultReason,\n SpeechConfig,\n SpeechRecognizer\n} from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/microsoft.cognitiveservices.speech.sdk.js';\n\nexport default {\n AudioConfig,\n OutputFormat,\n ResultReason,\n SpeechConfig,\n SpeechRecognizer\n};\n","import { type InferOutput, intersect, object, optional, pipe, readonly, string, undefined_, union } from 'valibot';\n\nconst credentialsSchema = pipe(\n intersect([\n union(\n [\n object({\n authorizationToken: string(),\n subscriptionKey: optional(undefined_('\"subscriptionKey\" must be unset when \"authorizationToken\" is set.'))\n }),\n object({\n authorizationToken: optional(undefined_('\"authorizationToken\" must be unset when \"subscriptionKey\" is set.')),\n subscriptionKey: string()\n })\n ],\n 'The object must either have either \"authorizationToken\" or \"subscriptionKey\" set, but not both.'\n ),\n union(\n [\n object({\n customVoiceHostname: optional(undefined_('\"customVoiceHostname\" must be unest when \"region\" is set.')),\n region: string(),\n speechRecognitionHostname: optional(\n undefined_('\"speechRecognitionHostname\" must be unest when \"region\" is set.')\n ),\n speechSynthesisHostname: optional(undefined_('\"speechSynthesisHostname\" must be unest when \"region\" is set.'))\n }),\n object({\n customVoiceHostname: optional(union([string(), undefined_()])),\n region: optional(undefined_('\"region\" must be unset when \"*Hostname\" is set.')),\n speechRecognitionHostname: string(),\n speechSynthesisHostname: string()\n })\n ],\n 'The object must either have either \"region\" or \"*Hostname\" set, but not both.'\n )\n ]),\n readonly()\n);\n\nexport default credentialsSchema;\n\nexport type Credentials = InferOutput<typeof credentialsSchema>;\n","import { boolean, type InferOutput, optional } from 'valibot';\n\nconst enableTelemetrySchema = optional(boolean());\n\nexport type EnableTelemetry = InferOutput<typeof enableTelemetrySchema>;\n\nexport default enableTelemetrySchema;\n","import { type InferOutput, maxValue, minValue, number, optional, pipe } from 'valibot';\n\n// 60_000 is an arbitrary value, we can set it to a larger number.\nconst initialSilenceTimeoutSchema = optional(pipe(number(), minValue(1), maxValue(60_000)));\n\nexport type InitialSilenceTimeout = InferOutput<typeof initialSilenceTimeoutSchema>;\n\nexport default initialSilenceTimeoutSchema;\n","import { type InferOutput, boolean, optional } from 'valibot';\n\nconst looseEventsSchema = optional(boolean(), false);\n\nexport type LooseEvents = InferOutput<typeof looseEventsSchema>;\n\nexport default looseEventsSchema;\n","import { array, type InferOutput, optional, pipe, string, transform } from 'valibot';\n\nconst referenceGrammarsSchema = pipe(\n optional(array(string()), []),\n // any(),\n // array(string()),\n // transform<string[], readonly string[]>(value => (Object.isFrozen(value) ? value : Object.freeze([...value])))\n transform<string[], readonly string[]>(value => (Object.isFrozen(value) ? value : Object.freeze([...value])))\n);\n\nexport type ReferenceGrammars = InferOutput<typeof referenceGrammarsSchema>;\n\nexport default referenceGrammarsSchema;\n","import { type InferOutput, optional, string } from 'valibot';\n\nconst speechRecognitionEndpointIdSchema = optional(string());\n\nexport type SpeechRecognitionEndpointId = InferOutput<typeof speechRecognitionEndpointIdSchema>;\n\nexport default speechRecognitionEndpointIdSchema;\n","import { type InferOutput, enum_, optional } from 'valibot';\n\nconst textNormalizationSchema = optional(\n enum_({\n display: 'display',\n itn: 'itn',\n lexical: 'lexical',\n maskeditn: 'maskeditn'\n }),\n 'display'\n);\n\nexport type TextNormalization = InferOutput<typeof textNormalizationSchema>;\n\nexport default textNormalizationSchema;\n","/* eslint class-methods-use-this: \"off\" */\n/* eslint complexity: [\"error\", 70] */\n/* eslint no-await-in-loop: \"off\" */\n/* eslint no-empty-function: \"off\" */\n/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 100, 150] }] */\n\nimport {\n type CancellationEventArgs,\n type RecognitionEventArgs,\n type SessionEventArgs,\n type SpeechRecognitionEventArgs,\n type SpeechRecognizer as SpeechRecognizerType\n} from 'microsoft-cognitiveservices-speech-sdk';\nimport { type AudioConfigImpl } from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/AudioConfig.js';\nimport { boolean, function_, parse, undefined_, union } from 'valibot';\nimport createPromiseQueue from '../../Util/createPromiseQueue';\nimport SpeechSDK from '../SpeechSDK';\nimport cognitiveServiceEventResultToWebSpeechRecognitionResult from './cognitiveServiceEventResultToWebSpeechRecognitionResult';\nimport cognitiveServicesAsyncToPromise from './cognitiveServicesAsyncToPromise';\nimport EventListenerMap from './private/EventListenerMap';\nimport prepareAudioConfig from './private/prepareAudioConfig';\nimport serializeRecognitionResult from './private/serializeRecognitionResult';\nimport SpeechGrammarList from './SpeechGrammarList';\nimport SpeechRecognitionErrorEvent from './SpeechRecognitionErrorEvent';\nimport SpeechRecognitionEvent from './SpeechRecognitionEvent';\nimport { type SpeechRecognitionEventListenerMap } from './SpeechRecognitionEventListenerMap';\nimport type SpeechRecognitionResult from './SpeechRecognitionResult';\nimport SpeechRecognitionResultList from './SpeechRecognitionResultList';\nimport referenceGrammarsSchema from './validation/referenceGrammarsSchema';\nimport textNormalizationSchema from './validation/textNormalizationSchema';\n\n// https://docs.microsoft.com/en-us/javascript/api/microsoft-cognitiveservices-speech-sdk/speechconfig?view=azure-node-latest#outputformat\n// {\n// \"RecognitionStatus\": \"Success\",\n// \"Offset\": 900000,\n// \"Duration\": 49000000,\n// \"NBest\": [\n// {\n// \"Confidence\": 0.738919,\n// \"Lexical\": \"second\",\n// \"ITN\": \"second\",\n// \"MaskedITN\": \"second\",\n// \"Display\": \"Second.\"\n// }\n// ]\n// }\n\n// {\n// \"RecognitionStatus\": \"InitialSilenceTimeout\",\n// \"Offset\": 50000000,\n// \"Duration\": 0\n// }\n\nconst { ResultReason, SpeechRecognizer } = SpeechSDK;\n\ntype CreateSpeechRecognitionPonyfillFromRecognizerInit = {\n createRecognizer: (lang: string) => Promise<SpeechRecognizerType>;\n enableTelemetry: boolean | undefined;\n looseEvents: boolean;\n referenceGrammars?: readonly string[] | undefined;\n textNormalization: 'display' | 'itn' | 'lexical' | 'maskeditn';\n};\n\nconst enableTelemetrySchema = union([boolean(), undefined_()]);\n\nexport default function createSpeechRecognitionPonyfillFromRecognizer({\n createRecognizer,\n enableTelemetry,\n looseEvents,\n referenceGrammars,\n textNormalization\n}: CreateSpeechRecognitionPonyfillFromRecognizerInit) {\n createRecognizer = parse(function_(), createRecognizer) as typeof createRecognizer;\n enableTelemetry = parse(enableTelemetrySchema, enableTelemetry);\n looseEvents = parse(boolean(), looseEvents);\n referenceGrammars = parse(referenceGrammarsSchema, referenceGrammars);\n textNormalization = parse(textNormalizationSchema, textNormalization);\n\n // If enableTelemetry is set to null or non-boolean, we will default to true.\n typeof enableTelemetry !== 'undefined' && SpeechRecognizer.enableTelemetry(enableTelemetry);\n\n class SpeechRecognition extends EventTarget {\n #continuous = false;\n #eventListenerMap: SpeechRecognitionEventListenerMap = new EventListenerMap(this);\n #grammars: SpeechGrammarList = new SpeechGrammarList();\n #interimResults = false;\n #lang =\n typeof window !== 'undefined'\n ? window.document.documentElement.getAttribute('lang') || window.navigator.language\n : 'en-US';\n // eslint-disable-next-line no-magic-numbers\n #maxAlternatives: number = 1;\n\n emitCognitiveServices<T extends { type: string }>(type: string, event: T) {\n this.dispatchEvent(\n new SpeechRecognitionEvent('cognitiveservices', {\n data: {\n ...event,\n type\n }\n })\n );\n }\n\n get continuous(): boolean {\n return this.#continuous;\n }\n\n set continuous(value: boolean) {\n this.#continuous = value;\n }\n\n get grammars(): SpeechGrammarList {\n return this.#grammars;\n }\n\n set grammars(value: SpeechGrammarList) {\n if (value instanceof SpeechGrammarList) {\n this.#grammars = value;\n } else {\n throw new Error(`The provided value is not of type 'SpeechGrammarList'`);\n }\n }\n\n get interimResults() {\n return this.#interimResults;\n }\n\n set interimResults(value) {\n this.#interimResults = value;\n }\n\n get maxAlternatives() {\n return this.#maxAlternatives;\n }\n\n set maxAlternatives(value) {\n this.#maxAlternatives = value;\n }\n\n get lang() {\n return this.#lang;\n }\n\n set lang(value) {\n this.#lang = value;\n }\n\n get onaudioend(): ((event: SpeechRecognitionEvent<'audioend'>) => void) | undefined {\n return this.#eventListenerMap.getProperty('audioend');\n }\n\n set onaudioend(value: ((event: SpeechRecognitionEvent<'audioend'>) => void) | undefined) {\n this.#eventListenerMap.setProperty('audioend', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'audiostart'>) => void) | undefined } */\n get onaudiostart() {\n return this.#eventListenerMap.getProperty('audiostart');\n }\n\n set onaudiostart(\n /** @type { ((event: SpeechRecognitionEvent<'audiostart'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('audiostart', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'cognitiveservices'>) => void) | undefined } */\n get oncognitiveservices() {\n return this.#eventListenerMap.getProperty('cognitiveservices');\n }\n\n set oncognitiveservices(\n /** @type { ((event: SpeechRecognitionEvent<'cognitiveservices'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('cognitiveservices', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'end'>) => void) | undefined } */\n get onend() {\n return this.#eventListenerMap.getProperty('end');\n }\n\n set onend(\n /** @type { ((event: SpeechRecognitionEvent<'end'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('end', value);\n }\n\n /** @type { ((event: SpeechRecognitionErrorEvent) => void) | undefined } */\n get onerror() {\n return this.#eventListenerMap.getProperty('error');\n }\n\n set onerror(\n /** @type { ((event: SpeechRecognitionErrorEvent) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('error', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'result'>) => void) | undefined } */\n get onresult() {\n return this.#eventListenerMap.getProperty('result');\n }\n\n set onresult(\n /** @type { ((event: SpeechRecognitionEvent<'result'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('result', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'soundend'>) => void) | undefined } */\n get onsoundend() {\n return this.#eventListenerMap.getProperty('soundend');\n }\n\n set onsoundend(\n /** @type { ((event: SpeechRecognitionEvent<'soundend'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('soundend', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'soundstart'>) => void) | undefined } */\n get onsoundstart() {\n return this.#eventListenerMap.getProperty('soundstart');\n }\n\n set onsoundstart(\n /** @type { ((event: SpeechRecognitionEvent<'soundstart'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('soundstart', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'speechend'>) => void) | undefined } */\n get onspeechend() {\n return this.#eventListenerMap.getProperty('speechend');\n }\n\n set onspeechend(\n /** @type { ((event: SpeechRecognitionEvent<'speechend'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('speechend', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'speechstart'>) => void) | undefined } */\n get onspeechstart() {\n return this.#eventListenerMap.getProperty('speechstart');\n }\n\n set onspeechstart(\n /** @type { ((event: SpeechRecognitionEvent<'speechstart'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('speechstart', value);\n }\n\n /** @type { ((event: SpeechRecognitionEvent<'start'>) => void) | undefined } */\n get onstart() {\n return this.#eventListenerMap.getProperty('start');\n }\n\n set onstart(\n /** @type { ((event: SpeechRecognitionEvent<'start'>) => void) | undefined } */\n value\n ) {\n this.#eventListenerMap.setProperty('start', value);\n }\n\n abort: (() => void) | undefined;\n stop: (() => void) | undefined;\n\n start() {\n this._startOnce().catch(err => {\n this.dispatchEvent(\n new SpeechRecognitionErrorEvent('error', { error: err, message: err && (err.stack || err.message) })\n );\n });\n }\n\n async _startOnce() {\n // TODO: [P2] Should check if recognition is active, we should not start recognition twice\n const recognizer = await createRecognizer(this.lang);\n\n const { pause, unprepare } = prepareAudioConfig(recognizer['audioConfig']);\n\n try {\n const queue = createPromiseQueue();\n let soundStarted;\n let speechStarted;\n let stopping;\n\n const { detach: detachAudioConfigEvent } = (recognizer['audioConfig'] as AudioConfigImpl).events.attach(\n event => {\n const { name } = event;\n\n if (name === 'AudioSourceReadyEvent') {\n queue.push({ audioSourceReady: {} });\n } else if (name === 'AudioSourceOffEvent') {\n queue.push({ audioSourceOff: {} });\n } else if (name === 'FirstAudibleChunk') {\n queue.push({ firstAudibleChunk: {} });\n }\n }\n );\n\n recognizer.canceled = (_, { errorDetails, offset, reason, sessionId }: CancellationEventArgs) => {\n queue.push({\n canceled: {\n errorDetails,\n offset,\n reason,\n sessionId\n }\n });\n };\n\n recognizer.recognized = (_, { offset, result, sessionId }: SpeechRecognitionEventArgs) => {\n queue.push({\n recognized: {\n offset,\n result: serializeRecognitionResult(result),\n sessionId\n }\n });\n };\n\n recognizer.recognizing = (_, { offset, result, sessionId }: SpeechRecognitionEventArgs) => {\n queue.push({\n recognizing: {\n offset,\n result: serializeRecognitionResult(result),\n sessionId\n }\n });\n };\n\n recognizer.sessionStarted = (_, { sessionId }: SessionEventArgs) => {\n queue.push({ sessionStarted: { sessionId } });\n };\n\n recognizer.sessionStopped = (_, { sessionId }: SessionEventArgs) => {\n // \"sessionStopped\" is never fired, probably because we are using startContinuousRecognitionAsync instead of recognizeOnceAsync.\n queue.push({ sessionStopped: { sessionId } });\n };\n\n recognizer.speechStartDetected = (_, { offset, sessionId }: RecognitionEventArgs) => {\n queue.push({ speechStartDetected: { offset, sessionId } });\n };\n\n recognizer.speechEndDetected = (_, { sessionId }: RecognitionEventArgs) => {\n // \"speechEndDetected\" is never fired, probably because we are using startContinuousRecognitionAsync instead of recognizeOnceAsync.\n // Update: \"speechEndDetected\" is fired for DLSpeech.listenOnceAsync()\n queue.push({ speechEndDetected: { sessionId } });\n };\n\n const { phrases } = this.grammars;\n\n // HACK: We are using the internal of SpeechRecognizer because they did not expose it\n const { dynamicGrammar } = recognizer['privReco'];\n\n referenceGrammars && referenceGrammars.length && dynamicGrammar.addReferenceGrammar([...referenceGrammars]);\n phrases && phrases.length && dynamicGrammar.addPhrase([...phrases]);\n\n await cognitiveServicesAsyncToPromise<void>(recognizer.startContinuousRecognitionAsync, recognizer)();\n\n if (typeof recognizer.stopContinuousRecognitionAsync === 'function') {\n this.abort = () => queue.push({ abort: {} });\n this.stop = () => queue.push({ stop: {} });\n } else {\n this.abort = this.stop = undefined;\n }\n\n let audioStarted;\n let finalEvent: SpeechRecognitionErrorEvent | SpeechRecognitionEvent<'result'> | undefined = undefined;\n let finalizedResults: readonly SpeechRecognitionResult[] = [];\n\n for (let loop = 0; !stopping || audioStarted; loop++) {\n const event = await queue.shift();\n const {\n abort,\n audioSourceOff,\n audioSourceReady,\n canceled,\n firstAudibleChunk,\n recognized,\n recognizing,\n stop\n } = event;\n\n // We are emitting event \"cognitiveservices\" for debugging purpose.\n Object.keys(event).forEach(name => this.emitCognitiveServices(name, event[name]));\n\n const errorMessage = canceled && canceled.errorDetails;\n\n if (/Permission\\sdenied/u.test(errorMessage || '')) {\n // If microphone is not allowed, we should not emit \"start\" event.\n\n finalEvent = new SpeechRecognitionErrorEvent('error', { error: 'not-allowed' });\n\n break;\n }\n\n if (!loop) {\n this.dispatchEvent(new SpeechRecognitionEvent('start'));\n }\n\n if (errorMessage) {\n if (/1006/u.test(errorMessage)) {\n if (!audioStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('audiostart'));\n this.dispatchEvent(new SpeechRecognitionEvent('audioend'));\n }\n\n finalEvent = new SpeechRecognitionErrorEvent('error', { error: 'network' });\n } else {\n finalEvent = new SpeechRecognitionErrorEvent('error', { error: 'unknown' });\n }\n\n break;\n } else if (abort || stop) {\n if (abort) {\n finalEvent = new SpeechRecognitionErrorEvent('error', { error: 'aborted' });\n\n // If we are aborting, we will ignore lingering recognizing/recognized events. But if we are stopping, we need them.\n stopping = 'abort';\n } else {\n // When we pause, we will send { isEnd: true }, Speech Services will send us \"recognized\" event.\n pause();\n stopping = 'stop';\n }\n\n // Abort should not be dispatched without support of \"stopContinuousRecognitionAsync\".\n // But for defensive purpose, we make sure \"stopContinuousRecognitionAsync\" is available before we can call.\n if (abort && recognizer.stopContinuousRecognitionAsync) {\n await cognitiveServicesAsyncToPromise<void>(recognizer.stopContinuousRecognitionAsync, recognizer)();\n }\n } else if (audioSourceReady) {\n this.dispatchEvent(new SpeechRecognitionEvent('audiostart'));\n\n audioStarted = true;\n } else if (firstAudibleChunk) {\n this.dispatchEvent(new SpeechRecognitionEvent('soundstart'));\n\n soundStarted = true;\n } else if (audioSourceOff) {\n // Looks like we don't need this line and all the tests are still working.\n // Guessing probably stopping is already truthy.\n // stopping = true;\n\n speechStarted && this.dispatchEvent(new SpeechRecognitionEvent('speechend'));\n soundStarted && this.dispatchEvent(new SpeechRecognitionEvent('soundend'));\n audioStarted && this.dispatchEvent(new SpeechRecognitionEvent('audioend'));\n\n audioStarted = soundStarted = speechStarted = false;\n\n break;\n } else if (stopping !== 'abort') {\n if (recognized && recognized.result && recognized.result.reason === ResultReason.NoMatch) {\n // Quirks: 2024-11-19 with Speech SDK 1.41.0\n // When microphone is muted, `reason` is `NoMatch` (0) in both interactive mode and continuous mode.\n // After receiving this \"recognized but no match\" event, both modes will continue to recognize speech with \"speechStartDetected\" and \"recognizing\" events.\n // That means, we need to end this manually in interactive mode, and continuous-but-stopping mode.\n if (!this.continuous || stopping === 'stop') {\n // Empty result will turn into \"no-speech\" later in the code.\n finalEvent = new SpeechRecognitionEvent('result', {\n results: new SpeechRecognitionResultList(finalizedResults)\n });\n\n // Quirks: 2024-11-19 with Speech SDK 1.14.0\n // Speech SDK did not stop after NoMatch even in interactive mode.\n recognizer.stopContinuousRecognitionAsync &&\n (await cognitiveServicesAsyncToPromise<void>(\n recognizer.stopContinuousRecognitionAsync,\n recognizer\n )());\n\n // Quirks: 2024-11-19 with Speech SDK 1.14.0\n // After calling stopContinuousRecognitionAsync, no \"audioSourceOff\" is fired.\n\n break;\n }\n } else if (recognized || recognizing) {\n if (!audioStarted) {\n // Unconfirmed prevention of quirks\n this.dispatchEvent(new SpeechRecognitionEvent('audiostart'));\n\n audioStarted = true;\n }\n\n if (!soundStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('soundstart'));\n\n soundStarted = true;\n }\n\n if (!speechStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('speechstart'));\n\n speechStarted = true;\n }\n\n if (recognized) {\n const result = cognitiveServiceEventResultToWebSpeechRecognitionResult(recognized.result, {\n maxAlternatives: this.maxAlternatives,\n textNormalization\n });\n\n const recognizable = !!result[0]?.transcript;\n\n if (recognizable) {\n finalizedResults = [...finalizedResults, result];\n\n this.continuous &&\n this.dispatchEvent(\n new SpeechRecognitionEvent('result', {\n results: new SpeechRecognitionResultList(finalizedResults)\n })\n );\n }\n\n // If it is continuous, we just sent the finalized results. So we don't need to send it again after \"audioend\" event.\n if (this.continuous && recognizable) {\n finalEvent = undefined;\n } else {\n finalEvent = new SpeechRecognitionEvent('result', {\n results: new SpeechRecognitionResultList(finalizedResults)\n });\n }\n\n // If it is interactive, stop after first recognition.\n // If it is continuous and it is stopping, stop it too.\n if ((!this.continuous || stopping === 'stop') && recognizer.stopContinuousRecognitionAsync) {\n await cognitiveServicesAsyncToPromise<void>(recognizer.stopContinuousRecognitionAsync, recognizer)();\n }\n\n // If event order can be loosened, we can send the recognized event as soon as we receive it.\n // 1. If it is not recognizable (no-speech), we should send an \"error\" event just before \"end\" event. We will not loosen \"error\" events.\n if (looseEvents && finalEvent && recognizable) {\n this.dispatchEvent(finalEvent);\n finalEvent = undefined;\n }\n } else if (recognizing) {\n this.interimResults &&\n this.dispatchEvent(\n new SpeechRecognitionEvent('result', {\n results: new SpeechRecognitionResultList([\n ...finalizedResults,\n cognitiveServiceEventResultToWebSpeechRecognitionResult(recognizing.result, {\n maxAlternatives: this.maxAlternatives,\n textNormalization\n })\n ])\n })\n );\n }\n }\n }\n }\n\n if (speechStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('speechend'));\n }\n\n if (soundStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('soundend'));\n }\n\n if (audioStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('audioend'));\n }\n\n if (finalEvent) {\n if (finalEvent.type === 'result' && !finalEvent.results.length) {\n finalEvent = new SpeechRecognitionErrorEvent('error', { error: 'no-speech' });\n }\n\n this.dispatchEvent(finalEvent);\n }\n\n // Even though there is no \"start\" event emitted, we will still emit \"end\" event\n // This is mainly for \"microphone blocked\" story.\n this.dispatchEvent(new SpeechRecognitionEvent('end'));\n\n detachAudioConfigEvent();\n } catch (err) {\n // Logging out the erorr because Speech SDK would fail silently.\n console.error(err);\n\n throw err;\n } finally {\n unprepare();\n recognizer['dispose'](false);\n }\n }\n }\n\n return {\n SpeechGrammarList,\n SpeechRecognition,\n SpeechRecognitionEvent\n };\n}\n","export default function pDefer() {\n\tconst deferred = {};\n\n\tdeferred.promise = new Promise((resolve, reject) => {\n\t\tdeferred.resolve = resolve;\n\t\tdeferred.reject = reject;\n\t});\n\n\treturn deferred;\n}\n","import createDeferred from 'p-defer';\n\nexport default function () {\n let shiftDeferred;\n const queue = [];\n\n const push = value => {\n if (shiftDeferred) {\n const { resolve } = shiftDeferred;\n\n shiftDeferred = null;\n resolve(value);\n } else {\n queue.push(value);\n }\n };\n\n const shift = () => {\n if (queue.length) {\n return Promise.resolve(queue.shift());\n }\n\n return (shiftDeferred || (shiftDeferred = createDeferred())).promise;\n };\n\n return {\n push,\n shift\n };\n}\n","export type SpeechRecognitionAlternativeInit = {\n confidence: number;\n transcript: string;\n};\n\nexport default class SpeechRecognitionAlternative {\n constructor({ confidence, transcript }: SpeechRecognitionAlternativeInit) {\n this.#confidence = confidence;\n this.#transcript = transcript;\n }\n\n #confidence: number;\n #transcript: string;\n\n get confidence() {\n return this.#confidence;\n }\n\n get transcript() {\n return this.#transcript;\n }\n}\n","interface FakeArrayInterface<T> {\n [index: number]: T | undefined;\n get length(): number;\n}\n\nexport default class FakeArray<T> implements FakeArrayInterface<T> {\n constructor(array: readonly T[]) {\n if (!array) {\n throw new Error('array must be set.');\n }\n\n this.#array = array;\n\n for (const key in array) {\n Object.defineProperty(this, key, {\n enumerable: true,\n get() {\n return array[key];\n }\n });\n }\n }\n\n #array: readonly T[];\n [index: number]: T | undefined;\n [Symbol.iterator]() {\n return this.#array[Symbol.iterator]();\n }\n\n get length(): number {\n return this.#array.length;\n }\n}\n","import FakeArray from './private/FakeArray';\n\nexport type SpeechRecognitionResultInit = {\n isFinal: boolean;\n results: readonly SpeechRecognitionAlternative[];\n};\n\nexport default class SpeechRecognitionResult extends FakeArray<SpeechRecognitionAlternative> {\n constructor(init: SpeechRecognitionResultInit) {\n super(init.results);\n\n this.#isFinal = init.isFinal;\n }\n\n #isFinal: boolean;\n\n get isFinal(): boolean {\n return this.#isFinal;\n }\n}\n","import SpeechSDK from '../SpeechSDK';\n\nimport SpeechRecognitionAlternative from './SpeechRecognitionAlternative';\nimport SpeechRecognitionResult from './SpeechRecognitionResult';\nimport type { SerializedRecognitionResult } from './private/serializeRecognitionResult';\n\nconst {\n ResultReason: { RecognizingSpeech, RecognizedSpeech }\n} = SpeechSDK;\n\nexport default function (\n result: SerializedRecognitionResult,\n init?:\n | {\n maxAlternatives: number;\n textNormalization: 'display' | 'itn' | 'lexical' | 'maskeditn';\n }\n | undefined\n): SpeechRecognitionResult {\n const { maxAlternatives = Infinity, textNormalization = 'display' } = init || {};\n const json: {\n NBest: readonly {\n Confidence: number;\n Display: string;\n ITN: string;\n Lexical: string;\n MaskedITN: string;\n }[];\n } = typeof result.json === 'string' ? JSON.parse(result.json) : result.json;\n\n if (result.reason === RecognizingSpeech || (result.reason === RecognizedSpeech && !json.NBest)) {\n return new SpeechRecognitionResult({\n isFinal: result.reason === RecognizedSpeech,\n results: [\n new SpeechRecognitionAlternative({\n confidence: 0.5,\n transcript: result.text\n })\n ]\n });\n } else if (result.reason === RecognizedSpeech) {\n return new SpeechRecognitionResult({\n isFinal: true,\n results: (json.NBest || []).slice(0, maxAlternatives).map(\n ({ Confidence: confidence, Display: display, ITN: itn, Lexical: lexical, MaskedITN: maskedITN }) =>\n new SpeechRecognitionAlternative({\n confidence,\n transcript:\n textNormalization === 'itn'\n ? itn\n : textNormalization === 'lexical'\n ? lexical\n : textNormalization === 'maskeditn'\n ? maskedITN\n : display\n })\n )\n });\n }\n\n return new SpeechRecognitionResult({ isFinal: false, results: [] });\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport default function cognitiveServicesAsyncToPromise<\n R,\n T extends (resolve: (returnValue: R) => void, reject: (error: unknown) => void) => void = (\n resolve: (returnValue: R) => void,\n reject: (error: unknown) => void\n ) => void\n>(fn: T, context?: undefined | unknown): () => Promise<R>;\n\nexport default function cognitiveServicesAsyncToPromise<\n R,\n P0 = any,\n T extends (arg0: P0, resolve: (returnValue: R) => void, reject: (error: unknown) => void) => void = (\n arg0: P0,\n resolve: (returnValue: R) => void,\n reject: (error: unknown) => void\n ) => void\n>(fn: T, context?: undefined | unknown): (arg0: P0) => Promise<R>;\n\nexport default function cognitiveServicesAsyncToPromise<\n R,\n P0 = any,\n P1 = any,\n T extends (arg0: P0, arg1: P1, resolve: (returnValue: R) => void, reject: (error: unknown) => void) => void = (\n arg0: P0,\n arg1: P1,\n resolve: (returnValue: R) => void,\n reject: (error: unknown) => void\n ) => void\n>(fn: T, context?: undefined | unknown): (arg0: P0, arg1: P1) => Promise<R>;\n\nexport default function cognitiveServicesAsyncToPromise<\n R,\n P0 = any,\n P1 = any,\n P2 = any,\n T extends (\n arg0: P0,\n arg1: P1,\n arg2: P2,\n resolve: (returnValue: R) => void,\n reject: (error: unknown) => void\n ) => void = (\n arg0: P0,\n arg1: P1,\n arg2: P2,\n resolve: (returnValue: R) => void,\n reject: (error: unknown) => void\n ) => void\n>(fn: T, context?: undefined | unknown): (arg0: P0, arg1: P1, arg2: P2) => Promise<R>;\n\nexport default function cognitiveServicesAsyncToPromise<\n R,\n P0 = any,\n P1 = any,\n P2 = any,\n P3 = any,\n T extends (\n arg0: P0,\n arg1: P1,\n arg2: P2,\n arg3: P3,\n resolve: (returnValue: R) => void,\n reject: (error: unknown) => void\n ) => void = (\n arg0: P0,\n arg1: P1,\n arg2: P2,\n arg3: P3,\n resolve: (returnValue: R) => void,\n reject: (error: unknown) => void\n ) => void\n>(fn: T, context?: undefined | unknown): (arg0: P0, arg1: P1, arg2: P2, arg3: P3) => Promise<R>;\n\nexport default function cognitiveServicesAsyncToPromise<\n R,\n T extends (...args: any[]) => void = (...args: any[]) => void\n>(fn: T, context: undefined | unknown = undefined): (...args: Parameters<T>) => Promise<R> {\n return (...args: Parameters<T>) =>\n // eslint-disable-next-line prefer-spread\n new Promise<R>((resolve, reject) => fn.apply(context, [...args, resolve, reject] as unknown as Parameters<T>));\n}\n","type EventListener<T> = (event: T) => void;\n\nexport default class EventListenerMap<T extends string, EventMap extends { [Name in T]: unknown }> {\n constructor(eventTarget: EventTarget) {\n this.#eventTarget = eventTarget;\n this.#propertyMap = {};\n }\n\n #eventTarget: EventTarget;\n #propertyMap: { [Name in keyof EventMap]?: EventListener<EventMap[Name]> | undefined };\n\n getProperty<U extends T>(name: U): ((event: EventMap[U]) => void) | undefined {\n return this.#propertyMap[name];\n }\n\n setProperty<U extends T>(name: U, value: ((event: EventMap[U]) => void) | undefined) {\n const existing = this.#propertyMap[name];\n\n existing && this.#eventTarget.removeEventListener(name, existing as EventListener<Event>);\n\n if (value) {\n this.#eventTarget.addEventListener(name, value as EventListener<Event>);\n }\n\n this.#propertyMap[name] = value;\n }\n}\n","import { AudioSourceEvent } from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/AudioSourceEvents.js';\nimport {\n type AudioConfig,\n type AudioConfigImpl\n} from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/AudioConfig.js';\nimport averageAmplitude from './averageAmplitude';\n\nexport default function prepareAudioConfig(audioConfig: AudioConfig) {\n // Speech SDK also force cast AudioConfig to AudioConfigImpl and pass it to ServiceRecognizerBase to use attach() and other methods.\n // https://github.com/microsoft/cognitive-services-speech-sdk-js/blob/a6e9d2a202534565ccc97650861a6b296de48ecf/src/sdk/SpeechRecognizer.ts#L291C27-L291C43\n const audioConfigImpl = audioConfig as AudioConfigImpl;\n const originalAttach = audioConfigImpl.attach;\n const boundOriginalAttach = audioConfigImpl.attach.bind(audioConfigImpl);\n let firstChunk = false;\n let muted = false;\n\n // We modify \"attach\" function and detect when audible chunk is read.\n // We will only modify \"attach\" function once.\n audioConfigImpl.attach = async () => {\n const reader = await boundOriginalAttach('');\n\n return {\n ...reader,\n read: async () => {\n const chunk = await reader.read();\n\n // The magic number 150 is measured by:\n // 1. Set microphone volume to 0\n // 2. Observe the amplitude (100-110) for the first few chunks\n // (There is a short static caught when turning on the microphone)\n // 3. Set the number a bit higher than the observation\n if (!firstChunk && averageAmplitude(chunk.buffer) > 150) {\n audioConfigImpl.events.onEvent(new AudioSourceEvent('FirstAudibleChunk', ''));\n firstChunk = true;\n }\n\n if (muted) {\n return { buffer: new ArrayBuffer(0), isEnd: true, timeReceived: Date.now() };\n }\n\n return chunk;\n }\n };\n };\n\n return {\n audioConfig,\n pause: () => {\n muted = true;\n },\n unprepare: () => {\n audioConfigImpl.attach = originalAttach;\n }\n };\n}\n","export default function averageAmplitude(arrayBuffer: ArrayBuffer): number {\n const array = Array.from(new Int16Array(arrayBuffer));\n\n return array.reduce((averageAmplitude, amplitude) => averageAmplitude + Math.abs(amplitude), 0) / array.length;\n}\n","import { type SpeechRecognitionResult } from 'microsoft-cognitiveservices-speech-sdk';\n\nexport type SerializedRecognitionResult = Readonly<{\n duration: number;\n errorDetails: string;\n json: unknown;\n offset: number;\n properties: unknown;\n reason: number;\n resultId: string;\n text: string;\n}>;\n\nexport default function serializeRecognitionResult({\n duration,\n errorDetails,\n json,\n offset,\n properties,\n reason,\n resultId,\n text\n}: SpeechRecognitionResult): SerializedRecognitionResult {\n return Object.freeze({\n duration,\n errorDetails,\n json: json && JSON.parse(json),\n offset,\n properties,\n reason,\n resultId,\n text\n });\n}\n","interface W3CSpeechGrammar {\n src: string;\n weight: number;\n}\n\ninterface W3CSpeechGrammarList {\n readonly length: number;\n addFromString(string: string, weight?: number): void;\n addFromURI(src: string, weight?: number): void;\n item(index: number): W3CSpeechGrammar;\n [index: number]: W3CSpeechGrammar;\n}\n\n/* eslint class-methods-use-this: \"off\" */\n\nexport default class SpeechGrammarList implements W3CSpeechGrammarList {\n constructor() {\n this.#phrases = [];\n }\n\n addFromString() {\n throw new Error('JSGF is not supported');\n }\n\n addFromURI() {\n throw new Error('JSGF is not supported');\n }\n\n item(): W3CSpeechGrammar {\n throw new Error('JSGF is not supported');\n }\n\n get length(): number {\n throw new Error('JSGF is not supported');\n }\n\n [index: number]: { src: string; weight: number };\n\n #phrases: readonly string[];\n\n get phrases(): readonly string[] {\n return this.#phrases;\n }\n\n set phrases(value: readonly string[]) {\n if (Array.isArray(value)) {\n this.#phrases = Object.freeze([...value]);\n } else if (typeof value === 'string') {\n this.#phrases = Object.freeze([value]);\n } else {\n throw new Error(`The provided value is not an array or of type 'string'`);\n }\n }\n}\n","export type SpeechRecognitionErrorType =\n | 'aborted'\n | 'audio-capture'\n | 'bad-grammar'\n | 'language-not-supported'\n | 'network'\n | 'no-speech'\n | 'not-allowed'\n | 'service-not-allowed'\n | 'unknown';\n\nexport type SpeechRecognitionErrorEventInit = {\n error: SpeechRecognitionErrorType;\n message?: string | undefined;\n};\n\nexport default class SpeechRecognitionErrorEvent extends Event {\n constructor(type: 'error', { error, message }: SpeechRecognitionErrorEventInit) {\n super(type);\n\n this.#error = error;\n this.#message = message;\n }\n\n #error: SpeechRecognitionErrorType;\n #message: string | undefined;\n\n get error(): SpeechRecognitionErrorType {\n return this.#error;\n }\n\n get message(): string | undefined {\n return this.#message;\n }\n\n override get type(): 'error' {\n return 'error';\n }\n}\n","import FakeArray from './private/FakeArray';\nimport type SpeechRecognitionResult from './SpeechRecognitionResult';\n\nexport default class SpeechRecognitionResultList extends FakeArray<SpeechRecognitionResult> {\n constructor(result: readonly SpeechRecognitionResult[]) {\n super(result);\n }\n}\n","import SpeechRecognitionResultList from './SpeechRecognitionResultList';\n\nexport type SpeechRecognitionEventInit = {\n data?: undefined | unknown;\n resultIndex?: number | undefined;\n results?: SpeechRecognitionResultList | undefined;\n};\n\nexport default class SpeechRecognitionEvent<\n T extends\n | 'audioend'\n | 'audiostart'\n | 'cognitiveservices'\n | 'end'\n | 'result'\n | 'soundend'\n | 'soundstart'\n | 'speechend'\n | 'speechstart'\n | 'start'\n> extends Event {\n constructor(type: 'cognitiveservices', init: SpeechRecognitionEventInit & { data: { type: string } });\n constructor(type: 'audioend');\n constructor(type: 'audiostart');\n constructor(type: 'end');\n constructor(type: 'result', init: SpeechRecognitionEventInit);\n constructor(type: 'soundend');\n constructor(type: 'soundstart');\n constructor(type: 'speechend');\n constructor(type: 'speechstart');\n constructor(type: 'start');\n\n constructor(type: T, { data, resultIndex, results }: SpeechRecognitionEventInit = {}) {\n super(type);\n\n this.#data = data;\n this.#resultIndex = resultIndex;\n this.#results = results || new SpeechRecognitionResultList([]);\n }\n\n #data: undefined | unknown;\n // TODO: \"resultIndex\" should be set.\n #resultIndex: number | undefined;\n #results: SpeechRecognitionResultList;\n\n get data(): unknown {\n return this.#data;\n }\n\n get resultIndex(): number | undefined {\n return this.#resultIndex;\n }\n\n get results(): SpeechRecognitionResultList {\n return this.#results;\n }\n\n override get type(): T {\n return super.type as T;\n }\n}\n","/* eslint class-methods-use-this: 0 */\n\nimport { EventTarget, getEventAttributeValue, setEventAttributeValue } from 'event-target-shim';\nimport { onErrorResumeNext } from 'on-error-resume-next/async';\nimport createDeferred from 'p-defer';\n\nimport patchOptions from '../patchOptions';\nimport AudioContextQueue from './AudioContextQueue';\nimport SpeechSynthesisEvent from './SpeechSynthesisEvent';\nimport SpeechSynthesisUtterance from './SpeechSynthesisUtterance';\nimport fetchCustomVoices from './fetchCustomVoices';\nimport fetchVoices from './fetchVoices';\n\n// Supported output format can be found at https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/rest-text-to-speech#audio-outputs\nconst DEFAULT_OUTPUT_FORMAT = 'audio-24khz-160kbitrate-mono-mp3';\nconst EMPTY_ARRAY = [];\n\nexport default options => {\n const {\n audioContext,\n fetchCredentials,\n ponyfill = {\n AudioContext: window.AudioContext || window.webkitAudioContext\n },\n speechSynthesisDeploymentId,\n speechSynthesisOutputFormat = DEFAULT_OUTPUT_FORMAT\n } = patchOptions(options);\n\n if (!audioContext && !ponyfill.AudioContext) {\n console.warn(\n 'web-speech-cognitive-services: This browser does not support Web Audio and it will not work with Cognitive Services Speech Services.'\n );\n\n return {};\n }\n\n class SpeechSynthesis extends EventTarget {\n constructor() {\n super();\n\n this.queue = new AudioContextQueue({ audioContext, ponyfill });\n\n this.updateVoices();\n }\n\n cancel() {\n this.queue.stop();\n }\n\n getVoices() {\n return EMPTY_ARRAY;\n }\n\n get onvoiceschanged() {\n return getEventAttributeValue(this, 'voiceschanged');\n }\n\n set onvoiceschanged(value) {\n setEventAttributeValue(this, 'voiceschanged', value);\n }\n\n pause() {\n this.queue.pause();\n }\n\n resume() {\n this.queue.resume();\n }\n\n speak(utterance) {\n if (!(utterance instanceof SpeechSynthesisUtterance)) {\n throw new Error('invalid utterance');\n }\n\n const { reject, resolve, promise } = createDeferred();\n const handleError = ({ error: errorCode, message }) => {\n const error = new Error(errorCode);\n\n error.stack = message;\n\n reject(error);\n };\n\n utterance.addEventListener('end', resolve);\n utterance.addEventListener('error', handleError);\n\n utterance.preload({\n deploymentId: speechSynthesisDeploymentId,\n fetchCredentials,\n outputFormat: speechSynthesisOutputFormat\n });\n\n this.queue.push(utterance);\n\n return promise.finally(() => {\n utterance.removeEventListener('end', resolve);\n utterance.removeEventListener('error', handleError);\n });\n }\n\n get speaking() {\n return this.queue.speaking;\n }\n\n async updateVoices() {\n const { customVoiceHostname, region, speechSynthesisHostname, subscriptionKey } = await fetchCredentials();\n\n if (speechSynthesisDeploymentId) {\n if (subscriptionKey) {\n console.warn(\n 'web-speech-cognitive-services: Listing of custom voice models are only available when using subscription key.'\n );\n\n await onErrorResumeNext(async () => {\n const voices = await fetchCustomVoices({\n customVoiceHostname,\n deploymentId: speechSynthesisDeploymentId,\n region,\n speechSynthesisHostname,\n subscriptionKey\n });\n\n this.getVoices = () => voices;\n });\n }\n } else {\n // If fetch voice list failed, we will not emit \"voiceschanged\" event.\n // In the spec, there is no \"error\" event.\n\n await onErrorResumeNext(async () => {\n const voices = await fetchVoices(await fetchCredentials());\n\n this.getVoices = () => voices;\n });\n }\n\n this.dispatchEvent(new SpeechSynthesisEvent('voiceschanged'));\n }\n }\n\n return {\n speechSynthesis: new SpeechSynthesis(),\n SpeechSynthesisEvent,\n SpeechSynthesisUtterance\n };\n};\n","/* eslint no-await-in-loop: \"off\" */\n\nimport memoize from 'memoize-one';\n\nimport AudioContextConsumer from './AudioContextConsumer';\n\nexport default class {\n constructor({ audioContext, ponyfill }) {\n this.consumer = null;\n this.paused = false;\n this.queue = [];\n\n this.getAudioContext = memoize(() => audioContext || new ponyfill.AudioContext());\n }\n\n pause() {\n this.paused = true;\n this.consumer && this.consumer.pause();\n }\n\n push(utterance) {\n this.queue.push(utterance);\n this.startConsumer();\n }\n\n resume() {\n this.paused = false;\n\n if (this.consumer) {\n this.consumer.resume();\n } else {\n this.startConsumer();\n }\n }\n\n get speaking() {\n return !!this.consumer;\n }\n\n async startConsumer() {\n while (!this.paused && this.queue.length && !this.consumer) {\n this.consumer = new AudioContextConsumer(this.getAudioContext());\n\n await this.consumer.start(this.queue);\n\n this.consumer = null;\n }\n }\n\n stop() {\n this.queue.splice(0);\n this.consumer && this.consumer.stop();\n }\n}\n","/* eslint no-await-in-loop: \"off\" */\n\nexport default class {\n constructor(audioContext) {\n this.audioContext = audioContext;\n }\n\n pause() {\n this.audioContext && this.audioContext.suspend();\n this.playingUtterance && this.playingUtterance.dispatchEvent(new CustomEvent('pause'));\n }\n\n resume() {\n this.audioContext && this.audioContext.resume();\n this.playingUtterance && this.playingUtterance.dispatchEvent(new CustomEvent('resume'));\n }\n\n async start(queue) {\n let utterance;\n\n while ((utterance = queue.shift())) {\n this.playingUtterance = utterance;\n\n await utterance.play(this.audioContext);\n\n this.playingUtterance = null;\n }\n }\n\n stop() {\n this.playingUtterance && this.playingUtterance.stop();\n\n if (this.audioContext.state === 'suspended') {\n // Play -> Pause -> Cancel (stop)\n // This would generate these events: \"start\", \"pause\", \"end\"\n\n // Without this code, the \"end\" event will not emit until resume() is called\n // Cancelling an unstarted utterance will not emit any \"start\" or \"end\" event\n this.audioContext.resume();\n }\n }\n}\n","import { Event } from 'event-target-shim';\n\nexport default class SpeechSynthesisEvent extends Event {\n constructor(type) {\n super(type);\n }\n}\n","/* eslint no-empty: [\"error\", { \"allowEmptyCatch\": true }] */\n\nimport { EventAsPromise } from 'event-as-promise';\nimport { EventTarget, getEventAttributeValue, setEventAttributeValue } from 'event-target-shim';\n\nimport fetchSpeechData from './fetchSpeechData';\nimport SpeechSynthesisEvent from './SpeechSynthesisEvent';\nimport subscribeEvent from './subscribeEvent';\n\nfunction asyncDecodeAudioData(audioContext, arrayBuffer) {\n return new Promise((resolve, reject) => {\n const promise = audioContext.decodeAudioData(arrayBuffer, resolve, reject);\n\n // Newer implementation of \"decodeAudioData\" will return a Promise\n promise && typeof promise.then === 'function' && resolve(promise);\n });\n}\n\nfunction playDecoded(audioContext, audioBuffer, source) {\n return new Promise((resolve, reject) => {\n const audioContextClosed = new EventAsPromise();\n const sourceEnded = new EventAsPromise();\n const unsubscribe = subscribeEvent(\n audioContext,\n 'statechange',\n ({ target: { state } }) => state === 'closed' && audioContextClosed.eventListener()\n );\n\n try {\n source.buffer = audioBuffer;\n // \"ended\" may not fire if the underlying AudioContext is closed prematurely\n source.onended = sourceEnded.eventListener;\n\n source.connect(audioContext.destination);\n source.start(0);\n\n Promise.race([audioContextClosed.upcoming(), sourceEnded.upcoming()]).then(resolve);\n } catch (err) {\n reject(err);\n } finally {\n unsubscribe();\n }\n });\n}\n\nclass SpeechSynthesisUtterance extends EventTarget {\n constructor(text) {\n super();\n\n this._lang = null;\n this._pitch = 1;\n this._rate = 1;\n this._voice = null;\n this._volume = 1;\n\n this.text = text;\n\n this.onboundary = null;\n this.onend = null;\n this.onerror = null;\n this.onmark = null;\n this.onpause = null;\n this.onresume = null;\n this.onstart = null;\n }\n\n get lang() {\n return this._lang;\n }\n\n set lang(value) {\n this._lang = value;\n }\n\n get onboundary() {\n return getEventAttributeValue(this, 'boundary');\n }\n\n set onboundary(value) {\n setEventAttributeValue(this, 'boundary', value);\n }\n\n get onend() {\n return getEventAttributeValue(this, 'end');\n }\n\n set onend(value) {\n setEventAttributeValue(this, 'end', value);\n }\n\n get onerror() {\n return getEventAttributeValue(this, 'error');\n }\n\n set onerror(value) {\n setEventAttributeValue(this, 'error', value);\n }\n\n get onmark() {\n return getEventAttributeValue(this, 'mark');\n }\n\n set onmark(value) {\n setEventAttributeValue(this, 'mark', value);\n }\n\n get onpause() {\n return getEventAttributeValue(this, 'pause');\n }\n\n set onpause(value) {\n setEventAttributeValue(this, 'pause', value);\n }\n\n get onresume() {\n return getEventAttributeValue(this, 'resume');\n }\n\n set onresume(value) {\n setEventAttributeValue(this, 'resume', value);\n }\n\n get onstart() {\n return getEventAttributeValue(this, 'start');\n }\n\n set onstart(value) {\n setEventAttributeValue(this, 'start', value);\n }\n\n get pitch() {\n return this._pitch;\n }\n\n set pitch(value) {\n this._pitch = value;\n }\n\n get rate() {\n return this._rate;\n }\n\n set rate(value) {\n this._rate = value;\n }\n\n get voice() {\n return this._voice;\n }\n\n set voice(value) {\n this._voice = value;\n }\n\n get volume() {\n return this._volume;\n }\n\n set volume(value) {\n this._volume = value;\n }\n\n preload({ deploymentId, fetchCredentials, outputFormat }) {\n this.arrayBufferPromise = fetchSpeechData({\n fetchCredentials,\n deploymentId,\n lang: this.lang || window.navigator.language,\n outputFormat,\n pitch: this.pitch,\n rate: this.rate,\n text: this.text,\n voice: this.voice && this.voice.voiceURI,\n volume: this.volume\n });\n\n // We need to call \"catch\" to make sure the Promise is running.\n // We will ignore the reject result and handled in play() later.\n this.arrayBufferPromise.catch();\n }\n\n async play(audioContext) {\n try {\n // We should emit \"start\" event even if preload() failed.\n this.dispatchEvent(new SpeechSynthesisEvent('start'));\n\n // HACK: iOS requires bufferSourceNode to be constructed before decoding data.\n const source = audioContext.createBufferSource();\n const audioBuffer = await asyncDecodeAudioData(audioContext, await this.arrayBufferPromise);\n\n this._playingSource = source;\n\n await playDecoded(audioContext, audioBuffer, source);\n\n this._playingSource = null;\n this.dispatchEvent(new SpeechSynthesisEvent('end'));\n } catch (error) {\n // \"message\" is not in spec but to provide a friendly message.\n this.dispatchEvent(new ErrorEvent('error', { error: 'synthesis-failed', message: error.stack }));\n }\n }\n\n stop() {\n this._playingSource && this._playingSource.stop();\n }\n}\n\nexport default SpeechSynthesisUtterance;\n","import { decode } from 'base64-arraybuffer';\nimport buildSSML from './buildSSML';\nimport isSSML from './isSSML';\n\nconst DEFAULT_LANGUAGE = 'en-US';\nconst DEFAULT_OUTPUT_FORMAT = 'riff-16khz-16bit-mono-pcm';\nconst DEFAULT_VOICE = 'Microsoft Server Speech Text to Speech Voice (en-US, AriaNeural)';\nconst EMPTY_MP3_BASE64 =\n 'SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU3LjU2LjEwMQAAAAAAAAAAAAAA//tAwAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAACAAABhgC7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7//////////////////////////////////////////////////////////////////8AAAAATGF2YzU3LjY0AAAAAAAAAAAAAAAAJAUHAAAAAAAAAYYoRBqpAAAAAAD/+xDEAAPAAAGkAAAAIAAANIAAAARMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7EMQpg8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV';\n\nexport default async function ({\n deploymentId,\n fetchCredentials,\n lang = DEFAULT_LANGUAGE,\n outputFormat = DEFAULT_OUTPUT_FORMAT,\n pitch,\n rate,\n text,\n voice = DEFAULT_VOICE,\n volume\n}) {\n if (!text) {\n // If text is empty, play a short audio clip. This allows developers to easily prime the AudioContext object by playing an empty string.\n return decode(EMPTY_MP3_BASE64);\n }\n\n const { authorizationToken, region, speechSynthesisHostname, subscriptionKey } = await fetchCredentials();\n\n if ((authorizationToken && subscriptionKey) || (!authorizationToken && !subscriptionKey)) {\n throw new Error('Only \"authorizationToken\" or \"subscriptionKey\" should be set.');\n } else if ((region && speechSynthesisHostname) || (!region && !speechSynthesisHostname)) {\n throw new Error('Only \"region\" or \"speechSynthesisHostnamename\" should be set.');\n }\n\n const ssml = isSSML(text) ? text : buildSSML({ lang, pitch, rate, text, voice, volume });\n\n // Although calling encodeURI on hostname does not actually works, it fails faster and safer.\n const hostname =\n speechSynthesisHostname ||\n (deploymentId\n ? `${encodeURI(region)}.voice.speech.microsoft.com`\n : `${encodeURI(region)}.tts.speech.microsoft.com`);\n const search = deploymentId ? `?deploymentId=${encodeURI(deploymentId)}` : '';\n const url = `https://${hostname}/cognitiveservices/v1${search}`;\n\n const res = await fetch(url, {\n headers: {\n 'Content-Type': 'application/ssml+xml',\n 'X-Microsoft-OutputFormat': outputFormat,\n ...(authorizationToken\n ? {\n Authorization: `Bearer ${authorizationToken}`\n }\n : {\n 'Ocp-Apim-Subscription-Key': subscriptionKey\n })\n },\n method: 'POST',\n body: ssml\n });\n\n if (!res.ok) {\n throw new Error(`web-speech-cognitive-services: Failed to syntheis speech, server returned ${res.status}`);\n }\n\n return res.arrayBuffer();\n}\n","/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 1, 100] }] */\n\n// Cognitive Services does not support unsigned percentage\n// It must be converted into +/- first.\nfunction relativePercentage(value) {\n let relative = Math.round((value - 1) * 100);\n\n if (relative >= 0) {\n relative = '+' + relative;\n }\n\n return relative + '%';\n}\n\nexport default function buildSSML({ lang, pitch = 1, rate = 1, text, voice, volume }) {\n return `<speak version=\"1.0\" xml:lang=\"${lang}\">\n <voice xml:lang=\"${lang}\" name=\"${voice}\">\n <prosody pitch=\"${relativePercentage(pitch)}\" rate=\"${relativePercentage(rate)}\" volume=\"${relativePercentage(\n volume\n )}\">\n ${text}\n </prosody>\n </voice>\n</speak>`;\n}\n","const SPEAK_TAG_PATTERN = /^\\s*<speak(\\s|\\/?>)/u;\nconst XML_PROLOG_PATTERN = /^\\s*<\\?xml\\s/u;\n\nexport default function isSSML(text) {\n return SPEAK_TAG_PATTERN.test(text) || XML_PROLOG_PATTERN.test(text);\n}\n","export default function subscribeEvent(target, name, handler) {\n target.addEventListener(name, handler);\n\n return () => target.removeEventListener(name, handler);\n}\n","export default class {\n constructor({ gender, lang, voiceURI }) {\n this._default = false;\n this._gender = gender;\n this._lang = lang;\n this._localService = false;\n this._name = voiceURI;\n this._voiceURI = voiceURI;\n }\n\n get default() {\n return this._default;\n }\n\n get gender() {\n return this._gender;\n }\n\n get lang() {\n return this._lang;\n }\n\n get localService() {\n return this._localService;\n }\n\n get name() {\n return this._name;\n }\n\n get voiceURI() {\n return this._voiceURI;\n }\n}\n","/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 1, -1] }] */\n\nimport SpeechSynthesisVoice from './SpeechSynthesisVoice';\n\nasync function fetchCustomVoices({ customVoiceHostname, deploymentId, region, subscriptionKey }) {\n const hostname = customVoiceHostname || `${region}.customvoice.api.speech.microsoft.com`;\n\n // Although encodeURI on a hostname doesn't work as expected for hostname, at least, it will fail peacefully.\n const res = await fetch(\n `https://${encodeURI(hostname)}/api/texttospeech/v2.0/endpoints/${encodeURIComponent(deploymentId)}`,\n {\n headers: {\n accept: 'application/json',\n 'ocp-apim-subscription-key': subscriptionKey\n }\n }\n );\n\n if (!res.ok) {\n throw new Error('Failed to fetch custom voices');\n }\n\n return res.json();\n}\n\nexport default async function ({ customVoiceHostname, deploymentId, region, subscriptionKey }) {\n const { models } = await fetchCustomVoices({ customVoiceHostname, deploymentId, region, subscriptionKey });\n\n return models\n .map(\n ({ properties: { Gender: gender }, locale: lang, name: voiceURI }) =>\n new SpeechSynthesisVoice({ gender, lang, voiceURI })\n )\n .sort(({ name: x }, { name: y }) => (x > y ? 1 : x < y ? -1 : 0));\n}\n","/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 1, -1] }] */\n\nimport SpeechSynthesisVoice from './SpeechSynthesisVoice';\n\nexport default async function fetchVoices({ authorizationToken, region, speechSynthesisHostname, subscriptionKey }) {\n // Although encodeURI on a hostname doesn't work as expected for hostname, at least, it will fail peacefully.\n const hostname = speechSynthesisHostname || `${encodeURI(region)}.tts.speech.microsoft.com`;\n const res = await fetch(`https://${hostname}/cognitiveservices/voices/list`, {\n headers: {\n 'content-type': 'application/json',\n ...(authorizationToken\n ? {\n authorization: `Bearer ${authorizationToken}`\n }\n : {\n 'Ocp-Apim-Subscription-Key': subscriptionKey\n })\n }\n });\n\n if (!res.ok) {\n throw new Error('Failed to fetch voices');\n }\n\n const voices = await res.json();\n\n return voices\n .map(({ Gender: gender, Locale: lang, Name: voiceURI }) => new SpeechSynthesisVoice({ gender, lang, voiceURI }))\n .sort(({ name: x }, { name: y }) => (x > y ? 1 : x < y ? -1 : 0));\n}\n","import createSpeechSynthesisPonyfill from './TextToSpeech/createSpeechSynthesisPonyfill';\n\nexport default createSpeechSynthesisPonyfill;\n","const TOKEN_URL_TEMPLATE = 'https://{region}.api.cognitive.microsoft.com/sts/v1.0/issueToken';\n\ntype FetchAuthorizationTokenInit = {\n region: string;\n subscriptionKey: string;\n};\n\nexport default async function fetchAuthorizationToken({\n region,\n subscriptionKey\n}: FetchAuthorizationTokenInit): Promise<string> {\n const res = await fetch(TOKEN_URL_TEMPLATE.replace(/\\{region\\}/u, region), {\n headers: {\n 'Ocp-Apim-Subscription-Key': subscriptionKey\n },\n method: 'POST'\n });\n\n if (!res.ok) {\n throw new Error(`Failed to fetch authorization token, server returned ${res.status}`);\n }\n\n return res.text();\n}\n","/* global process */\n\nimport {\n createSpeechRecognitionPonyfill,\n createSpeechRecognitionPonyfillFromRecognizer,\n type SpeechGrammarList,\n type SpeechRecognitionAlternative,\n type SpeechRecognitionErrorEvent,\n type SpeechRecognitionEvent,\n type SpeechRecognitionEventListenerMap,\n type SpeechRecognitionResult,\n type SpeechRecognitionResultList\n} from './SpeechServices/SpeechToText';\nimport createSpeechSynthesisPonyfill from './SpeechServices/TextToSpeech';\nimport fetchAuthorizationToken from './SpeechServices/fetchAuthorizationToken';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function createSpeechServicesPonyfill(options: any = {}): any {\n return {\n ...createSpeechRecognitionPonyfill(options),\n ...createSpeechSynthesisPonyfill(options)\n };\n}\n\nexport {\n createSpeechRecognitionPonyfill,\n createSpeechRecognitionPonyfillFromRecognizer,\n createSpeechSynthesisPonyfill,\n fetchAuthorizationToken,\n type SpeechGrammarList,\n type SpeechRecognitionAlternative,\n type SpeechRecognitionErrorEvent,\n type SpeechRecognitionEvent,\n type SpeechRecognitionEventListenerMap,\n type SpeechRecognitionResult,\n type SpeechRecognitionResultList\n};\n\nconst meta = document.createElement('meta');\n\nmeta.setAttribute('name', 'web-speech-cognitive-services');\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nmeta.setAttribute('content', `version=${process.env.npm_package_version}`);\n\ndocument.head.appendChild(meta);\n"],"mappings":"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","names":["optional","optional","pipe","boolean","optional","optional","pipe","string","optional","string","optional","AudioConfig","boolean","parse","undefined_","union","array","array","averageAmplitude","ResultReason","SpeechRecognizer","enableTelemetrySchema","union","boolean","undefined_","parse","OutputFormat","SpeechConfig","SpeechRecognizer","EventTarget","getEventAttributeValue","setEventAttributeValue","Event","EventTarget","EventTarget","DEFAULT_OUTPUT_FORMAT","EventTarget","getEventAttributeValue","setEventAttributeValue"]}