Audio node

Transcription

On-device speech-to-text from ANY Audio port — microphone, Audio Player, Video Player, even a synth. Live mode streams captions as you speak; Timeline mode pre-transcribes a whole file (≈15× faster than realtime) and serves words in perfect sync with a player's Time output — karaoke-exact and scrub-safe. Emits the formatted transcript, per-word Segments (text, start, duration, confidence, finality, sentence, age) for kinetic text, event pulses (New Word / New Sentence / Corrected), and Speaking / WPM / Pause metrics. SRT and VTT subtitle export from the inspector. Powered by Apple SpeechAnalyzer — 30 locales, models download once through the system, audio never leaves the Mac.

Inputs

PortTypeDefault
AudioLive mode's ear: cable an Audio Input node's Audio Data here (or any audio structure). Timeline mode ignores it — the file rules there.structure—
EnableOff pauses the recognizer (live) or the serve (Timeline). The transcript is kept — re-enabling continues where it was; use Reset to start over.booltrue
ModeLive: the microphone stream, words arrive on the wall clock with recognizer latency. Timeline: a transcribed FILE replayed on the audio clock — exact word times, scrub-safe; connect Source and Time from a player.int0
SourceTimeline: cable a Video/Audio Player's Info output — THE file connection. The player's file is transcribed once and cached; File below is only the manual fallback.structure—
FileTimeline fallback: a manual audio-file path when no player is in the patch. Ignored while Source is connected.string
TimeTimeline: the playhead in seconds — cable the player's Time output so words land exactly when spoken. Scrubbing replays the kinetics deterministically.float0
LocaleRecognition language, e.g. en-US, de-DE, lv-LV. Also decides word-class tagging for the Segments contract — languages without POS support simply serve untagged words.stringen-US
ChunkSeconds of audio fed per analyzer push (default 0.4). Smaller = lower latency but more overhead; larger = smoother CPU, laggier words. Live only.float0.4
CensorOn: the recognizer's built-in profanity masking replaces offensive words with asterisks. Applied at recognition time, both modes.boolfalse
CorrectionsWord dictionary for names the recognizer keeps getting wrong: an array of [from, to] pairs — Array Zip two string lists, e.g. [graffit, Grafit], [aple, Apple]. Matching ignores case and keeps punctuation; the to-side may be several words. Applied to every output, live and Timeline; edits re-correct instantly.structure—
Max WordsThe TOTAL served window in words (volatile tail included; newest win). Caps Segments and Live Text so day-long sessions never grow without bound. 0 = a 5000-word safety cap.int500
ResetRising edge clears the whole transcript and starts a fresh session — sentence and word counters restart. Pulse it, don't hold it high.boolfalse

Outputs

PortType
Textstring
Live Textstring
Sentencestring
Wordstring
Segmentsstructure
New Wordbool
New Sentencebool
Correctedbool
Speakingbool
WPMfloat
Confidencefloat
Pausefloat
Infostructure

How It Works

Live mode (Mode 0): the node drains the connected Audio ring continuously on a background task, converts to the model's format and streams it into Apple's on-device SpeechAnalyzer. Instant volatile guesses appear first (marked final:false, no reliable times, confidence −1) and are later replaced in place by finalized words carrying word-level start/duration from the model — when the finalization changed the text, Corrected pulses, so displays can animate the fix. Live captions inherently trail speech by 1–3 s at finalization; the per-word age field (wall-clock seconds since the word appeared) is what kinetic displays should animate on.

Timeline mode (Mode 1): cable a player's Info output into Source — one file pick in the player feeds playback AND transcription (the manual File path is the fallback for player-less patches) — and the node pre-transcribes the whole file once, faster than realtime. The Time input (cable it from the player's Time output) then serves Text/Word/Segments exactly as of that playhead — zero lag, scrub-safe in both directions, loops follow. In this mode age = Time − start (audio-clock), and NEGATIVE age means the word is still coming — kinetics can pre-stage it.

Speaking comes from the SpeechDetector voice-activity module riding the same analyzer. The Segments output is the kinetic-text contract: an array of dicts {text, index, start, duration, end, confidence, final, sentence, age}, indices absolute and stable.

State is volatile (project load starts empty); Reset clears on a rising edge; locale/censor/source changes rebuild the session. The engine feeds from a private accumulator, so every Audio Input Quality preset works — the ring only has to survive one 40 ms poll.

Parameters in Depth

Audio (structure) — any Audio port. For pristine results transcribe the SOURCE directly (Audio/Video Player cable), not a microphone listening to speakers.

Mode (int dropdown) — Live / Timeline; ports follow the mode. Source (structure) — a player's Info output: the file connection of record in Timeline mode. File (string) — manual fallback path (hidden while Source is cabled). Time (float) — Timeline playhead in seconds.

Locale (string, default en-US) — inspector dropdown lists the 30 supported locales; ⇣ marks models not yet downloaded (they install once, system-wide). Unsupported locales report honestly in Info. Latvian is not currently supported by Apple's model.

Censor — etiquette replacements (f··· style). Max Words — rolling transcript window (hard cap 5000); transcript LENGTH is governed here, never by audio buffer sizes. Reset — rising edge clears.

Outputs: Text (finalized), Live Text (+volatile tail), Sentence, Word, Segments (the contract), pulses New Word/New Sentence/Corrected, Speaking (VAD level), WPM (10 s window), Confidence (last final result), Pause (seconds of silence), Info (status/locale/words/ring warnings).

Use Cases

  • Live captions — Audio Input → Transcription → Live Text → UI Text: on-stage captions with zero cloud.
  • Karaoke — Audio Player Info → Source, Time → Time (Timeline mode); Word → UI Text: one file pick, and the current word lands exactly on the beat of the voice.
  • Voice-triggered visuals — Word → String Compare ("storm") → Magic Storm trigger: say the magic word.
  • Silence dramaturgy — Pause → Smooth → Drone brightness: the longer nobody speaks, the heavier the room gets.
  • Speech-rate energy — WPM → particle turbulence: fast talkers whip the swarm.
  • Subtitles for delivery — Timeline mode + inspector Export SRT/VTT: broadcast-format subtitle files (42 chars, 2 lines) from any media file.

Tips

  • One-frame pulses (New Word) chain perfectly into Hold Trigger for visible flashes.
  • Segments' age is the animation clock: fade words in by age, ghost the final:false tail, snap solid on finalization.
  • Two nodes, two locales, one mic = simultaneous bilingual captions.
  • Brand names and invented words will be misheard — the model formats numerals ("42", "$5") but knows no custom vocabulary yet.
  • Mic quality honesty: room echo and speaker playback degrade recognition heavily; cable the digital source whenever one exists.

Open Transcription in the interactive catalog →

Transcription is one of 381 nodes in Grafit Pro.

Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.

More Audio nodes