Jay_11
08/05/2025, 5:03 PMJay_11
08/05/2025, 5:03 PMVapi Support Bot
08/05/2025, 5:06 PMjs
// server.js
const express = require("express");
const http = require("http");
const { createClient, LiveTranscriptionEvents } = require("@deepgram/sdk");
const WebSocket = require("ws");
require("dotenv").config();
const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server, path: "/api/custom-transcriber" });
const deepgram = createClient(process.env.DEEPGRAM_API_KEY);
wss.on("connection", (ws) => {
const dgLive = deepgram.listen.live({ encoding: "linear16", sample_rate: 16000, channels: 2, model: "nova-2" });
ws.on("message", (data, isBinary) => {
if (isBinary) dgLive.send(data);
});
dgLive.on(LiveTranscriptionEvents.Transcript, (event) => {
ws.send(JSON.stringify({ type: "transcriber-response", transcription: event.channel.alternatives[0].transcript, channel: event.channel_index[0] === 0 ? "customer" : "assistant" }));
});
});
server.listen(3001, () => console.log("Server running on http://localhost:3001"));
Replace process.env.DEEPGRAM_API_KEY with your Deepgram API key in a .env file. This backend is ready to connect with Vapi as described in the [official documentation](https://docs.vapi.ai/customization/custom-transcriber).
Source:
- [Custom transcriber documentation](https://docs.vapi.ai/customization/custom-transcriber)Jay_11
08/05/2025, 5:07 PMHilal @ UnitZero AI
08/05/2025, 7:33 PMCustom-transcriber server on port ${port});
});
backendHilal @ UnitZero AI
08/05/2025, 7:33 PMHilal @ UnitZero AI
08/05/2025, 7:33 PM