code: def metaphone(s):
      _check_type(s)
  
      result = []
  
      s = _normalize(s.lower())
  
      # skip first character if s starts with these
      if s.startswith(("kn", "gn", "pn", "wr", "ae")):
          s = s[1:]
  
      i = 0
  
      while i < len(s):
          c = s[i]
          next = s[i + 1] if i < len(s) - 1 else "*****"
          nextnext = s[i + 2] if i < len(s) - 2 else "*****"
  
          # skip doubles except for cc
          if c == next and c != "c":
              i += 1
              continue
  
          if c in "aeiou":
              if i == 0 or s[i - 1] == " ":
                  result.append(c)
          elif c == "b":
              if (not (i != 0 and s[i - 1] == "m")) or next:
                  result.append("b")
          elif c == "c":
              if next == "i" and nextnext == "a" or next == "h":
                  result.append("x")
                  i += 1
              elif next in "iey":
                  result.append("s")
                  i += 1
              else:
                  result.append("k")
          elif c == "d":
              if next == "g" and nextnext in "iey":
                  result.append("j")
                  i += 2
              else:
                  result.append("t")
          elif c in "fjlmnr":
              result.append(c)
          elif c == "g":
              if next in "iey":
                  result.append("j")
              elif next == "h" and nextnext and nextnext not in "aeiou":
                  i += 1
              elif next == "n" and not nextnext:
                  i += 1
              else:
                  result.append("k")
          elif c == "h":
              if i == 0 or next in "aeiou" or s[i - 1] not in "aeiou":
                  result.append("h")
          elif c == "k":
              if i == 0 or s[i - 1] != "c":
                  result.append("k")
          elif c == "p":
              if next == "h":
                  result.append("f")
                  i += 1
              else:
                  result.append("p")
          elif c == "q":
              result.append("k")
          elif c == "s":
              if next == "h":
                  result.append("x")
                  i += 1
              elif next == "i" and nextnext in "oa":
                  result.append("x")
                  i += 2
              else:
                  result.append("s")
          elif c == "t":
              if next == "i" and nextnext in "oa":
                  result.append("x")
              elif next == "h":
                  result.append("0")
                  i += 1
              elif next != "c" or nextnext != "h":
                  result.append("t")
          elif c == "v":
              result.append("f")
          elif c == "w":
              if i == 0 and next == "h":
                  i += 1
                  result.append("w")
              elif next in "aeiou":
                  result.append("w")
          elif c == "x":
              if i == 0:
                  if next == "h" or (next == "i" and nextnext in "oa"):
                      result.append("x")
                  else:
                      result.append("s")
              else:
                  result.append("k")
                  result.append("s")
          elif c == "y":
              if next in "aeiou":
                  result.append("y")
          elif c == "z":
              result.append("s")
          elif c == " ":
              if len(result) > 0 and result[-1] != " ":
                  result.append(" ")
  
          i += 1
  
      return "".join(result).upper()
  
file_path: jellyfish/python/jellyfish/_jellyfish.py
imports: import unicodedata
  from collections import defaultdict
  from itertools import zip_longest
  import warnings
label_desc: Use image node_id 13 for calling a global function with example usage: metaphone(s) and returns: str