audio-transcripter
Version:
Lightweight TypeScript library for transcribing audio files using Google Gemini 2.0 models. Supports local files, remote URLs, and Blobs.
33 lines (32 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transcribeAudio = transcribeAudio;
const file_helper_1 = require("./utils/file-helper");
const genAi_1 = require("./utils/genAi");
async function transcribeAudio(input, options = {}) {
try {
// Destructure with default values and types
const { style = "accurate", language = null, context = null, sourceType = "local", } = options;
// Step 1: Get file buffer
const buffer = await (0, file_helper_1.getFileBuffer)(input, sourceType);
if (!buffer) {
return null;
}
// Step 2: Create file object
const file = (0, file_helper_1.createFileFromBuffer)(buffer, input, sourceType);
// Step 3: Upload file
const mimeType = sourceType === "buffer" ? "audio/wav" : (0, file_helper_1.getMimeType)(input);
const uploadResult = await (0, genAi_1.uploadFileToGenAI)(file, mimeType);
if (!uploadResult) {
return null;
}
// Step 4: Build prompt
const prompt = (0, genAi_1.buildTranscriptionPrompt)(style, language, context);
// Step 5: Generate transcription
return await (0, genAi_1.generateTranscription)(prompt, uploadResult.uri, uploadResult.mimeType);
}
catch (err) {
console.error("[error] Failed to transcribe:", err instanceof Error ? err.message : String(err));
return null;
}
}