code: def play_mp3(self, mp3=None, data=None, block=True):
          
          if platform.machine() == 'mips':
              command = 'madplay -o wave:- - | aplay -M'
          else:
              command = 'ffplay -autoexit -nodisp -'
  
          if mp3:
              def gen(m):
                  with open(m, 'rb') as f:
                      d = f.read(1024)
                      while d:
                          yield d
                          d = f.read(1024)
  
              data = gen(mp3)
  
          if isinstance(data, types.GeneratorType):
              p = subprocess.Popen(command, stdin=subprocess.PIPE, shell=True)
              for d in data:
                  p.stdin.write(d)
  
              p.stdin.close()
          else:
              with tempfile.NamedTemporaryFile(mode='w+b') as f:
                  f.write(data)
                  f.flush()
                  f.seek(0)
                  p = subprocess.Popen(command, stdin=f, shell=True)
  
          if block:
              p.wait()
docs: It supports GeneratorType mp3 stream or mp3 data string
          Args:
              mp3: mp3 file
              data: mp3 generator or data
              block: if true, block until audio is played.