@myscheme/voice-navigation-sdk 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +13 -5
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +184 -44
  4. package/dist/microphone-handler.d.ts +8 -0
  5. package/dist/microphone-handler.d.ts.map +1 -1
  6. package/dist/microphone-handler.js +98 -24
  7. package/dist/navigation-controller.d.ts +4 -0
  8. package/dist/navigation-controller.d.ts.map +1 -1
  9. package/dist/navigation-controller.js +201 -7
  10. package/dist/server/azure-speech-handler.d.ts +13 -0
  11. package/dist/server/azure-speech-handler.d.ts.map +1 -0
  12. package/dist/server/azure-speech-handler.js +79 -0
  13. package/dist/server/bedrock-embedding-handler.d.ts +16 -0
  14. package/dist/server/bedrock-embedding-handler.d.ts.map +1 -0
  15. package/dist/server/bedrock-embedding-handler.js +183 -0
  16. package/dist/server/bedrock-handler.d.ts +15 -0
  17. package/dist/server/bedrock-handler.d.ts.map +1 -0
  18. package/dist/server/bedrock-handler.js +171 -0
  19. package/dist/server/index.d.ts +7 -0
  20. package/dist/server/index.d.ts.map +1 -1
  21. package/dist/server/index.js +7 -0
  22. package/dist/server/opensearch-env-handler.d.ts +22 -0
  23. package/dist/server/opensearch-env-handler.d.ts.map +1 -0
  24. package/dist/server/opensearch-env-handler.js +221 -0
  25. package/dist/services/azure-speech.d.ts +10 -2
  26. package/dist/services/azure-speech.d.ts.map +1 -1
  27. package/dist/services/azure-speech.js +66 -3
  28. package/dist/services/bedrock.d.ts +16 -4
  29. package/dist/services/bedrock.d.ts.map +1 -1
  30. package/dist/services/bedrock.js +293 -17
  31. package/dist/services/vector-search.d.ts.map +1 -1
  32. package/dist/services/vector-search.js +15 -2
  33. package/dist/services/voice-feedback.d.ts +46 -0
  34. package/dist/services/voice-feedback.d.ts.map +1 -0
  35. package/dist/services/voice-feedback.js +332 -0
  36. package/dist/types.d.ts +17 -9
  37. package/dist/types.d.ts.map +1 -1
  38. package/package.json +3 -3
