symbols.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from itertools import chain
  2. punctuation = ["!", "?", "…", ",", ".", "'", "-"]
  3. pu_symbols = punctuation + ["SP", "UNK"]
  4. pad = "_"
  5. # fmt: off
  6. # Chinese (OpenCpop)
  7. zh_symobls_consonants = [
  8. 'AA', 'EE', 'OO', 'b', 'c', 'ch', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's',
  9. 'sh', 't', 'w', 'x', 'y', 'z', 'zh'
  10. ]
  11. zh_symobls_vowels_no_tones = [
  12. 'E', 'En', 'a', 'ai', 'an', 'ang', 'ao', 'e', 'ei', 'en', 'eng', 'er', 'i', 'i0', 'ia', 'ian', 'iang',
  13. 'iao', 'ie', 'in', 'ing', 'iong', 'ir', 'iu', 'o', 'ong', 'ou', 'u', 'ua', 'uai', 'uan', 'uang', 'ui',
  14. 'un', 'uo', 'v', 'van', 've', 'vn'
  15. ]
  16. zh_symbols = zh_symobls_consonants + [f"{s}{t}" for s in zh_symobls_vowels_no_tones for t in range(1, 6)]
  17. # Japanese (OpenJTalk)
  18. jp_symbols = [
  19. 'I', 'N', 'U', 'a', 'b', 'by', 'ch', 'cl', 'd', 'dy', 'e', 'f', 'g', 'gy', 'h', 'hy', 'i', 'j', 'k', 'ky',
  20. 'm', 'my', 'n', 'ny', 'o', 'p', 'py', 'r', 'ry', 's', 'sh', 't', 'ts', 'u', 'v', 'w', 'y', 'z'
  21. ]
  22. # English (ARPA)
  23. en_symbols = [
  24. 'AH0', 'S', 'AH1', 'EY2', 'AE2', 'EH0', 'OW2', 'UH0', 'NG', 'B', 'G', 'AY0', 'M', 'AA0', 'F', 'AO0', 'ER2', 'UH1', 'IY1', 'AH2', 'DH', 'IY0', 'EY1', 'IH0', 'K', 'N', 'W', 'IY2', 'T', 'AA1', 'ER1', 'EH2', 'OY0', 'UH2', 'UW1', 'Z', 'AW2', 'AW1', 'V', 'UW2', 'AA2', 'ER', 'AW0', 'UW0', 'R', 'OW1', 'EH1', 'ZH', 'AE0', 'IH2', 'IH', 'Y', 'JH', 'P', 'AY1', 'EY0', 'OY2', 'TH', 'HH', 'D', 'ER0', 'CH', 'AO1', 'AE1', 'AO2', 'OY1', 'AY2', 'IH1', 'OW0', 'L', 'SH'
  25. ]
  26. # fmt: on
  27. symbol_systems = [
  28. (None, [pad]),
  29. ("ZH", zh_symbols),
  30. ("JP", jp_symbols),
  31. ("EN", en_symbols),
  32. (None, pu_symbols),
  33. ]
  34. symbols = list(
  35. chain.from_iterable(
  36. [(lang, s) for s in symbols] for lang, symbols in symbol_systems
  37. )
  38. )
  39. symbols_to_id = {s: i for i, s in enumerate(symbols)}
  40. # language maps
  41. language_id_map = {pad: 0, "ZH": 1, "JP": 2, "EN": 3}
  42. language_unicode_range_map = {
  43. "ZH": [(0x4E00, 0x9FFF)],
  44. "JP": [(0x4E00, 0x9FFF), (0x3040, 0x309F), (0x30A0, 0x30FF), (0x31F0, 0x31FF)],
  45. "EN": [(0x0000, 0x007F)],
  46. }
  47. num_languages = len(language_id_map.keys())