Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Technician Class Study Audio (2026–2030)

Spoken-word study files for the FCC Amateur Radio Technician license exam (Element 2), in the style of the old US citizenship-test prep CDs: question, four choices, a pause to answer, then the answer called out and repeated.

This has turned out to be an effective test study apporahc for millions of people.

One MP3 per subelement — 10 files, 3 h 36 m total, in audio/.

File Subelement Questions Exam Qs Length
T1-Commissions-Rules.mp3 Commission's Rules 68 6 41:10
T2-Operating-Procedures.mp3 Operating Procedures 37 3 21:41
T3-Radio-Wave-Propagation.mp3 Radio Wave Propagation 35 3 18:47
T4-Amateur-Radio-Practices.mp3 Amateur Radio Practices 23 2 13:22
T5-Electrical-Principles.mp3 Electrical Principles 50 4 21:12
T6-Electronic-and-Electrical-Components.mp3 Electronic and Electrical Components 46 4 19:23
T7-Practical-Circuits.mp3 Practical Circuits 44 4 22:55
T8-Signals-and-Emissions.mp3 Signals and Emissions 47 4 25:21
T9-Antennas-and-Feed-Lines.mp3 Antennas and Feed Lines 23 2 12:13
T0-Safety.mp3 Safety 36 3 20:04

All 409 questions. The exam draws 35 questions, using the "Exam Qs" count from each subelement; 26 correct is a pass.

What each question sounds like

"Which of the following is part of the Basis and Purpose of the Amateur Radio Service?"
"A. Providing personal radio communications for as many citizens as possible."
        ---- 1.5 seconds of silence ----
"B. Providing communications for international contesting."
        ---- 1.5 seconds of silence ----
"C. Advancing skills in the technical and communication phases of the radio art."
        ---- 1.5 seconds of silence ----
"D. All these choices are correct."
        ---- 4 seconds of silence ----
"The correct answer is C."
"C. Advancing skills in the technical and communication phases of the radio art."

Voice is Zoe (Premium) (macOS, US English female) at 160 wpm. Files carry ID3 title/album/track tags, so they sort correctly as an album on a phone or in a car.

Source of the test questions

Official NCVEC question pool, 2026–2030 Technician Class, Public Release February 19 2026 (the errata revision — it corrects the wording of T1C01, T5A05, T7A09 and T0A10 from the original December 18 2025 release). Valid for exams from July 1 2026 through June 30 2030. This pool is in teh public domain.

Downloaded from https://ncvec.org/index.php/2026-2030-technician-question-pool and kept in pool/ alongside the parsed JSON and its SHA-256.

Known limitation: the diagram questions

12 questions ask about components in figures T-1, T-2 and T-3 (a schematic, a block diagram and a component diagram). Audio alone cannot convey these — the images are in pool/Technician-Diagram-T-*.jpg; look at them while those questions play, or just memorize the answers.

Regenerating

python3 parse_pool.py pool/tech-2026-2030-feb19-2026.docx \
    -o pool/technician-2026-2030.json --expect 409
python3 build_audio.py pool/technician-2026-2030.json -o audio --voice "Zoe (Premium)"

A full rebuild takes about two minutes. You only need it to change the voice, pacing or pause length — the finished MP3s are committed, so a clone is ready to listen to immediately. The pool .docx, the parsed JSON and the diagrams are committed too, so any rebuild reproduces the same content exactly.

Useful options

Option Effect
--voice "Ava (Premium)" different voice (say -v '?' lists installed ones)
--rate 140 slower speech (default 160 wpm)
--pause 6 longer answering pause (default 4 s)
--only T1,T5 rebuild just those subelements
--limit 3 short sample for auditioning settings
--ids announce the pool id ("T one A zero one") before each question
--gap-between-answers 1000 tighter spacing between choices (default 1500 ms)
--group-titles also read each group's syllabus line
--script-only write the spoken text without synthesizing

Voices: these files use Zoe (Premium), downloaded via System Settings → Accessibility → Spoken Content → System Voice → Manage Voices. Pass the name exactly as say -v '?' prints it — a downloaded voice registers under a decorated name, and Ava and Ava (Premium) are two different voices that sound different. build_audio.py refuses an unknown name rather than letting say fall back to the system default, and accepts a bare name only when it resolves to exactly one voice.

Other calm female options: Ava (Premium), Allison, Samantha (compact, no download). Any voice must honor the [[slnc]] and [[char LTRL]] embedded commands — check a new one with:

say -v NAME -o /tmp/a.aiff "One. [[slnc 4000]] Two."   # must be ~4 s longer than without
say -v NAME -o /tmp/b.aiff "[[char LTRL]]c[[char NORM]]"   # must be short, and not say "Capital"

How it works

  • parse_pool.py reads the official .docx directly and emits structured JSON. It keys off the pool's fixed 7-line question blocks, so the cover page, errata list and syllabus are ignored without hardcoding line offsets.
  • build_audio.py turns that JSON into a say script and renders it. Pauses use [[slnc N]]; answer letters use [[char LTRL]] in lowercase, which forces the letter name — uppercase makes the voice announce "Capital A". normalize_for_speech() rewrites the pool's notation so it reads aloud correctly: 146.52 MHz → "megahertz", 4:1 → "4 to 1", P = I2 x E → "P equals I squared times E", 5/8 → "five eighths", figure T-1 → "figure T 1", VHF/UHF → "VHF UHF", -3 dB → "minus 3 decibels".
  • The spoken scripts are kept in audio/scripts/ — read them to check exactly what the voice will say, or hand-edit and re-render a single file.

Tests

python3 -m unittest -v test_hamaudio

33 tests covering the parser (including malformed blocks and wrapped answers), every speech-normalization rule, the question layout, and the real pool: 409 questions, unique ordered IDs, group counts matching the syllabus, the four errata corrections present, and no unspoken symbols left in any question.

The rendered audio was verified with ffmpeg silencedetect: every file contains exactly one 4-second silence per question (measured 4.00–4.26 s).

About

2026-2030 Technician test audio learning files

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages