Skills Development Wispr Flow Voice Transcription Example

Wispr Flow Voice Transcription Example

v20260423
wispr-hello-world
This guide demonstrates how to integrate Wispr Flow for robust voice-to-text transcription. It covers two primary methods: asynchronous REST calls for transcribing audio files, and real-time WebSocket streaming for live microphone input. Wispr specializes in developer-context-aware dictation, making it ideal for building complex voice-powered applications, especially those involving code or technical jargon.
Get Skill
111 downloads
Overview

Wispr Flow Hello World

Overview

Stream audio to Wispr Flow and receive real-time transcription. Wispr specializes in developer-context-aware dictation -- it understands code terms, CLI commands, and technical jargon.

Instructions

Step 1: Record and Transcribe (REST)

import requests, os

# Transcribe an audio file
with open("voice-memo.wav", "rb") as audio:
    response = requests.post(
        "https://api.wisprflow.ai/api/v1/transcribe",
        headers={"Authorization": f"Bearer {os.environ['WISPR_API_KEY']}"},
        files={"audio": audio},
        data={"language": "en", "context": "programming"},
    )

result = response.json()
print(f"Text: {result['text']}")
print(f"Confidence: {result.get('confidence', 'N/A')}")

Step 2: Real-Time Streaming (WebSocket)

// Stream microphone audio to Wispr Flow
const ws = new WebSocket('wss://api.wisprflow.ai/api/v1/ws');

// Browser audio capture
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const context = new AudioContext({ sampleRate: 16000 });
const source = context.createMediaStreamSource(stream);

const processor = context.createScriptProcessor(4096, 1, 1);
source.connect(processor);
processor.connect(context.destination);

processor.onaudioprocess = (event) => {
  const audioData = event.inputBuffer.getChannelData(0);
  // Convert Float32Array to Int16Array for transmission
  const int16 = new Int16Array(audioData.length);
  for (let i = 0; i < audioData.length; i++) {
    int16[i] = Math.max(-32768, Math.min(32767, audioData[i] * 32768));
  }
  ws.send(int16.buffer);
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  if (data.type === 'partial') {
    console.log(`Partial: ${data.text}`);
  } else if (data.type === 'final') {
    console.log(`Final: ${data.text}`);
  }
};

Output

Partial: implement a function that
Final: Implement a function that calculates the Fibonacci sequence using dynamic programming.

Error Handling

Error Cause Solution
Garbled text Wrong sample rate Use 16kHz mono PCM
No results Silence or noise Check microphone input
High latency REST endpoint Use WebSocket for streaming

Resources

Next Steps

Proceed to wispr-local-dev-loop for development workflow.

Info
Category Development
Name wispr-hello-world
Version v20260423
Size 2.87KB
Updated At 2026-04-28
Language