sarvam-conv-ai-sdk 0.0.5 → 0.0.6
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.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/react-native.d.ts +133 -0
- package/dist/interfaces/react-native.d.ts.map +1 -0
- package/dist/interfaces/react-native.js +699 -0
- package/dist/interfaces/react-native.js.map +1 -0
- package/dist/modules/socket-manager.d.ts +12 -3
- package/dist/modules/socket-manager.d.ts.map +1 -1
- package/dist/modules/socket-manager.js +44 -26
- package/dist/modules/socket-manager.js.map +1 -1
- package/dist/modules/voice-agent.d.ts +2 -1
- package/dist/modules/voice-agent.d.ts.map +1 -1
- package/dist/modules/voice-agent.js +4 -6
- package/dist/modules/voice-agent.js.map +1 -1
- package/dist/package.json +18 -1
- package/dist/utils/socket.d.ts +1 -1
- package/dist/utils/socket.d.ts.map +1 -1
- package/dist/utils/socket.js +19 -1
- package/dist/utils/socket.js.map +1 -1
- package/package.json +18 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export { ConversationAgent, createConversation } from "./conversation";
|
|
|
2
2
|
export type { Platform } from "./types";
|
|
3
3
|
export type { AsyncAudioInterface, AudioData } from "./types";
|
|
4
4
|
export { BrowserAudioInterface } from "./interfaces/browser";
|
|
5
|
+
export { RNAudioInterface } from "./interfaces/react-native";
|
|
5
6
|
export * from "./types";
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
export { ConversationAgent, createConversation } from "./conversation";
|
|
3
3
|
// Browser audio interfaces
|
|
4
4
|
export { BrowserAudioInterface } from "./interfaces/browser";
|
|
5
|
+
// React Native audio interface
|
|
6
|
+
// Note: This requires peer dependencies: react-native-audio-recorder-player, react-native-fs, react-native-sound
|
|
7
|
+
export { RNAudioInterface } from "./interfaces/react-native";
|
|
5
8
|
// Messages and types
|
|
6
9
|
export * from "./types";
|
|
7
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMvE,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,qBAAqB;AACrB,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMvE,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,+BAA+B;AAC/B,iHAAiH;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,qBAAqB;AACrB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native audio interface implementation for Sarvam Conversational AI SDK.
|
|
3
|
+
*
|
|
4
|
+
* This interface provides audio input/output capabilities for React Native applications
|
|
5
|
+
* using native audio libraries.
|
|
6
|
+
*
|
|
7
|
+
* Required peer dependencies for bare React Native:
|
|
8
|
+
* - react-native-audio-recorder-player
|
|
9
|
+
* - react-native-fs
|
|
10
|
+
* - react-native-sound
|
|
11
|
+
*
|
|
12
|
+
* Install with:
|
|
13
|
+
* npm install react-native-audio-recorder-player react-native-fs react-native-sound
|
|
14
|
+
*
|
|
15
|
+
* For iOS, also run: cd ios && pod install
|
|
16
|
+
*/
|
|
17
|
+
import { AsyncAudioInterface, AudioData } from "../types";
|
|
18
|
+
/**
|
|
19
|
+
* React Native Audio Interface for capturing microphone input and playing audio output.
|
|
20
|
+
* Uses react-native-audio-recorder-player for recording and react-native-sound for playback.
|
|
21
|
+
*
|
|
22
|
+
* Features:
|
|
23
|
+
* - Microphone capture with configurable sample rate
|
|
24
|
+
* - Audio buffering for smooth playback
|
|
25
|
+
* - Playback with seamless chunk transitions
|
|
26
|
+
* - Interrupt support for stopping ongoing playback
|
|
27
|
+
*/
|
|
28
|
+
export declare class RNAudioInterface implements AsyncAudioInterface {
|
|
29
|
+
private audioRecorderPlayer;
|
|
30
|
+
private sound;
|
|
31
|
+
private nextSound;
|
|
32
|
+
private nextSoundTempFile;
|
|
33
|
+
private inputCallback;
|
|
34
|
+
private isRunning;
|
|
35
|
+
private audioQueue;
|
|
36
|
+
private isPlaying;
|
|
37
|
+
private sampleRate;
|
|
38
|
+
private recordingInterval;
|
|
39
|
+
private tempAudioFiles;
|
|
40
|
+
private isPreparingNext;
|
|
41
|
+
private audioBuffer;
|
|
42
|
+
private lastBufferTime;
|
|
43
|
+
private bufferTimeout;
|
|
44
|
+
private hasScheduledNext;
|
|
45
|
+
private currentRecordingPath;
|
|
46
|
+
private lastReadPosition;
|
|
47
|
+
private AudioRecorderPlayerClass;
|
|
48
|
+
private SoundClass;
|
|
49
|
+
private RNFS;
|
|
50
|
+
private Platform;
|
|
51
|
+
private PermissionsAndroid;
|
|
52
|
+
private readonly OVERLAP_MS;
|
|
53
|
+
private readonly MIN_BUFFER_SIZE;
|
|
54
|
+
private readonly BUFFER_FLUSH_DELAY_MS;
|
|
55
|
+
/**
|
|
56
|
+
* Create a new React Native audio interface
|
|
57
|
+
* @param sampleRate - Target sample rate for audio capture (default: 16000 Hz)
|
|
58
|
+
*/
|
|
59
|
+
constructor(sampleRate?: number);
|
|
60
|
+
/**
|
|
61
|
+
* Request audio recording permissions.
|
|
62
|
+
*/
|
|
63
|
+
private requestPermissions;
|
|
64
|
+
/**
|
|
65
|
+
* Start capturing audio from the microphone
|
|
66
|
+
* @param inputCallback - Callback to receive audio chunks
|
|
67
|
+
*/
|
|
68
|
+
start(inputCallback: (audioData: AudioData, frameCount: number) => Promise<void>): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Stop capturing audio and clean up resources
|
|
71
|
+
*/
|
|
72
|
+
stop(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Output audio to the speakers
|
|
75
|
+
* Buffers small chunks together for smoother playback with reduced gaps.
|
|
76
|
+
* @param audio - Audio data in 16-bit PCM mono format
|
|
77
|
+
* @param sampleRate - Sample rate of the audio (default: 16000 Hz)
|
|
78
|
+
*/
|
|
79
|
+
output(audio: AudioData, sampleRate?: number): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Interrupt and stop all ongoing audio playback
|
|
82
|
+
*/
|
|
83
|
+
interrupt(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Flush buffered audio chunks to the playback queue.
|
|
86
|
+
*/
|
|
87
|
+
private flushAudioBuffer;
|
|
88
|
+
/**
|
|
89
|
+
* Process the audio queue for playback with pre-loading for seamless transitions.
|
|
90
|
+
*/
|
|
91
|
+
private processAudioQueue;
|
|
92
|
+
/**
|
|
93
|
+
* Play a sound file using react-native-sound.
|
|
94
|
+
*/
|
|
95
|
+
private playSound;
|
|
96
|
+
/**
|
|
97
|
+
* Start the next prepared chunk (overlap technique).
|
|
98
|
+
*/
|
|
99
|
+
private startNextChunk;
|
|
100
|
+
/**
|
|
101
|
+
* Pre-load the next audio chunk for seamless playback.
|
|
102
|
+
*/
|
|
103
|
+
private prepareNextChunk;
|
|
104
|
+
/**
|
|
105
|
+
* Read audio file and extract PCM data.
|
|
106
|
+
*/
|
|
107
|
+
private readAudioFile;
|
|
108
|
+
/**
|
|
109
|
+
* Convert base64 string to binary string.
|
|
110
|
+
*/
|
|
111
|
+
private base64ToBinary;
|
|
112
|
+
/**
|
|
113
|
+
* Create a complete WAV file from PCM data.
|
|
114
|
+
*/
|
|
115
|
+
private createWavFile;
|
|
116
|
+
/**
|
|
117
|
+
* Write a string to a DataView.
|
|
118
|
+
*/
|
|
119
|
+
private writeString;
|
|
120
|
+
/**
|
|
121
|
+
* Convert ArrayBuffer to base64 string.
|
|
122
|
+
*/
|
|
123
|
+
private arrayBufferToBase64;
|
|
124
|
+
/**
|
|
125
|
+
* Clean up a single temporary audio file.
|
|
126
|
+
*/
|
|
127
|
+
private cleanupTempFile;
|
|
128
|
+
/**
|
|
129
|
+
* Clean up all temporary audio files.
|
|
130
|
+
*/
|
|
131
|
+
private cleanupAllTempFiles;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=react-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../src/interfaces/react-native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAa1D;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,YAAW,mBAAmB;IAC1D,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,aAAa,CAA8E;IACnG,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,gBAAgB,CAAK;IAG7B,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,kBAAkB,CAAM;IAGhC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAM;IAE5C;;;OAGG;gBACS,UAAU,GAAE,MAAc;IA0CtC;;OAEG;YACW,kBAAkB;IA+BhC;;;OAGG;IACG,KAAK,CACT,aAAa,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC;IAsEhB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE3B;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCzE;;OAEG;IACH,SAAS,IAAI,IAAI;IAgDjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;YACW,iBAAiB;IAsD/B;;OAEG;IACH,OAAO,CAAC,SAAS;IAqDjB;;OAEG;IACH,OAAO,CAAC,cAAc;IA8CtB;;OAEG;YACW,gBAAgB;IAyD9B;;OAEG;YACW,aAAa;IAgC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwCrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;YACW,eAAe;IAa7B;;OAEG;YACW,mBAAmB;CAalC"}
|