update init process

config.jsonが異常だった場合でも起動するように修正
This commit is contained in:
misyaguziya
2023-06-23 14:12:25 +09:00
parent 071e845f1c
commit 555006f65a

48
VRCT.py
View File

@@ -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()