Download utils/tts_utils.py from PerrinT/office: direct link, hf CLI and curl.
- Browser
- Download file 1.74 kB
-
https://huggingface.co/spaces/PerrinT/office/resolve/main/utils/tts_utils.py
- Command line
-
hf download hf://spaces/PerrinT/office/utils/tts_utils.py
-
curl -L -o tts_utils.py https://huggingface.co/spaces/PerrinT/office/resolve/main/utils/tts_utils.py
1.74 kB
| 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 | |