Repository guide · source walkthrough · v2
openai / whisper · Source walkthrough
This walkthrough guides developers through openai/whisper using static analysis of revision 86098128c0b4f24f0e2aa2994de830614b474227. It details file orientation, entrypoint execution flows, core library modules, and static coupling points.
- Original repository
- openai/whisper
- License
- MIT · open-source license
- Analyzed revision · last verified
- 86098128c0b4f24f0e2aa2994de830614b474227 ·
openai/whisper: source walkthrough | reading the source
Terms used on this page
- Entrypoint record
- A file the analyzer marks as a place where execution can start. When it carries a __main__ guard excerpt, the file contains an if __name__ == "__main__": block and the excerpt shows what that block calls; without an excerpt, the file was flagged by its name only.
- Bounded static execution path
- A call chain reconstructed from the source code without running it, stopped after a fixed number of steps. It shows how far the code can be followed on paper, not what happens at run time.
- Unresolved boundary
- Where a static path stops because the next call goes into an external library or cannot be resolved without running the code. It marks the edge of this analysis, not a defect in the repository.
- Static relations
- Calls and imports found in the source. "External or unresolved" relations point outside the analyzed files.
- Module role
- The analyzer's label for a file, inferred from how many calls go in and out (for example core, entry/orchestration, leaf). It describes a position in the call graph, not the authors' design.
- Test-like files
- Files whose names or locations look like tests. This analysis counts them; it does not run them.
- Observed · inferred · author-claimed · unresolved
- How each statement is supported: read directly from the analyzed files; derived by the analyzer from them; stated by the repository's authors (metadata, README); or not established by this analysis.
- Verified
- Two uses on these pages. In an analyzer record ("verified provenance", "a verified entrypoint") it means the record was read directly from the analyzed files, which these guides call observed; for an entrypoint, the __main__ guard text is present. Since the analyzer fix of 2026-10-04, a file that only has an entrypoint-like name such as cli.py or main.py is recorded as inferred; guides analyzed before that still call such a file verified, and it is still only a guess about how the file is used. It does not mean the code was run or tested. "Last verified" is the date the guide last passed the lab's checks against the analysis record of the stated revision; it is not a review of the repository itself.
How to Use This Walkthrough
This walkthrough outlines a sequential reading order for inspecting the analyzed revision 86098128c0b4f24f0e2aa2994de830614b474227. Every line range cited in this guide refers strictly to the files of that revision. The analyzer breaks files into line-addressable semantic code blocks, which serve as reference units. Each block description, role, and summary reflects the analyzer's static inferences rather than runtime proof.
Stop 1: Orientation
Begin reading at the primary file container identified by the analyzer orientation lesson:
whisper/transcribe.py:1-623: modulewhisper/transcribe.py. This file-level block represents the analyzed source file whisper/transcribe.py and provides the file-level container for its code.
Stop 2: Execution Story
Trace execution starting from the detected main entrypoint in whisper/transcribe.py. Five of the analyzer's twelve bounded execution paths are shown from this guard, passing to cli before encountering unresolved library boundaries such as argparse calls.
whisper/transcribe.py:622-623: main_guard__main__. This block is the direct-execution guard gating code executed directly rather than imported.whisper/transcribe.py:517-619: functioncli. Function-like block encapsulating an operation connecting to 68 downstream call or import relations.
Stop 3: Core Code
Only 2 of the analyzer's 8 core-code lesson blocks lie within library code, while the remaining 6 blocks reside in test files (tests/conftest.py:7-8, tests/conftest.py:12-14, tests/test_audio.py:8-19, tests/test_normalizer.py:11-82, tests/test_normalizer.py:85-89, and tests/test_normalizer.py:92-104). To inspect core functionality, the AI Frontier lab deterministically selected four connected modules based on static call degree.
whisper/model.py acts as a service/core candidate with 22 incoming and 20 outgoing calls:
whisper/model.py:259-352: classWhisper. Groups related behavior under one class boundary.whisper/model.py:81-146: classMultiHeadAttention. Groups related behavior under one class boundary.
whisper/timing.py acts as a service/core candidate with 16 incoming and 9 outgoing calls:
whisper/timing.py:279-388: functionadd_word_timestamps. Connects to 30 downstream call or import relations.whisper/timing.py:163-242: functionfind_alignment. Connects to 37 downstream call or import relations.
whisper/decoding.py acts as a service/core candidate with 11 incoming and 13 outgoing calls:
whisper/decoding.py:508-789: classDecodingTask. Groups related behavior under one class boundary.whisper/decoding.py:301-404: classBeamSearchDecoder. Groups related behavior under one class boundary.
whisper/transcribe.py acts as an entry/orchestration candidate with 3 incoming and 18 outgoing calls:
whisper/transcribe.py:38-514: functiontranscribe. Connects to 99 downstream call or import relations.whisper/transcribe.py:517-619: functioncli. Connects to 68 downstream call or import relations.
Stop 4: Where Changes Ripple
When modifying code, prioritize these blocks where static graph coupling is strongest. Coupling signals extend across library operations as well as test assertions:
whisper/transcribe.py:38-514: functiontranscribe. Connects to 99 downstream call or import relations.whisper/normalizers/english.py:165-386: functionEnglishNumberNormalizer.process_words. Connects to 94 downstream call or import relations.whisper/normalizers/english.py:188-383: for loop inEnglishNumberNormalizer.process_words. Repeats a source region according to loop conditions.whisper/transcribe.py:517-619: functioncli. Connects to 68 downstream call or import relations.whisper/transcribe.py:264-508: with context manager block intranscribe. Scopes operations under a context manager.tests/test_normalizer.py:11-82: functiontest_number_normalizer. Test function connecting to 58 downstream call or import relations.
What This Walkthrough Cannot Show
This walkthrough reflects static analysis only. Runtime features such as reflection, dynamic imports, monkey-patching, and framework runtime wiring are not resolved. Inferences regarding installation, build, or runtime execution remain partial, and installation commands are not verified. Block annotations represent inferences with assigned confidences, and 1233 static relations remain unresolved in the static graph.
What this analysis could not establish
The writing model's own notes on the analysis record. Identifiers such as lim_3, exec_* or claim_… name records of that analysis; the claims table cites the same records.
- 1233 static relations remain external or unresolved.
Claims and evidence — 40 claims, 40 supported by an independent verifier
Every substantive statement above is a claim bound to grounding IDs of the analyzed revision. Global grounding IDs are namespaced by the analysis run.
| Claim | Epistemic status | Verifier | Grounding (global IDs) |
|---|---|---|---|
| c1 The walkthrough provides a reading order for the analyzed revision 86098128c0b4f24f0e2aa2994de830614b474227. | inferred | supported | analysis_ee52b965e66bce7b:summary_repository |
| c2 The analyzed repository is openai/whisper. | inferred | supported | analysis_ee52b965e66bce7b:summary_repository |
| c3 The walkthrough covers file orientation, entrypoint flows, library modules, and coupling points. | inferred | supported | analysis_ee52b965e66bce7b:summary_repository, analysis_ee52b965e66bce7b:role_10, analysis_ee52b965e66bce7b:role_14, analysis_ee52b965e66bce7b:role_9, analysis_ee52b965e66bce7b:role_16, analysis_ee52b965e66bce7b:block_96c561f634541f, analysis_ee52b965e66bce7b:block_c3b92412d2b462, analysis_ee52b965e66bce7b:block_e4a22c3680df88, analysis_ee52b965e66bce7b:block_d935652e3f7f0f, analysis_ee52b965e66bce7b:block_f02ce3a6bfb8de, analysis_ee52b965e66bce7b:block_d090cdefd1be4d, analysis_ee52b965e66bce7b:block_336e1318f6d98f, analysis_ee52b965e66bce7b:block_b58d73fc8283d0 |
| c4 Line ranges cited in the walkthrough refer directly to files in the analyzed revision. | inferred | supported | analysis_ee52b965e66bce7b:summary_repository |
| c5 A block is the analyzer's line-addressable semantic code unit. | inferred | supported | analysis_ee52b965e66bce7b:summary_repository |
| c6 Block descriptions are the analyzer's inferences. | inferred | supported | analysis_ee52b965e66bce7b:summary_repository |
| c7 whisper/transcribe.py contains module block 1-623. | inferred | supported | analysis_ee52b965e66bce7b:block_96c561f634541f |
| c8 The analyzer summary identifies whisper/transcribe.py lines 1-623 as the source file container. | inferred | supported | analysis_ee52b965e66bce7b:block_96c561f634541f |
| c9 The verified entrypoint guard is in whisper/transcribe.py. | observed | supported | analysis_ee52b965e66bce7b:py_entry_e9d8e13fe4d4 |
| c10 Bounded execution path exec_210328c6174a originates at whisper/transcribe.py:__main__ and ends at an unresolved boundary. | inferred | supported | analysis_ee52b965e66bce7b:exec_210328c6174a |
| c11 Bounded execution path exec_873b5bbd14cf steps from whisper/transcribe.py:cli to parser.add_argument. | inferred | supported | analysis_ee52b965e66bce7b:exec_873b5bbd14cf |
| c12 whisper/transcribe.py contains main guard block 622-623. | inferred | supported | analysis_ee52b965e66bce7b:block_c3b92412d2b462 |
| c13 Block 622-623 gates direct execution of whisper/transcribe.py. | inferred | supported | analysis_ee52b965e66bce7b:block_c3b92412d2b462 |
| c14 Function cli exists at whisper/transcribe.py:517-619. | observed | supported | analysis_ee52b965e66bce7b:py_func_a31ce0a9065c |
| c15 Block 517-619 connects to 68 downstream relations. | inferred | supported | analysis_ee52b965e66bce7b:block_e4a22c3680df88 |
| c16 2 of the core-code lesson's 8 blocks lie in library code. | inferred | supported | analysis_ee52b965e66bce7b:block_c3b92412d2b462, analysis_ee52b965e66bce7b:block_e4a22c3680df88, analysis_ee52b965e66bce7b:block_e344a91bc2d2b1, analysis_ee52b965e66bce7b:block_fa551a470878d6, analysis_ee52b965e66bce7b:block_2239b47a6a10eb, analysis_ee52b965e66bce7b:block_b58d73fc8283d0, analysis_ee52b965e66bce7b:block_6fe11ede9d4668, analysis_ee52b965e66bce7b:block_95faf61a114114 |
| c17 The library reading set was selected deterministically by the AI Frontier lab from static call degree. | inferred | supported | analysis_ee52b965e66bce7b:role_10, analysis_ee52b965e66bce7b:role_14, analysis_ee52b965e66bce7b:role_9, analysis_ee52b965e66bce7b:role_16 |
| c18 whisper/model.py is categorized with 22 incoming and 20 outgoing calls under role_10. | inferred | supported | analysis_ee52b965e66bce7b:role_10 |
| c19 Class Whisper exists at whisper/model.py:259-352. | observed | supported | analysis_ee52b965e66bce7b:py_class_258632aeaf38 |
| c20 Block 259-352 groups Whisper behavior. | inferred | supported | analysis_ee52b965e66bce7b:block_2045a12cd91254 |
| c21 Class MultiHeadAttention exists at whisper/model.py:81-146. | observed | supported | analysis_ee52b965e66bce7b:py_class_4ed9b8eada83 |
| c22 Block 81-146 groups MultiHeadAttention behavior. | inferred | supported | analysis_ee52b965e66bce7b:block_eae7300e43f5c6 |
| c23 whisper/timing.py has 16 incoming and 9 outgoing calls under role_14. | inferred | supported | analysis_ee52b965e66bce7b:role_14 |
| c24 Function add_word_timestamps exists at whisper/timing.py:279-388. | observed | supported | analysis_ee52b965e66bce7b:py_func_69d75b442d80 |
| c25 Block 279-388 connects to 30 downstream relations. | inferred | supported | analysis_ee52b965e66bce7b:block_99968fd1a96cde |
| c26 Function find_alignment exists at whisper/timing.py:163-242. | observed | supported | analysis_ee52b965e66bce7b:py_func_e1372f4b817b |
| c27 Block 163-242 connects to 37 downstream relations. | inferred | supported | analysis_ee52b965e66bce7b:block_7235f1f3ee66a3 |
| c28 whisper/decoding.py has 11 incoming and 13 outgoing calls under role_9. | inferred | supported | analysis_ee52b965e66bce7b:role_9 |
| c29 Class DecodingTask exists at whisper/decoding.py:508-789. | observed | supported | analysis_ee52b965e66bce7b:py_class_92c2e830586f |
| c30 Class BeamSearchDecoder exists at whisper/decoding.py:301-404. | observed | supported | analysis_ee52b965e66bce7b:py_class_61d8ff25d720 |
| c31 whisper/transcribe.py has 3 incoming and 18 outgoing calls under role_16. | inferred | supported | analysis_ee52b965e66bce7b:role_16 |
| c32 whisper/transcribe.py function transcribe at lines 38-514 connects to 99 downstream relations. | inferred | supported | analysis_ee52b965e66bce7b:block_d935652e3f7f0f |
| c33 EnglishNumberNormalizer.process_words spans lines 165-386 with 94 downstream relations. | inferred | supported | analysis_ee52b965e66bce7b:block_f02ce3a6bfb8de |
| c34 Loop block 188-383 in whisper/normalizers/english.py controls flow inside EnglishNumberNormalizer.process_words. | inferred | supported | analysis_ee52b965e66bce7b:block_d090cdefd1be4d |
| c35 Context manager block lines 264-508 in whisper/transcribe.py scopes operations in transcribe. | inferred | supported | analysis_ee52b965e66bce7b:block_336e1318f6d98f |
| c36 Test function test_number_normalizer spans lines 11-82 in tests/test_normalizer.py with 58 relations. | inferred | supported | analysis_ee52b965e66bce7b:block_b58d73fc8283d0 |
| c37 The analysis is static only and cannot resolve dynamic imports, reflection, or framework runtime wiring. | observed | supported | analysis_ee52b965e66bce7b:lim_1 |
| c38 Installation commands are not verified and install/run inference is partial. | observed | supported | analysis_ee52b965e66bce7b:lim_2 |
| c39 Block annotations carry analyzer confidences rather than runtime guarantees. | inferred | supported | analysis_ee52b965e66bce7b:block_96c561f634541f, analysis_ee52b965e66bce7b:block_c3b92412d2b462 |
| c40 1233 static relations remain external or unresolved in the analyzed codebase. | inferred | supported | analysis_ee52b965e66bce7b:summary_repository |
Sources, rights and disclosure · attribution-license-templates/v0.1
Rights notice. Original repository hosted on GitHub. Repository source code, documentation, names, media, and related project materials remain subject to the rights of their respective authors, contributors, and other rights holders and to applicable repository license terms.
Platform notice. GitHub is the source hosting platform for the linked repository. GitHub and related marks are trademarks of GitHub, Inc. EVEMISS Technology is not affiliated with or endorsed by GitHub unless explicitly stated otherwise.
How this page is produced. This page was produced using revision-aware repository analysis and AI-assisted editorial tooling. Technical claims are tied to the analyzed repository revision and may be revalidated when the source repository changes.
AI-assisted analysis. Reviewed by EVEMISS Technology through human–AI collaborative review. · Report a rights concern · Back to the overview