gui支持多语言 (#33)
* gui支持多语言 采用和ddspsvc仓库gui一样的多语言方式 * Create gitkeep * gui支持多语言
This commit is contained in:
parent
ecc744d748
commit
c2e904f576
34
gui.py
34
gui.py
@ -8,7 +8,7 @@ import torch.nn.functional as F
|
||||
|
||||
#import matplotlib.pyplot as plt
|
||||
from infer_pack.models import SynthesizerTrnMs256NSFsid, SynthesizerTrnMs256NSFsid_nono
|
||||
|
||||
from language import language_gui
|
||||
|
||||
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
||||
|
||||
@ -160,31 +160,31 @@ class GUI:
|
||||
input_devices,output_devices,_, _=self.get_devices()
|
||||
layout=[
|
||||
[
|
||||
sg.Frame(title='加载模型/Load Model',layout=[
|
||||
[sg.Input(default_text='TEMP\\atri.pth',key='pth_path'),sg.FileBrowse('选择.pth文件/.pth File')],
|
||||
[sg.Input(default_text='TEMP\\added_IVF512_Flat_atri_baseline_src_feat.index',key='index_path'),sg.FileBrowse('选择.index文件/.index File')],
|
||||
[sg.Input(default_text='TEMP\\big_src_feature_atri.npy',key='npy_path'),sg.FileBrowse('选择.npy文件/.npy File')]
|
||||
sg.Frame(title=i18n('加载模型/Load Model'),layout=[
|
||||
[sg.Input(default_text='TEMP\\atri.pth',key='pth_path'),sg.FileBrowse(i18n('选择.pth文件/.pth File'))],
|
||||
[sg.Input(default_text='TEMP\\added_IVF512_Flat_atri_baseline_src_feat.index',key='index_path'),sg.FileBrowse(i18n('选择.index文件/.index File'))],
|
||||
[sg.Input(default_text='TEMP\\big_src_feature_atri.npy',key='npy_path'),sg.FileBrowse(i18n('选择.npy文件/.npy File'))]
|
||||
])
|
||||
],
|
||||
[
|
||||
sg.Frame(layout=[
|
||||
[sg.Text("输入设备/Input Device"),sg.Combo(input_devices,key='sg_input_device',default_value=input_devices[sd.default.device[0]])],
|
||||
[sg.Text("输出设备/Output Device"),sg.Combo(output_devices,key='sg_output_device',default_value=output_devices[sd.default.device[1]])]
|
||||
],title='音频设备(请使用同种类驱动)/Audio Devices')
|
||||
[sg.Text(i18n("输入设备/Input Device")),sg.Combo(input_devices,key='sg_input_device',default_value=input_devices[sd.default.device[0]])],
|
||||
[sg.Text(i18n("输出设备/Output Device")),sg.Combo(output_devices,key='sg_output_device',default_value=output_devices[sd.default.device[1]])]
|
||||
],title=i18n('音频设备(请使用同种类驱动)/Audio Devices'))
|
||||
],
|
||||
[
|
||||
sg.Frame(layout=[
|
||||
[sg.Text('响应阈值/Silence Threhold'),sg.Slider(range=(-60,0),key='threhold',resolution=1,orientation='h',default_value=-30)],
|
||||
[sg.Text("音调设置/Pitch Offset"),sg.Slider(range=(-24,24),key='pitch',resolution=1,orientation='h',default_value=12)]
|
||||
[sg.Text(i18n('响应阈值/Silence Threhold')),sg.Slider(range=(-60,0),key='threhold',resolution=1,orientation='h',default_value=-30)],
|
||||
[sg.Text(i18n("音调设置/Pitch Offset")),sg.Slider(range=(-24,24),key='pitch',resolution=1,orientation='h',default_value=12)]
|
||||
|
||||
],title='常规设置/Common'),
|
||||
],title=i18n('常规设置/Common')),
|
||||
sg.Frame(layout=[
|
||||
[sg.Text('采样长度/Sample Length'),sg.Slider(range=(0.1,3.0),key='block_time',resolution=0.1,orientation='h',default_value=1.0)],
|
||||
[sg.Text('淡入淡出长度/Crossfade Length'),sg.Slider(range=(0.01,0.15),key='crossfade_length',resolution=0.01,orientation='h',default_value=0.08)],
|
||||
[sg.Text('额外推理时长/Extra Length'),sg.Slider(range=(0.05,3.00),key='extra_time',resolution=0.01,orientation='h',default_value=0.05)]
|
||||
],title='性能设置/Performance')
|
||||
[sg.Text(i18n('采样长度/Sample Length')),sg.Slider(range=(0.1,3.0),key='block_time',resolution=0.1,orientation='h',default_value=1.0)],
|
||||
[sg.Text(i18n('淡入淡出长度/Crossfade Length')),sg.Slider(range=(0.01,0.15),key='crossfade_length',resolution=0.01,orientation='h',default_value=0.08)],
|
||||
[sg.Text(i18n('额外推理时长/Extra Length')),sg.Slider(range=(0.05,3.00),key='extra_time',resolution=0.01,orientation='h',default_value=0.05)]
|
||||
],title=i18n('性能设置/Performance'))
|
||||
],
|
||||
[sg.Button('开始音频转换',key='start_vc'),sg.Button('停止音频转换',key='stop_vc')]
|
||||
[sg.Button(i18n('开始音频转换'),key='start_vc'),sg.Button(i18n('停止音频转换'),key='stop_vc')]
|
||||
]
|
||||
|
||||
self.window=sg.Window('RVC - GUI',layout=layout)
|
||||
@ -326,5 +326,5 @@ class GUI:
|
||||
sd.default.device[1]=output_device_indices[output_devices.index(output_device)]
|
||||
print("input device:"+str(sd.default.device[0])+":"+str(input_device))
|
||||
print("output device:"+str(sd.default.device[1])+":"+str(output_device))
|
||||
|
||||
i18n = language_gui.I18nAuto()
|
||||
gui=GUI()
|
1
language/gitkeep
Normal file
1
language/gitkeep
Normal file
@ -0,0 +1 @@
|
||||
|
77
language/language_gui.py
Normal file
77
language/language_gui.py
Normal file
@ -0,0 +1,77 @@
|
||||
import locale
|
||||
'''
|
||||
本地化方式如下所示,此文件是"gui.py"的文本内容
|
||||
'''
|
||||
|
||||
LANGUAGE_LIST = ['zh_CN', 'en_US']
|
||||
LANGUAGE_ALL = {
|
||||
'zh_CN': {
|
||||
'SUPER': 'END',
|
||||
'LANGUAGE': 'zh_CN',
|
||||
'加载模型/Load Model': '加载模型',
|
||||
'选择.pth文件/.pth File': '选择.pth文件',
|
||||
'选择.index文件/.index File': '选择.index文件',
|
||||
'选择.npy文件/.npy File': '选择.npy文件',
|
||||
"输入设备/Input Device": "输入设备",
|
||||
"输出设备/Output Device": "输出设备",
|
||||
'音频设备(请使用同种类驱动)/Audio Devices': '音频设备(请使用同种类驱动)',
|
||||
'响应阈值/Silence Threhold': '响应阈值',
|
||||
'音调设置/Pitch Offset': '音调设置',
|
||||
'常规设置/Common': '常规设置',
|
||||
'采样长度/Sample Length': '采样长度',
|
||||
'淡入淡出长度/Crossfade Length': '淡入淡出长度',
|
||||
'额外推理时长/Extra Length': '额外推理时长',
|
||||
'性能设置/Performance': '性能设置',
|
||||
'开始音频转换': '开始音频转换',
|
||||
'停止音频转换': '停止音频转换'
|
||||
},
|
||||
'en_US': {
|
||||
'SUPER': 'zh_CN',
|
||||
'LANGUAGE': 'en_US',
|
||||
'加载模型/Load Model': 'Load Model',
|
||||
'选择.pth文件/.pth File': 'Select .pth File',
|
||||
'选择.index文件/.index File': 'Select .index File',
|
||||
'选择.npy文件/.npy File': 'Select .npy File',
|
||||
"输入设备/Input Device": "Input Device",
|
||||
"输出设备/Output Device": "Output Device",
|
||||
'音频设备(请使用同种类驱动)/Audio Devices': 'Audio Devices(Please use the same type of driver)',
|
||||
'响应阈值/Silence Threhold': 'Silence Threhold',
|
||||
'音调设置/Pitch Offset': 'Pitch Offset',
|
||||
'常规设置/Common': 'Common',
|
||||
'采样长度/Sample Length': 'Sample Length',
|
||||
'淡入淡出长度/Crossfade Length': 'Crossfade Length',
|
||||
'额外推理时长/Extra Length': 'Extra Length',
|
||||
'性能设置/Performance': 'Performance',
|
||||
'开始音频转换': 'Start VC',
|
||||
'停止音频转换': 'Stop VC'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class I18nAuto:
|
||||
def __init__(self, language=None):
|
||||
self.language_list = LANGUAGE_LIST
|
||||
self.language_all = LANGUAGE_ALL
|
||||
self.language_map = {}
|
||||
if language is None:
|
||||
language = 'auto'
|
||||
if language == 'auto':
|
||||
language = locale.getdefaultlocale()[0]
|
||||
if language not in self.language_list:
|
||||
language = 'zh_CN'
|
||||
self.language = language
|
||||
super_language_list = []
|
||||
while self.language_all[language]['SUPER'] != 'END':
|
||||
super_language_list.append(language)
|
||||
language = self.language_all[language]['SUPER']
|
||||
super_language_list.append('zh_CN')
|
||||
super_language_list.reverse()
|
||||
for _lang in super_language_list:
|
||||
self.read_language(self.language_all[_lang])
|
||||
|
||||
def read_language(self, lang_dict: dict):
|
||||
for _key in lang_dict.keys():
|
||||
self.language_map[_key] = lang_dict[_key]
|
||||
|
||||
def __call__(self, key):
|
||||
return self.language_map[key]
|
Loading…
x
Reference in New Issue
Block a user