#!/usr/bin/env python3 import sys # https://www.phon.ucl.ac.uk/home/sampa/x-sampa.htm # https://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf TODO XSAMPA_TO_IPA = { "!": "\uA71C", "!\\": "\u01C3", "%": "\u02CC", "&": "\u0276", "'": "\u02B2", "-\\": "\u203F", "1": "\u0268", "2": "\u00f8", "3": "\u025C", "3\\": "\u025E", "4": "\u027E", "5": "\u026b", "6": "\u0250", "7": "\u0264", "8": "\u0275", "9": "\u0153", ":": "\u02D0", ":\\": "\u02D1", "": "\u02E9", "": "\u2198", "": "\u02E6", "": "\u02E8", "": "\u02E7", "": "\u2197", "": "\u02E5", "<\\": "\u02A2", "=": "\u0329", "=\\": "\u01C2", ">\\": "\u02A1", "?": "\u0294", "?\\": "\u0295", "@": "\u0259", "@\\": "\u0258", "A": "\u0251", "B": "\u03B2", "B\\": "\u0299", "C": "\u00E7", "D": "\u00F0", "E": "\u025B", "F": "\u0271", "G": "\u0263", "G\\": "\u0262", "G\\_<": "\u029B", "H": "\u0265", "H\\": "\u029C", "I": "\u026A", "J": "\u0272", "J\\_<": "\u0284", "K": "\u026C", "K\\": "\u026E", "L": "\u028E", "L\\": "\u029F", "M": "\u026F", "M\\": "\u0270", "N": "\u014B", "N\\": "\u0274", "O": "\u0254", "O\\": "\u0298", "P": "\u028B", "Q": "\u0252", "R": "\u0281", "R\\": "\u0280", "S": "\u0283", "T": "\u03B8", "U": "\u028A", "V": "\u028C", "W": "\u028D", "X": "\u03C7", "X\\": "\u0127", "Y": "\u028F", "Z": "\u0292", "^": "\uA71B", "_": "\u0361", "_+": "\u031F", "_-": "\u0320", "_0": "\u0325", "_=": "\u0329", "_>": "\u02BC", "_?\\": "\u02E4", "_A": "\u0318", "_B": "\u030F", "_B_L": "\u1DC5", "_F": "\u0302", "_F_R": "\u1dc9", "_G": "\u02E0", "_H": "\u0341", "_H_T": "\u1DC4", "_L": "\u0340", "_M": "\u0304", "_N": "\u033C", "_O": "\u0339", "_R": "\u030C", "_R_F": "\u1dc8", "_T": "\u030B", "_X": "\u0306", "_^": "\u032F", "_a": "\u033A", "_c": "\u031C", "_d": "\u032A", "_e": "\u0334", "_h": "\u02B0", "_j": "\u02B2", "_k": "\u0330", "_l": "\u02E1", "_m": "\u033B", "_n": "\u207F", "_o": "\u031E", "_q": "\u0319", "_r": "\u031D", "_t": "\u0324", "_v": "\u032C", "_w": "\u02B7", "_x": "\u033D", "_}": "\u031A", "_~": "\u0303", "`": "\u02DE", "b_<": "\u0253", "d_<": "\u0257", "d`": "\u0256", "d`_<": "\u1D91", "g_<": "\u0260", "h\\": "\u0266", "j\\": "\u029D", "l\\": "\u027A", "l`": "\u026D", "n`": "\u0273", "p\\": "\u0278", "r\\": "\u0279", "r\\`": "\u027B", "r` ": "\u027D", "s\\": "\u0255", "s`": "\u0282", "t`": "\u0288", "v\\": "\u028B", "x\\": "\u0267", "z\\": "\u0291", "z`": "\u0290", "{": "\u00E6", "|\\": "\u01C0", "|\\|\\": "\u01C1", "}": "\u0289", "~": "\u0303", '"': "\u02C8", '_"': "\u0308", } if __name__ == "__main__": text = " ".join(sys.argv[1:]) for xsampa, ipa in sorted(XSAMPA_TO_IPA.items(), key=lambda item: -len(item[0])): text = text.replace(xsampa, ipa) sys.stdout.write(text)