Demo
import fs from "fs";
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const transcription = await openai.audio.transcriptions.create({
file: fs.createReadStream("/path/to/file/audio.mp3"),
model: "whisper-1",
});
console.log(transcription.text);
}
main();
endpoint function
async function handleTranscription(request, openai) {
if (request.method !== "POST") {
return new Response("Please send a POST request with audio data", { status: 400 });
}
try {
const formData = await request.formData();
const audioFile = formData.get("audio");
if (!audioFile) {
return new Response("No audio file found in the request", { status: 400 });
}
console.log('Received audio file:', audioFile.name, audioFile.type, audioFile.size);
// Convert the File to a Blob
const arrayBuffer = await audioFile.arrayBuffer();
const blob = new Blob([arrayBuffer], { type: audioFile.type });
// Create a new File object from the Blob
const file = new File([blob], audioFile.name, { type: audioFile.type });
console.log('Created File object:', file.name, file.type, file.size);
console.log('Sending to OpenAI API...');
const transcription = await openai.audio.transcriptions.create({
file: file,
model: "whisper-1",
});
console.log('Received transcription:', transcription.text);
return new Response(JSON.stringify({ text: transcription.text }), {
headers: { "Content-Type": "application/json" },
});
} catch (error) {
console.error("Error:", error);
if (error.response) {
console.error("OpenAI API response:", await error.response.text());
}
return new Response(`Error: ${error.message}`, { status: 500 });
}
}