Written by Lucas Reed | Last updated: June 2026
What This Page Explains
This page documents the exact technical mechanism behind the Deep Voice Test on DeepVoiceTest.com. It explains what the tool measures, why the pipeline is configured specifically for low-frequency voice detection, how each stage works, what accuracy the result achieves in the bass and baritone range, and what the tool cannot determine. For plain-language answers about what your result means, see the FAQ.
What Fundamental Frequency Means for Deep Voices
The fundamental frequency (F0) of a voice is the rate at which the vocal folds vibrate during voiced sound production, measured in Hertz (Hz). For deep voices — bass and baritone singers, and men with naturally low speaking voices — F0 sits at the low end of the human vocal range, where the physical characteristics of the vocal folds are most directly audible.
Deep voices are produced by vocal folds that are longer and heavier than average. Adult male vocal folds range from approximately 17–25 mm in length. Bass singers typically have folds toward the longer end of this range, vibrating more slowly and producing a lower F0 as a result. The speaking F0 of a bass voice can reach as low as 80 Hz — a frequency so low that it approaches the lower limit of what most consumer microphones capture with flat frequency response.
Reference F0 ranges for deep voice classification:
| Voice Classification | Typical Speaking F0 | Typical Singing F0 Range |
|---|---|---|
| Bass | 80–150 Hz | 82–294 Hz (E2–D4) |
| Bass-baritone | 90–165 Hz | 98–349 Hz (G2–F4) |
| Baritone | 100–180 Hz | 110–392 Hz (A2–G4) |
| Tenor (reference) | 130–200 Hz | 131–523 Hz (C3–C5) |
These ranges are drawn from acoustic phonetics research. Individual variation is normal and expected within and around these boundaries.
Why Low-Frequency Detection Requires Different Configuration
Standard browser-based pitch detectors are designed for the full vocal range — approximately 80–1,100 Hz. To cover this range without excessive computational cost, they typically use an FFT window of 2048 samples. At a 44,100 Hz sample rate, this gives a frequency resolution of:
Frequency resolution = Sample rate ÷ FFT size = 44,100 ÷ 2048 ≈ 21.5 Hz per bin
For a soprano voice at 880 Hz, a resolution of 21.5 Hz is entirely adequate — the error is less than 2.5% of the fundamental. For a bass voice at 85 Hz, the same resolution represents a potential error of more than 25% of the fundamental. This is why tools configured for the full range systematically underperform for deep voices.
DeepVoiceTest.com uses a 4096-sample FFT window, giving:
Frequency resolution = 44,100 ÷ 4096 ≈ 10.8 Hz per bin
For a bass voice at 85 Hz, this reduces the maximum bin-level error to approximately 12.7% — still not sub-Hz precision, but a meaningful improvement for the detection range where deep voices live. The autocorrelation pipeline is additionally configured with a lag range specific to the 80–330 Hz band, reducing computational load and the risk of half-period detection errors that are more common in the low F0 range.
The Detection Pipeline — Step by Step
Step 1 — Microphone Permission and MediaStream Capture
The browser requests microphone permission via the getUserMedia() API. Once granted, a live MediaStream is opened at the system’s native sample rate — typically 44,100 Hz or 48,000 Hz. This stream is connected to a MediaStreamAudioSourceNode within an AudioContext.
The microphone stream is never recorded, never stored in any persistent form, and never transmitted over the network. For full details on audio data handling, see the Data Security page.
Step 2 — FFT Analysis via AnalyserNode
The MediaStreamAudioSourceNode feeds into an AnalyserNode configured with an FFT size of 4096 samples. The AnalyserNode performs a Fast Fourier Transform on the incoming audio, converting the time-domain waveform into a frequency-domain spectrum at regular intervals.
| Parameter | Value | Effect |
|---|---|---|
| FFT size | 4096 samples | Higher frequency resolution for low F0 |
| Frequency resolution | ~10.8 Hz per bin at 44,100 Hz | Improved accuracy in 80–330 Hz range |
| Time resolution | ~92.9 ms per frame | Longer window — trade-off for resolution |
| Smoothing constant | 0.85 | Reduces frame-to-frame jitter in display |
The frequency spectrum output is an array of amplitude values from 0 Hz to the Nyquist frequency (22,050 Hz at 44,100 Hz sample rate). The low-frequency region — 80–330 Hz — is the primary analysis target.
Step 3 — Autocorrelation-Based F0 Detection
Raw FFT peak detection is not used as the primary detection method. In bass and baritone voices, upper harmonics (2×F0, 3×F0, 4×F0) are frequently stronger in amplitude than the fundamental, particularly in chest voice at higher pitches within the baritone range. A naive FFT peak detector would return a harmonic rather than the true F0 in these cases.
The tool applies autocorrelation-based F0 detection, following the YIN algorithm principle (de Cheveigné and Kawahara, 2002). Autocorrelation computes the similarity of the audio signal with a delayed version of itself across a range of lag values. The lag corresponding to the period of the fundamental — the time for one complete vocal fold vibration cycle — produces the strongest correlation.
For the 80–330 Hz target range, the autocorrelation lag search is bounded:
Minimum lag = Sample rate ÷ Maximum F0 = 44,100 ÷ 330 ≈ 134 samples
Maximum lag = Sample rate ÷ Minimum F0 = 44,100 ÷ 80 ≈ 551 samples
Bounding the lag search to this range prevents the algorithm from returning a half-period error (a result of 2×F0) or a false low result caused by sub-80 Hz background noise.
The F0 is calculated from the peak autocorrelation lag:
F0 (Hz) = Sample rate (Hz) ÷ Lag at peak correlation (samples)
Worked example: If the peak autocorrelation lag is found at 368 samples at a 44,100 Hz sample rate:
F0 = 44,100 ÷ 368 = 119.8 Hz
119.8 Hz corresponds to approximately B2 in standard equal temperament tuning (A4 = 440 Hz) — a typical baritone speaking pitch.
Step 4 — Musical Note Mapping
The detected F0 in Hz is mapped to the nearest musical note using the equal temperament formula:
Semitones from A4 = 12 × log₂(F0 ÷ 440)
Worked example: For F0 = 119.8 Hz:
Semitones from A4 = 12 × log₂(119.8 ÷ 440) = 12 × log₂(0.2723) = 12 × (−1.877) ≈ −22.5
−22 semitones from A4 = B2. Cents deviation:
Cents = 1,200 × log₂(119.8 ÷ 123.47) = 1,200 × (−0.0215) ≈ −25.8 cents
Display shows: B2 (−26 cents) — the nearest note and deviation in cents.
Step 5 — Deep Voice Classification and Result Display
The measured F0 is compared against the bass, bass-baritone, and baritone reference ranges. The result is displayed with:
- F0 in Hz
- Nearest musical note with cents deviation
- Voice depth classification against the reference table
- A contextual note on measurement conditions where relevant
Results significantly outside the expected deep voice range — above 330 Hz or below 70 Hz — are flagged with a note directing users to the Troubleshooting page.
Accuracy in the Deep Voice Range
Under typical conditions — a quiet room, a sustained vowel at a comfortable low pitch, and a microphone with reasonable low-frequency response — the tool achieves F0 detection accuracy of approximately ±5–10 Hz in the 80–200 Hz range.
Accuracy is specifically limited in the deep voice range by:
Consumer microphone low-frequency roll-off. Most built-in laptop microphones and budget USB microphones have a frequency response that attenuates signals below 100–150 Hz. This means the captured fundamental of a very low bass voice (80–100 Hz) is weaker relative to its harmonics, making the autocorrelation peak less distinct. Results for voices below 100 Hz obtained with consumer microphones should be treated as estimates with ±10–15 Hz uncertainty.
Half-period detection errors. At very low F0 values — below approximately 90 Hz — the autocorrelation function can produce a secondary peak at double the true period (half the true F0). The bounded lag search reduces this risk but does not eliminate it entirely. If your result seems to be exactly double or half what you expect, see the Troubleshooting page.
OS noise suppression. Automatic gain control and noise suppression applied by the operating system can attenuate low-frequency components of the voice signal disproportionately, as these processing pipelines are designed to remove low-frequency ambient noise — which occupies the same frequency range as deep voice fundamentals.
What This Tool Cannot Determine
Voice type classification from a single measurement Bass, bass-baritone, and baritone classification depends on full singing range, passaggio locations, and vocal timbre — not speaking F0 alone. The tool provides a reference comparison, not a classification verdict.
The contribution of vocal tract resonance to perceived voice depth A voice can sound deeper than its F0 suggests if the vocal tract is large and the formant frequencies are low. Perceived voice depth is partly F0 and partly resonance. This tool measures F0 only.
Vocal health or fold pathology Irregular F0 patterns, aperiodic phonation, and abnormal frequency instability can indicate voice conditions. This tool is not a clinical screening instrument and cannot detect, diagnose, or rule out any vocal fold condition.
Whether a low F0 is natural or deliberately produced A person can temporarily lower their speaking pitch below their habitual range. The tool measures the F0 of the sound produced — it cannot determine whether that F0 reflects the speaker’s natural habitual pitch.
Related Pages
- FAQ — plain-language answers about deep voice measurement results
- Troubleshooting — what to do if the tool fails to detect, shows a result that seems too high or too low, or produces half-period errors
- Data Security — how microphone audio is processed and why it never leaves your device
- About DeepVoiceTest.com — who runs this site and why it was built
Written by Lucas Reed, founder of DeepVoiceTest.com. Last updated: June 2026.