I'm trying to transform texts written in Chinese, Korean, Hebrew, Arabic and other languages with non-latin alphabet to the IPA. For now, I can only think of dictionaries. Are there any other ways? Any software systems/tools?

Moreover, do I need to transform them to an 'intermediate' language eg English or directly to the IPA? I can understand that I may not be able to represent all the sounds of such a language with the English alphabet for obvious reasons.

Thanks a lot

  • 1
    So... what exactly are you trying to do? I don't quite understand... – Tirous Aug 11 '17 at 0:05
  • 2
    IPA represents pronunciation, aside from the glyphs used, it has nothing to do with the nature of western languages. So long as you understand how things like Korean and Arabic are PRONOUNCED, you can quite easily transcribe them (assuming you know the IPA of course). – Tirous Aug 12 '17 at 5:57
  • 5
    "Transforming to English" makes no sense; that's translation, and of course you lose the sounds of the original language if you translate them to English. Do you mean transcribing them to the Latin alphabet (used by English and many others)? – melissa_boiko Aug 14 '17 at 13:00
  • 1
    As others suggested, this is a non-trivial problem, especially for some languages where it is unsolved. Just getting them into Latin script is more doable. Probably you should tell us what you are trying to do, maybe IPA is not what you need. – Adam Bittlingmayer Aug 14 '17 at 15:49
  • 1
    @leoboiko, you are right. I'm trying to find if there is a way to transcribe them to the Latin alphabet and then to the IPA, in case there is a good way to do so. As for my goal, I just want to transcribe them to the IPA. Just this. – Joker Aug 20 '17 at 7:03

IPA is a representation of sound; therefore "transforming to IPA" implies converting text to sound. That task is harder than it seems, because writing systems are underdetermined – they don't include all the relevant information for pronunciation. You need language-specific knowledge to pronounce things:

Just compare heart, beard, and heard,
Dies and diet, lord and word,
Sword and sward, retain and Britain.
(Mind the latter, how it's written.)
Now I surely will not plague you
With such words as plaque and ague.
But be careful how you speak:
Say break and steak, but bleak and streak;
Cloven, oven, how and low,
Script, receipt, show, poem, and toe.

And even dictionaries aren't enough, since sounds may change in context (British speakers may say fear as /fiə/, but fear of as /fiəɹɒv/).

There are nonetheless attempts at automatically converting text to sound (from which you can derive proper IPA). These are called text-to-speech (TTS) systems. They aren't perfect, but are getting better these days (as you must have noticed if you ever pressed "play" on Google Translate).

Your best bet at converting text from a language into IPA is to look for a) a TTS system for that language, which b) has the option to output as IPA. For example, this is the Mandarin Chinese output of the TTS system espeak in my Linux machine:

$ espeak --ipa -v zh 你好
 nˈiɜ xˈɑ‍u2

$ espeak --ipa -v zh 知者樂水,仁者樂山.
 t‍s.ˈi.5 t‍s.ˈo-2 lˈə5 s.wˈe‍i2
 əː1 t‍s.ˈo-2 lˈə5 s.ˈa5n

Notice that the espeak output has some idiosyncrasies; it marks stress before vowels, but in the case of Chinese this feature is pointless/a bug; it marks so-called "retroflex" (backed) sibilants with a ., rather than IPA /ʂ/ etc.; and it uses pīnyīn tone numbers, rather than IPA tone marks. These could be easily solved in post-processing. More problematic is the fact that TTS isn't perfect, and errors may creep in (/əː1/?). I find it's generally better to try and find TTS systems specifically made for that language, rather than broad ones like espeak.

  • Why does it imply "converting text to sound"? There is a written representation of the IPA, so it's text in one alphabet to text in the IPA (another alphabet). – Joker Aug 20 '17 at 7:06
  • 1
    @Joker because natural writing systems are underdetermined. That is, they carry less information than that IPA needs. There's no information, for example, in the strings of letters «cough» and «bough» that tells you that one is read with the rhyme /-ɒf/ and the other, /-aʊ/. There's no information in the Japanese letter は that tells you whether it's pronounced /ha/ or /wa/; no information in the Chinese letter 好 that tells you whether it's /haw˧˥/, /haw˩/, /haw˨˩˦/ etc.; no information in 的 that tells whether it's /te/ or /ti˧˥/ or /ti˥˩/, etc. – melissa_boiko Aug 20 '17 at 8:07
  • 3
    @Joker: this is because IPA is a representation of sound; it's not a representation of other writing systems. IPA doesn't represent letters like "ough"; it represents sounds, like /ɒf/ (in "cough") or /aʊ/ (in "bough"). If you want to convert a text to IPA, first you have to convert the text to sound; then you have the object that IPA represents (sound), and may convert to it. However, that first step of converting text to sound is already nontrivial. Determining the sound of "ough" needs a dictionary; determining the sound of "the" needs syntactical parsing w/ stress/prosody, etc. – melissa_boiko Aug 20 '17 at 8:11

