@anam-ai/js-sdk
Version:
Client side JavaScript SDK for Anam AI
50 lines • 1.68 kB
JavaScript
export class AgentAudioInputStream {
constructor(config, signallingClient) {
this.sequenceNumber = 0;
this.config = config;
this.signallingClient = signallingClient;
}
/**
* Send PCM audio chunk to server.
* @param audioData - Raw PCM audio bytes (ArrayBuffer/Uint8Array) or base64-encoded string
*/
sendAudioChunk(audioData) {
const base64 = typeof audioData === 'string'
? audioData
: this.arrayBufferToBase64(audioData);
const payload = {
audioData: base64,
encoding: this.config.encoding,
sampleRate: this.config.sampleRate,
channels: this.config.channels,
sequenceNumber: this.sequenceNumber++,
};
this.signallingClient.sendAgentAudioInput(payload);
}
/**
* Signal end of the current audio sequence/turn.
* Sends AGENT_AUDIO_INPUT_END signal message and resets sequence number.
*/
endSequence() {
this.signallingClient.sendAgentAudioInputEnd();
this.sequenceNumber = 0;
}
/**
* Get the current sequence number (number of chunks sent in current sequence).
*/
getSequenceNumber() {
return this.sequenceNumber;
}
/**
* Get the audio format configuration for this stream.
*/
getConfig() {
return this.config;
}
arrayBufferToBase64(buffer) {
const bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
const binary = Array.from(bytes, (byte) => String.fromCharCode(byte)).join('');
return btoa(binary);
}
}
//# sourceMappingURL=AgentAudioInputStream.js.map