Skip to content

Commit 8d8d326

Browse files
committed
REMOVE DEEPGRAM STUFF
1 parent 29d3c6e commit 8d8d326

File tree

7 files changed

+106
-520
lines changed

7 files changed

+106
-520
lines changed

next/app/api/dg_auth/route.ts

-47
This file was deleted.

next/app/api/transcribe/route.ts

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import { AssemblyAI } from "assemblyai";
2+
import { getRequiredEnv } from "@/lib/env";
3+
import { NextResponse, type NextRequest } from "next/server";
4+
5+
export const revalidate = 0;
6+
7+
export async function POST(request: NextRequest) {
8+
try {
9+
const apiKey = getRequiredEnv("ASSEMBLYAI_API_KEY");
10+
if (!apiKey) {
11+
return NextResponse.json(
12+
{ error: "AssemblyAI API Key not found" },
13+
{ status: 500 }
14+
);
15+
}
16+
17+
const assemblyClient = new AssemblyAI({ apiKey });
18+
const formData = await request.formData();
19+
const audioFile = formData.get("audio") as File;
20+
21+
if (!audioFile) {
22+
return NextResponse.json(
23+
{ error: "No audio file provided" },
24+
{ status: 400 }
25+
);
26+
}
27+
28+
// Convert File to Buffer
29+
const arrayBuffer = await audioFile.arrayBuffer();
30+
const buffer = Buffer.from(arrayBuffer);
31+
32+
// Upload the audio file
33+
const uploadUrl = await assemblyClient.files.upload(buffer);
34+
35+
// Create a transcript
36+
const transcript = await assemblyClient.transcripts.create({
37+
audio_url: uploadUrl,
38+
language_detection: true,
39+
});
40+
41+
// Poll until the transcript is ready
42+
let result;
43+
while (true) {
44+
result = await assemblyClient.transcripts.get(transcript.id);
45+
if (result.status === "completed" || result.status === "error") break;
46+
await new Promise((resolve) => setTimeout(resolve, 1000));
47+
}
48+
49+
if (result.status === "error") {
50+
throw new Error(result.error);
51+
}
52+
53+
const response = NextResponse.json({
54+
text: result.text,
55+
language: result.language_code,
56+
confidence: result.confidence,
57+
words: result.words,
58+
});
59+
60+
response.headers.set("Surrogate-Control", "no-store");
61+
response.headers.set(
62+
"Cache-Control",
63+
"s-maxage=0, no-store, no-cache, must-revalidate, proxy-revalidate"
64+
);
65+
response.headers.set("Expires", "0");
66+
67+
return response;
68+
} catch (error) {
69+
console.error("Error transcribing audio:", error);
70+
return NextResponse.json({ error: String(error) }, { status: 500 });
71+
}
72+
}

next/app/components/VoiceSampleCollector.tsx

-20
This file was deleted.

next/app/layout.tsx

+3-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import classNames from "classnames";
33
import { Analytics } from "@vercel/analytics/react";
44
import { MicrophoneContextProvider } from "../components/microphone-context";
55
import { AssemblyContextProvider } from "@/components/assembly-context";
6-
import { DeepgramContextProvider } from "@/components/deepgram-context";
76

87
import "./globals.css";
98

@@ -25,11 +24,9 @@ export default function RootLayout({
2524
return (
2625
<html lang="en" className="h-dvh">
2726
<body className={`h-full ${classNames(inter.className)}`}>
28-
<DeepgramContextProvider>
29-
<MicrophoneContextProvider>
30-
<AssemblyContextProvider>{children}</AssemblyContextProvider>
31-
</MicrophoneContextProvider>
32-
</DeepgramContextProvider>
27+
<MicrophoneContextProvider>
28+
<AssemblyContextProvider>{children}</AssemblyContextProvider>
29+
</MicrophoneContextProvider>
3330
<Analytics />
3431
</body>
3532
</html>

next/components/deepgram-context.tsx

-110
This file was deleted.

0 commit comments

Comments
 (0)