Skip to content

feat(workflows): make voice memo runnable - #3714

Closed
tang-vu wants to merge 1 commit into
Osmantic:mainfrom
tang-vu:feat/n8n-voice-memo-workflow
Closed

tang-vu wants to merge 1 commit into
Osmantic:mainfrom
tang-vu:feat/n8n-voice-memo-workflow

Conversation

@tang-vu

@tang-vu tang-vu commented Sep 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • replace the Voice Memo placeholder with an activatable POST /webhook/ods-voice-memo workflow
  • validate multipart audio, content type, title, and optional model selection before inference
  • discover the model IDs actually served by bundled Whisper instead of hard-coding a backend-specific default
  • preserve binary data across model discovery, send a bounded multipart transcription request, and normalize success/error JSON

Why this matters

Voice Memo is already advertised in the workflow catalog with a one-minute setup time, but enabling it previously imported only a manual trigger and sticky note. Users got no webhook and no transcription path. This PR makes the catalog action deliver the runnable local feature it promises.

The invariant is: only multipart field data reaches Whisper, its model must exist in Whisper's live model catalog, binary data survives the discovery branch, and audio/transcript content is not persisted by the workflow.

Overlap check

Searched open and closed upstream PR titles/bodies for n8n voice memo Whisper workflow, reviewed the latest 1,000 open PRs and changed production files, and inspected voice-memo.json history. No PR changes this workflow or implements this scope; its upstream history only contains the repository rename. The earlier runnable Daily Digest, Image Generation, and Email-to-Task PRs operate on different catalog entries and files.

Multipart field configuration was checked against n8n's official HTTP Request node implementation: https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/HttpRequest/V3/HttpRequestV3.node.ts

Test plan

  • python -m pytest test_n8n_voice_memo_template.py test_workflows.py -q ? 48 passed
    • authenticated public enable imports the exact shipped graph and activates its returned n8n ID
    • webhook, branch, merge-input, binary-field, model-discovery, timeout, sanitizer, and terminal error contracts
    • all existing workflow management tests remain green
  • docker run --rm ... n8nio/n8n:2.6.4 import:workflow --input=/workflows/voice-memo.json ? successfully imported 1 workflow using the exact image ODS ships
  • python -m json.tool ods/config/n8n/voice-memo.json
  • python -m compileall -q .../test_n8n_voice_memo_template.py
  • git diff --check

Design and operational notes

  • The webhook relies on ODS's existing n8n exposure policy and Whisper service dependency; no external credential is added.
  • Model discovery makes CPU, NVIDIA, AMD, and Apple-selected Whisper deployments use the model they actually expose.
  • HTTP failures continue to controlled branches so callers receive explicit 503/502 JSON rather than an empty successful transcript.
  • Exact-version CLI import proves n8n 2.6.4 accepts the graph. A live audio transcription was not claimed because no running Whisper model/audio fixture was available for this validation.
  • Rollback restores the catalog placeholder; no database migration or stored memo cleanup is required.

Generated with Codex.

Batch compatibility

@Lightheartdevs

Copy link
Copy Markdown
Collaborator

Thanks for this contribution. We're closing outside-contributor pull requests that have had no activity for 14 days or more, so the queue reflects work that can still land. This isn't a judgment on the change itself. If it's still needed, please rebase onto main and reopen it or open a focused PR. See #7253 for details and the contribution policy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants