Does there exist a definitive network or database that maps the relationships between phonetic symbols?

Similar to a word net, it would be a map representing the distance (or similarity) between phonetic symbols.

A primitive example of a Phonetic Network is the Soundex. It clusters sounds that are similar, and as such helps identify homophones or potential misspellings.

soundex clusters example: [a,e,i,o,u,y,h,w,NIL][b,f,p,v][c,g,j,k,q,s,x,z][d,t][l][m,n][r]

If the Soundex were a network, we would have, e.g; edge distances [b,f]: 0, [b,m]: \infty.

Have linguists compiled a more definitive, higher resolution map that covers the entire IPA, and where can I find it?

  • 1
    Yes, features were invented in 1949.
    – user6726
    Nov 5, 2016 at 5:01
  • @user6726 I'm sorry, what do you mean? Nov 5, 2016 at 15:59
  • 2
    Do you know what phonological features are?
    – user6726
    Nov 5, 2016 at 16:19
  • That is to say, if you Google "phonological features" you will find a lot of references and definitions. Though not necessarily what you're looking for.
    – jlawler
    Nov 5, 2016 at 17:17
  • 2
    @powersupply I understand that you want a distance between two phones in terms of their perceptual similarity. This is something language-specific - what is similar to speakers of one language, may be clearly separate for speakers of another language, and vice versa. Do you want to compute perceptual similarity from the point of view of a speaker of some specific language?
    – michau
    Nov 5, 2016 at 17:46

2 Answers 2


To preface: "similarity" depends on the listener, as well as on the sound itself. Categorical perception is a powerful force. To a native English speaker aspiration is almost imperceptible, while /s/ and /θ/ are clearly distinct; to a native Hindi speaker, the opposite would be true.

The best way I know of to objectively define phonetic difference is in terms of distinctive features. Every sound can be written as a combination of these features: for instance, /t/ is a "voiceless alveolar plosive", meaning that it lacks the "voice" feature but has "alveolar" and "plosive".

Some features are boolean, such as "rounded" for a vowel. It's there or it isn't. Others have multiple comparable values, such as "place of articulation", where bilabial is closer to labiodental than it is to velar. Still others are generally incomparable, such as "manner of articulation" (is a click more like a fricative or an approximant?).

Unfortunately I don't know of any definitive, established network of phonemes based on these principles. But a distance metric could be established based on your needs.

For example, here's my attempt at a simple distance algorithm, written in Python (representing phonemes as dictionaries).

def featural_distance(a, b):
    distance = 0
    for key in set().union(a.keys(), b.keys()):
            if key in a and key not in b:
                distance += int(a[key])
            elif key in b and key not in a:
                distance += int(b[key])
            elif a[key] != b[key]:
                distance += abs(int(a[key]) - int(b[key]))
        except ValueError: # This will happen if either of the two has a string value. In that case, assume they can't be directly compared.
            distance += 1
    return distance

def parse_features(s):
    d = {}
    for word in s.split():
        w = word.strip().lower()
    return d

And an example feature set:

features = {
    'voiced'        : {'voice' : 1},
    'voiceless'     : {'voice' : 0},

    'bilabial'      : {'place' : 1},
    'labiodental'   : {'place' : 2},
    'dental'        : {'place' : 3},
    'alveolar'      : {'place' : 4},
    'retroflex'     : {'place' : 5},
    'palatoalveolar': {'place' : 6},
    'palatal'       : {'place' : 7},
    'velar'         : {'place' : 8},
    'uvular'        : {'place' : 9},
    'pharyngeal'    : {'place' : 10},
    'glottal'       : {'place' : 11},

    'plosive'       : {'type' : 'p'},
    'tap'           : {'type' : 't'},
    'trill'         : {'type' : 'r'},
    'nasal'         : {'type' : 'n'},
    'fricative'     : {'type' : 'f'},
    'approximant'   : {'type' : 'l'},
    'vowel'         : {'type' : 'a'},

    'lateral'       : {'lateral' : 1},

    'high'          : {'height' : 1},
    'mid'           : {'height' : 2},
    'low'           : {'height' : 3},

    'front'         : {'space' : 1},
    'center'        : {'space' : 2},
    'back'          : {'space' : 3},

    'rounded'       : {'round' : 1},
    'unrounded'     : {'round' : 0},

    'aspirated'     : {'aspir' : 1},
    'unaspirated'   : {'aspir' : 0},

    'long'          : {'length' : 1},
    'short'         : {'length' : 0},

    # Add features here

So the distance from "voiced bilabial plosive" to "voiceless bilabial plosive" is 1, to "voiceless bilabial fricative" is 2, and to "voiceless labiodental fricative" is 3.

This certainly has its flaws: /u/ and /w/ are significantly farther apart than they probably should be, for instance, due to vowel and consonant articulation places being stored separately. A better feature set might take that into account and give them a distance of 1 or 2; this is left as an exercise for the reader.


I think I have a bit better handle on what you're looking for. At a linguistic level, each segment is representable as an integer where the nth bit is the + or - specification of the nth feature. The difference between any two segments is thus computable as the number of bits difference between the segments, and the "distance" is the number of different bits. So [b] and [p] which differ in exactly one feature have a distance of 1; [b] and [φ] differ in two features so have a distance of two. From this, you could generate "all the pairs that differ by 1; all the pairs that differ by 2". You can also compute differences in classes, for example [ptk] compared to [bdg] by masking off the bits that are not identical within each class.

For English spell-checking, this could be useless, but it might underlie the North Saami spell-checker, so ultimate utility depends on why you really care.


Going beyond just answering the question that was asked, here are answers to related questions that maybe the OP wished he had asked. One is whether there is a network of segment confusability relations, which addresses a perceptual question. You can approach the question generally or language specifically. The general form of the question is "which two segments as pronounced in language X are most likely to be 'indistinguishable' for any human (with normal hearing)?". Thus you could inquire of speakers of all of the world's languages how hard it is to distinguish [l] and [l'] in Lushootseed. The language-specific form asks about indistinguishability where the subject pool is speakers of language Y (Y could = X). The most language-specific version, also the least fraught from an experimental perspective, is the case where Y=X – ask speakers of a language to distinguish sounds of their own language.

This raw form of the question has an invalid assumption, which can be eliminated, that it's just the segment that matters – in fact, the implied problem is related to the context that segments appear in. You need to control for contexts, so that you compare "rip, rib; writ, rid" and not "rip, rib; tie, die". The standard way to do this is find word pairs differing in one sound, and fuzz the recordings with noise to obscure the segment in question – the test is whether speakers can correctly identify the spoken word. You need a big sample to cover the field of "contexts". The result will be a table of segment pairs in a specific context, and you can decide what kind of theory of "context" you want to adopt. (Example: a linguistically-motivated distinction for consonants would be "after a short vowel when at the end of a syllable", which might generalize to "after a vowel when at the end of a syllable" or maybe even "after a sonorant when at the end of a syllable").

This doesn't carry over to perception of X by speakers of Y, or to any perception of Y, and it doesn't work very well for English unless you narrow the population to a specific variety. You can't come up with anything valid for all languages, but you could do a reasonable job for one language. I don't think this has been done even half-definitively for English, but it should in principle be doable in less than a lifetime.

  • 1
    You seem to assume that sounds that differ in one feature are more similar and easier to confuse for each other than those than differ in two features and so on. Where do you get this assumption from? It doesn't match up with my experience. For example, I can easily tell /f/ from /v/, and they differ only in voicing. On the other hand, I've had many problems telling /h/ from /x/, and their sets of features are very different.
    – michau
    Nov 5, 2016 at 18:23
  • 1
    No, I don't. I simply describe the formal method of computing similarity. I don;t make any assumption about whether the OP is asking a psychological question. As I pointed out in a related question somewhere here, psychological distance is not actually computable, though it may be operationally measured in a language-specific case by pairwise testing in a specific context.
    – user6726
    Nov 5, 2016 at 20:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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