File size: 1,737 Bytes
3373b3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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