зеркало из https://github.com/mozilla/TTS.git
151 строка
5.0 KiB
Python
151 строка
5.0 KiB
Python
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
import numpy
|
|
import setuptools.command.build_py
|
|
import setuptools.command.develop
|
|
|
|
from setuptools import find_packages, setup
|
|
from distutils.extension import Extension
|
|
from Cython.Build import cythonize
|
|
|
|
# parameters for wheeling server.
|
|
parser = argparse.ArgumentParser(add_help=False, allow_abbrev=False)
|
|
parser.add_argument('--checkpoint',
|
|
type=str,
|
|
help='Path to checkpoint file to embed in wheel.')
|
|
parser.add_argument('--model_config',
|
|
type=str,
|
|
help='Path to model configuration file to embed in wheel.')
|
|
args, unknown_args = parser.parse_known_args()
|
|
|
|
# Remove our arguments from argv so that setuptools doesn't see them
|
|
sys.argv = [sys.argv[0]] + unknown_args
|
|
|
|
version = '0.0.9.2'
|
|
cwd = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
# Handle Cython code
|
|
# def find_pyx(path='.'):
|
|
# pyx_files = []
|
|
# for root, _, filenames in os.walk(path):
|
|
# for fname in filenames:
|
|
# if fname.endswith('.pyx'):
|
|
# pyx_files.append(os.path.join(root, fname))
|
|
# return pyx_files
|
|
|
|
|
|
# def find_cython_extensions(path="."):
|
|
# exts = cythonize(find_pyx(path), language_level=3)
|
|
# for ext in exts:
|
|
# ext.include_dirs = [numpy.get_include()]
|
|
|
|
# return exts
|
|
|
|
|
|
class build_py(setuptools.command.build_py.build_py): # pylint: disable=too-many-ancestors
|
|
def run(self):
|
|
self.create_version_file()
|
|
setuptools.command.build_py.build_py.run(self)
|
|
|
|
@staticmethod
|
|
def create_version_file():
|
|
print('-- Building version ' + version)
|
|
version_path = os.path.join(cwd, 'version.py')
|
|
with open(version_path, 'w') as f:
|
|
f.write("__version__ = '{}'\n".format(version))
|
|
|
|
|
|
class develop(setuptools.command.develop.develop):
|
|
def run(self):
|
|
build_py.create_version_file()
|
|
setuptools.command.develop.develop.run(self)
|
|
|
|
|
|
# The documentation for this feature is in server/README.md
|
|
package_data = ['TTS/server/templates/*']
|
|
|
|
if 'bdist_wheel' in unknown_args and args.checkpoint and args.model_config:
|
|
print('Embedding model in wheel file...')
|
|
model_dir = os.path.join('TTS', 'server', 'model')
|
|
tts_dir = os.path.join(model_dir, 'tts')
|
|
os.makedirs(tts_dir, exist_ok=True)
|
|
embedded_checkpoint_path = os.path.join(tts_dir, 'checkpoint.pth.tar')
|
|
shutil.copy(args.checkpoint, embedded_checkpoint_path)
|
|
embedded_config_path = os.path.join(tts_dir, 'config.json')
|
|
shutil.copy(args.model_config, embedded_config_path)
|
|
package_data.extend([embedded_checkpoint_path, embedded_config_path])
|
|
|
|
|
|
def pip_install(package_name):
|
|
subprocess.call([sys.executable, '-m', 'pip', 'install', package_name])
|
|
|
|
|
|
requirements = open(os.path.join(cwd, 'requirements.txt'), 'r').readlines()
|
|
with open('README.md', "r", encoding="utf-8") as readme_file:
|
|
README = readme_file.read()
|
|
|
|
exts = [Extension(name='TTS.tts.layers.glow_tts.monotonic_align.core',
|
|
sources=["TTS/tts/layers/glow_tts/monotonic_align/core.pyx"])]
|
|
setup(
|
|
name='TTS',
|
|
version=version,
|
|
url='https://github.com/mozilla/TTS',
|
|
author='Eren Gölge',
|
|
author_email='egolge@mozilla.com',
|
|
description='Text to Speech with Deep Learning',
|
|
long_description=README,
|
|
long_description_content_type="text/markdown",
|
|
license='MPL-2.0',
|
|
# cython
|
|
include_dirs=numpy.get_include(),
|
|
ext_modules=cythonize(exts, language_level=3),
|
|
# ext_modules=find_cython_extensions(),
|
|
# package
|
|
include_package_data=True,
|
|
packages=find_packages(include=['TTS*']),
|
|
project_urls={
|
|
'Documentation': 'https://github.com/mozilla/TTS/wiki',
|
|
'Tracker': 'https://github.com/mozilla/TTS/issues',
|
|
'Repository': 'https://github.com/mozilla/TTS',
|
|
'Discussions': 'https://discourse.mozilla.org/c/tts',
|
|
},
|
|
cmdclass={
|
|
'build_py': build_py,
|
|
'develop': develop,
|
|
# 'build_ext': build_ext
|
|
},
|
|
install_requires=requirements,
|
|
python_requires='>=3.6.0, <3.9',
|
|
entry_points={
|
|
'console_scripts': [
|
|
'tts=TTS.bin.synthesize:main',
|
|
'tts-server = TTS.server.server:main'
|
|
]
|
|
},
|
|
classifiers=[
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.6",
|
|
"Programming Language :: Python :: 3.7",
|
|
"Programming Language :: Python :: 3.8",
|
|
'Development Status :: 3 - Alpha',
|
|
"Intended Audience :: Science/Research",
|
|
"Intended Audience :: Developers",
|
|
"Operating System :: POSIX :: Linux",
|
|
'License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)',
|
|
"Topic :: Software Development",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: Multimedia :: Sound/Audio :: Speech",
|
|
"Topic :: Multimedia :: Sound/Audio",
|
|
"Topic :: Multimedia",
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence"
|
|
],
|
|
zip_safe=False
|
|
)
|