def METHOD_NAME(self, mixstr):
    ctlist = []
    patn = re.compile(r'(.*\s*?)(<speak>.*?</speak>)(.*\s*)$', re.M | re.S)
    mat = re.match(patn, mixstr)
    if mat:
        # pre <speak>
        pre_xml = mat.group(1)
        # between <speak> ... </speak>
        in_xml = mat.group(2)
        # post </speak>
        after_xml = mat.group(3)
        # pre with none syllable
        if pre_xml:
            ctlist.append([pre_xml, []])
        # between with syllable
        # [(sub sentence, [syllables]), ...]
        dom = DomXml(in_xml)
        pinyinlist = dom.get_pinyins_for_xml()
        ctlist = ctlist + pinyinlist
        # post with none syllable
        if after_xml:
            ctlist.append([after_xml, []])
    else:
        ctlist.append([mixstr, []])
    return ctlist