Built-in processing latency at 48 kHz
Under a tenth of a second
Audio technology by Misheno
Key Changer Engine is the real-time audio processing engine behind Key Changer.

It changes musical pitch while keeping the singer sounding closer to the same person, runs in the browser with WebAssembly, and is built for real-time playback.
Every engine below starts from the same source audio and uses the same pitch shift.
Switch engines while the excerpt is playing. The playback position stays the same.
Does the shifted vocal still resemble the original singer?
Higher means more similar to the original singer.
Mean ECAPA-TDNN cosine similarity across the 14 non-zero shifts from −7 to +7 semitones, using 13 single-lead vocal excerpts.
Key Changer Engine has the highest overall mean in this benchmark: 0.681, compared with 0.662 for Rubber Band R3, 0.601 for Signalsmith Stretch, and 0.403 for soundtouchjs.
We compare the vocal from each processed excerpt with the original using ECAPA-TDNN, a speaker-recognition model.
The primary analysis uses 13 excerpts with a single lead vocal. Higher cosine similarity means the shifted vocal remains more similar to the original singer.
These scores are similarity values, not percentages or probabilities.
Higher means the shifted vocal remains more similar to the original singer.
For each excerpt, vocals are separated with Demucs. ECAPA-TDNN similarity is measured on overlapping 3-second vocal segments, then averaged first within each excerpt and then across the 13 excerpts at each pitch shift.
The point at 0 semitones is shown as a reference. The overall comparison below uses only the 14 non-zero shifts from −7 to −1 and +1 to +7.
1.0 — more similar to the original singer0.0 — less similar
| Engine | −7 | −6 | −5 | −4 | −3 | −2 | −1 | 0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Key Changer Engine | 0.598 | 0.632 | 0.675 | 0.674 | 0.713 | 0.754 | 0.834 | 0.987 | 0.826 | 0.742 | 0.688 | 0.656 | 0.607 | 0.589 | 0.552 |
| Rubber Band R3 | 0.490 | 0.548 | 0.614 | 0.663 | 0.710 | 0.758 | 0.847 | 0.985 | 0.836 | 0.753 | 0.694 | 0.647 | 0.603 | 0.574 | 0.527 |
| Signalsmith Stretch | 0.471 | 0.500 | 0.534 | 0.548 | 0.592 | 0.676 | 0.816 | 0.981 | 0.814 | 0.688 | 0.613 | 0.576 | 0.545 | 0.530 | 0.513 |
| soundtouchjs | 0.226 | 0.247 | 0.292 | 0.334 | 0.406 | 0.557 | 0.770 | 0.975 | 0.761 | 0.549 | 0.391 | 0.314 | 0.281 | 0.268 | 0.245 |
Changing pitch can also move the spectral shape that gives a voice much of its characteristic timbre.
A vocal-preserving pitch shifter tries to move the note while keeping that timbre closer to its original position.
The measurement below tests that directly.
At −5 and +5 semitones, the Key Changer Engine keeps the measured vocal envelope almost entirely in its original position.
Rubber Band R3 and Signalsmith Stretch also preserve it closely. soundtouchjs, which has no dedicated vocal-preservation mode in this comparison, moves the envelope almost completely with the pitch.
The envelope measurement clearly separates the three formant-aware engines from soundtouchjs, but it does not explain the smaller differences between the Key Changer Engine, Rubber Band R3, and Signalsmith Stretch.
That is why we also measure speaker similarity with ECAPA-TDNN: it responds to a broader set of cues associated with the singer’s identity.
This measurement tracks how far the vocal spectral envelope between 1.5 and 5 kHz moves relative to the requested pitch shift.
0 means the measured timbre stays at its original position.
1 means it moves by the full pitch shift.
The values shown are medians across all 16 excerpts at −5 and +5 semitones.
| Engine | −5 | +5 |
|---|---|---|
| Key Changer Engine | 0.00 | 0.02 |
| Rubber Band Library R3 | 0.01 | 0.04 |
| Signalsmith Stretch | 0.03 | 0.05 |
| soundtouchjs | 1.00 | 1.00 |
Key Changer Engine, Rubber Band R3, and Signalsmith Stretch all keep the measured vocal envelope close to its original position.
The differences between those three engines are small on this metric.
soundtouchjs behaves differently: without a vocal-preservation mode, its measured envelope follows the pitch almost completely in both directions.
Under a tenth of a second
Measured on Apple M3 Pro
The benchmark compares pitch engines under the same input and output conditions.
The source excerpts were selected before any engine measurements were run.
We started with 57 candidate tracks from Pixabay and automatically selected 16 excerpts from 16 different songs.
Each excerpt is 20 seconds long.
The selection criteria were based only on the source audio: vocals had to be present through most of the excerpt and clearly audible over the music.
Source MP3 files were decoded to 48 kHz stereo floating-point WAV before processing.
The ECAPA-TDNN benchmark uses 13 excerpts with a single identifiable lead vocal.
Three of the 16 preselected excerpts contain choral or multiple-voice material:
They are excluded from the primary speaker-similarity analysis because ECAPA-TDNN measures speaker identity and a chorus does not represent one speaker.
The timbre-movement measurement uses all 16 excerpts because it does not depend on identifying one individual singer.
Every excerpt was rendered at every integer pitch shift from −7 to +7 semitones.
The same shift was used for every engine.
The 0-semitone result is included in the graph as a reference but is excluded from the overall ±1…±7 mean.
Demucs 4.1.0 with the htdemucs model was used to separate vocals from accompaniment.
The same separation process was applied to the original source and to every processed output.
SpeechBrain 1.1.1 with the spkrec-ecapa-voxceleb ECAPA-TDNN model was used.
For each source and processed pair, cosine similarity was calculated between the original vocal and the processed vocal.
Only 3-second segments containing vocals were measured.
Segments advance in 1.5-second steps.
Similarity scores are averaged in two stages.
First, the ECAPA-TDNN cosine similarities of the voiced 3-second segments are averaged within each excerpt.
Second, the excerpt scores are averaged across the 13 single-lead excerpts at each pitch shift.
The overall figure shown for each engine is the arithmetic mean of the 14 non-zero per-shift results from −7 through −1 and +1 through +7.
Each excerpt and each non-zero pitch shift therefore contribute equally to the final summary figure.
The timbre measurement tracks the position of the vocal spectral envelope between 1.5 and 5 kHz.
Movement is expressed as a fraction of the requested pitch shift:
The graph shows the median value across all 16 excerpts at −5 and +5 semitones.
October 1, 2026
All engines received:
Rendering was performed offline in Node 24.20.0 using the same block size as Web Audio.
Each engine’s processing latency was removed by alignment before measurement.
The four public demo excerpts are 20 seconds long.
For each track, one gain value is used for every engine variant. It is set so that the loudest variant reaches −1 dBFS peak.
The demo audio on this page is pre-rendered so every engine can be compared from the same playback position.
Every benchmark comparison uses the same source material, pitch shift, processing format, and measurement pipeline.
The four public demo excerpts were selected after measurement; benchmark results use the full defined analysis set.
Key Changer Engine has a fixed processing latency of 94 ms at a 48 kHz sample rate.
Excludes additional latency from the browser, operating system, and audio output device.
Measured in Node 24.20.0 using the same engine WebAssembly build that ships in Key Changer, on an Apple M3 Pro running macOS 26.5.
The test used 48 kHz stereo audio processed in 128-sample blocks.
Key Changer Engine has a fixed processing latency of 94 ms at a 48 kHz sample rate.
This value comes from the engine’s processing design and is not a hardware benchmark.
Additional latency can be introduced by the browser, operating system, and audio output path.
Approximate CPU load was measured using the same engine WebAssembly build that ships in Key Changer.
Where to try it
Key Changer Engine runs inside Key Changer, Misheno’s Chrome extension for real-time pitch control.
Key Changer lets you shift audio playing in a Chrome tab from −12 to +12 semitones, fine-tune by ±50 cents, and keep vocals natural during playback.