DTMF Signal Lab
DTMF expresses a 4×4 keypad symbol by sounding one low and one high frequency together. This page uses the nominal frequency groups in ITU-T Q.23 (11/1988) and the character layout in V.19 to synthesize experimental tones and search an uploaded file for the same pairs. The analyzer checks eight Goertzel components in 30 ms windows, level, group dominance, tone duration and spacing. It is for learning and file inspection, not certification of telephone-line equipment or network conformance.
Key features
- Generate all 16 keys (1–9, 0, *, # and A–D) using the 697/770/852/941 Hz and 1209/1336/1477/1633 Hz groups.
- Choose 40–1000 ms tones, 25–1000 ms gaps, 8–48 kHz sample rate and level, then save a mono 16-bit PCM WAV.
- Scan local audio in 30 ms windows every 10 ms, comparing the nominal pair, signal share, component dominance and level.
- Adjust minimum tone and gap length, minimum level and spectral gates; inspect why a candidate was rejected.
- Export each detected start/end span and a heuristic score to CSV or JSON.
How to use
- For synthesis, type keypad symbols or add them with the 16 buttons and set tone and gap durations.
- Generate the tones, listen in the browser, or download the WAV file.
- For detection, choose a local audio file or load the real WAV example.
- Review the acceptance thresholds, then analyze the file and inspect symbols, time spans and rejected candidates.
- If necessary, adjust length, spacing and spectral thresholds, analyze again, then save CSV or JSON.
Use cases
- Compare the two frequencies and audible sound of each of the 16 keypad symbols.
- Find the order and approximate timing of keypad tones in a recorded test file.
- Experiment with why a short tone, a lone sine wave or noise is rejected.
Frequently asked questions
Which frequency table does this use?
It uses the low group 697, 770, 852 and 941 Hz and high group 1209, 1336, 1477 and 1633 Hz in ITU-T Q.23 (11/1988), together with the 4×4 symbol assignment reproduced in V.19. It synthesizes and searches the nominal frequencies; it does not validate all frequency tolerances or electrical requirements of a telephone network.
Why might a 30 ms tone be missed?
The analyzer advances a 30 ms window by 10 ms and accepts only runs of at least 40 ms by default. A short signal can have too little overlap near its edges. V.19 describes more than 30 ms of tone and at least 25 ms of silence in its modem context; this page is neither that receiver implementation nor a conformance test.
Can speech or noise produce a false key?
Yes. The level, energy share of both groups, winner dominance, balance between the pair and duration filters reduce accidental matches, but they do not guarantee speech protection or telephone-network performance. Listen to the source and inspect the time span.
Which files and limits apply?
Files up to 8 MiB can be WAV, MP3, OGG, FLAC, M4A or another format the browser actually decodes. Decoded audio must be at most 30 seconds, mono or stereo, 8–96 kHz and at most 2.88 million frames. Codec support varies by browser.
Is the displayed score a probability?
No. It is an internal 0–1 heuristic combining frequency energy share and dominance across analysis windows. It is not a calibrated probability or a standards quality metric; weak, compressed or noisy recordings may be missed or misread.
Is the audio or dialed sequence sent to a server?
No. Synthesis, decoding, frequency analysis and downloads happen in the browser. CSV and JSON contain the detected characters, times and settings, not the original audio samples.
Privacy
Entered symbols and selected audio stay in browser memory. This tool neither uploads the file to a server nor sends a telephone signal. Downloaded WAV, CSV and JSON files remain on your device.
Comments & questions