Plot Pitch
Eyeball a clip's intonation contour
- audio
- graph_image
Pitch - the fundamental frequency (F0) of a voice, rising and falling over time - carries a huge amount of what makes speech sound natural: the lift at the end of a question, the flatness of a monotone read, emphasis on a particular word. Reading those numbers as a table tells you nothing useful. Seeing them as a contour over time tells you immediately whether a clip's intonation looks like normal speech or something's off. That's what this node draws.
How it works
It runs a pitch-tracking pass across the clip to estimate F0 at each point in time, then plots that estimate as a line over the duration of the audio and hands the result back as an image. There's nothing else going on - no smoothing options, no algorithm choice, no output besides the picture.
The inputs and outputs that matter
audio- the only input. Nothing to configure.graph_image(output,IMAGE) - the pitch contour, rendered.
How to install it
Via ComfyUI Manager: search ComfyUI-speech-dataset-toolkit, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kale4eat/ComfyUI-speech-dataset-toolkit
cd ComfyUI-speech-dataset-toolkit
pip install torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt
No extra dependencies beyond the pack baseline.
Common issues & troubleshooting
Line is flat or drops to zero in places for a clip you know has speech. That's expected for unvoiced or silent stretches - consonants without vocal-cord vibration, pauses, background noise - pitch tracking has nothing meaningful to report there, so gaps or a zero baseline in those regions aren't a malfunction.
Contour looks noisy or jumpy on a real recording. Pitch trackers are generally less reliable on noisy audio or overlapping speakers - there's nothing to tune on this node itself since it exposes no parameters, so the fix is upstream: clean up or isolate the source audio before plotting, not adjusting anything here.
Want to compare pitch across several clips. This node plots one clip at a time with no overlay or batch mode - run it once per clip and compare the resulting images side by side rather than expecting a combined chart out of a single call.
Plotted a non-speech clip (music, ambient noise) and the contour looks meaningless. Expected - pitch tracking here is built around the assumption of a single voice, and it has no idea what to do with polyphonic music or non-vocal sound. A jagged, nonsensical-looking contour on a non-speech input isn't a bug in the node.
Why bother with this over just looking at a spectrogram. A spectrogram shows you all the frequency content at once, which is more information but harder to read intonation out of at a glance. This node isolates just the one number that matters for prosody - the fundamental frequency - into a single clean line, which is faster to eyeball when what you actually care about is whether a TTS output sounds flat and robotic or has natural pitch variation.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| graph_image | IMAGE | — |