import os from dotenv import load_dotenv load_dotenv() # https://github.com/rhasspy/piper/blob/master/VOICES.md download here ROOT_DIR = os.getenv('ROOT_DIR',os.path.dirname(__file__)) PIPER_TTS_DIR = os.path.join(ROOT_DIR, 'piper-tts') LANGUAGES = ['en', 'fr', 'ru', 'zh', 'vi'] # piper-tts config_file = {'en': 'glados.onnx.json', 'fr': 'fr_fr_FR_mls_medium_fr_FR-mls-medium.onnx.json', 'ru': 'ru_ru_RU_dmitri_medium_ru_RU-dmitri-medium.onnx.json', 'zh': 'zh_zh_CN_huayan_medium_zh_CN-huayan-medium.onnx.json', 'vi': 'vi_vi_VN_vais1000_medium_vi_VN-vais1000-medium.onnx.json' } onnx_file = {'en': 'glados.onnx', 'fr': 'fr_FR-mls-medium.onnx', 'ru': 'ru_RU-dmitri-medium.onnx', 'zh': 'zh_CN-huayan-medium.onnx', 'vi': 'vi_VN-vais1000-medium.onnx' } prompt = { 'en': 'Respond only in english in under 100 words.', 'fr': 'Répondez uniquement en français en moins de 100 mots.', 'ru': 'Отвечайте только на русском языке менее 100 слов.', 'zh': '只用中文回答,不超过100个字。一点英文都不可以用。', 'vi': 'Chỉ trả lời bằng tiếng Việt dưới 100 từ.' } def piper_voice_language(lang): if lang in LANGUAGES: return lang else: return 'en' # retrieve the corresponding piper-tts voice files for the language def files_language(lang): language = piper_voice_language(lang) conf_path = os.path.join(PIPER_TTS_DIR, config_file[language]) onnx_path = os.path.join(PIPER_TTS_DIR, onnx_file[language]) return (onnx_path, conf_path) def get_variables(lang): language = piper_voice_language(lang) starting_prompt = prompt[language] onnx_path, conf_path = files_language(language) return (onnx_path, conf_path, language, starting_prompt)