|
import requests
|
|
import zipfile
|
|
import os
|
|
import shutil
|
|
from tqdm import tqdm
|
|
|
|
def download():
|
|
url = 'https://huggingface.co/Ailyth/Text_to_Speech_MODELS/resolve/main/tts_models.zip?download=true'
|
|
output = 'temp.zip'
|
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
info_py_path = os.path.join(current_dir, 'info.py')
|
|
models_dir = os.path.join(current_dir, 'MODELS')
|
|
if os.path.exists(info_py_path) and os.path.exists(models_dir):
|
|
print('Files already exist, skipping download.')
|
|
return
|
|
|
|
print('β¨ Downloading models')
|
|
response = requests.head(url)
|
|
total_size = int(response.headers.get('content-length', 0))
|
|
|
|
block_size = 1024
|
|
progress = tqdm(total=total_size, unit='iB', unit_scale=True)
|
|
with requests.get(url, stream=True) as r:
|
|
with open(output, 'wb') as f:
|
|
for chunk in r.iter_content(chunk_size=8192):
|
|
if chunk:
|
|
f.write(chunk)
|
|
progress.update(len(chunk))
|
|
progress.close()
|
|
|
|
with zipfile.ZipFile(output, 'r') as zip_ref:
|
|
total_files = len(zip_ref.infolist())
|
|
print('Installing')
|
|
extract_progress = tqdm(total=total_files, unit='file', leave=False)
|
|
for file_info in zip_ref.infolist():
|
|
try:
|
|
zip_ref.extract(file_info, path=current_dir)
|
|
except zipfile.error as e:
|
|
print(f"Error extracting {file_info.filename}: {e}")
|
|
extract_progress.update()
|
|
extract_progress.close()
|
|
|
|
os.remove(output)
|
|
|
|
if __name__ == '__main__':
|
|
download() |