Skip to main content
screenpipe automatically transcribes all audio from your meetings, calls, and conversations. everything runs locally using Whisper.

setup

# start with audio enabled (default)
bunx screenpipe record

# list available audio devices
bunx screenpipe audio list

# capture specific devices
bunx screenpipe record --audio-device "MacBook Pro Microphone" --audio-device "BlackHole 2ch"

choose transcription engine

# local (default) — most private
bunx screenpipe record --audio-transcription-engine whisper-large-v3-turbo

# cloud — faster, requires API key
bunx screenpipe record --audio-transcription-engine deepgram

search transcriptions

# find discussions about a topic
curl "http://localhost:3030/search?q=budget+review&content_type=audio&limit=10"

# get today's meetings
curl "http://localhost:3030/search?content_type=audio&start_time=2026-02-11T00:00:00Z"

# filter by speaker
curl "http://localhost:3030/search?content_type=audio&speaker_ids=1,2"
curl "http://localhost:3030/search?content_type=audio&speaker_name=John"

speaker identification

screenpipe automatically identifies different speakers. manage them via API:
# get unnamed speakers for labeling
curl "http://localhost:3030/speakers/unnamed?limit=10"

# update a speaker's name
curl -X POST http://localhost:3030/speakers/update \
  -H "Content-Type: application/json" \
  -d '{"id": 1, "name": "John Smith"}'

# search speakers by name
curl "http://localhost:3030/speakers/search?name=john"

# merge duplicate speakers
curl -X POST http://localhost:3030/speakers/merge \
  -H "Content-Type: application/json" \
  -d '{"speaker_to_keep_id": 1, "speaker_to_merge_id": 2}'

# find similar speakers
curl "http://localhost:3030/speakers/similar?speaker_id=1"

tips

  • use a good microphone
  • reduce background noise
  • whisper-large-v3-turbo gives best accuracy
  • add --language en if you only speak English (faster)

privacy

  • all transcription runs locally on your device
  • audio files stored in ~/.screenpipe/data/
  • no audio sent to cloud unless you choose deepgram
  • disable with --disable-audio