Skip to content

[Suggestion] Phoenix LiveView real-time streaming transcription (Elixir) #269

@deepgram-robot

Description

@deepgram-robot

What to build

An Elixir/Phoenix LiveView example that streams microphone audio to Deepgram's real-time STT API and displays live transcription results, leveraging LiveView's built-in WebSocket infrastructure for a seamless real-time experience with zero custom JavaScript.

Why this matters

Phoenix LiveView is purpose-built for real-time web applications and has a rapidly growing developer community. Its server-rendered model with bidirectional WebSocket communication is an ideal architectural fit for streaming transcription — the LiveView socket can proxy audio to Deepgram and push transcript updates back to the client with minimal JavaScript. No speech AI provider has a Phoenix/Elixir example, making this a first-mover opportunity that would attract attention in the Elixir community.

Suggested scope

  • Language/framework: Elixir, Phoenix 1.7+, LiveView
  • Deepgram APIs: Streaming STT (WebSocket)
  • Features: Client-side mic capture (JS hook), audio streaming through LiveView socket to server, server-side Deepgram WebSocket connection via GenServer, live transcript display with LiveView updates
  • Structure: LiveView page with a small JS hook for getUserMedia, GenServer managing the Deepgram WebSocket, PubSub for transcript distribution
  • Complexity: Moderate — demonstrates Elixir's concurrency model for audio pipeline management

Acceptance criteria

  • Runnable with minimal setup (clone, add API key, mix phx.server)
  • README explains the pattern clearly
  • Uses direct WebSocket connection to Deepgram API (no SDK required for Elixir)
  • Leverages OTP patterns (GenServer/Task for WebSocket management)
  • Handles connection lifecycle and cleanup properly
  • Minimal JavaScript — only what's needed for microphone capture

Raised by the DX intelligence system.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions