(Sorry, this is very long, I fell into a little linguistics hole. tl;dr: the ё and ь both “palatalize” the sounds around them. So пьот and пёт would sound exactly the same, and very, very close to пьёт, but пьёт gets “double-palatalized” so it’s a little more overt. And according to Russian spelling rules, пьот is an illegal spelling, so you only have to care about words like пьёт and пёт— like that, but the latter isn’t actually a word. And you only really have to care if you’re trying to develop an impeccable accent or be able to write down words you’ve never heard before on first hearing, as there aren’t many places where you encounter -ьё- and -ё- in “minimal pairs”, that are identical except for this difference and mean different things.)
As a hint to pronunciation, you can use Google Translate to put in and put in variations of Cyrillic nonsense to hear the difference in enunciation; in my experience (certainly in the past 2–3 years as the Google voices have gotten very good through machine learning) it’s usually very close to what a human Russian speaker would do with those same letters of nonsense. If you compare its pronunciations of: пьёт, пёт. пьет, пет. пьот, пот. (and if you click the ‘speak’ button a second time, it’ll speak it more slowly), you’ll hear the difference more clearly, I think.
The мягкий знак (ь) or “soft sign” affects both the consonant sound before and the vowel after, but English speakers will hear more difference in the consonant here where the vowel is already itself soft. Both become palatalized, meaning “gaining a little English consonantal y- sound”.
But the difference between о and ё is usually described as a palatalization difference! And, absent everything else—when standing alone in stressed position—this is correct. But vowels never really sound alone, they sound with the surrounding consonants and/or vowels.
First thing to notice—Google pronounces пьёт and пьет identically. That’s not technically correct, but it’s the right thing to do, because Russians leave the dots (diaeresis, umlaut, trema, whatever you want to call it) off ё, writing it as just е, all the time, including in text on the web, so Google knows to pronounce both the same as if the dots were there, since пьет—specifically, without the dots even implied—isn’t a word. (There are some words with -ье- where the е is not actually ё — but most of these are foreign words like пьеса, from French pièce.)
On the other hand, it pronounces пёт and пет completely differently—neither are common Russian words (although пет is a very old version of пять “five”), so it’s pronouncing those letter-for-letter, and — I don’t care what others insist — е and ё are totally different letters,¹ just happening to be ones that look very similar and are frequently written exactly alike.
So let’s ignore the ones with е, and look at just the ones with ё and о. (Here is a Google Translate link you can use to play just those.) The thing that should immediately jump out at you is that the first three — пьёт, пёт, and пьот — sound very similar, while пот sounds entirely different. That’s the key thing to take away here—palatalization can come about either from a мягкий знак (ь), or from a palatalized vowel. The first three have one (пёт), the other (пьот) or both (пьёт). But пот is simply unpalatalized, period.
There’s really just one reason a word couldn’t be spelled пьот: Russian spelling doesn’t do that. A hypothetical пьот would be pronounced just like пёт. The ь palatalizes the п before it, and the vowel following a palatalized sound is palatalized too (unless there’s a ъ or in a few other circumstances you’ll learn about).
There are words in Russian, however, that start with пё-. They are pronounced ever-so-slightly differently than words starting with пьё-; if you listen closely to Google, you can hear it. To English ears it may sound a little bit like the difference between “pyot” (пёт) and “piyot” (пьёт), but the /i/ is very, very diminished, barely there, and definitely not adding another syllable. (If you know IPA, пёт would be [pʲɵt] while пьёт is [p⁽ʲ⁾jɵt]—it’s just a bit more /j/ in one than the other.)
There are very few words where you need to make this distinction, and they can be distinguished in context even if you mishear/mispronounce it. (This is the real reason for Russian spelling reform to have done this thing that resulted in no пьо-: it reduces ambiguity.)
¹ People who insist ё is a “version of е with diacritics” are using the orthography—the writing—as authoritative, but in linguistics, “spontaneous performance” (meaning speech, for non-sign languages) is what’s authoritative. (This is slightly complicated by the fact that “letter” is a term of orthography, not speech, but go with me here for a moment.) There’s a definite relationship between о and ё, and it’s the same relationship as between а → я, у → ю, and э → е: the first is non-palatal, the second is palatal.
If these two letters were о and ö, or if е were pronounced /o/, you’d get no argument from me if you wanted to say they were the same letters, one with a diacritic. But the sounds of е and ё have no sound relationship, only a writing relationship, and a spoken language can exist without writing, but not without speech, so speech is primal. So о and ё are deeply related in the language as phonemes—which usually are what correspond to “letters”—while е and ё aren’t strongly related as phonemes, they just happen to have similar shapes on the printed page.
Brilliant answer! I love how you talked us through all the permutations. What about if a ъ gets involved? It usually cancels palatalisation, right? Have I understood you correctly that: 1. пё = /pʲo/ 2. пъё = /pjo/ 3. пьё = /p(ʲ)jo/ 4. ъ is only ever used before я е ё и and ю
Look at this: Лошадь ест яблоко (сейчас, в этот момент времени) = The horse is eating an apple. Лошадь ест яблоки (любит их) - The horse eats apples. Всё зависит от контекста.
Он пьёт молоко (прямо сейчас) = He is drinking milk. Он никогда не пьёт молоко = He never drinks milk.
пить (pitʹ) "to drink":
From Old East Slavic пити (piti), from Proto-Slavic piti (“to drink”). From Proto-Indo-European (see peh₃-), cognates include Lithuanian puotà (“drinking spree, wassail”), Old Prussian pōuton (“to drink”), poieiti (“drink (imperative)”), Sanskrit पाति (pāti, “he drinks”), पाययति (pāyayati, “to give to drink”), Ancient Greek πόσις (pósis, “the act of drinking”), πίνω (pínō, “I drink”), πώνω (pṓnō, “I drink”), Latin pōtus (“drunk, having been drunk”), and (from reduplicated present stem) Sanskrit पिबति (pibati, “he drinks”), पीत (pīta, “drunk”), Latin bibō (“I drink”) (< *pibō), Albanian pi (“I drink”), Old Irish ibim (“I drink”), Welsh yfed.