@@ -0,0 +1,332 @@
1
+ import * as sdk from "microsoft-cognitiveservices-speech-sdk";
2
+ export class VoiceFeedbackService {
3
+ constructor(config) {
4
+ this.synthesizer = null;
5
+ this.isSpeaking = false;
6
+ this.enabled = config.enabled ?? true;
7
+ this.language = config.language || "en-IN";
8
+ this.azureSpeechService = config.azureSpeechService;
9
+ this.bedrockService = config.bedrockService;
10
+ console.log("[VoiceFeedback] Service initialized - enabled:", this.enabled, "language:", this.language);
11
+ }
12
+ setEnabled(enabled) {
13
+ this.enabled = enabled;
14
+ console.log("[VoiceFeedback] Voice feedback", enabled ? "enabled" : "disabled");
15
+ if (!enabled && this.isSpeaking) {
16
+ this.stopSpeaking();
17
+ }
18
+ }
19
+ isEnabled() {
20
+ return this.enabled;
21
+ }
22
+ setLanguage(language) {
23
+ this.language = language;
24
+ console.log("[VoiceFeedback] Language changed to:", language);
25
+ }
26
+ async initializeSynthesizer() {
27
+ if (this.synthesizer) {
28
+ console.log("[VoiceFeedback] Synthesizer already initialized");
29
+ return;
30
+ }
31
+ console.log("[VoiceFeedback] Initializing synthesizer...");
32
+ try {
33
+ const tokenResponse = await this.azureSpeechService.fetchToken();
34
+ const speechConfig = sdk.SpeechConfig.fromAuthorizationToken(tokenResponse.token, tokenResponse.region);
35
+ const voiceName = this.getVoiceForLanguage(this.language);
36
+ speechConfig.speechSynthesisVoiceName = voiceName;
37
+ const audioConfig = sdk.AudioConfig.fromDefaultSpeakerOutput();
38
+ this.synthesizer = new sdk.SpeechSynthesizer(speechConfig, audioConfig);
39
+ console.log("[VoiceFeedback] Synthesizer initialized with voice:", voiceName);
40
+ }
41
+ catch (error) {
42
+ console.error("[VoiceFeedback] Failed to initialize synthesizer:", error);
43
+ throw error;
44
+ }
45
+ }
46
+ getVoiceForLanguage(language) {
47
+ const voiceMap = {
48
+ "en-IN": "en-IN-NeerjaNeural",
49
+ "en-US": "en-US-AriaNeural",
50
+ "en-GB": "en-GB-SoniaNeural",
51
+ "hi-IN": "hi-IN-SwaraNeural",
52
+ "ta-IN": "ta-IN-PallaviNeural",
53
+ "te-IN": "te-IN-ShrutiNeural",
54
+ "bn-IN": "bn-IN-TanishaaNeural",
55
+ "mr-IN": "mr-IN-AarohiNeural",
56
+ "gu-IN": "gu-IN-DhwaniNeural",
57
+ "kn-IN": "kn-IN-SapnaNeural",
58
+ "ml-IN": "ml-IN-SobhanaNeural",
59
+ "pa-IN": "pa-IN-SwaraNeural",
60
+ };
61
+ return voiceMap[language] || voiceMap["en-IN"];
62
+ }
63
+ async generateFeedbackMessage(context) {
64
+ const { action, actionResult, transcript, elementInfo } = context;
65
+ const prompt = this.buildPromptForAction(action, actionResult, transcript, elementInfo);
66
+ console.log("[VoiceFeedback] Requesting AI message generation...");
67
+ try {
68
+ const response = await this.bedrockService.generateFeedbackMessage(prompt, this.language);
69
+ console.log("[VoiceFeedback] AI generated message:", response);
70
+ return response;
71
+ }
72
+ catch (error) {
73
+ console.error("[VoiceFeedback] Failed to generate AI message:", error);
74
+ const fallback = this.getFallbackMessage(action, actionResult, elementInfo);
75
+ console.log("[VoiceFeedback] Using fallback message:", fallback);
76
+ return fallback;
77
+ }
78
+ }
79
+ buildPromptForAction(action, actionResult, transcript, elementInfo) {
80
+ let prompt = `Generate a brief, natural spoken feedback message (max 10 words) for this voice navigation action:\n\n`;
81
+ prompt += `Action: ${action}\n`;
82
+ if (transcript) {
83
+ prompt += `User said: "${transcript}"\n`;
84
+ }
85
+ if (elementInfo) {
86
+ if (elementInfo.label) {
87
+ prompt += `Element description: ${elementInfo.label}\n`;
88
+ }
89
+ else if (elementInfo.text) {
90
+ prompt += `Element text: ${elementInfo.text}\n`;
91
+ }
92
+ if (elementInfo.type)
93
+ prompt += `Input type: ${elementInfo.type}\n`;
94
+ if (!elementInfo.label && !elementInfo.text && elementInfo.tag) {
95
+ prompt += `Element type: ${elementInfo.tag}\n`;
96
+ }
97
+ }
98
+ if (actionResult) {
99
+ if (actionResult.info?.pageName) {
100
+ prompt += `Navigating to: ${actionResult.info.pageName}\n`;
101
+ }
102
+ if (actionResult.info?.direction) {
103
+ prompt += `Direction: ${actionResult.info.direction}\n`;
104
+ }
105
+ }
106
+ prompt += `\nGenerate a concise, conversational confirmation message. Be specific about what happened.`;
107
+ return prompt;
108
+ }
109
+ getFallbackMessage(action, actionResult, elementInfo) {
110
+ if (action.startsWith("navigate_") && actionResult?.info?.pageName) {
111
+ return `Navigating to ${actionResult.info.pageName}`;
112
+ }
113
+ if ((action === "focus_next" ||
114
+ action === "tab_next" ||
115
+ action === "focus_previous" ||
116
+ action === "tab_back") &&
117
+ actionResult?.info?.elementTag) {
118
+ if (elementInfo?.label) {
119
+ return elementInfo.label;
120
+ }
121
+ return `${actionResult.info.elementTag}`;
122
+ }
123
+ const actionLabel = action.replace(/_/g, " ");
124
+ return actionLabel;
125
+ }
126
+ async speak(message) {
127
+ if (!this.enabled || !message) {
128
+ console.log("[VoiceFeedback] Skipping speak - enabled:", this.enabled, "message:", !!message);
129
+ return;
130
+ }
131
+ console.log("[VoiceFeedback] Attempting to speak:", message);
132
+ try {
133
+ await this.initializeSynthesizer();
134
+ if (!this.synthesizer) {
135
+ console.warn("[VoiceFeedback] Synthesizer not available after initialization");
136
+ return;
137
+ }
138
+ if (this.isSpeaking) {
139
+ console.log("[VoiceFeedback] Canceling current speech to avoid stacking...");
140
+ this.stopSpeaking();
141
+ await new Promise((resolve) => setTimeout(resolve, 100));
142
+ }
143
+ this.isSpeaking = true;
144
+ console.log("[VoiceFeedback] Starting speech synthesis...");
145
+ return new Promise((resolve, reject) => {
146
+ if (!this.synthesizer) {
147
+ reject(new Error("Synthesizer not initialized"));
148
+ return;
149
+ }
150
+ this.synthesizer.speakTextAsync(message, (result) => {
151
+ this.isSpeaking = false;
152
+ if (result.reason === sdk.ResultReason.SynthesizingAudioCompleted) {
153
+ console.log("[VoiceFeedback] Speech completed successfully");
154
+ resolve();
155
+ }
156
+ else {
157
+ console.warn("[VoiceFeedback] Speech synthesis failed:", result.reason);
158
+ reject(new Error(`Speech synthesis failed: ${result.reason}`));
159
+ }
160
+ }, (error) => {
161
+ this.isSpeaking = false;
162
+ console.error("[VoiceFeedback] Speech synthesis error:", error);
163
+ reject(error);
164
+ });
165
+ });
166
+ }
167
+ catch (error) {
168
+ this.isSpeaking = false;
169
+ console.error("[VoiceFeedback] Failed to speak feedback:", error);
170
+ throw error;
171
+ }
172
+ }
173
+ stopSpeaking() {
174
+ if (this.synthesizer && this.isSpeaking) {
175
+ try {
176
+ this.synthesizer.close();
177
+ this.synthesizer = null;
178
+ this.isSpeaking = false;
179
+ console.log("[VoiceFeedback] Stopped speaking");
180
+ }
181
+ catch (error) {
182
+ console.error("[VoiceFeedback] Error stopping speech:", error);
183
+ }
184
+ }
185
+ }
186
+ async provideFeedback(context) {
187
+ if (!this.enabled) {
188
+ console.log("[VoiceFeedback] Feedback disabled, skipping");
189
+ return;
190
+ }
191
+ console.log("[VoiceFeedback] Providing feedback for action:", context.action);
192
+ const simpleActions = [
193
+ "scroll_up",
194
+ "scroll_down",
195
+ "scroll_left",
196
+ "scroll_right",
197
+ "scroll_top",
198
+ "scroll_bottom",
199
+ "page_up",
200
+ "page_down",
201
+ "zoom_in",
202
+ "zoom_out",
203
+ "click",
204
+ "enter",
205
+ "submit",
206
+ ];
207
+ if (simpleActions.includes(context.action)) {
208
+ console.log("[VoiceFeedback] Using immediate fallback for simple action");
209
+ try {
210
+ const fallbackMessage = this.getFallbackMessage(context.action, context.actionResult, context.elementInfo);
211
+ await this.speak(fallbackMessage);
212
+ return;
213
+ }
214
+ catch (error) {
215
+ console.error("[VoiceFeedback] Fallback failed:", error);
216
+ return;
217
+ }
218
+ }
219
+ try {
220
+ const messagePromise = this.generateFeedbackMessage(context);
221
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error("Feedback generation timeout")), 3000));
222
+ const message = await Promise.race([messagePromise, timeoutPromise]);
223
+ console.log("[VoiceFeedback] Generated message:", message);
224
+ if (!message) {
225
+ console.warn("[VoiceFeedback] No message generated");
226
+ return;
227
+ }
228
+ await this.speak(message);
229
+ console.log("[VoiceFeedback] Feedback completed successfully");
230
+ }
231
+ catch (error) {
232
+ console.error("[VoiceFeedback] Error providing feedback:", error);
233
+ try {
234
+ const fallbackMessage = this.getFallbackMessage(context.action, context.actionResult, context.elementInfo);
235
+ console.log("[VoiceFeedback] Using fallback message:", fallbackMessage);
236
+ await this.speak(fallbackMessage);
237
+ }
238
+ catch (fallbackError) {
239
+ console.error("[VoiceFeedback] Fallback also failed:", fallbackError);
240
+ }
241
+ }
242
+ }
243
+ async provideImmediateFeedback(message) {
244
+ if (!this.enabled) {
245
+ return;
246
+ }
247
+ try {
248
+ await this.speak(message);
249
+ }
250
+ catch (error) {
251
+ console.error("[VoiceFeedback] Error providing immediate feedback:", error);
252
+ }
253
+ }
254
+ async announceFocusChange(element, direction) {
255
+ if (!this.enabled) {
256
+ return;
257
+ }
258
+ const elementInfo = this.extractElementInfo(element);
259
+ await this.provideFeedback({
260
+ action: direction === "next" ? "focus_next" : "focus_previous",
261
+ actionResult: {
262
+ performed: true,
263
+ info: {
264
+ focused: true,
265
+ direction,
266
+ elementTag: element.tagName,
267
+ },
268
+ },
269
+ elementInfo,
270
+ });
271
+ }
272
+ extractElementInfo(element) {
273
+ const info = {
274
+ tag: element.tagName.toLowerCase(),
275
+ };
276
+ const ariaLabel = element.getAttribute("aria-label");
277
+ const ariaLabelledBy = element.getAttribute("aria-labelledby");
278
+ const title = element.getAttribute("title");
279
+ const alt = element.getAttribute("alt");
280
+ const placeholder = element.getAttribute("placeholder");
281
+ let labelledByText = "";
282
+ if (ariaLabelledBy) {
283
+ const referencedElement = document.getElementById(ariaLabelledBy);
284
+ if (referencedElement) {
285
+ labelledByText = referencedElement.textContent?.trim() || "";
286
+ }
287
+ }
288
+ let childImageLabel = "";
289
+ if (!ariaLabel && !labelledByText && !title && !alt) {
290
+ const childImage = element.querySelector("img");
291
+ if (childImage) {
292
+ const imgAlt = childImage.getAttribute("alt");
293
+ const imgTitle = childImage.getAttribute("title");
294
+ childImageLabel = imgAlt || imgTitle || "";
295
+ }
296
+ if (!childImageLabel) {
297
+ const svgTitle = element.querySelector("svg title");
298
+ if (svgTitle) {
299
+ childImageLabel = svgTitle.textContent?.trim() || "";
300
+ }
301
+ }
302
+ }
303
+ let textContent = "";
304
+ if (!childImageLabel &&
305
+ (element instanceof HTMLButtonElement ||
306
+ element instanceof HTMLAnchorElement)) {
307
+ textContent = element.textContent?.trim().slice(0, 50) || "";
308
+ }
309
+ const associatedLabel = element.closest("label")?.textContent?.trim();
310
+ info.label =
311
+ ariaLabel ||
312
+ labelledByText ||
313
+ title ||
314
+ alt ||
315
+ childImageLabel ||
316
+ textContent ||
317
+ placeholder ||
318
+ associatedLabel;
319
+ info.text = textContent || alt || placeholder || undefined;
320
+ if (element instanceof HTMLInputElement) {
321
+ info.type = element.type;
322
+ }
323
+ return info;
324
+ }
325
+ dispose() {
326
+ this.stopSpeaking();
327
+ if (this.synthesizer) {
328
+ this.synthesizer.close();
329
+ this.synthesizer = null;
330
+ }
331
+ }
332
+ }
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type CoreNavigationAction = "zoom_in" | "zoom_out" | "scroll_up" | "scroll_down" | "scroll_left" | "scroll_right" | "page_up" | "page_down" | "scroll_top" | "scroll_bottom" | "go_back" | "go_forward" | "reload_page" | "print_page" | "copy_url" | "open_menu" | "close_menu" | "focus_search" | "toggle_fullscreen" | "exit_fullscreen" | "play_media" | "pause_media" | "mute_media" | "unmute_media" | "search_content" | "stop" | "quit" | "tab_next" | "tab_back" | "click" | "enter" | "submit" | "move_left" | "move_right" | "move_up" | "move_down" | "move_beginning" | "move_end" | "select_all" | "select_line" | "type_text" | "cut" | "copy" | "paste" | "clear" | "unknown";
1
+ export type CoreNavigationAction = "zoom_in" | "zoom_out" | "scroll_up" | "scroll_down" | "scroll_left" | "scroll_right" | "page_up" | "page_down" | "scroll_top" | "scroll_bottom" | "go_back" | "go_forward" | "reload_page" | "print_page" | "copy_url" | "open_menu" | "close_menu" | "focus_search" | "toggle_fullscreen" | "exit_fullscreen" | "play_media" | "pause_media" | "mute_media" | "unmute_media" | "search_content" | "stop" | "quit" | "tab_next" | "tab_back" | "focus_next" | "focus_previous" | "click" | "enter" | "submit" | "activate" | "move_left" | "move_right" | "move_up" | "move_down" | "move_beginning" | "move_end" | "select_all" | "select_line" | "type_text" | "cut" | "copy" | "paste" | "clear" | "unknown";
2
2
  export type NavigationAction = CoreNavigationAction | `navigate_${string}`;
