Paul Strack provides an excellent explanation of stress and IPA on Eldamo:
-
For disyllabic words, the stress is always on the first syllable, as in Beren [BE-ren].
-
For trisyllabic words, the stress is on the second syllable if it is heavy, as in Finarfin [fi-NAR-fin]; otherwise, it is on the first syllable, as in Celeborn [CE-le-born].
-
For longer words, the stress falls on the second-to-last syllable if it is heavy, as in Calenardhon [ca-le-NAR-dhon]; otherwise, it is on the third-to-last syllable, as in Edenedair [e-DE-ne-dair].
-
Ph between vowels represents long [ff], making the preceding syllable heavy, as in Araphin [a-RA-ffin].
-
An unusual feature of Sindarin is that an isolated medial m is pronounced as a single [m], even though it is written as mm in cases where otherwise the stress might be in doubt, as in:
- Galadhremmen [ga-ladh-RE-men]
- Rammas [RA-mas]
- Turamarth [tu-RA-marth]
- Initial i before a vowel is pronounced like “y” (IPA [j]).
- c is always pronounced like [k].
- ch is pronounced like Scottish “loch” (IPA [x]), not like English “church” (IPA [t͡ʃ]).
- th is a voiceless dental spirant [θ], like English “thin.”
- dh is a voiced dental spirant [ð], like English “that.”
- f is pronounced like [v] at the end of words and before other consonants.
- ph is used finally and before consonants when the sound is actually [f].
- The sounds hw, lh, rh are the voiceless equivalents of w, l, r, pronounced [ʍ], [ɬ], [r̥]. The first two are like English “wh” and Welsh “ll,” and the last is like h combined with r.
- ñ is a Neo-Sindarin representation of the velar nasal [ŋ], which Tolkien himself represented (somewhat ambiguously) with ng.
Sindarin has six vowels: i, e, a, o, u, and y. These are represented in IPA as [i], [ɛ], [a], [ɔ], [u], and [y]. It’s worth noting that while some might think the IPA for "a" is [a], it is probably closer to [ä] in practice.
Sindarin also features six or seven diphthongs: ai [a͡ɪ], ei [e͡ɪ], ui [u͡ɪ], au [a͡ʊ], ae [a͡ɛ], oe [o͡ɛ].
I also want to give a big shout-out to Faeleth, who helped me refine my code for these. Without her help, I would still be pulling my hair out.