update init process
config.jsonが異常だった場合でも起動するように修正
This commit is contained in:
48
VRCT.py
48
VRCT.py
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
import json
|
||||
import queue
|
||||
import tkinter as tk
|
||||
import customtkinter
|
||||
from PIL import Image
|
||||
import pyaudiowpatch as pyaudio
|
||||
@@ -16,6 +17,13 @@ class App(customtkinter.CTk):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
# init instance
|
||||
self.translator = translation.Translator()
|
||||
self.mic_queue = queue.Queue()
|
||||
self.spk_queue = queue.Queue()
|
||||
self.p = pyaudio.PyAudio()
|
||||
self.vr = transcription.VoiceRecognizer(self.p, self.mic_queue, self.spk_queue)
|
||||
|
||||
# init config
|
||||
self.PATH_CONFIG = "./config.json"
|
||||
## main window
|
||||
@@ -35,11 +43,11 @@ class App(customtkinter.CTk):
|
||||
self.OUTPUT_SOURCE_LANG = "EN"
|
||||
self.OUTPUT_TARGET_LANG = "JA"
|
||||
## Transcription
|
||||
self.CHOICE_MIC_DEVICE = None
|
||||
self.CHOICE_MIC_DEVICE = self.vr.search_default_device()[0]
|
||||
self.INPUT_MIC_VOICE_LANGUAGE = "ja-JP"
|
||||
self.INPUT_MIC_IS_DYNAMIC = False
|
||||
self.INPUT_MIC_THRESHOLD = 300
|
||||
self.CHOICE_SPEAKER_DEVICE = None
|
||||
self.CHOICE_SPEAKER_DEVICE = self.vr.search_default_device()[1]
|
||||
self.INPUT_SPEAKER_VOICE_LANGUAGE = "en-US"
|
||||
self.INPUT_SPEAKER_INTERVAL = 4
|
||||
|
||||
@@ -60,60 +68,85 @@ class App(customtkinter.CTk):
|
||||
config = json.load(fp)
|
||||
# main window
|
||||
if "ENABLE_TRANSLATION" in config.keys():
|
||||
if type(config["ENABLE_TRANSLATION"]) is bool:
|
||||
self.ENABLE_TRANSLATION = config["ENABLE_TRANSLATION"]
|
||||
if "ENABLE_TRANSCRIPTION_SEND" in config.keys():
|
||||
if type(config["ENABLE_TRANSCRIPTION_SEND"]) is bool:
|
||||
self.ENABLE_TRANSCRIPTION_SEND = config["ENABLE_TRANSCRIPTION_SEND"]
|
||||
if "ENABLE_TRANSCRIPTION_RECEIVE" in config.keys():
|
||||
if type(config["ENABLE_TRANSCRIPTION_RECEIVE"]) is bool:
|
||||
self.ENABLE_TRANSCRIPTION_RECEIVE = config["ENABLE_TRANSCRIPTION_RECEIVE"]
|
||||
if "ENABLE_FOREGROUND" in config.keys():
|
||||
if type(config["ENABLE_FOREGROUND"]) is bool:
|
||||
self.ENABLE_FOREGROUND = config["ENABLE_FOREGROUND"]
|
||||
|
||||
# tab ui
|
||||
if "TRANSPARENCY" in config.keys():
|
||||
if type(config["TRANSPARENCY"]) is int:
|
||||
if 0 <= config["TRANSPARENCY"] <= 100:
|
||||
self.TRANSPARENCY = config["TRANSPARENCY"]
|
||||
if "APPEARANCE_THEME" in config.keys():
|
||||
if config["APPEARANCE_THEME"] in ["Light", "Dark", "System"]:
|
||||
self.APPEARANCE_THEME = config["APPEARANCE_THEME"]
|
||||
if "UI_SCALING" in config.keys():
|
||||
if config["UI_SCALING"] in ["80%", "90%", "100%", "110%", "120%"]:
|
||||
self.UI_SCALING = config["UI_SCALING"]
|
||||
if "FONT_FAMILY" in config.keys():
|
||||
if config["FONT_FAMILY"] in list(tk.font.families()):
|
||||
self.FONT_FAMILY = config["FONT_FAMILY"]
|
||||
|
||||
# translation
|
||||
if "CHOICE_TRANSLATOR" in config.keys():
|
||||
if config["CHOICE_TRANSLATOR"] in list(self.translator.translator_status.keys()):
|
||||
self.CHOICE_TRANSLATOR = config["CHOICE_TRANSLATOR"]
|
||||
if "INPUT_SOURCE_LANG" in config.keys():
|
||||
if config["INPUT_SOURCE_LANG"] in self.translator.languages[self.CHOICE_TRANSLATOR]:
|
||||
self.INPUT_SOURCE_LANG = config["INPUT_SOURCE_LANG"]
|
||||
if "INPUT_TARGET_LANG" in config.keys():
|
||||
if config["INPUT_SOURCE_LANG"] in self.translator.languages[self.CHOICE_TRANSLATOR]:
|
||||
self.INPUT_TARGET_LANG = config["INPUT_TARGET_LANG"]
|
||||
if "OUTPUT_SOURCE_LANG" in config.keys():
|
||||
if config["INPUT_SOURCE_LANG"] in self.translator.languages[self.CHOICE_TRANSLATOR]:
|
||||
self.OUTPUT_SOURCE_LANG = config["OUTPUT_SOURCE_LANG"]
|
||||
if "OUTPUT_TARGET_LANG" in config.keys():
|
||||
if config["INPUT_SOURCE_LANG"] in self.translator.languages[self.CHOICE_TRANSLATOR]:
|
||||
self.OUTPUT_TARGET_LANG = config["OUTPUT_TARGET_LANG"]
|
||||
|
||||
# Transcription
|
||||
if "CHOICE_MIC_DEVICE" in config.keys():
|
||||
if config["CHOICE_MIC_DEVICE"] in [device["name"] for device in self.vr.search_input_device()]:
|
||||
self.CHOICE_MIC_DEVICE = config["CHOICE_MIC_DEVICE"]
|
||||
if "INPUT_MIC_VOICE_LANGUAGE" in config.keys():
|
||||
if config["INPUT_MIC_VOICE_LANGUAGE"] in list(self.parent.vr.languages):
|
||||
self.INPUT_MIC_VOICE_LANGUAGE = config["INPUT_MIC_VOICE_LANGUAGE"]
|
||||
if "INPUT_MIC_IS_DYNAMIC" in config.keys():
|
||||
if type(config["INPUT_MIC_IS_DYNAMIC"]) is bool:
|
||||
self.INPUT_MIC_IS_DYNAMIC = config["INPUT_MIC_IS_DYNAMIC"]
|
||||
if "INPUT_MIC_THRESHOLD" in config.keys():
|
||||
if type(config["INPUT_MIC_THRESHOLD"]) is int:
|
||||
self.INPUT_MIC_THRESHOLD = config["INPUT_MIC_THRESHOLD"]
|
||||
if "CHOICE_SPEAKER_DEVICE" in config.keys():
|
||||
if config["CHOICE_SPEAKER_DEVICE"] in [device["name"] for device in self.vr.search_output_device()]:
|
||||
self.CHOICE_SPEAKER_DEVICE = config["CHOICE_SPEAKER_DEVICE"]
|
||||
if "INPUT_SPEAKER_VOICE_LANGUAGE" in config.keys():
|
||||
if config["INPUT_SPEAKER_VOICE_LANGUAGE"] in list(self.parent.vr.languages):
|
||||
self.INPUT_SPEAKER_VOICE_LANGUAGE = config["INPUT_SPEAKER_VOICE_LANGUAGE"]
|
||||
if "INPUT_SPEAKER_INTERVAL" in config.keys():
|
||||
if type(config["INPUT_SPEAKER_INTERVAL"]) is int:
|
||||
self.INPUT_SPEAKER_INTERVAL = config["INPUT_SPEAKER_INTERVAL"]
|
||||
|
||||
# Parameter
|
||||
if "OSC_IP_ADDRESS" in config.keys():
|
||||
if type(config["OSC_IP_ADDRESS"]) is str:
|
||||
self.OSC_IP_ADDRESS = config["OSC_IP_ADDRESS"]
|
||||
if "OSC_PORT" in config.keys():
|
||||
if type(config["OSC_PORT"]) is int:
|
||||
self.OSC_PORT = config["OSC_PORT"]
|
||||
if "AUTH_KEYS" in config.keys():
|
||||
if type(config["AUTH_KEYS"]) is str:
|
||||
self.AUTH_KEYS = config["AUTH_KEYS"]
|
||||
if "MESSAGE_FORMAT" in config.keys():
|
||||
if type(config["MESSAGE_FORMAT"]) is str:
|
||||
self.MESSAGE_FORMAT = config["MESSAGE_FORMAT"]
|
||||
|
||||
with open(self.PATH_CONFIG, 'w') as fp:
|
||||
@@ -288,21 +321,12 @@ class App(customtkinter.CTk):
|
||||
self.entry_message_box.grid(row=1, column=1, columnspan=2, padx=5, pady=(5, 10), sticky="nsew")
|
||||
|
||||
# set default values
|
||||
## set translator instance
|
||||
self.translator = translation.Translator()
|
||||
## set translator
|
||||
if self.translator.authentication(self.CHOICE_TRANSLATOR, self.AUTH_KEYS[self.CHOICE_TRANSLATOR]) is False:
|
||||
# error update Auth key
|
||||
utils.print_textbox(self.textbox_message_log, "Auth Key or language setting is incorrect", "ERROR")
|
||||
utils.print_textbox(self.textbox_message_system_log, "Auth Key or language setting is incorrect", "ERROR")
|
||||
|
||||
## set transcription instance
|
||||
self.mic_queue = queue.Queue()
|
||||
self.spk_queue = queue.Queue()
|
||||
self.p = pyaudio.PyAudio()
|
||||
self.vr = transcription.VoiceRecognizer(self.p, self.mic_queue, self.spk_queue)
|
||||
self.CHOICE_MIC_DEVICE = self.CHOICE_MIC_DEVICE if self.CHOICE_MIC_DEVICE is not None else self.vr.search_default_device()[0]
|
||||
self.CHOICE_SPEAKER_DEVICE = self.CHOICE_SPEAKER_DEVICE if self.CHOICE_SPEAKER_DEVICE is not None else self.vr.search_default_device()[1]
|
||||
|
||||
## set checkbox enable translation
|
||||
if self.ENABLE_TRANSLATION:
|
||||
self.checkbox_translation.select()
|
||||
|
||||
Reference in New Issue
Block a user