# 音频预缓存实用程序, 独立于主程序之外, 但依赖 particles 组件 import particles as pt import edge_tts as tts from pathlib import Path import shutil def precache(text): cache_dir = Path(f"./cache/voice/") cache_dir.mkdir(parents = True, exist_ok = True) cache = cache_dir / f"{text}.wav" if not cache.exists(): communicate = tts.Communicate(text, "zh-CN-YunjianNeural") communicate.save_sync(f"./cache/voice/{text}.wav") def proc_file(path): nu = pt.NucleonUnion(path) c = 0 for i in nu.nucleons: c += 1 print(f"预缓存 [{nu.name}] ({c}/{len(nu)}): {i["content"]}") precache(f"{i["content"]}") def walk(path_str): path = Path(path_str) print(f"正在遍历目录: {path}") for item in path.iterdir(): if item.is_file(): if item.suffix == ".toml": print(f"正预缓存文件: {item.name}") proc_file(item) elif item.is_dir(): print(f"进入目录: {item.name}") print("音频预缓存实用程序") print("需要?") print("全部缓存: A") print("清空缓存: C") choice = input("输入选项 $ ") if choice == "a" or choice == "A": walk("./nucleon") if choice == "c" or choice == "C": shutil.rmtree("./cache/voice")