实现音频预缓存实用程序
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@
|
|||||||
__pycache__/
|
__pycache__/
|
||||||
scripts/
|
scripts/
|
||||||
.idea
|
.idea
|
||||||
|
cache
|
@@ -0,0 +1,42 @@
|
|||||||
|
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")
|
@@ -2,6 +2,7 @@ import typing
|
|||||||
import particles as pt
|
import particles as pt
|
||||||
import pathlib
|
import pathlib
|
||||||
import auxiliary as aux
|
import auxiliary as aux
|
||||||
|
|
||||||
class Parser():
|
class Parser():
|
||||||
"""轻量级版本文件解析器, 用于文件管理器的记忆状态解析"""
|
"""轻量级版本文件解析器, 用于文件管理器的记忆状态解析"""
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user