技能 编程开发 Deepgram 本地开发迭代

Deepgram 本地开发迭代

v20260311
deepgram-local-dev-loop
指导配置 Deepgram 本地开发循环,通过环境变量、测试夹具、监听脚本和测试设置,让转录集成可以快速迭代并获得及时反馈。
获取技能
196 次下载
概览

Deepgram Local Dev Loop

Overview

Set up an efficient local development workflow for Deepgram integration with fast feedback cycles.

Prerequisites

  • Completed deepgram-install-auth setup
  • Node.js 18+ with npm/pnpm or Python 3.10+
  • Sample audio files for testing
  • Environment variables configured

Instructions

Step 1: Create Project Structure

mkdir -p src tests fixtures
touch src/transcribe.ts tests/transcribe.test.ts

Step 2: Set Up Environment Files

# .env.development
DEEPGRAM_API_KEY=your-dev-api-key
DEEPGRAM_MODEL=nova-2

# .env.test
DEEPGRAM_API_KEY=your-test-api-key
DEEPGRAM_MODEL=nova-2

Step 3: Create Test Fixtures

set -euo pipefail
# Download sample audio for testing
curl -o fixtures/sample.wav https://static.deepgram.com/examples/nasa-podcast.wav

Step 4: Set Up Watch Mode

{
  "scripts": {
    "dev": "tsx watch src/transcribe.ts",
    "test": "vitest",
    "test:watch": "vitest --watch"
  }
}

Output

  • Project structure with src, tests, fixtures directories
  • Environment files for development and testing
  • Watch mode scripts for rapid iteration
  • Sample audio fixtures for testing

Error Handling

Error Cause Solution
Fixture Not Found Missing audio file Run fixture download script
Env Not Loaded dotenv not configured Install and configure dotenv
Watch Mode Fails Missing tsx Install tsx: npm i -D tsx
API Rate Limited Too many dev requests Use cached responses in tests

Examples

TypeScript Dev Setup

// src/transcribe.ts
import { createClient } from '@deepgram/sdk';
import { config } from 'dotenv';

config(); // Load .env

const deepgram = createClient(process.env.DEEPGRAM_API_KEY!);

export async function transcribeAudio(audioPath: string) {
  const audio = await Bun.file(audioPath).arrayBuffer();

  const { result, error } = await deepgram.listen.prerecorded.transcribeFile(
    Buffer.from(audio),
    { model: process.env.DEEPGRAM_MODEL || 'nova-2', smart_format: true }
  );

  if (error) throw error;
  return result.results.channels[0].alternatives[0].transcript;
}

// Dev mode: run with sample
if (import.meta.main) {
  transcribeAudio('./fixtures/sample.wav').then(console.log);
}

Test Setup with Vitest

// tests/transcribe.test.ts
import { describe, it, expect, beforeAll } from 'vitest';
import { transcribeAudio } from '../src/transcribe';

describe('Deepgram Transcription', () => {
  it('should transcribe audio file', async () => {
    const transcript = await transcribeAudio('./fixtures/sample.wav');
    expect(transcript).toBeDefined();
    expect(transcript.length).toBeGreaterThan(0);
  });

  it('should handle empty audio gracefully', async () => {
    await expect(transcribeAudio('./fixtures/empty.wav'))
      .rejects.toThrow();
  });
});

Mock Responses for Testing

// tests/mocks/deepgram.ts
export const mockTranscriptResponse = {
  results: {
    channels: [{
      alternatives: [{
        transcript: 'This is a test transcript.',
        confidence: 0.99,
        words: [
          { word: 'This', start: 0.0, end: 0.2, confidence: 0.99 },
          { word: 'is', start: 0.2, end: 0.3, confidence: 0.99 },
        ]
      }]
    }]
  }
};

Resources

Next Steps

Proceed to deepgram-sdk-patterns for production-ready code patterns.

信息
Category 编程开发
Name deepgram-local-dev-loop
版本 v20260311
大小 4.12KB
更新时间 2026-03-12
语言