The English Wiktionary has some Lua infrastructure to do this:

  • Chinese languages: Module:zh-pron. Generates IPA from the romanizations of the various languages (Mandarin pinyin, Cantonese jyutping, etc.)
  • Korean: Module:ko-pron
  • Arabic: Module:ar-pronunciation (cannot link). Requires vowel signs, as fdb stated.

These all have local dependencies and aren't easily portable, but look up "Extension:Scribunto/Lua reference manual" if you want to read more about how to use the Mediawiki Lua module system.


I'll deal with Korean writing. I don't know that there are any tools for directly converting the Korean writing system, hangeul, to IPA, but you can do it in several steps. You'll need some knowledge of Korean phonetics though.

First, you'll have to convert from hangeul syllables to letters. If you're programming in R, you can import the package KoNLP and use the function convertHangulStringToJamos. This will take syllables like 한글 and turn it into individual letters like ㅎㅏㄴㄱㅡㄹ. If you're using Python, there is information about this process here, but I haven't tried it.

Next, you'll need to make some changes to deal with the assimilation rules in Korean: for example, ㅎ+ㄷ/ㄱ/ㅂ/ㅈ -> ㅌ/ㅋ/ㅍ/ㅊ and ㄴ followed by ㄱ -> ㅇ. Thus you will change the above ㅎㅏㄴㄱㅡㄹ to ㅎㅏㅇㄱㅡㄹ.

Then you'll need to convert these to the correct IPA symbols for each one. Korean is fairly phonetic, so this won't be too complicated, but your algorithm will have to take into account whether a consonant is beginning or ending a syllable, and whether a syllable-ending consonant is followed by a vowel, consonant or nothing. You would convert ㅎㅏㅇㄱㅡㄹ to [haŋgɯl].

This process will get you a correct pronunciation almost all of the time. However, there are some words which just aren't pronounced exactly as they are written. For example, the word 효과 is actually pronounced as if "효꽈". You could only get these correct with a dictionary of irregular spellings - however, I have no idea if such a thing exists.


With Hebrew and Arabic it would only work if all the vowel signs are written out. Which normally they are not.

  • 1
    Does that mean (using MSA as the variant in question) that without the vowel marks, there are sentences which are orthographically ambiguous in context? – user6726 Aug 13 '17 at 19:53
  • 2
    It does mean that.@user6726 – fdb Aug 13 '17 at 19:57
  • If you have an example at hand, that would be informative. You can write it in Arabic. – user6726 Aug 13 '17 at 20:07
  • 2
    @user6726: A famous one: غُلِبَتِ ٱلرُّومُ فِىٓ أَدۡنَى ٱلۡأَرۡضِ وَهُم مِّنۢ بَعۡدِ غَلَبِهِمۡ سَيَغۡلِبُونَ – fdb Aug 13 '17 at 20:19
  • 2
    It is from the Qur'an. Vocalised as above it means "the Romans were vanquished .... but in a few years they will vanquish". With different vowels it means "the Romans have vanquished... but in a few years they will be vanquished". @Mitch – fdb Aug 15 '17 at 11:53

This is partial answer, only for Korean. As Donny Frank mentions in his coment, there is lua module on Wiktionary for Korean: Module:ko-pron. I made python version of it which does not require any additional dependency and just converts hangul into 6 different representations, among which IPA presents. Here is the link to ko-pron on PyPI

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.