b and p, d and t, k and g etc. in English and Cantonese
Voicing and Aspiration

Stop consonants can fall into the following categories (roughly):


Voiced stops: Vocal chords start vibrating before stop is released. E.g., English "b" as in "bat" (/bæt/ in IPA), French "b" as in "bon" = /bɔ̃/.
Unvoiced unaspirated stops: Vocal chords start vibrating almost exactly when stop is released. E.g., Chinese "b" as in "bu" = /pu/, English "p" after "s" as in "spit" = /spɪt/, French "p" as "pain" = /pɛ̃/.
Unvoiced aspirated stops: Vocal chords start vibrating a bit after stop is released. You can feel a puff of air at that time. E.g., English initial "p" as in "poop" = /pʰuːp/; Chinese "p" as in "pu" = /pʰu/.


I used b/p/pʰ as an example, but it's analogous for d/t/tʰ and g/k/kʰ.

Languages and Voicing/Aspiration Distinctions

One thing you might have noticed from the examples I gave is that different languages treat these differently. Roughly speaking, we have:


Chinese (Mandarin and many other dialects) has no voiced stops. It distinguishes between aspirated and unaspirated unvoiced stops (p vs pʰ).
French (and many European languages) has no aspirated stops. It distinguishes between voiced and unvoiced-unaspirated stops (b vs p).
English (in its initial stops at least) distinguishes between voiced and unvoiced-aspirated (b vs pʰ).


This generally works out well for English speakers. Many English-native learners of Chinese or French never even learn anything about voicing or aspiration. b/pʰ are close enough to both b/p and p/pʰ that there's rarely any difficulties introduced by this when English speakers are interacting with French or Chinese people (in whatever language). On the other hand, this works out terribly for, e.g., French speakers and Chinese speakers interacting with one another. b/p both sound like p to a Chinese speaker, and p/pʰ both sound like p to a French speaker. Hilarity may ensue.

Voicing, Aspiration, and Romanization

The International Phonetic Alphabet was first developed in Paris. This makes sense when you look at the symbols used: b/p/pʰ. I can imagine the thought process: /b/ and /p/ are just so different sounding that they need different symbols, right? And /pʰ/ is some bizarre aberration, so no biggie if you need a super-script to write that.

Anyhow,the people developing romanizations for Chinese stuck with that convention. The Wade-Giles system writes /p/ as p and /pʰ/ as p'. That is, the letter "b" never gets used for anything! This may strike you as a poor choice. I would tend to agree. People always throw away the apostrophes, and then it's impossible to tell how something is supposed to be pronounced. Thankfully Pinyin fixed this (/p/ is b and /pʰ/ is p), but there's still plenty of places you see the older systems, like surnames (e.g., Chang vs Zhang) and place names (e.g., Peking, Chunking, etc.).