Skip to content

Commit c06f1d4

Browse files
committed
feat(dl): support new safetensors model & drop gitcode 👎
1 parent 9f9abec commit c06f1d4

File tree

4 files changed

+57
-47
lines changed

4 files changed

+57
-47
lines changed

.github/workflows/checksum.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313

1414
- name: Run RVC-Models-Downloader
1515
run: |
16-
wget https://github.com/fumiama/RVC-Models-Downloader/releases/download/v0.2.7/rvcmd_linux_amd64.deb
16+
wget https://github.com/fumiama/RVC-Models-Downloader/releases/download/v0.2.8/rvcmd_linux_amd64.deb
1717
sudo apt -y install ./rvcmd_linux_amd64.deb
1818
rm -f ./rvcmd_linux_amd64.deb
1919
rvcmd -notrs -w 1 -notui assets/chtts

ChatTTS/res/sha256_map.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
{
2-
"sha256_asset_Decoder_pt" : "9964e36e840f0e3a748c5f716fe6de6490d2135a5f5155f4a642d51860e2ec38",
2+
"sha256_asset_Decoder_pt" : "9964e36e840f0e3a748c5f716fe6de6490d2135a5f5155f4a642d51860e2ec38",
33
"sha256_asset_DVAE_full_pt" : "553eb75763511e23f3e5f86303e2163c5ca775489d637fb635d979c8ae58bbe5",
4-
"sha256_asset_GPT_pt" : "d7d4ee6461ea097a2be23eb40d73fb94ad3b3d39cb64fbb50cb3357fd466cadb",
5-
"sha256_asset_Vocos_pt" : "09a670eda1c08b740013679c7a90ebb7f1a97646ea7673069a6838e6b51d6c58",
4+
"sha256_asset_Embed_safetensors" : "2ff0be7134934155741b643b74e32fb6bf3eec41257984459b2ed60cdb4c48b0",
5+
"sha256_asset_Vocos_pt" : "09a670eda1c08b740013679c7a90ebb7f1a97646ea7673069a6838e6b51d6c58",
6+
7+
"sha256_asset_gpt_config_json" : "0aaa1ecd96c49ad4f473459eb1982fa7ad79fa5de08cde2781bf6ad1f9a0c236",
8+
"sha256_asset_gpt_model_safetensors" : "cd0806fd971f52f6a22c923ec64982b305e817bcc41ca83417fcf9141b984a0f",
69

710
"sha256_asset_tokenizer_special_tokens_map_json": "bd0ac9d9bb1657996b5c5fbcaa7d80f8de530d01a283da97f89deae5b1b8d011",
811
"sha256_asset_tokenizer_tokenizer_config_json" : "43e9d658b554fa5ee8d8e1d763349323bfef1ed7a89c0794220ab8861387d421",

ChatTTS/utils/dl.py

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import hashlib
44
import requests
55
from io import BytesIO
6-
from typing import Dict
6+
from typing import Dict, Tuple, Optional
77
from mmap import mmap, ACCESS_READ
88

99
from .log import logger
@@ -42,46 +42,54 @@ def check_model(
4242
os.remove(bakfile)
4343
return True
4444

45+
def check_folder(base_dir: Path, *innder_dirs: str, names: Tuple[str], sha256_map: Dict[str, str], update=False) -> bool:
46+
key = "sha256_"
47+
current_dir = base_dir
48+
for d in innder_dirs:
49+
current_dir /= d
50+
key += f"{d}_"
51+
52+
for model in names:
53+
menv = model.replace(".", "_")
54+
if not check_model(
55+
current_dir, model, sha256_map[f"{key}{menv}"], update
56+
):
57+
return False
58+
return True
4559

4660
def check_all_assets(base_dir: Path, sha256_map: Dict[str, str], update=False) -> bool:
4761
logger.get_logger().info("checking assets...")
4862

49-
current_dir = base_dir / "asset"
50-
names = [
63+
if not check_folder(base_dir, "asset", names=(
5164
"Decoder.pt",
5265
"DVAE_full.pt",
53-
"GPT.pt",
66+
"Embed.safetensors",
5467
"Vocos.pt",
55-
]
56-
for model in names:
57-
menv = model.replace(".", "_")
58-
if not check_model(
59-
current_dir, model, sha256_map[f"sha256_asset_{menv}"], update
60-
):
61-
return False
68+
), sha256_map=sha256_map, update=update):
69+
return False
70+
71+
if not check_folder(base_dir, "asset", "gpt", names=(
72+
"config.json",
73+
"model.safetensors",
74+
), sha256_map=sha256_map, update=update):
75+
return False
6276

63-
current_dir = base_dir / "asset" / "tokenizer"
64-
names = [
77+
if not check_folder(base_dir, "asset", "tokenizer", names=(
6578
"special_tokens_map.json",
6679
"tokenizer_config.json",
6780
"tokenizer.json",
68-
]
69-
for model in names:
70-
menv = model.replace(".", "_")
71-
if not check_model(
72-
current_dir, model, sha256_map[f"sha256_asset_tokenizer_{menv}"], update
73-
):
74-
return False
81+
), sha256_map=sha256_map, update=update):
82+
return False
7583

7684
logger.get_logger().info("all assets are already latest.")
7785
return True
7886

7987

80-
def download_and_extract_tar_gz(url: str, folder: str):
88+
def download_and_extract_tar_gz(url: str, folder: str, headers: Optional[Dict[str, str]] = None):
8189
import tarfile
8290

8391
logger.get_logger().info(f"downloading {url}")
84-
response = requests.get(url, stream=True, timeout=(5, 10))
92+
response = requests.get(url, headers=headers, stream=True, timeout=(10, 3))
8593
with BytesIO() as out_file:
8694
out_file.write(response.content)
8795
out_file.seek(0)
@@ -91,11 +99,11 @@ def download_and_extract_tar_gz(url: str, folder: str):
9199
logger.get_logger().info(f"extracted into {folder}")
92100

93101

94-
def download_and_extract_zip(url: str, folder: str):
102+
def download_and_extract_zip(url: str, folder: str, headers: Optional[Dict[str, str]] = None):
95103
import zipfile
96104

97105
logger.get_logger().info(f"downloading {url}")
98-
response = requests.get(url, stream=True, timeout=(5, 10))
106+
response = requests.get(url, headers=headers, stream=True, timeout=(10, 3))
99107
with BytesIO() as out_file:
100108
out_file.write(response.content)
101109
out_file.seek(0)
@@ -105,15 +113,15 @@ def download_and_extract_zip(url: str, folder: str):
105113
logger.get_logger().info(f"extracted into {folder}")
106114

107115

108-
def download_dns_yaml(url: str, folder: str):
116+
def download_dns_yaml(url: str, folder: str, headers: Dict[str, str]):
109117
logger.get_logger().info(f"downloading {url}")
110-
response = requests.get(url, stream=True, timeout=(5, 10))
118+
response = requests.get(url, headers=headers, stream=True, timeout=(100, 3))
111119
with open(os.path.join(folder, "dns.yaml"), "wb") as out_file:
112120
out_file.write(response.content)
113121
logger.get_logger().info(f"downloaded into {folder}")
114122

115123

116-
def download_all_assets(tmpdir: str, version="0.2.7"):
124+
def download_all_assets(tmpdir: str, version="0.2.8"):
117125
import subprocess
118126
import platform
119127

@@ -150,20 +158,13 @@ def download_all_assets(tmpdir: str, version="0.2.7"):
150158
os.chmod(cmdfile, 0o755)
151159
subprocess.run([cmdfile, "-notui", "-w", "0", "assets/chtts"])
152160
except Exception:
153-
BASE_URL = "https://raw.gitcode.com/u011570312/RVC-Models-Downloader/assets/"
154-
suffix = {
155-
"darwin_amd64": "987",
156-
"darwin_arm64": "988",
157-
"linux_386": "989",
158-
"linux_amd64": "990",
159-
"linux_arm64": "991",
160-
"windows_386": "992",
161-
"windows_amd64": "993",
162-
}[f"{system_type}_{architecture}"]
163-
RVCMD_URL = BASE_URL + suffix
161+
BASE_URL = "https://gitea.seku.su/fumiama/RVC-Models-Downloader/releases/download/"
162+
suffix = "zip" if is_win else "tar.gz"
163+
RVCMD_URL = BASE_URL + f"v{version}/rvcmd_{system_type}_{architecture}.{suffix}"
164164
download_dns_yaml(
165-
"https://raw.gitcode.com/u011570312/RVC-Models-Downloader/raw/main/dns.yaml",
165+
"https://gitea.seku.su/fumiama/RVC-Models-Downloader/raw/branch/main/dns.yaml",
166166
tmpdir,
167+
headers={"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"},
167168
)
168169
if is_win:
169170
download_and_extract_zip(RVCMD_URL, tmpdir)

tools/checksum/tmpl.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,25 @@ package main
33
var files = [...]string{
44
"asset/Decoder.pt",
55
"asset/DVAE_full.pt",
6-
"asset/GPT.pt",
6+
"asset/Embed.safetensors",
77
"asset/Vocos.pt",
88

9+
"asset/gpt/config.json",
10+
"asset/gpt/model.safetensors",
11+
912
"asset/tokenizer/special_tokens_map.json",
1013
"asset/tokenizer/tokenizer_config.json",
1114
"asset/tokenizer/tokenizer.json",
1215
}
1316

1417
const jsontmpl = `{
15-
"sha256_asset_Decoder_pt" : "%s",
18+
"sha256_asset_Decoder_pt" : "%s",
1619
"sha256_asset_DVAE_full_pt" : "%s",
17-
"sha256_asset_GPT_pt" : "%s",
18-
"sha256_asset_Vocos_pt" : "%s",
20+
"sha256_asset_Embed_safetensors" : "%s",
21+
"sha256_asset_Vocos_pt" : "%s",
22+
23+
"sha256_asset_gpt_config_json" : "%s",
24+
"sha256_asset_gpt_model_safetensors" : "%s",
1925
2026
"sha256_asset_tokenizer_special_tokens_map_json": "%s",
2127
"sha256_asset_tokenizer_tokenizer_config_json" : "%s",

0 commit comments

Comments
 (0)