Sounds and Numbers.
Chenzi Xu · chenzi.xu@ntu.edu.sg
Before we start: predict what survives. Someone dictates a sentence with a proper name and a hesitation in it. Watch what gets silently "repaired".
A screen-reader voice reads the same sentence. Listen for what it gets right effortlessly, and where it doesn't sound human.
By Week 13 you will be able to explain, and audit, both of these, level by level.
Same four letters, two pronunciations. The voice must parse the sentence before it can say it. (How? Week 10.)
The segments are easy; the meaning lives in the particles’ pitch. Listen to what the voice does to lah. (Prosody: Week 12.)
Score it as phoneticians: what does it get right effortlessly, and what is subtly wrong? Keep your notes; both sentences return in Weeks 10–12.
Before the demo: write down, word for word, what you think the recognizer will print for this sentence.
“Can lah, we go makan at the kopitiam after this.”
Hands up: who predicted lah survives? Who predicted makan? kopitiam?
Discourse particles (lah, lor, leh) tend to vanish: the system has no word for them.
makan and kopitiam get “repaired” into the nearest English the model knows.
The output is fluent, punctuated, and someone else’s English. Fluency is not accuracy.
Our home dataset: the IMDA National Speech Corpus, thousands of hours of Singapore speech. Assignment 1 works with it; in Week 9 we audit accent bias with it. This course treats Singapore as the test set.
Speech in, text out: dictation, captions, voice search, transcription at scale.
Text in, speech out: screen readers, assistant voices, audiobooks, voice banking.
Speaker recognition & diarization: voice ID, meeting minutes. W12
Forced alignment: the corpus phonetician’s power tool. W9
Speech-to-speech translation and voice conversion. W13
Spoken dialogue: assistants that listen while they speak. W13
One toolbox underneath all six: features, similarity, probability, networks. That toolbox is Weeks 1–4 and 7, and it opens today.
This is the classical, modular map. Modern end-to-end systems (Weeks 8 & 11) fold the boxes into one network, but every job on this slide still has to happen. Evaluation, bias & ethics cut across everything: Weeks 9 & 12.
First 45 minutes; covers Weeks 1–5. Knowledge-based plus interpretive questions; full details nearer the quiz.
First 45 minutes; covers Weeks 6–11. Full details nearer the quiz.
An applied ASR assignment. Released from Week 7; due Week 10. Full details in the brief.
A synthesis assignment, presented at the Week 13 demo/poster fair. Released Week 10. Full details in the brief.
Quiz questions draw on the weekly practicals, so the notebooks are your revision. Week 13 also brings a guest panel: careers in speech technology.
Gold, above the line: machines that speak. Teal, below: machines that listen. Speaking had a 160-year head start.
The tube model returns in Week 3, the talking heads as articulatory synthesis in Week 10; the statistical turn (HMMs, and HTK, the toolkit that trained a generation) is what you build in Weeks 5 and 6. Photos: Wikimedia Commons, public domain.
Von Kempelen’s own drawing (1791), via H. Traunmüller, Stockholm University; replica photo: Wikimedia Commons (PD)
Its direct descendants are the articulatory synthesizers of Week 10: in class you will play a browser vocal tract (Pink Trombone) that works on exactly von Kempelen’s plan.
Image: Wikimedia Commons (PD)
No recording survives: the Euphonia was never captured. Machines could speak for almost a century before any machine could listen back.
Voder demonstration, 1939 New York World’s Fair; Wikimedia Commons (PD)
Recording: D. H. Klatt’s archive, via Acoustics Today
Image: H. Traunmüller, Stockholm University
Recording: D. H. Klatt’s archive, via Acoustics Today
Fant’s OVE; image: H. Traunmüller, Stockholm University
Recordings: D. H. Klatt’s archive, via Acoustics Today
Fant is also the father of the source–filter theory you meet in Week 3: the same person gave phonetics its acoustic theory and machines their voice. The two stories are one story.
The recipe behind the decade: curated data + GPUs + better algorithms. By 2020, benchmark word error rates sat below professional transcribers’.
Timeline after Hannun (2021), “The History of Speech Recognition to the Year 2030” · awni.github.io/future-speech
The 2010s taught machines to hear; the 2020s fold hearing, speaking and conversing into single models. Every dot has a week on your roadmap.
New powers, new failure modes: hallucinated transcripts (Week 8), cloned voices (Week 12), accents still misheard (Week 9).
Store examples, compare distances; hand-written expert rules. Audrey, Shoebox, Harpy. W5
Speech as probability: HMMs + n‑grams. The toolkit era: HTK, then Kaldi (2011). W6
A deep net replaces the GMM scorer; the HMM skeleton stays. Kaldi’s neural decade. W7
One network, audio in, text out: CTC, attention. Lexicon and HMM retired. W8
Pretrain on oceans of unlabelled speech, then do everything: wav2vec 2.0, Whisper, speech LLMs. W8 · W13
End-to-end and foundation models share the architecture: one big network. What changes is the training data (oceans of unlabelled speech instead of labelled pairs for one task) and the role (one model reused for many tasks instead of one model per task).
The practicals walk the same road: Week 5 you build a template recognizer, Week 6 an HMM, Week 7 a neural classifier, Week 8 an end-to-end model. Thirteen weeks, seventy years of the field.
This is speaker recognition (“who spoke?”, W12), not ASR: and it walked the same road: spectrograms → statistical models → DNNs → pretrained models. The paradigm shifts swept every speech task at once.
Yu et al. (2023), “Twenty-Five Years of Evolution in Speech and Language Processing”, IEEE Signal Processing Magazine 40(5), Fig. 1. © IEEE, reproduced for teaching.
No two /d/s are alike; every frame is context.
Accents, dialects, sociolects: systems trained on someone's speech.
“probably” → [pɹɒbli]. Casual speech destroys dictionary forms.
Synthetic voices read sentences, not discourse. Still unsolved.
Commercial recognizers make roughly twice the errors for Black American speakers as for white speakers (Koenecke et al. 2020; we audit this ourselves in Week 9).
The systems learned someone's phonology. Just not everyone's.
You will hear one sentence read by five speakers: Singaporean, Malaysian, Indian, British, American.
Predict, in pairs: rank the five by how many errors the recognizer will make. Commit before the reveal.
Then we compare with the actual transcripts (pre-run, so no wifi drama).
If errors track accent, the system has learned someone's phonology. The Koenecke result on the previous slide is this observation, done properly, at scale. In Week 9, you run that audit yourselves.
Stretch. Refill.
Then: sounds become numbers.
When we return: what a recording actually is, and the first math this course runs on: vectors and similarity.
Sampling: measure the wave at strict, regular intervals.
16,000 of these per second is all a microphone gives the machine.
Everything else must be computed.
The previous slide is a drawing; this is the real thing, in the tool you already know. Praat, matplotlib, and every recognizer in existence all start from these same dots.
Grey: the real wave · coral dots: the samples · teal: what the numbers preserve
The sampling theorem: you need more than two samples per cycle. Half the sampling rate is the Nyquist frequency, the highest frequency a recording can hold: at 16,000 samples per second, 8,000 Hz. Sound above it? Week 3: aliasing.
More bits, finer rungs, quieter hiss: 16-bit audio has 65,536 of them and the error drops below hearing. In Week 3 you listen to 16 → 8 → 4 → 3 bits and hear the rungs appear.
After Coleman (2005), Introducing Speech and Language Processing, Fig. 2.5 (adapted from Embree 1991).
Is this the only rule? No: this figure rounds down and plays back the midpoint; the previous slide rounded to the nearest rung. Designs differ, but the guarantee is the same: the error is never more than half a level. At 16 bits the levels are 1,024 times finer than these 64, and the locked-in error sinks below hearing.
101₂ = 1×4 + 0×2 + 1×1 = 5
Each place is worth twice the one to its right: …8, 4, 2, 1. Add the place values that sit over a 1, and skip the rest.
Use the place values to convert 1011₂, then check it in the table. How many levels do 4 bits give, and what is the largest?
Worked answers in the appendix.
Left half starts with 0, right half with 1: one extra bit doubles the count. That is all 2ⁿ means.
1 bit → 2
3 bits → 8
8 bits → 256
16 bits → 65,536
In Week 3 you will hear what each doubling buys: roughly 6 dB less quantisation noise.
8-bit audio has 256 levels. How many does 16-bit have, and how many times finer is that?
Worked answers in the appendix.
| bits | levels = 2ⁿ | typical range | where you meet it |
|---|---|---|---|
| 1 | 2 | 0…1 | a switch: voiced / voiceless |
| 3 | 8 | 0…7 | the quantisation slide’s rungs |
| 8 | 256 | −128…127 | telephone-era audio |
| 16 | 65,536 | −32,768…32,767 | speech & CD audio: int16 |
| 24 | 16,777,216 | huge | studio headroom |
Callbacks: the 8 rungs of the quantisation figure were the 3-bit row; real recordings live on the 16-bit row.
Most recorders write 16-bit whole numbers into a WAV file. Studio kit: 24-bit; phone memos compress, then unpack.
Loading divides every sample by 32,768: 8192 becomes 0.25. The same wave, now decimals on one shared scale.
The type says how to read a pattern: place values for integers; sign, exponent, fraction for floats.
| type | bits | it holds | where you meet it |
|---|---|---|---|
| uint8 | 8 | 0…255 | telephone-era audio files |
| int16 | 16 | −32,768…32,767 | WAV: recorders, CDs, our corpus |
| float32 | 32 | decimals (about 7 digits) | numpy audio, in [−1, 1] |
| float64 | 64 | decimals (about 16 digits) | numpy’s everyday math |
After Coleman (2005), Table 2.5, translated into Python: his C types unsigned char / short / float / double are numpy’s uint8 / int16 / float32 / float64.
One shared, unit-free scale: 0.25 means a quarter of full loudness, whatever the file’s bit depth. And the trip is lossless: float32 holds every int16 exactly.
Mix two loud voices and you add their waves, sample by sample: 20,000 + 20,000 = 40,000, but a 16-bit box stops at 32,767. The sum does not fit: that is overflow, heard as harsh clipping. Floats have a ceiling too, but the movable decimal point (next slide) puts it near 10³⁸, and audio math never comes close: samples live in [−1, 1], so sums reach the thousands at most. That is headroom: a ceiling too far away to matter.
You have written floats since secondary school: 6.02 × 10²³ is a sign, some digits, and an exponent saying where the point sits. float32 is the same trick in base 2, budgeted into 32 bits:
0.25 = +1.0 × 2⁻² → 0 01111101 00000000000000000000000 (the exponent field stores −2 + 127 = 125 = 01111101₂)
8 bits give 256 positions for the point: from 2⁻¹²⁶ up to 2¹²⁷, roughly 10±³⁸. That is the headroom of the last slide.
23 bits of digits give about 7 decimal digits. Need more? float64 re-budgets: 11 exponent + 52 fraction, about 16 digits.
Why 8 and 23? It is a budget: exponent bits buy range, fraction bits buy precision, and the split is the compromise the whole computing world standardised in 1985 (IEEE 754).
More than two samples per cycle, so 16 kHz keeps sound up to 8 kHz. Above that: gone.
Every sample rounds to the nearest level; what remains of the rounding is a whisper of quantisation noise.
Whole numbers on disk; floats in numpy, rescaled to [−1, 1]. Same wave, two rulers.
0.25 of full scale × 32,768 = 8192 = 2¹³: a single 1 in the 8192s place. Stored sound is these bit patterns: sixteen per sample, sixteen thousand samples per second.
The speech default: 16 kHz · 16-bit · loaded as float32. In Week 3 you make each choice audible: aliasing, bit-depth ear-training, and the industry’s standard settings.
Every system in this course is a recipe for turning one list of numbers into another.
ASR: 48,000 samples → 11 characters. TTS: 11 characters → 48,000 samples.
A whole recognizer is just functions composed, like rules feeding rules in a phonological derivation:
asr = decode( score( features( record(you) ) ) )
Measure two formants, and a vowel becomes
a point in space (an arrow from the origin).
Add F3, duration, spectral tilt… same idea, more axes.
Past three dimensions you lose the picture, not the math.
| vowel | F1 (Hz) | F2 (Hz) |
|---|---|---|
| i | 270 | 2290 |
| ɪ | 390 | 1990 |
| ɛ | 530 | 1840 |
| ɑ | 730 | 1090 |
| u | 300 | 870 |
Means, adult male speakers: Peterson & Barney (1952)
Phoneticians made this embedding by hand, decades before machine learning had a name for it.
Close on the chart ⇒ similar vowels.
Distance means something.
So: can we give the machine
a number for “how similar”?
Walk a, then walk b from a’s tip: a + b = (2, 1) + (1, 2) = (3, 3). Add coordinate by coordinate.
2a = (4, 2): twice as long, pointing exactly the same way. Scaling never changes direction: remember that for cosine.
Divide v by its own length: direction kept, size forgotten. Cosine similarity is secretly a dot product of unit vectors.
Each move is one line of numpy, and nothing here goes beyond addition and multiplication.
/ɪ/ − /i/ = (390 − 270, 1990 − 2290) = (+120, −300): the instructions for getting from /i/ to /ɪ/. Careful: in raw Hz the F2 change looks bigger, but proportionally F1 moves more (+44% vs −13%). Week 4’s delta features are this idea, applied over time.
x̄ = (x₁ + … + xₙ) / n: average each coordinate. The centroid of your /æ/ tokens is the category’s prototype: prototype theory, as arithmetic. You compute one in the practical (and again in EX 1.5).
How similar are two sounds?
Two answers, both one line of arithmetic: the dot product (angle) and Euclidean distance (gap).
Every system in this course asks this question millions of times per second.
Multiply matching coordinates, add them up. What that measures: how much of one arrow lies along the other: the shadow b casts on a’s direction.
Lay a flat along the axis: a · b = a₁b₁ + 0 · b₂. The height b₂ never enters: only the shadow survives.
Cosine similarity: divide by both lengths and only direction remains: +1 = same direction, 0 = right angles. (All-positive formant vectors never get near 0.)
Bookmark this operation. In Week 3 it opens the Fourier transform: dot products with “probe” sine waves are how a computer reads the recipe of any sound.
Cosine is the shadow a unit arrow casts on the other arrow's direction.
That is all cosine similarity uses. Multiply the shadow by both lengths and you have the dot product: a · b = |a||b| cos θ.
Week 3 preview: this circle starts spinning, and the arrow's height traces a sine wave, the blueprint of every sound.
cos( /i/, /ɪ/ ): nearer 0.9 or 0.999?
Hands up for each. Then a second guess: /ɑ/ is how many times farther from /i/ than /ɪ/ is? Write your number down.
(Most people guess the cosine too low. Watch what all-positive coordinates do to the angle.)
/i/ = (270, 2290) /ɪ/ = (390, 1990) /ɑ/ = (730, 1090)
i · ɪ = (270 × 390) + (2290 × 1990) = 105,300 + 4,557,100 = 4,662,400
lengths: |i| ≈ 2,306 |ɪ| ≈ 2,028 → cos = 4,662,400 / (2,306 × 2,028) ≈ 0.997
i · ɑ = (270 × 730) + (2290 × 1090) = 2,693,200 → cos ≈ 0.890
cos 0.997 → 4.4° apart
cos 0.890 → 27° apart
The arithmetic agrees with your phonetics training. That's the point.
d(i, ɪ) = √(120² + 300²) ≈ 323 Hz
d(i, ɑ) = √(460² + 1200²) ≈ 1,285 Hz (4× farther)
Just Pythagoras on the vowel chart: the straight-line gap between two points.
In Week 5 you'll compute this exact quantity between MFCC frames, thousands of times, inside your own working digit recognizer.
np.sqrt(np.sum((a-b)**2))
One line of Python. You write it in the practical, at 12:40.
a · b multiplies matching coordinates: a₁b₁ + a₂b₂. If you ever write a₁b₂, stop and re-pair.
Distance squares the gaps, then takes the root at the end. Squaring also kills minus signs: (−300)² = 90,000.
F2's range is roughly 3× F1's, so raw-Hz distance is mostly an F2 story. Phoneticians normalize (Bark, Lobanov) for exactly this reason.
That third one is a preview: in Week 4 the machine fixes its ruler too, bending the frequency axis to match the ear. It's called the mel scale, and you will build it yourself.
Peterson & Barney means: /u/ = (300, 870), /ɔ/ = (570, 840), /ɑ/ = (730, 1090). (a) Compute d(/u/, /ɔ/). (b) Which of /u/ and /ɔ/ is closer to /ɑ/? Check your verdict against the vowel chart.
Let a = (1, 2) and b = (2, 4). Compute cos(a, b) and d(a, b). What does this pair of answers tell you that either alone would not?
Three /æ/ tokens: (650, 1700), (670, 1740), (690, 1720). Find the centroid.
One Singaporean speaker's /ɛ/, measured in Praat: (580, 1850). Peterson & Barney (US, 1952): /ɛ/ = (530, 1840), /æ/ = (660, 1720). Which is it closer to? And what can you not conclude from one token?
Worked answers in the appendix at the end of this deck.
A child's /i/ and an adult's /i/ sit far apart on the chart: shorter vocal tract, all formants scaled up.
But the vectors still point the same way: big distance, tiny angle.
Choosing a similarity measure is a theoretical claim about what counts as “the same sound”: speaker normalization, in your terms.
This tension (what should the machine treat as equivalent?) returns as:
• cross-speaker failure W5
• learned representations W7
• accent bias in ASR W9
An m × n matrix is an array of numbers in m rows and n columns; the product A x applies each row's weighted sum to the vector x.
Deisenroth et al. (2020), ch. 2.An m × n matrix times a length-n vector gives a length-m vector. The inner sizes must agree; the outer size is what you get.
A @ x
One character in numpy. In Week 4 the rows become 26 mel filters; in Week 7 the same line runs with learned weights. This slide is a promise.
S has rows (1.25, 0), (0, 1.25) · S · (270, 2290) = (338, 2863)
Write the diagonal matrix that leaves F1 unchanged and doubles F2, then apply it to /u/ = (300, 870).
G has rows (2, 0), (0, 3) · H has rows (1, 1), (0, 1) · x = (1, 1)
first G: G x = (2 × 1, 3 × 1) = (2, 3)
then H: H (G x) = (2 + 3, 3) = (5, 3)
the shortcut: H G has rows (2, 3), (0, 3), and (H G) x = (5, 3): the same answer, one multiply
A chain of matrix steps, however long, collapses into a single matrix. Linear pipelines cannot build anything one multiply could not.
Week 4: the front end runs matrix, then log, then matrix; the log between them is exactly what keeps the two from fusing. Week 7: neural networks put a squash between layers for the same reason: without the bend, depth collapses.
The picture itself is a matrix: frequencies down the rows, one 10 ms spectrum per column. You will read one before you compute one.
Twenty-six rows, each a triangular ear. One multiply, filterbank @ spectrum, turns a spectrum into 26 loudnesses.
The same multiply with weights learned from data, plus one squash: the building block of every modern speech system in this course.
B has rows (1, 2), (3, 0) and (0, 1), so B is 3 × 2. Let y = (10, 5). State the shape of B y first, then compute it row by row.
Week 4's filterbank is a 26 × 257 matrix and a spectrum is a length-257 vector. What is the shape of filterbank @ spectrum? And why can you not multiply them the other way round?
Worked answers in the appendix at the end of this deck.
An ordered n-tuple of real numbers v = (v₁, …, vₙ) ∈ ℝⁿ; geometrically, a point (or an arrow from the origin) in n-dimensional space.
Deisenroth, Faisal & Ong (2020), Mathematics for Machine Learning, ch. 2.For a, b ∈ ℝⁿ: a · b = a₁b₁ + … + aₙbₙ = |a| |b| cos θ, where θ is the angle between a and b.
Deisenroth et al. (2020), §3.2; Jurafsky & Martin, SLP 3rd ed. (Jan 2026), §5.4.An m × n matrix is an array of numbers in m rows and n columns; the product A x applies each row’s weighted sum to the vector x.
Deisenroth et al. (2020), ch. 2.cos(a, b) = a · b / ( |a| |b| ), ranging over [−1, 1]; for non-negative measurements (formant values, counts) the range is [0, 1].
Jurafsky & Martin, SLP 3rd ed. (Jan 2026), §5.4.d(a, b) = √( Σᵢ (aᵢ − bᵢ)² ): the straight-line distance between two points; Pythagoras, in any number of dimensions.
Deisenroth et al. (2020), §3.1.Open your laptop.
The Colab link is on NTULearn.
No installs, no setup: if you can open a browser tab, you are ready.
Stretch (or take-home): a nearest-neighbour “vowel guesser”: drop in your own Praat measurements and see where your accent lands.
Step 4 fails on purpose. An error message is the computer telling you what went wrong and where, not a judgement on you. You will meet many this term; we read the first one together so they never feel scary.
/content/data/vowels.csv
A file vowels.csv, inside a folder data, inside a folder content, inside / : the root, the outermost folder of the whole machine.
/content/data/vowels.csv
Starts with / : directions from the root. Works no matter where you stand.
data/vowels.csv
No leading slash: directions from where you are standing. .. is the folder above; . is here; ~ is your home folder.
Mac and Linux write paths with the forward slash /. Windows uses the backslash \ on your own laptop. Here it will never matter: a Colab notebook runs on a Linux machine in the cloud, so whatever laptop you bring, everyone types /.
$ pwd /content ← where am I standing? $ ls ← what is here? data sample_data $ cd data ← step into data $ pwd /content/data $ cd .. ← up one level $ cd - ← back where I just was $ cd / ← jump to the root $ cd ~ ← jump to your home folder
Prefix shell commands with ! : !pwd, !ls (you already ran !wget today). One catch: !cd does not stick: every ! line opens a fresh shell. To actually move, use %cd data.
In Week 9 you drive a real command-line tool, the Montreal Forced Aligner, with exactly these three commands.
Downloads land in /content, which is wiped when the runtime shuts down. To keep work, mount your Drive: drive.mount('/content/drive') → your files appear under /content/drive/MyDrive/.
Mac: the Terminal app (Applications → Utilities, or Spotlight “Terminal”). Windows: PowerShell or Windows Terminal: pwd, ls and cd work there too (the older cmd.exe spells things differently). Nothing in this course requires a local terminal: Colab gives everyone the same Linux shell in the browser.
✓ a vowel-space plot, IPA labels, axes reversed
✓ every vowel ranked by similarity to /i/
✓ one error message you fixed yourself
✓ pwd, ls and cd in your fingers
The vowel-guesser stretch is take-home if the hour runs out. This notebook's skills return in Assignment 1.
Speech and Language Processing
Daniel Jurafsky & James H. Martin
3rd edition (online draft)
web.stanford.edu/~jurafsky/slp3
Free chapter PDFs. Nothing to buy, ever.
Just the chapter openings of the ASR and TTS chapters: the bird's-eye view of today's two pipelines. web.stanford.edu/~jurafsky/slp3 (chapter numbers refer to the Jan 2026 release)
The geometric picture from today, animated better than any slide; the last two episodes are today's matrix slides, moving. 3blue1brown.com/lessons/ vectors · dot-products · linear-transformations · matrix-multiplication
Keep open as a reference during practicals; variables, lists, loops are all we use for two weeks.
Only for the math-hungry: the formal version of today's definitions. mml-book.github.io
Written exactly for this audience: probability taught through phones and words, no engineering background assumed. Free online.
Skip smoothing for now: it returns in Week 6. (Chapter numbers refer to the Jan 2026 release.)
Next week’s hardest idea, animated: watch it before Friday and the lecture will feel like revision.
The paper behind Week 2’s guessing game; surprisingly readable.
Interactive probability, almost no prose: play with it for ten minutes.
Next week: probability & Bayes’ rule, the math of a listener’s guesses. “wreck a nice beach” awaits.
Exit ticket before you leave: one sentence, what is still muddiest? (form link on NTULearn)
One list of numbers
into another.
That's the whole course. See you in the lab.
Coleman, J. (2005). Introducing Speech and Language Processing. Cambridge University Press. Ch. 2 “Sounds and numbers”: sampling, quantisation & reconstruction (Fig. 2.5), data types (Table 2.5).
Hannun, A. (2021). “The History of Speech Recognition to the Year 2030.” awni.github.io/future-speech. Basis of the 2010–2020 timeline.
Traunmüller, H. “Wolfgang von Kempelen’s speaking machine and its successors.” Stockholm University. resources.ling.su.se/hartmut/kemplne.html. The early-machines tour and images.
Klatt, D. H. (1987). “Review of text-to-speech conversion for English.” Journal of the Acoustical Society of America 82(3), 737–793. Historical recordings from Klatt’s archive, via Acoustics Today (acousticstoday.org).
Yu, D. et al. (2023). “Twenty-Five Years of Evolution in Speech and Language Processing.” IEEE Signal Processing Magazine 40(5), 27–39. Fig. 1 reproduced.
Koenecke, A. et al. (2020). “Racial disparities in automated speech recognition.” PNAS 117(14), 7684–7689.
Peterson, G. E. & Barney, H. L. (1952). “Control methods used in a study of the vowels.” JASA 24(2), 175–184. The formant means used throughout this deck.
Images: Wikimedia Commons (public domain) and H. Traunmüller. Recordings: D. H. Klatt’s history-of-synthesis archive, via Acoustics Today.
1011₂ = 8 + 0 + 2 + 1 = 11 (check: row 1011 of the table). Four bits give 2⁴ = 16 levels; the largest is 1111₂ = 15.
2¹⁶ = 65,536 levels: 65,536 ⁄ 256 = 256 times finer. Each extra bit doubles the levels and buys about 6 dB less noise (Week 3).
(a) Δ = (270, 30) → d = √(72 900 + 900) = √73 800 ≈ 272 Hz.
(b) d(/u/, /ɑ/) = √(430² + 220²) ≈ 483 Hz; d(/ɔ/, /ɑ/) = √(160² + 250²) ≈ 297 Hz → /ɔ/ is closer, exactly what the chart shows.
a · b = 2 + 8 = 10; |a| = √5, |b| = √20, |a||b| = 10 → cos = 1 (perfectly collinear). But d = √(1² + 2²) = √5 ≈ 2.24.
Same direction, different magnitude: the angle says “identical quality”, the distance says “different point”. The small-vs-large vocal tract situation, in miniature.
Centroid = ( (650+670+690)/3 , (1700+1740+1720)/3 ) = ( 2010/3 , 5160/3 ) = (670, 1720): the mean vector, component by component. (Exactly how we summarise a speaker's vowel space, and how k-means will later find clusters.)
d(to /ɛ/) = √(50² + 10²) ≈ 51 Hz; d(to /æ/) = √(80² + 130²) ≈ 153 Hz → closer to P&B /ɛ/. What you cannot conclude: anything about Singapore English generally. One token from one speaker is an anecdote; in Week 3 you measure your own vowels, and in Week 9 you learn to do this at corpus scale.
Rows (1, 0) and (0, 2). Applied to /u/: 1×300 + 0×870 = 300; 0×300 + 2×870 = 1740, so the result is (300, 1740): F1 untouched, F2 doubled. Diagonal entries are per-axis volume knobs; the off-diagonal zeros mean the axes do not mix.
Shape first: B is 3 × 2 and y has length 2, so B y has length 3. Rows: 1×10 + 2×5 = 20; 3×10 + 0×5 = 30; 0×10 + 1×5 = 5. So B y = (20, 30, 5): three weighted sums, one object. In Week 4 the rows are mel filters and the three becomes twenty-six.
(26 × 257) times a length-257 vector: inner sizes agree, so the result has length 26: one loudness per mel filter. The other way round fails the shape rule: a length-257 vector against 26 rows has no matching inner size. Order matters in matrix multiplication, and the shapes tell you which order is meaningful.