Claude-code-plugins-plus-skills wispr-hello-world
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/wispr-pack/skills/wispr-hello-world" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-wispr-hello-world && rm -rf "$T"
manifest:
plugins/saas-packs/wispr-pack/skills/wispr-hello-world/SKILL.mdsource content
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.