Skip to content

cjmartin/Voice-Memo-Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎙️ Voice Memo Manager

This app helps you turn iOS Voice Memos into clean, readable transcripts using OpenAI's Whisper and GPT models.

✨ Features

  • 🎙 Lists and previews all .m4a voice memos from macOS Voice Memos
  • ✅ Select files to transcribe using a web UI
  • ✨ Transcribes selected audio files using OpenAI Whisper
  • 🧼 Automatically generates a cleaned version of each transcript using GPT-4
  • 🗣️ Optionally generates a speaker-attributed version (currently using a simple heuristic, and disabled because it's not very good)
  • 📄 Saves multiple transcript versions per memo:
    • raw: Original Whisper output
    • cleaned: GPT-enhanced grammar/punctuation
    • speakers: Speaker-attributed version (disabled)
    • prompt-*: Custom prompted versions (planned)
  • 📁 Assign memos to projects (groupings) for organization
  • 🔊 Audio playback directly in the browser
  • ⚡ Uses .env for secure, local API key storage
  • 📤 Export cleaned transcripts of selected memos to a single, copyable text output

🛠 Requirements

  • macOS with access to your Voice Memos at:
    ~/Library/Group Containers/group.com.apple.VoiceMemos.shared/Recordings/
    
  • Python 3.10+
  • An OpenAI API key (get one here)

🚀 Setup

  1. Clone or download this repository

  2. Run the setup script:

    ./setup.sh
  3. Add your API key to the .env file:

    OPENAI_API_KEY=sk-...
    
  4. Start the app:

    source venv/bin/activate
    python app.py
  5. Open your browser at: http://localhost:5000

✨ How It Works

The app scans your macOS Voice Memos folder and displays your recordings in a clean interface. You can:

  • ✅ Select recordings to transcribe
  • 📝 Automatically get raw + cleaned transcripts
  • 🗂️ Add files to named projects for organization
  • 🔍 View and switch between available transcript versions
  • 📤 Export transcripts as copyable text to use elsewhere

📁 Transcripts

Each transcript is saved as .txt files in the transcripts/ directory. Possible versions:

  • filename.raw.txt – Raw Whisper output (basic formatting only)
  • filename.cleaned.txt – GPT-4 cleaned output
  • filename.speakers.txt – Speaker-attributed version (optional)
  • filename.prompt-custom.txt – Custom prompt outputs (coming soon)

🗂️ Organizing Memos

You can create and assign projects to your memos. Files can be added to projects individually or in bulk. An "Uncategorized" section is shown by default for unassigned files.

Project data is saved in projects.json.

📤 Exporting

You can select any number of memos and click Export Selected. This will:

  • Gather the cleaned transcript of each selected memo
  • Sort them by date (oldest to newest)
  • Combine them into a single text block
  • Open a modal where you can copy the entire export for use elsewhere

🧠 Assistant Instructions in Memos

If you sometimes address your AI assistant by name (e.g. "Cheshire, remind me to..." or "Cheshire, make a note..."), you can tell the app to recognize those instructions during cleaning.

To enable this:

  1. Add your assistant name to .env:
ASSISTANT_NAME=Cheshire
  1. The cleaner will then treat lines beginning with Cheshire, as meta-instructions — not part of the spoken transcript — and will preserve them clearly, without misinterpreting them as part of the dialogue.

If ASSISTANT_NAME is not set, the cleaner behaves as usual.

🔒 Security

  • Your API key is stored locally in .env
  • .env is ignored by Git via .gitignore

🗣 Speaker Diarization (Disabled)

Right now, speaker-attributed transcripts use a simple pause-based heuristic, which is limited in accuracy.

To improve speaker detection, future versions may integrate:

  • pyannote-audio — diarization via embeddings
  • WhisperX — adds diarization to Whisper
  • Hosted APIs like AssemblyAI or Deepgram with native speaker support

The button for generating speaker transcripts is currently commented out in the UI, pending these improvements.

⚠️ Known Limitations

  • Transcripts are only as accurate as Whisper + GPT can infer.
  • Lines like “Cheshire, remind me…” require the assistant awareness mode to be enabled for best results.
  • Speaker attribution is currently based on pauses between segments — diarization support (e.g. WhisperX, pyannote) is planned for later.

🙌 Built With

🧪 License

MIT — modify, share, and build on it freely

About

Voice Memo Manager is a personal assistant-style web app for organizing, transcribing, and processing voice memos. It uses OpenAI's Whisper for transcription and GPT for cleanup and formatting. Features include project tagging, multi-version transcripts (raw, cleaned, speaker-attributed), selective exports, and assistant-aware prompts.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors