@maximai/maxim-js
Version:
Maxim AI JS SDK. Visit https://getmaxim.ai for more info.
90 lines • 3.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pcm16ToWav = pcm16ToWav;
exports.extractMessageContent = extractMessageContent;
exports.extractOutputText = extractOutputText;
/**
* Convert PCM16 audio data to WAV format.
*/
function pcm16ToWav(pcmData, sampleRate = 24000, channels = 1) {
const byteRate = sampleRate * channels * 2; // 16-bit = 2 bytes
const blockAlign = channels * 2;
const dataSize = pcmData.length;
const headerSize = 44;
const fileSize = headerSize + dataSize;
const buffer = Buffer.alloc(fileSize);
// RIFF header
buffer.write("RIFF", 0);
buffer.writeUInt32LE(fileSize - 8, 4);
buffer.write("WAVE", 8);
// fmt subchunk
buffer.write("fmt ", 12);
buffer.writeUInt32LE(16, 16); // Subchunk1Size
buffer.writeUInt16LE(1, 20); // AudioFormat (PCM)
buffer.writeUInt16LE(channels, 22);
buffer.writeUInt32LE(sampleRate, 24);
buffer.writeUInt32LE(byteRate, 28);
buffer.writeUInt16LE(blockAlign, 32);
buffer.writeUInt16LE(16, 34); // BitsPerSample
// data subchunk
buffer.write("data", 36);
buffer.writeUInt32LE(dataSize, 40);
pcmData.copy(buffer, 44);
return buffer;
}
/**
* Extract message content from a conversation item.
*/
function extractMessageContent(item) {
const content = item.content;
if (!content)
return "";
if (typeof content === "string")
return content;
if (Array.isArray(content)) {
const parts = [];
for (const contentItem of content) {
if (typeof contentItem === "string") {
parts.push(contentItem);
}
else if ((contentItem === null || contentItem === void 0 ? void 0 : contentItem.type) === "input_text") {
parts.push(contentItem.text || "");
}
else if ((contentItem === null || contentItem === void 0 ? void 0 : contentItem.type) === "input_audio") {
const transcript = contentItem.transcript;
if (transcript) {
parts.push(transcript);
}
}
else if ((contentItem === null || contentItem === void 0 ? void 0 : contentItem.type) === "input_image") {
parts.push("[image]");
}
}
return parts.join("");
}
return String(content);
}
/**
* Extract output text from a response message.
*/
function extractOutputText(item) {
const content = item.content;
if (!content)
return "";
if (typeof content === "string")
return content;
if (Array.isArray(content)) {
const parts = [];
for (const contentItem of content) {
if ((contentItem === null || contentItem === void 0 ? void 0 : contentItem.type) === "output_text") {
parts.push(contentItem.text || "");
}
else if ((contentItem === null || contentItem === void 0 ? void 0 : contentItem.type) === "output_audio") {
parts.push(contentItem.transcript || "");
}
}
return parts.join("");
}
return "";
}
//# sourceMappingURL=utils.js.map