I have a book in my university library that has a 100-odd page article dedicated to these mute vowels, and it still doesn't seem to give a complete picture. So unfortunately, this feature of Japanese phonology is quite complex.
Still, there's a rather simple rule of thumb that can point you to most of the places where muting may occur (and in most of them it does occur, most of the time :)). It goes like this:
- The vowel must be a short
i
or u
.
- The consonant before the vowel must be voiceless:
/k/
, /s/
(also includes しゅ), /t/
, /h/
(ふ and ひ), and maybe also /p/
(though it seems rarer).
- The vowel must be at the end of a word, or followed by another voiceless consonant.
This explains why you see muting in sukoshi and hikari but not in sugoi and bikkuri.
Another useful thing to remember is that you can't have two muted vowels in a row, so in words suki and tsukushita not all vowels that match rule 1-3 become mute.
Edit:
I should have given more than a passing mentions to the exceptions, because they are quite many. The rules I've given cover most of the occurrences of muted vowels, and by 'most' I don't mean 99%. It's probably not even 80%, though I'm only giving rough guesses here.
So here are some exceptions:
[bikkrishta]
for びっくりした is quite common.
- Sometimes (in really fast speech) some very specific grammatical forms get their vowels elided, even when the vowels are not
/u/
or /i/
. For instance, わからない can be shortened to [wakarnai]
. It usually goes further than that with /r/ assimilating to the /n/, and thus you get the わかんない which you very often find in writing.
- Tsuyoshi Ito and Kdanski have mentioned
[sbarashii]
[sgoi]
in the comments.
There are of course many more. This is just an example why this issue is complex.