import re def generate_tts_script(text, speed="normal", add_pauses=True, add_emphasis=True): """生成带停顿和标记的朗读脚本""" lines = text.strip().split("\n") result_lines = [] for line in lines: line = line.strip() if not line: if add_pauses: result_lines.append("[停顿 0.5秒]") continue # 检测标题行(数字开头或全大写或短行) is_title = ( re.match(r'^[\d一二三四五六七八九十]+[、..)\s]', line) or (len(line) <= 15 and not line.endswith(("。", ",", ";", "!", "?"))) ) if is_title and add_emphasis: result_lines.append(f"[强调] {line} [/强调]") if add_pauses: result_lines.append("[停顿 1秒]") continue # 处理标点停顿 processed = line if add_pauses: processed = processed.replace("。", "。[停顿 0.3秒]") processed = processed.replace("!", "![停顿 0.3秒]") processed = processed.replace("?", "?[停顿 0.3秒]") processed = processed.replace(";", ";[停顿 0.2秒]") # 检测数字和英文,标记需放慢 if add_emphasis: processed = re.sub( r'(\d+(?:\.\d+)?(?:%|万|亿|元|个|条|项|次|天|年|月|日)?)', r'[\1]', processed ) result_lines.append(processed) script = "\n".join(result_lines) # 添加头部说明 speed_map = {"slow": "慢速", "normal": "正常", "fast": "快速"} header = f"[语速: {speed_map.get(speed, speed)}]\n\n" return header + script