Skip to content

fb-messenger-voice-transcriber

When someone sends you a voice message on Facebook Messenger, this tool listens to it and writes down exactly what they said. The written words show up right next to the voice message, so you can read it instead of playing the audio out loud. It is perfect for when you are in a meeting, on a call, or just do not feel like listening to a two-minute voice note.

  • When someone sends a voice message and you want text instead of audio — e.g., client notes, voice memos, dictated instructions.
  • When you do not want to play audio out loud (in a coffee shop, on a call, in a meeting).
  • When you need to search old voice notes — transcripts are cached, so you can scroll back and find what was said.
  1. Load unpacked from ~/apps/fb-messenger-voice-transcriber/extension/ at chrome://extensions.
  2. Click the popup and paste your OpenAI API key (sk-...).
  3. Enable the auto-transcribe toggle if you want all new voice notes transcribed automatically.
  4. Navigate to messenger.com. New voice notes get transcribed as they appear. Or click “Transcribe Latest Voice Note” in the popup for manual one-shot transcription.
RequirementWhere
OpenAI API key with Whisper accessextension popup → stored in chrome.storage.local
Manifest permissionsactiveTab, storage, scripting, tabCapture, offscreen, tabs; hosts: messenger.com, facebook.com/messages, fbcdn + fbsbx image domains, api.openai.com, localhost:9999
Offscreen documentrequired by Manifest V3 for audio API access
  • Repo: ~/apps/fb-messenger-voice-transcriber/
  • Entry files: extension/manifest.json, popup.html, popup.js, background.js, content.js
  • Debug helpers: log-server.py on localhost:9999, logs/ directory with event traces
  • Build 33. Timestamp filter added in Build 31 prevents duplicate processing of the same voice note — without it, the MutationObserver would fire repeatedly on the same element.
  • Offscreen document requirement. Because Manifest V3 deprecates background pages, audio API calls have to happen in an offscreen document. This adds a layer of indirection in the code.