Delete hf download tab
This commit is contained in:
@@ -1,102 +0,0 @@
|
||||
import shutil
|
||||
|
||||
import gradio as gr
|
||||
from huggingface_hub import snapshot_download
|
||||
|
||||
from config import get_path_config
|
||||
from style_bert_vits2.logging import logger
|
||||
|
||||
|
||||
assets_root = get_path_config().assets_root
|
||||
|
||||
how_to_md = """
|
||||
## 使い方
|
||||
|
||||
学習済みモデルの共有サイト Hugging Face 🤗 に公開されているモデルをダウンロードして音声合成で使えるようにします。
|
||||
|
||||
例:
|
||||
|
||||
- `https://huggingface.co/username/my_sbv2_model`を指定すると、`model_assets/username-my_sbv2_model`に全体がダウンロードされます。
|
||||
- `https://huggingface.co/username/my_sbv2_models/tree/main/model1`を指定すると、`model_assets/username-my_sbv2_models-model1`に`model1`フォルダがダウンロードされます。
|
||||
|
||||
**注意**
|
||||
|
||||
- **必ずモデルの利用には(掲載があれば)利用規約を確認してください。** ダウンロード後にREADMEファイルが下記に表示されます。
|
||||
- 音声合成で使うには、`model_assets/{model_name}`の**直下**に`*.safetensors`ファイルと`config.json`ファイルと`style_vectors.npy`ファイルが必要です。特にリポジトリの構成は確認しないので、ダウンロード後に確認し、必要ならば再配置を行ってください。
|
||||
- 内容はチェックしませんので、**ダウンロードする前にURLにアクセスして中身を必ず確認**してください。怪しいURLは入力しないでください。
|
||||
"""
|
||||
|
||||
|
||||
def download_model(url: str):
|
||||
# Parse url like: https://huggingface.co/username/myrepo/tree/main/jvnv-F1-jp
|
||||
# or like: https://huggingface.co/username/myrepo
|
||||
|
||||
# repo_id = "username/myrepo"
|
||||
repo_id = url.split("https://huggingface.co/")[1].split("/tree/main")[0]
|
||||
if len(repo_id.split("/")) != 2:
|
||||
logger.error(f"Invalid URL: {url}")
|
||||
return "Error: URLが不正です。"
|
||||
# repo_folder = "jvnv-F1-jp"
|
||||
repo_folder = url.split("/tree/main/")[-1] if "/tree/main/" in url else ""
|
||||
# remove last / if exists
|
||||
if repo_folder.endswith("/"):
|
||||
repo_folder = repo_folder[:-1]
|
||||
if repo_folder == "":
|
||||
model_name = repo_id.replace("/", "-")
|
||||
local_dir = assets_root / model_name
|
||||
logger.info(f"Downloading {repo_id} to {local_dir}")
|
||||
result = snapshot_download(repo_id, local_dir=local_dir)
|
||||
else:
|
||||
model_name = repo_id.replace("/", "-") + "-" + repo_folder.split("/")[-1]
|
||||
local_dir = assets_root / model_name
|
||||
logger.info(f"Downloading {repo_id}/{repo_folder} to {local_dir}")
|
||||
result = snapshot_download(
|
||||
repo_id,
|
||||
local_dir=local_dir,
|
||||
allow_patterns=[repo_folder + "/*"],
|
||||
)
|
||||
# Move the downloaded folder to the correct path
|
||||
shutil.copytree(
|
||||
assets_root / model_name / repo_folder, local_dir, dirs_exist_ok=True
|
||||
)
|
||||
shutil.rmtree(assets_root / model_name / repo_folder.split("/")[0])
|
||||
# try to download README.md
|
||||
try:
|
||||
snapshot_download(
|
||||
repo_id,
|
||||
local_dir=local_dir,
|
||||
allow_patterns=["README.md"],
|
||||
)
|
||||
# README.mdの中身を表示
|
||||
with open(local_dir / "README.md", encoding="utf-8") as f:
|
||||
readme = f.read()
|
||||
except Exception as e:
|
||||
logger.warning(f"README.md not found: {e}")
|
||||
readme = "README.mdが見つかりませんでした。"
|
||||
|
||||
# Remove local_dir/.huggingface
|
||||
hf_dir = local_dir / ".huggingface"
|
||||
if hf_dir.exists():
|
||||
shutil.rmtree(local_dir / ".huggingface")
|
||||
return f"保存完了。フォルダ:\n{result}", readme
|
||||
|
||||
|
||||
def create_download_app() -> gr.Blocks:
|
||||
with gr.Blocks() as app:
|
||||
gr.Markdown(how_to_md)
|
||||
url = gr.Textbox(
|
||||
label="URL", placeholder="https://huggingface.co/username/myrepo"
|
||||
)
|
||||
btn = gr.Button("ダウンロード")
|
||||
info = gr.Markdown("ダウンロード結果")
|
||||
md = gr.Markdown(
|
||||
label="README.mdファイル", value="ここにREADME.mdがあれば表示されます。"
|
||||
)
|
||||
btn.click(download_model, inputs=[url], outputs=[info, md])
|
||||
|
||||
return app
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = create_download_app()
|
||||
app.launch()
|
||||
Reference in New Issue
Block a user