@freddydrodev/artyom
Version:
Artyom is a Robust Wrapper of the Google Chrome SpeechSynthesis and SpeechRecognition that allows you to create a virtual assistent
1 lines • 39.5 kB
Source Map (JSON)
{"version":3,"sources":["../src/artyom.ts"],"names":["Artyom","event","result","transcript","isFinal","param","processCommand","command","message","type","preMessage","styles","__async","resolve","e","indexes","smart","action","__spreadValues","name","returnObject","last","languageCode","voiceIdentifiersArray","voice","identifier","settings","dictation","_a","interimTranscript","finalTranscript","acc","flagStartCallback","flagRestart","config","copyActualCommands","promptCommand","wildcard","toExe","data","index","status","sentence","_b","foundCommand","s","a","f","codes","v","i","input","chunk_length","output","curr","prev","copyInit","text","actualChunk","totalChunks","callbacks","msg","availableVoice","MAX_CHUNK_LENGTH","definitive","naturalReading","chunk","cmd","array","callback","item","listener"],"mappings":"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","file":"artyom.mjs","sourcesContent":["import type {\n ArtyomCommand,\n ArtyomFlags,\n ArtyomVoice,\n ArtyomGlobalEvents,\n SayCallbacksObject,\n ArtyomProperties,\n PromptOptions,\n MatchedCommand,\n IDevice,\n ArtyomVoiceIdentifiers,\n ArtyomGarbageCollection,\n ArtyomWebkitSpeechRecognition,\n} from \"./types/artyom\";\n\n/**\n * Artyom.js is a voice control, speech recognition and speech synthesis JavaScript library.\n *\n * @requires {webkitSpeechRecognition && speechSynthesis}\n * @license MIT\n * @version 1.0.6\n * @copyright 2017 Our Code World (www.ourcodeworld.com) All Rights Reserved.\n * @author Carlos Delgado (https://github.com/sdkcarlos) and Sema García (https://github.com/semagarcia)\n * @see https://sdkcarlos.github.io/sites/artyom.html\n * @see http://docs.ourcodeworld.com/projects/artyom-js\n */\n\nexport default class Artyom {\n private readonly ArtyomVoicesIdentifiers: ArtyomVoiceIdentifiers;\n private artyomWebkitSpeechRecognition!: ArtyomWebkitSpeechRecognition;\n private ArtyomVoice: ArtyomVoice;\n private ArtyomCommands: ArtyomCommand[];\n private ArtyomGarbageCollection: ArtyomGarbageCollection[];\n private ArtyomFlags: ArtyomFlags;\n private ArtyomProperties: ArtyomProperties;\n private readonly ArtyomGlobalEvents: ArtyomGlobalEvents;\n private readonly Device: IDevice;\n\n constructor() {\n this.ArtyomCommands = [];\n\n this.ArtyomVoicesIdentifiers = {\n \"de-DE\": [\"Google Deutsch\", \"de-DE\", \"de_DE\"],\n \"es-ES\": [\"Google español\", \"es-ES\", \"es_ES\", \"es-MX\", \"es_MX\"],\n \"it-IT\": [\"Google italiano\", \"it-IT\", \"it_IT\"],\n \"ja-JP\": [\"Google 日本人\", \"ja-JP\", \"ja_JP\"],\n \"en-US\": [\"Google US English\", \"en-US\", \"en_US\"],\n \"en-GB\": [\n \"Google UK English Male\",\n \"Google UK English Female\",\n \"en-GB\",\n \"en_GB\",\n ],\n \"pt-BR\": [\n \"Google português do Brasil\",\n \"pt-PT\",\n \"pt-BR\",\n \"pt_PT\",\n \"pt_BR\",\n ],\n \"pt-PT\": [\"Google português do Brasil\", \"pt-PT\", \"pt_PT\"],\n \"ru-RU\": [\"Google русский\", \"ru-RU\", \"ru_RU\"],\n \"nl-NL\": [\"Google Nederlands\", \"nl-NL\", \"nl_NL\"],\n \"fr-FR\": [\"Google français\", \"fr-FR\", \"fr_FR\"],\n \"pl-PL\": [\"Google polski\", \"pl-PL\", \"pl_PL\"],\n \"id-ID\": [\"Google Bahasa Indonesia\", \"id-ID\", \"id_ID\"],\n \"hi-IN\": [\"Google हिन्दी\", \"hi-IN\", \"hi_IN\"],\n \"zh-CN\": [\"Google 普通话(中国大陆)\", \"zh-CN\", \"zh_CN\"],\n \"zh-HK\": [\"Google 粤語(香港)\", \"zh-HK\", \"zh_HK\"],\n native: [\"native\"],\n };\n\n // Initialize speech synthesis\n if (\"speechSynthesis\" in window) {\n window.speechSynthesis.getVoices();\n } else {\n console.error(\"Artyom.js can't speak without the Speech Synthesis API.\");\n }\n\n // Initialize speech recognition\n if (\"webkitSpeechRecognition\" in window) {\n this.artyomWebkitSpeechRecognition = new (\n window as any\n ).webkitSpeechRecognition();\n } else {\n throw new Error(\n \"Artyom.js can't recognize voice without the Speech Recognition API.\"\n );\n }\n\n this.ArtyomProperties = {\n lang: \"en-GB\",\n recognizing: false,\n continuous: false,\n speed: 1,\n volume: 1,\n listen: false,\n mode: \"normal\",\n debug: false,\n helpers: {\n redirectRecognizedTextOutput: undefined,\n remoteProcessorHandler: undefined,\n lastSay: undefined,\n fatalityPromiseCallback: undefined,\n },\n executionKeyword: undefined,\n obeyKeyword: undefined,\n speaking: false,\n obeying: true,\n soundex: false,\n name: undefined,\n };\n\n this.ArtyomGarbageCollection = [];\n this.ArtyomFlags = { restartRecognition: false };\n\n this.ArtyomGlobalEvents = {\n ERROR: \"ERROR\",\n SPEECH_SYNTHESIS_START: \"SPEECH_SYNTHESIS_START\",\n SPEECH_SYNTHESIS_END: \"SPEECH_SYNTHESIS_END\",\n TEXT_RECOGNIZED: \"TEXT_RECOGNIZED\",\n COMMAND_RECOGNITION_START: \"COMMAND_RECOGNITION_START\",\n COMMAND_RECOGNITION_END: \"COMMAND_RECOGNITION_END\",\n COMMAND_MATCHED: \"COMMAND_MATCHED\",\n NOT_COMMAND_MATCHED: \"NOT_COMMAND_MATCHED\",\n };\n\n this.Device = {\n isMobile:\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n ),\n isChrome: /Chrome/.test(navigator.userAgent),\n };\n\n this.ArtyomVoice = {\n default: false,\n lang: \"en-GB\",\n localService: false,\n name: \"Google UK English Male\",\n voiceURI: \"Google UK English Male\",\n };\n\n this.initializeDevice();\n this.initializeSpeechRecognition();\n }\n\n private initializeDevice(): void {\n this.Device.isChrome =\n /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n this.Device.isMobile =\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n }\n\n private initializeSpeechRecognition(): void {\n if (!window.webkitSpeechRecognition) {\n throw new Error(\"Speech Recognition API not supported in this browser\");\n }\n this.artyomWebkitSpeechRecognition = new window.webkitSpeechRecognition();\n this.setupSpeechRecognitionEvents();\n }\n\n private setupSpeechRecognitionEvents(): void {\n this.artyomWebkitSpeechRecognition.onresult = (\n event: SpeechRecognitionEvent\n ) => {\n const result = event.results[event.results.length - 1];\n const transcript = result[0].transcript;\n this.handleSpeechResult(transcript, result.isFinal);\n };\n\n this.artyomWebkitSpeechRecognition.onerror = (\n event: SpeechRecognitionErrorEvent\n ) => {\n console.error(\"Speech recognition error:\", event.error);\n };\n\n this.artyomWebkitSpeechRecognition.onend = () => {\n if (this.ArtyomProperties.continuous) {\n this.artyomWebkitSpeechRecognition.start();\n }\n };\n }\n\n private handleSpeechResult(transcript: string, isFinal: boolean): void {\n if (this.ArtyomProperties.helpers.redirectRecognizedTextOutput) {\n this.ArtyomProperties.helpers.redirectRecognizedTextOutput(\n transcript,\n isFinal\n );\n }\n }\n\n // Modern ES6+ methods\n addCommands(param: ArtyomCommand | ArtyomCommand[]): boolean {\n const processCommand = (command: ArtyomCommand) => {\n if (\"indexes\" in command) {\n this.ArtyomCommands.push(command);\n } else {\n console.error(\n \"The given command doesn't provide any index to execute.\"\n );\n }\n };\n\n Array.isArray(param)\n ? param.forEach(processCommand)\n : processCommand(param);\n return true;\n }\n\n clearGarbageCollection(): ArtyomGarbageCollection[] {\n return (this.ArtyomGarbageCollection = []);\n }\n\n debug(message: string, type?: \"error\" | \"warn\" | \"info\"): void {\n if (!this.ArtyomProperties.debug) return;\n\n const preMessage = `[v${this.getVersion()}] Artyom.js`;\n const styles = {\n error: \"background: #C12127; color: black;\",\n info: \"background: #4285F4; color: #FFFFFF\",\n default: \"background: #005454; color: #BFF8F8\",\n };\n\n switch (type) {\n case \"error\":\n console.log(\n `%c${preMessage}:%c ${message}`,\n styles.error,\n \"color:black;\"\n );\n break;\n case \"warn\":\n console.warn(message);\n break;\n case \"info\":\n console.log(\n `%c${preMessage}:%c ${message}`,\n styles.info,\n \"color:black;\"\n );\n break;\n default:\n console.log(\n `%c${preMessage}:%c ${message}`,\n styles.default,\n \"color:black;\"\n );\n }\n }\n\n detectErrors(): { code: string; message: string } | false {\n if (window.location.protocol === \"file:\") {\n const message =\n \"Error: running Artyom directly from a file. The APIs require a different communication protocol like HTTP or HTTPS\";\n console.error(message);\n return { code: \"artyom_error_localfile\", message };\n }\n\n if (!this.Device.isChrome) {\n const message =\n \"Error: the Speech Recognition and Speech Synthesis APIs require the Google Chrome Browser to work.\";\n console.error(message);\n return { code: \"artyom_error_browser_unsupported\", message };\n }\n\n if (window.location.protocol !== \"https:\") {\n console.warn(\n `Warning: artyom is being executed using the '${window.location.protocol}' protocol. The continuous mode requires a secure protocol (HTTPS)`\n );\n }\n\n return false;\n }\n\n emptyCommands(): ArtyomCommand[] {\n return (this.ArtyomCommands = []);\n }\n\n async fatality(): Promise<void> {\n return new Promise((resolve) => {\n this.ArtyomProperties.helpers.fatalityPromiseCallback = resolve;\n try {\n this.ArtyomFlags.restartRecognition = false;\n this.artyomWebkitSpeechRecognition.stop();\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n getAvailableCommands(): ArtyomCommand[] {\n return this.ArtyomCommands;\n }\n\n getVoices(): SpeechSynthesisVoice[] {\n return window.speechSynthesis.getVoices();\n }\n\n speechSupported(): boolean {\n return \"speechSynthesis\" in window;\n }\n\n recognizingSupported(): boolean {\n return \"webkitSpeechRecognition\" in window;\n }\n\n shutUp(): void {\n if (\"speechSynthesis\" in window) {\n while (window.speechSynthesis.pending) {\n window.speechSynthesis.cancel();\n }\n }\n this.ArtyomProperties.speaking = false;\n this.clearGarbageCollection();\n }\n\n getProperties(): ArtyomProperties {\n return this.ArtyomProperties;\n }\n\n getLanguage(): string {\n return this.ArtyomProperties.lang;\n }\n\n getVersion(): string {\n return \"1.0.6\";\n }\n\n // Modern ES6+ methods continued\n on(\n indexes: string[],\n smart?: boolean\n ): { then: (action: () => void) => void } {\n return {\n then: (action: () => void) => {\n const command: ArtyomCommand = {\n indexes,\n action,\n ...(smart && { smart: true }),\n };\n this.addCommands(command);\n },\n };\n }\n\n triggerEvent(name: string, param?: any): CustomEvent {\n const event = new CustomEvent(name, { detail: param });\n document.dispatchEvent(event);\n return event;\n }\n\n repeatLastSay(returnObject?: boolean): { text: string; date: Date } | void {\n const last = this.ArtyomProperties.helpers.lastSay;\n\n if (returnObject) {\n return last;\n }\n\n if (last) {\n this.say(last.text);\n }\n }\n\n when(event: string, action: (detail: any) => void): void {\n document.addEventListener(event, ((e: Event) => {\n if (e instanceof CustomEvent) {\n action(e.detail);\n }\n }) as EventListener);\n }\n\n remoteProcessorService(action: (text: string) => void): boolean {\n this.ArtyomProperties.helpers.remoteProcessorHandler = action;\n return true;\n }\n\n voiceAvailable(languageCode: string): boolean {\n return typeof this.getVoice(languageCode) !== \"undefined\";\n }\n\n isObeying(): boolean {\n return this.ArtyomProperties.obeying;\n }\n\n obey(): boolean {\n return (this.ArtyomProperties.obeying = true);\n }\n\n dontObey(): boolean {\n return (this.ArtyomProperties.obeying = false);\n }\n\n isSpeaking(): boolean {\n return this.ArtyomProperties.speaking;\n }\n\n isRecognizing(): boolean {\n return this.ArtyomProperties.recognizing;\n }\n\n getNativeApi(): ArtyomWebkitSpeechRecognition {\n return this.artyomWebkitSpeechRecognition;\n }\n\n getGarbageCollection(): ArtyomGarbageCollection[] {\n return this.ArtyomGarbageCollection;\n }\n\n getVoice(languageCode: string): SpeechSynthesisVoice | undefined {\n const voiceIdentifiersArray =\n this.ArtyomVoicesIdentifiers[languageCode] ||\n this.ArtyomVoicesIdentifiers[\"en-GB\"];\n\n const voices = window.speechSynthesis.getVoices();\n\n return voices.find((voice) =>\n voiceIdentifiersArray.some(\n (identifier) => voice.name === identifier || voice.lang === identifier\n )\n );\n }\n\n newDictation(settings: {\n onResult?: (interim: string, final: string) => void;\n onStart?: () => void;\n onEnd?: () => void;\n onError?: (event: any) => void;\n continuous?: boolean;\n }): {\n start: () => void;\n stop: () => void;\n onError: null | ((event: any) => void);\n } {\n if (!this.recognizingSupported()) {\n console.error(\"SpeechRecognition is not supported in this browser\");\n return {\n start: () => {},\n stop: () => {},\n onError: null,\n };\n }\n\n const dictation = new (window as any).webkitSpeechRecognition();\n dictation.continuous = true;\n dictation.interimResults = true;\n dictation.lang = this.ArtyomProperties.lang;\n\n dictation.onresult = (event: SpeechRecognitionEvent) => {\n const { interimTranscript, finalTranscript } = Array.from(\n event.results\n ).reduce(\n (acc, result) => ({\n interimTranscript:\n acc.interimTranscript +\n (result.isFinal ? \"\" : result[0].transcript),\n finalTranscript:\n acc.finalTranscript + (result.isFinal ? result[0].transcript : \"\"),\n }),\n { interimTranscript: \"\", finalTranscript: \"\" }\n );\n\n settings.onResult?.(interimTranscript, finalTranscript);\n };\n\n return {\n start: () => {\n let flagStartCallback = true;\n let flagRestart = settings.continuous ?? false;\n\n dictation.onstart = () => {\n if (flagStartCallback) {\n settings.onStart?.();\n }\n };\n\n dictation.onend = () => {\n if (flagRestart) {\n flagStartCallback = false;\n dictation.start();\n } else {\n flagStartCallback = true;\n settings.onEnd?.();\n }\n };\n\n dictation.start();\n },\n stop: () => {\n dictation.stop();\n },\n onError: settings.onError || null,\n };\n }\n\n newPrompt(config: PromptOptions): void {\n if (typeof config !== \"object\") {\n console.error(\"Expected the prompt configuration.\");\n return;\n }\n\n const copyActualCommands = [...this.ArtyomCommands];\n this.emptyCommands();\n\n const promptCommand: ArtyomCommand = {\n description:\n \"Setting the artyom commands only for the prompt. The commands will be restored after the prompt finishes\",\n indexes: config.options,\n action: (i: number, wildcard: string) => {\n this.ArtyomCommands = copyActualCommands;\n const toExe = config.onMatch?.(i, wildcard);\n\n if (typeof toExe !== \"function\") {\n console.error(\n \"onMatch function expects a returning function to be executed\"\n );\n return;\n }\n\n toExe();\n },\n ...(config.smart && { smart: true }),\n };\n\n this.addCommands(promptCommand);\n config.beforePrompt?.();\n\n this.say(config.question, {\n onStart: () => config.onStartPrompt?.(),\n onEnd: () => config.onEndPrompt?.(),\n });\n }\n\n sayRandom(data: string[]): { text: string; index: number } | null {\n if (!Array.isArray(data)) {\n console.error(\"Random quotes must be in an array!\");\n return null;\n }\n\n const index = Math.floor(Math.random() * data.length);\n this.say(data[index]);\n\n return { text: data[index], index };\n }\n\n setDebug(status: boolean): boolean {\n return (this.ArtyomProperties.debug = status);\n }\n\n simulateInstruction(sentence: string): boolean {\n if (!sentence || typeof sentence !== \"string\") {\n console.warn(\"Cannot execute a non string command\");\n return false;\n }\n\n const foundCommand = this.execute(sentence);\n\n if (foundCommand?.instruction) {\n this.debug(\n `Command matches with simulation, executing${\n foundCommand.instruction.smart ? \" (smart)\" : \"\"\n }`,\n \"info\"\n );\n\n if (foundCommand.instruction.smart) {\n foundCommand.instruction.action(\n foundCommand.index,\n foundCommand.wildcard?.item,\n foundCommand.wildcard?.full\n );\n } else {\n foundCommand.instruction.action(foundCommand.index);\n }\n return true;\n }\n\n console.warn(`No command found trying with ${sentence}`);\n return false;\n }\n\n soundex(s: string): string {\n const a = s.toLowerCase().split(\"\");\n const f = a.shift() || \"\";\n const codes: Record<string, string | number> = {\n a: \"\",\n e: \"\",\n i: \"\",\n o: \"\",\n u: \"\",\n b: 1,\n f: 1,\n p: 1,\n v: 1,\n c: 2,\n g: 2,\n j: 2,\n k: 2,\n q: 2,\n s: 2,\n x: 2,\n z: 2,\n d: 3,\n t: 3,\n l: 4,\n m: 5,\n n: 5,\n r: 6,\n };\n\n const r =\n f +\n a\n .map((v) => codes[v as keyof typeof codes] ?? \"\")\n .filter((v, i, a) =>\n i === 0 ? v !== codes[f as keyof typeof codes] : v !== a[i - 1]\n )\n .join(\"\");\n\n return (r + \"000\").slice(0, 4).toUpperCase();\n }\n\n splitStringByChunks(\n input: string = \"\",\n chunk_length: number = 100\n ): string[] {\n const output: string[] = [];\n let curr = chunk_length;\n let prev = 0;\n\n while (input[curr]) {\n if (input[curr++] === \" \") {\n output.push(input.substring(prev, curr));\n prev = curr;\n curr += chunk_length;\n }\n }\n\n output.push(input.substr(prev));\n return output;\n }\n\n redirectRecognizedTextOutput(\n action: (text: string, isFinal: boolean) => void\n ): boolean {\n if (typeof action !== \"function\") {\n console.warn(\"Expected function to handle the recognized text ...\");\n return false;\n }\n\n this.ArtyomProperties.helpers.redirectRecognizedTextOutput = action;\n return true;\n }\n\n async restart(): Promise<void> {\n const copyInit = { ...this.ArtyomProperties };\n await this.fatality();\n return this.initialize(copyInit);\n }\n\n private talk(\n text: string,\n actualChunk: number,\n totalChunks: number,\n callbacks?: SayCallbacksObject\n ): void {\n const msg = new SpeechSynthesisUtterance(text);\n msg.volume = this.ArtyomProperties.volume;\n msg.rate = this.ArtyomProperties.speed;\n\n const availableVoice = callbacks?.lang\n ? this.getVoice(callbacks.lang)\n : this.getVoice(this.ArtyomProperties.lang);\n\n if (this.Device.isMobile) {\n if (availableVoice) {\n msg.lang = availableVoice.lang;\n }\n } else {\n if (availableVoice) {\n msg.voice = availableVoice;\n }\n }\n\n if (actualChunk === 1) {\n msg.addEventListener(\"start\", () => {\n this.ArtyomProperties.speaking = true;\n this.debug(\n `Event reached: ${this.ArtyomGlobalEvents.SPEECH_SYNTHESIS_START}`\n );\n this.triggerEvent(this.ArtyomGlobalEvents.SPEECH_SYNTHESIS_START);\n callbacks?.onStart?.();\n });\n }\n\n if (actualChunk >= totalChunks) {\n msg.addEventListener(\"end\", () => {\n this.ArtyomProperties.speaking = false;\n this.debug(\n `Event reached: ${this.ArtyomGlobalEvents.SPEECH_SYNTHESIS_END}`\n );\n this.triggerEvent(this.ArtyomGlobalEvents.SPEECH_SYNTHESIS_END);\n callbacks?.onEnd?.();\n });\n }\n\n this.debug(\n `${actualChunk} text chunk processed successfully out of ${totalChunks}`\n );\n this.ArtyomGarbageCollection.push(msg);\n window.speechSynthesis.speak(msg);\n }\n\n say(message: string, callbacks?: SayCallbacksObject): void {\n if (!this.speechSupported()) return;\n\n if (typeof message !== \"string\") {\n console.warn(`Artyom expects a string to speak ${typeof message} given`);\n return;\n }\n\n if (!message.length) {\n console.warn(\"Cannot speak empty string\");\n return;\n }\n\n const MAX_CHUNK_LENGTH = 115;\n let definitive: string[] = [];\n\n if (message.length > MAX_CHUNK_LENGTH) {\n const naturalReading = message.split(/,|:|\\. |;/);\n\n definitive = this.flatMap(naturalReading, (chunk: string) =>\n chunk.length > MAX_CHUNK_LENGTH\n ? this.splitStringByChunks(chunk, MAX_CHUNK_LENGTH)\n : [chunk]\n );\n } else {\n definitive = [message];\n }\n\n definitive.forEach((chunk, index) => {\n if (chunk) {\n this.talk(chunk, index + 1, definitive.length, callbacks);\n }\n });\n\n this.ArtyomProperties.helpers.lastSay = {\n text: message,\n date: new Date(),\n };\n }\n\n public execute(command: string | ArtyomCommand): MatchedCommand | undefined {\n if (typeof command === \"string\") {\n return this.findCommand(command);\n } else if (command.action) {\n command.action(0);\n }\n return undefined;\n }\n\n private findCommand(text: string): MatchedCommand | undefined {\n const cmd = this.ArtyomCommands.find((cmd) =>\n cmd.indexes.some((index) =>\n text.toLowerCase().includes(index.toLowerCase())\n )\n );\n if (cmd) {\n return {\n index: 0,\n instruction: cmd,\n wildcard: undefined,\n };\n }\n return undefined;\n }\n\n public initialize(config: Partial<ArtyomProperties>): void {\n Object.assign(this.ArtyomProperties, config);\n }\n\n public setVoice(voice: SpeechSynthesisVoice | null): void {\n if (voice) {\n this.ArtyomProperties.voice = voice;\n }\n }\n\n public flatMap<T>(array: T[], callback: (item: T) => T[]): T[] {\n return array.reduce((acc: T[], item: T) => [...acc, ...callback(item)], []);\n }\n\n public addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject\n ): void {\n document.addEventListener(type, listener);\n }\n}\n"]}