From wispr-pack
Provides Wispr Flow examples: Python REST for audio transcription and TypeScript WebSocket for real-time microphone streaming to get developer-aware dictation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/wispr-pack:wispr-hello-worldThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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.
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')}")
// 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}`);
}
};
Partial: implement a function that
Final: Implement a function that calculates the Fibonacci sequence using dynamic programming.
| 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 |
Proceed to wispr-local-dev-loop for development workflow.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin wispr-packGuides Wispr Flow voice-to-text API integration via WebSocket for dictation, streaming, or voice apps, with REST fallback, auth, and error handling.
Implements real-time streaming transcription with Deepgram WebSocket API. Captures microphone audio, handles interim/final results, utterance detection for voice AI and live captioning apps.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.