voice-assistant-chatbot/language.py
2024-10-29 22:05:42 +11:00

52 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)