RVC-Speakers / speakers /__main__.py
glide-the
Add large files to Git LFS
04ffec9
raw
history blame
2.87 kB
import os
import asyncio
import logging
from argparse import Namespace
from bark.mode_load import set_bark_model_load_logger
from speakers.common.log import get_logger, set_log_level
from speakers import set_main_logger, Speaker, WebSpeaker
from speakers.processors.bark_to_voice import set_bark_to_voice_logger
from speakers.processors.rvc_speakers_processor import set_rvc_speakers_logger
from speakers.processors.vits_to_voice import set_vits_to_voice_logger
from speakers.server.servlet.runner import set_server_runner_logger
from speakers.server.model.flow_data import PayLoad
from speakers.server import dispatch as dispatch_web
import argparse
logger = logging.getLogger('start_logger')
def set_start_logger(l):
global logger
logger = l
async def dispatch(args: Namespace):
args_dict = vars(args)
logger.info(f'Running in {args.mode} mode')
if args.mode in 'demo':
speaker = Speaker(speakers_config_file=args.speakers_config_file, verbose=args.verbose)
await speaker.preparation_runner(task_id="0", payload=PayLoad())
elif args.mode in 'web':
await dispatch_web(speakers_config_file=args.speakers_config_file)
elif args.mode in 'web_runner':
translator = WebSpeaker(speakers_config_file=args.speakers_config_file, verbose=args.verbose, nonce=args.nonce)
await translator.listen()
def main():
parser = argparse.ArgumentParser(prog='speakers',
description='S')
parser.add_argument('-m', '--mode', default='demo', type=str, choices=['demo', 'web', 'web_runner'],
help='Run ')
parser.add_argument('-v', '--verbose', action='store_true', help='Print debug info in result folder')
parser.add_argument("--speakers-config-file", type=str, default="speakers.yaml")
parser.add_argument('--nonce', default='', type=str, help='Used by web module to decide which secret for securing '
'internal web server communication')
args = None
try:
args = parser.parse_args()
set_log_level(level=logging.DEBUG if args.verbose else logging.INFO)
set_start_logger(get_logger(args.mode))
set_main_logger(logger)
set_bark_model_load_logger(logger)
set_rvc_speakers_logger(logger)
set_vits_to_voice_logger(logger)
set_bark_to_voice_logger(logger)
set_server_runner_logger(logger)
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(dispatch(args))
except KeyboardInterrupt:
if not args or args.mode != 'web':
print()
except Exception as e:
logger.error(f'{e.__class__.__name__}: {e}',
exc_info=e if args and args.verbose else None)
if __name__ == '__main__':
main()