Merge branch 'send_message' into for_webui

This commit is contained in:
misyaguziya
2024-08-31 16:10:20 +09:00
8 changed files with 77 additions and 68 deletions

View File

@@ -1,9 +0,0 @@
@if not "%~0"=="%~dp0.\%~nx0" start /min cmd /c,"%~dp0.\%~nx0" %* & goto :eof
set name=%1
set local_path=%~dp0
taskkill /im %name% /F
ping -n 2 127.0.0.1 > nul
START "" "%local_path%%name%"
del /f "%~dp0%~nx0"

View File

@@ -1,20 +0,0 @@
@if not "%~0"=="%~dp0.\%~nx0" start /min cmd /c,"%~dp0.\%~nx0" %* & goto :eof
set exe_name=%1
set folder_name=%2
set folder_tmp=%3
set restart=%4
set local_path=%~dp0
taskkill /im %exe_name% /F
ping -n 2 127.0.0.1 > nul
del /f "%local_path%%exe_name%"
rmdir /s /q "%local_path%%folder_name%"
xcopy "%local_path%%folder_tmp%" "%local_path%" /E /I
rmdir /s /q "%local_path%%folder_tmp%"
if %restart% == True (
START "" "%local_path%%exe_name%"
)
del /f "%~dp0%~nx0"

View File

@@ -5,7 +5,7 @@
"type": "module",
"scripts": {
"setup-python": "install.bat",
"build-python": "pyinstaller -F src-python/webui_mainloop.py --add-data ./fonts;fonts/ --add-data ./batch;batch/ --add-data .venv/Lib/site-packages/zeroconf;zeroconf/ --add-data .venv/Lib/site-packages/openvr;openvr/ --distpath src-tauri/bin --exclude-module pandas --exclude-module matplotlib --exclude-module PyQt5 --clean -n backend-x86_64-pc-windows-msvc",
"build-python": "pyinstaller -F src-python/webui_mainloop.py --add-data ./fonts;fonts/ --add-data .venv/Lib/site-packages/zeroconf;zeroconf/ --add-data .venv/Lib/site-packages/openvr;openvr/ --distpath src-tauri/bin --exclude-module pandas --exclude-module matplotlib --exclude-module PyQt5 --clean -n backend-x86_64-pc-windows-msvc --icon=./src-ui/assets/chato_icon_fill.png",
"vite": "vite",
"vite-build": "vite build",
"vite-preview": "vite preview",

View File

@@ -5,11 +5,17 @@ from subprocess import Popen
from threading import Thread
from config import config
from model import model
# from view import view
from utils import getKeyByValue, isUniqueStrings, strPctToInt
import argparse
from utils import getKeyByValue, isUniqueStrings
# Common
def encodeUtf8(data:str) -> dict:
data = {i: byte for i, byte in enumerate(data.encode('UTF-8'))}
return data
def decodeUtf8(data:dict) -> str:
data = bytes(data.values()).decode("UTF-8")
return data
class DownloadSoftwareProgressBar:
def __init__(self, action):
self.action = action
@@ -303,7 +309,9 @@ class ChatMessage:
def __init__(self, action:Callable[[dict], None]) -> None:
self.action = action
def send(self, message):
def send(self, data):
id = data["id"]
message = decodeUtf8(data["message"])
if len(message) > 0:
addSentMessageLog(message)
translation = ""
@@ -343,11 +351,13 @@ class ChatMessage:
translation = f" ({translation})"
model.logger.info(f"[SENT] {message}{translation}")
message = encodeUtf8(message)
translation = encodeUtf8(translation)
return {"status":200,
"result":{
"id":id,
"message":message,
"translation":translation,
"clear":config.ENABLE_AUTO_CLEAR_MESSAGE_BOX
},
}
@@ -1292,7 +1302,7 @@ def getListInputDevice(*args, **kwargs) -> dict:
def getListOutputDevice(*args, **kwargs) -> dict:
return {"status":200, "result": model.getListOutputDevice()}
def init():
def init(endpoints:dict, *args, **kwargs) -> None:
print(json.dumps({"status":348, "log": "Start Initialization"}), flush=True)
print(json.dumps({"status":348, "log": "Start InitSetTranslateEngine"}), flush=True)
initSetTranslateEngine()
@@ -1311,6 +1321,19 @@ def init():
print(json.dumps({"status":348, "log": "Set Translation Engine"}), flush=True)
updateTranslationEngineAndEngineList()
# check Downloaded CTranslate2 Model Weight
print(json.dumps({"status":348, "log": "Check Downloaded CTranslate2 Model Weight"}), flush=True)
if config.USE_TRANSLATION_FEATURE is True and model.checkCTranslatorCTranslate2ModelWeight() is False:
def callback(progress):
print(json.dumps({
"endpoint":endpoints["ctranslate2"],
"status":200,
"result":{
"progress":progress
}
}), flush=True)
model.downloadCTranslate2ModelWeight(callback)
# set Transcription Engine
print(json.dumps({"status":348, "log": "Set Transcription Engine"}), flush=True)
if config.USE_WHISPER_FEATURE is True:
@@ -1318,6 +1341,19 @@ def init():
else:
config.SELECTED_TRANSCRIPTION_ENGINE = "Google"
# check Downloaded Whisper Model Weight
print(json.dumps({"status":348, "log": "Check Downloaded Whisper Model Weight"}), flush=True)
if config.USE_WHISPER_FEATURE is True and model.checkTranscriptionWhisperModelWeight() is False:
def callback(progress):
print(json.dumps({
"endpoint":endpoints["whisper"],
"status":200,
"result":{
"progress":progress
}
}), flush=True)
model.downloadWhisperModelWeight(callback)
# set word filter
print(json.dumps({"status":348, "log": "Set Word Filter"}), flush=True)
model.addKeywords()
@@ -1336,4 +1372,5 @@ def init():
print(json.dumps({"status":348, "log": "Init OSC Receive"}), flush=True)
model.startReceiveOSC()
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
model.startCheckMuteSelfStatus()
model.startCheckMuteSelfStatus()
print(json.dumps({"status":348, "log": "End Initialization"}), flush=True)

View File

@@ -326,14 +326,15 @@ def main():
print(response, flush=True)
if __name__ == "__main__":
controller.init({
"ctranslate2": action_mapping["/controller/callback_download_ctranslate2_weight"]["download"],
"whisper": action_mapping["/controller/callback_download_whisper_weight"]["download"],
})
process = "main"
match process:
case "main":
try:
print(json.dumps({"status":200, "endpoint": "/initialization/start", "result":True}), flush=True)
controller.init()
print(json.dumps({"status":200, "endpoint": "/initialization/completed", "result":True}), flush=True)
print(json.dumps({"status":348, "log": "Initialization from Python."}), flush=True)
while True:
main()
except Exception:
@@ -342,7 +343,6 @@ if __name__ == "__main__":
traceback.print_exc(file=f)
case "test":
controller.init()
response_data, status = handleControllerRequest("/controller/callback_download_ctranslate2_weight")
response = {
"status": status,
@@ -360,7 +360,6 @@ if __name__ == "__main__":
case "test_all":
import time
controller.init()
for endpoint, value in config_mapping.items():
response_data, status = handleConfigRequest(endpoint)
response = {

View File

@@ -82,12 +82,4 @@ export const useMainFunction = () => {
},
currentForegroundStatus: currentForegroundStatus,
};
};
const asyncTestFunction = (...args) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(...args);
}, 3000);
});
};

