72 lines
2.0 KiB
Plaintext
72 lines
2.0 KiB
Plaintext
---
|
|
title: "Transcribe audio using Deepgram"
|
|
sidebarTitle: "Deepgram audio transcription"
|
|
description: "This example will show you how to transcribe audio using Deepgram's speech recognition API with Trigger.dev."
|
|
---
|
|
|
|
## Overview
|
|
|
|
Transcribe audio using [Deepgram's](https://developers.deepgram.com/docs/introduction) speech recognition API.
|
|
|
|
## Key Features
|
|
|
|
- Transcribe audio from a URL
|
|
- Use the Nova 2 model for transcription
|
|
|
|
## Task code
|
|
|
|
```ts trigger/deepgramTranscription.ts
|
|
import { createClient } from "@deepgram/sdk";
|
|
import { logger, task } from "@trigger.dev/sdk";
|
|
|
|
// Initialize the Deepgram client, using your Deepgram API key (you can find this in your Deepgram account settings).
|
|
const deepgram = createClient(process.env.DEEPGRAM_SECRET_KEY);
|
|
|
|
export const deepgramTranscription = task({
|
|
id: "deepgram-transcribe-audio",
|
|
run: async (payload: { audioUrl: string }) => {
|
|
const { audioUrl } = payload;
|
|
|
|
logger.log("Transcribing audio from URL", { audioUrl });
|
|
|
|
// Transcribe the audio using Deepgram
|
|
const { result, error } = await deepgram.listen.prerecorded.transcribeUrl(
|
|
{
|
|
url: audioUrl,
|
|
},
|
|
{
|
|
model: "nova-2", // Use the Nova 2 model for the transcription
|
|
smart_format: true, // Automatically format transcriptions to improve readability
|
|
diarize: true, // Recognize speaker changes and assign a speaker to each word in the transcript
|
|
}
|
|
);
|
|
|
|
if (error) {
|
|
logger.error("Failed to transcribe audio", { error });
|
|
throw error;
|
|
}
|
|
|
|
console.dir(result, { depth: null });
|
|
|
|
// Extract the transcription from the result
|
|
const transcription = result.results.channels[0].alternatives[0].paragraphs?.transcript;
|
|
|
|
logger.log(`Generated transcription: ${transcription}`);
|
|
|
|
return {
|
|
result,
|
|
};
|
|
},
|
|
});
|
|
```
|
|
|
|
## Testing your task
|
|
|
|
To test this task in the dashboard, you can use the following payload:
|
|
|
|
```json
|
|
{
|
|
"audioUrl": "https://dpgr.am/spacewalk.wav"
|
|
}
|
|
```
|