3
3
  export type ButtonPlacement = "bottom-right" | "bottom-left" | "top-right" | "top-left" | "center-right" | "center-left";
4
4
  export interface UIConfig {
@@ -8,6 +8,8 @@ export interface UIConfig {
8
8
  }
9
9
  export interface NavigationConfig {
10
10
  aws?: {
11
+ bedrockEndpoint?: string;
12
+ embeddingEndpoint?: string;
11
13
  region?: string;
12
14
  accessKeyId?: string;
13
15
  secretAccessKey?: string;
@@ -15,10 +17,14 @@ export interface NavigationConfig {
15
17
  embeddingModelId?: string | null;
16
18
  };
17
19
  azure?: {
20
+ tokenEndpoint?: string;
18
21
  subscriptionKey?: string;
19
22
  region?: string;
20
23
  };
21
24
  language?: string;
25
+ voiceFeedback?: {
26
+ enabled?: boolean;
27
+ };
22
28
  autoStart?: boolean;
23
29
  actionHandlers?: Partial<Record<NavigationAction, (context?: ActionContext) => void>>;
24
30
  opensearch?: OpenSearchConfig;
@@ -38,20 +44,22 @@ export interface NavigationPagesConfig {
38
44
  }>;
39
45
  }
40
46
  export interface OpenSearchConfig {
41
- node: string;
42
- username: string;
43
- password: string;
44
- index: string;
47
+ searchEndpoint?: string;
48
+ suggestEndpoint?: string;
49
+ node?: string;
50
+ username?: string;
51
+ password?: string;
52
+ index?: string;
53
+ ssl?: {
54
+ rejectUnauthorized?: boolean;
55
+ };
56
+ apiPath?: string;
45
57
  vectorField?: string;
46
58
  size?: number;
47
59
  minScore?: number;
48
60
  numCandidates?: number;
49
61
  requestTimeoutMs?: number;
50
62
  sourceFields?: string[];
51
- ssl?: {
52
- rejectUnauthorized?: boolean;
53
- };
54
- apiPath?: string;
55
63
  }
56
64
  export interface ActionContext {
57
65
  controller?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myscheme/voice-navigation-sdk",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Voice navigation SDK using Azure Speech and AWS Bedrock",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,16 +26,16 @@
26
26
  "prepublishOnly": "npm run clean && npm run build"
27
27
  },
28
28
  "dependencies": {
29
- "@opensearch-project/opensearch": "^2.12.0",
30
29
  "@aws-sdk/client-bedrock-runtime": "^3.705.0",
31
30
  "@azure/core-auth": "^1.10.0",
31
+ "@opensearch-project/opensearch": "^2.12.0",
32
+ "dotenv": "^17.3.1",
32
33
  "microsoft-cognitiveservices-speech-sdk": "^1.47.0"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@types/node": "^20.17.10",
36
37
  "typescript": "^5.7.2"
37
38
  },
38
- "peerDependencies": {},
39
39
  "keywords": [
40
40
  "voice",
41
41
  "navigation",