View File

@@ -7,11 +7,16 @@ import { useStdoutToPython } from "./useStdoutToPython";
export const useMessage = () => {
const { currentMessageLogsStatus, addMessageLogsStatus, updateMessageLogsStatus } = useMessageLogsStatus();
const { asyncStdoutToPython } = useStdoutToPython();
const encoder = new TextEncoder();
return {
sendMessage: (message) => {
asyncStdoutToPython({id: "send_message", data: message});
const uuid = crypto.randomUUID();
const send_message_object = {
id: uuid,
message: encoder.encode(message),
};
asyncStdoutToPython("/controller/callback_messagebox_press_key_enter", send_message_object);
addMessageLogsStatus({
id: uuid,
@@ -20,26 +25,16 @@ export const useMessage = () => {
created_at: generateTimeData(),
messages: {
original: message,
translated: [
message,
],
translated: [],
},
});
setTimeout(() => {
const updateItemById = (id) => (prevItems) => {
return prevItems.map(item => {
if (item.id === id) {
item.status = "ok";
}
return item;
});
};
updateMessageLogsStatus(updateItemById(uuid));
}, 3000);
},
currentMessageLogsStatus: currentMessageLogsStatus,
updateSentMessageLog: (payload) => {
const data = payload.data;
updateMessageLogsStatus(updateItemById(data.id));
},
addSentMessageLog: (payload) => {
const data = payload.data;
const message_object = generateMessageObject(data, "sent");
@@ -72,4 +67,14 @@ const generateMessageObject = (data, category) => {
translated: [],
},
};
};
const updateItemById = (id) => (prev_items) => {
return prev_items.map(item => {
if (item.id === id) {
item.status = "ok";
}
return item;
});
};

View File

@@ -9,7 +9,11 @@ export const useReceiveRoutes = () => {
updateTranscriptionReceiveStatus,
} = useMainFunction();
const { addSentMessageLog, addReceivedMessageLog } = useMessage();
const {
updateSentMessageLog,
addSentMessageLog,
addReceivedMessageLog,
} = useMessage();
const {
updateSoftwareVersion,
@@ -25,6 +29,7 @@ export const useReceiveRoutes = () => {
"/config/version": updateSoftwareVersion,
"/controller/callback_messagebox_press_key_enter": updateSentMessageLog,
"/action/transcription_send_mic_message": addSentMessageLog,
"/action/transcription_receive_speaker_message": addReceivedMessageLog
};