diff --git a/UI_main.py b/UI_main.py
deleted file mode 100644
index 2d10f387..00000000
--- a/UI_main.py
+++ /dev/null
@@ -1,2706 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'ui\main.ui'
-#
-# Created by: PyQt5 UI code generator 5.15.9
-#
-# WARNING: Any manual changes made to this file will be lost when pyuic5 is
-# run again. Do not edit this file unless you know what you are doing.
-
-
-from PyQt5 import QtCore, QtGui, QtWidgets
-
-
-class Ui_MainWindow(object):
- def setupUi(self, MainWindow):
- MainWindow.setObjectName("MainWindow")
- MainWindow.resize(1191, 834)
- MainWindow.setStyleSheet("background-color: rgba(255, 255, 255, 50);")
- self.centralwidget = QtWidgets.QWidget(MainWindow)
- self.centralwidget.setObjectName("centralwidget")
- self.gridLayout_20 = QtWidgets.QGridLayout(self.centralwidget)
- self.gridLayout_20.setObjectName("gridLayout_20")
- self.pushButton_run_page = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_run_page.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_run_page.setStyleSheet("border: 1px solid #dcdfe6;\n"
-"background-color: #e6a23c;\n"
-"text-align: center;\n"
-"padding: 12px 16px;\n"
-"border-radius: 4px;\n"
-"font: 75 12pt \"微软雅黑\";")
- self.pushButton_run_page.setObjectName("pushButton_run_page")
- self.gridLayout_20.addWidget(self.pushButton_run_page, 4, 1, 1, 1)
- self.pushButton_copywriting_page = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_copywriting_page.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_page.setStyleSheet("border: 1px solid #dcdfe6;\n"
-"background-color: #e6a23c;\n"
-"text-align: center;\n"
-"padding: 12px 16px;\n"
-"border-radius: 4px;\n"
-"font: 75 12pt \"微软雅黑\";")
- self.pushButton_copywriting_page.setObjectName("pushButton_copywriting_page")
- self.gridLayout_20.addWidget(self.pushButton_copywriting_page, 5, 1, 1, 1)
- self.pushButton_run = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_run.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_run.setStyleSheet("border: 1px solid #dcdfe6;\n"
-"background-color: rgba(103, 194, 58, 255);\n"
-"text-align: center;\n"
-"padding: 12px 16px;\n"
-"border-radius: 4px;\n"
-"font: 75 12pt \"微软雅黑\";")
- self.pushButton_run.setObjectName("pushButton_run")
- self.gridLayout_20.addWidget(self.pushButton_run, 1, 1, 1, 1)
- self.pushButton_config_page = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_config_page.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_config_page.setStyleSheet("border: 1px solid #dcdfe6;\n"
-"background-color: #e6a23c;\n"
-"text-align: center;\n"
-"padding: 12px 16px;\n"
-"border-radius: 4px;\n"
-"font: 75 12pt \"微软雅黑\";")
- self.pushButton_config_page.setObjectName("pushButton_config_page")
- self.gridLayout_20.addWidget(self.pushButton_config_page, 3, 1, 1, 1)
- self.pushButton_save = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_save.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_save.setStyleSheet("border: 1px solid #dcdfe6;\n"
-"background-color: rgba(64, 158, 255, 255);\n"
-"text-align: center;\n"
-"padding: 12px 16px;\n"
-"border-radius: 4px;\n"
-"font: 75 12pt \"微软雅黑\";")
- self.pushButton_save.setObjectName("pushButton_save")
- self.gridLayout_20.addWidget(self.pushButton_save, 0, 1, 1, 1)
- self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget)
- self.stackedWidget.setStyleSheet("background-color: rgba(255, 255, 255, 0);\n"
-"font: 75 14pt \"微软雅黑\";")
- self.stackedWidget.setObjectName("stackedWidget")
- self.page = QtWidgets.QWidget()
- self.page.setObjectName("page")
- self.gridLayout_21 = QtWidgets.QGridLayout(self.page)
- self.gridLayout_21.setObjectName("gridLayout_21")
- self.scrollArea = QtWidgets.QScrollArea(self.page)
- self.scrollArea.setStyleSheet("font: 75 14pt \"微软雅黑\";\n"
-"background-color: rgba(255, 255, 255, 50);\n"
-"")
- self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
- self.scrollArea.setWidgetResizable(True)
- self.scrollArea.setObjectName("scrollArea")
- self.scrollAreaWidgetContents = QtWidgets.QWidget()
- self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, -6720, 991, 11374))
- self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
- self.verticalLayout = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
- self.verticalLayout.setContentsMargins(35, 20, 35, 20)
- self.verticalLayout.setSpacing(20)
- self.verticalLayout.setObjectName("verticalLayout")
- self.formWidget = QtWidgets.QWidget(self.scrollAreaWidgetContents)
- self.formWidget.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
- self.formWidget.setObjectName("formWidget")
- self.gridLayout = QtWidgets.QGridLayout(self.formWidget)
- self.gridLayout.setContentsMargins(0, 0, 0, 0)
- self.gridLayout.setObjectName("gridLayout")
- self.comboBox_audio_synthesis_type = QtWidgets.QComboBox(self.formWidget)
- self.comboBox_audio_synthesis_type.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.comboBox_audio_synthesis_type.setObjectName("comboBox_audio_synthesis_type")
- self.gridLayout.addWidget(self.comboBox_audio_synthesis_type, 11, 1, 1, 1)
- self.groupBox_read_comment = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_read_comment.setObjectName("groupBox_read_comment")
- self.gridLayout_75 = QtWidgets.QGridLayout(self.groupBox_read_comment)
- self.gridLayout_75.setObjectName("gridLayout_75")
- self.gridLayout_read_comment = QtWidgets.QGridLayout()
- self.gridLayout_read_comment.setObjectName("gridLayout_read_comment")
- self.gridLayout_75.addLayout(self.gridLayout_read_comment, 0, 0, 1, 1)
- self.gridLayout.addWidget(self.groupBox_read_comment, 20, 0, 1, 2)
- self.label_before_prompt = QtWidgets.QLabel(self.formWidget)
- self.label_before_prompt.setObjectName("label_before_prompt")
- self.gridLayout.addWidget(self.label_before_prompt, 5, 0, 1, 1)
- self.groupBox_audio_random_speed = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_audio_random_speed.setObjectName("groupBox_audio_random_speed")
- self.gridLayout_53 = QtWidgets.QGridLayout(self.groupBox_audio_random_speed)
- self.gridLayout_53.setObjectName("gridLayout_53")
- self.gridLayout_52 = QtWidgets.QGridLayout()
- self.gridLayout_52.setObjectName("gridLayout_52")
- self.lineEdit_audio_random_speed_normal_speed_min = QtWidgets.QLineEdit(self.groupBox_audio_random_speed)
- self.lineEdit_audio_random_speed_normal_speed_min.setObjectName("lineEdit_audio_random_speed_normal_speed_min")
- self.gridLayout_52.addWidget(self.lineEdit_audio_random_speed_normal_speed_min, 2, 1, 1, 1)
- self.label_audio_random_speed_normal_enable = QtWidgets.QLabel(self.groupBox_audio_random_speed)
- self.label_audio_random_speed_normal_enable.setObjectName("label_audio_random_speed_normal_enable")
- self.gridLayout_52.addWidget(self.label_audio_random_speed_normal_enable, 1, 0, 1, 1)
- self.label_audio_random_speed_normal_speed_min = QtWidgets.QLabel(self.groupBox_audio_random_speed)
- self.label_audio_random_speed_normal_speed_min.setObjectName("label_audio_random_speed_normal_speed_min")
- self.gridLayout_52.addWidget(self.label_audio_random_speed_normal_speed_min, 2, 0, 1, 1)
- self.label_audio_random_speed_normal_speed_max = QtWidgets.QLabel(self.groupBox_audio_random_speed)
- self.label_audio_random_speed_normal_speed_max.setObjectName("label_audio_random_speed_normal_speed_max")
- self.gridLayout_52.addWidget(self.label_audio_random_speed_normal_speed_max, 2, 2, 1, 1)
- self.checkBox_audio_random_speed_normal_enable = QtWidgets.QCheckBox(self.groupBox_audio_random_speed)
- self.checkBox_audio_random_speed_normal_enable.setObjectName("checkBox_audio_random_speed_normal_enable")
- self.gridLayout_52.addWidget(self.checkBox_audio_random_speed_normal_enable, 1, 1, 1, 1)
- self.lineEdit_audio_random_speed_normal_speed_max = QtWidgets.QLineEdit(self.groupBox_audio_random_speed)
- self.lineEdit_audio_random_speed_normal_speed_max.setObjectName("lineEdit_audio_random_speed_normal_speed_max")
- self.gridLayout_52.addWidget(self.lineEdit_audio_random_speed_normal_speed_max, 2, 3, 1, 1)
- self.label_audio_random_speed_copywriting_enable = QtWidgets.QLabel(self.groupBox_audio_random_speed)
- self.label_audio_random_speed_copywriting_enable.setObjectName("label_audio_random_speed_copywriting_enable")
- self.gridLayout_52.addWidget(self.label_audio_random_speed_copywriting_enable, 3, 0, 1, 1)
- self.checkBox_audio_random_speed_copywriting_enable = QtWidgets.QCheckBox(self.groupBox_audio_random_speed)
- self.checkBox_audio_random_speed_copywriting_enable.setObjectName("checkBox_audio_random_speed_copywriting_enable")
- self.gridLayout_52.addWidget(self.checkBox_audio_random_speed_copywriting_enable, 3, 1, 1, 1)
- self.label_audio_random_speed_copywriting_speed_min = QtWidgets.QLabel(self.groupBox_audio_random_speed)
- self.label_audio_random_speed_copywriting_speed_min.setObjectName("label_audio_random_speed_copywriting_speed_min")
- self.gridLayout_52.addWidget(self.label_audio_random_speed_copywriting_speed_min, 4, 0, 1, 1)
- self.lineEdit_audio_random_speed_copywriting_speed_min = QtWidgets.QLineEdit(self.groupBox_audio_random_speed)
- self.lineEdit_audio_random_speed_copywriting_speed_min.setObjectName("lineEdit_audio_random_speed_copywriting_speed_min")
- self.gridLayout_52.addWidget(self.lineEdit_audio_random_speed_copywriting_speed_min, 4, 1, 1, 1)
- self.label_audio_random_speed_copywriting_speed_max = QtWidgets.QLabel(self.groupBox_audio_random_speed)
- self.label_audio_random_speed_copywriting_speed_max.setObjectName("label_audio_random_speed_copywriting_speed_max")
- self.gridLayout_52.addWidget(self.label_audio_random_speed_copywriting_speed_max, 4, 2, 1, 1)
- self.lineEdit_audio_random_speed_copywriting_speed_max = QtWidgets.QLineEdit(self.groupBox_audio_random_speed)
- self.lineEdit_audio_random_speed_copywriting_speed_max.setObjectName("lineEdit_audio_random_speed_copywriting_speed_max")
- self.gridLayout_52.addWidget(self.lineEdit_audio_random_speed_copywriting_speed_max, 4, 3, 1, 1)
- self.gridLayout_52.setColumnStretch(0, 1)
- self.gridLayout_52.setColumnStretch(1, 2)
- self.gridLayout_52.setColumnStretch(2, 1)
- self.gridLayout_52.setColumnStretch(3, 2)
- self.gridLayout_53.addLayout(self.gridLayout_52, 0, 0, 1, 1)
- spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_53.addItem(spacerItem, 0, 1, 1, 1)
- self.gridLayout_53.setColumnStretch(0, 9)
- self.gridLayout_53.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_audio_random_speed, 29, 0, 1, 3)
- self.groupBox_read_user_name = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_read_user_name.setObjectName("groupBox_read_user_name")
- self.gridLayout_59 = QtWidgets.QGridLayout(self.groupBox_read_user_name)
- self.gridLayout_59.setObjectName("gridLayout_59")
- self.gridLayout_58 = QtWidgets.QGridLayout()
- self.gridLayout_58.setObjectName("gridLayout_58")
- self.label_read_user_name_reply_before = QtWidgets.QLabel(self.groupBox_read_user_name)
- self.label_read_user_name_reply_before.setObjectName("label_read_user_name_reply_before")
- self.gridLayout_58.addWidget(self.label_read_user_name_reply_before, 2, 0, 1, 1)
- self.textEdit_read_user_name_reply_before = QtWidgets.QTextEdit(self.groupBox_read_user_name)
- self.textEdit_read_user_name_reply_before.setObjectName("textEdit_read_user_name_reply_before")
- self.gridLayout_58.addWidget(self.textEdit_read_user_name_reply_before, 2, 1, 1, 1)
- self.label_read_user_name_enable = QtWidgets.QLabel(self.groupBox_read_user_name)
- self.label_read_user_name_enable.setObjectName("label_read_user_name_enable")
- self.gridLayout_58.addWidget(self.label_read_user_name_enable, 0, 0, 1, 1)
- self.checkBox_read_user_name_enable = QtWidgets.QCheckBox(self.groupBox_read_user_name)
- self.checkBox_read_user_name_enable.setObjectName("checkBox_read_user_name_enable")
- self.gridLayout_58.addWidget(self.checkBox_read_user_name_enable, 0, 1, 1, 1)
- self.label_read_user_name_voice_change = QtWidgets.QLabel(self.groupBox_read_user_name)
- self.label_read_user_name_voice_change.setObjectName("label_read_user_name_voice_change")
- self.gridLayout_58.addWidget(self.label_read_user_name_voice_change, 1, 0, 1, 1)
- self.checkBox_read_user_name_voice_change = QtWidgets.QCheckBox(self.groupBox_read_user_name)
- self.checkBox_read_user_name_voice_change.setObjectName("checkBox_read_user_name_voice_change")
- self.gridLayout_58.addWidget(self.checkBox_read_user_name_voice_change, 1, 1, 1, 1)
- self.label_read_user_name_reply_after = QtWidgets.QLabel(self.groupBox_read_user_name)
- self.label_read_user_name_reply_after.setObjectName("label_read_user_name_reply_after")
- self.gridLayout_58.addWidget(self.label_read_user_name_reply_after, 3, 0, 1, 1)
- self.textEdit_read_user_name_reply_after = QtWidgets.QTextEdit(self.groupBox_read_user_name)
- self.textEdit_read_user_name_reply_after.setObjectName("textEdit_read_user_name_reply_after")
- self.gridLayout_58.addWidget(self.textEdit_read_user_name_reply_after, 3, 1, 1, 1)
- self.gridLayout_59.addLayout(self.gridLayout_58, 0, 0, 1, 1)
- self.gridLayout.addWidget(self.groupBox_read_user_name, 21, 0, 1, 2)
- self.groupBox_play_audio = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_play_audio.setObjectName("groupBox_play_audio")
- self.gridLayout_68 = QtWidgets.QGridLayout(self.groupBox_play_audio)
- self.gridLayout_68.setObjectName("gridLayout_68")
- self.gridLayout_play_audio = QtWidgets.QGridLayout()
- self.gridLayout_play_audio.setObjectName("gridLayout_play_audio")
- self.gridLayout_68.addLayout(self.gridLayout_play_audio, 0, 0, 1, 1)
- self.gridLayout.addWidget(self.groupBox_play_audio, 17, 0, 1, 2)
- self.label_platform = QtWidgets.QLabel(self.formWidget)
- self.label_platform.setAutoFillBackground(False)
- self.label_platform.setObjectName("label_platform")
- self.gridLayout.addWidget(self.label_platform, 0, 0, 1, 1)
- self.label_need_lang = QtWidgets.QLabel(self.formWidget)
- self.label_need_lang.setObjectName("label_need_lang")
- self.gridLayout.addWidget(self.label_need_lang, 4, 0, 1, 1)
- self.groupBox_show_box = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_show_box.setObjectName("groupBox_show_box")
- self.gridLayout_62 = QtWidgets.QGridLayout(self.groupBox_show_box)
- self.gridLayout_62.setObjectName("gridLayout_62")
- self.gridLayout_show_box = QtWidgets.QGridLayout()
- self.gridLayout_show_box.setObjectName("gridLayout_show_box")
- self.gridLayout_62.addLayout(self.gridLayout_show_box, 1, 0, 1, 1)
- self.gridLayout.addWidget(self.groupBox_show_box, 16, 0, 1, 2)
- self.groupBox_claude2 = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_claude2.setObjectName("groupBox_claude2")
- self.gridLayout_65 = QtWidgets.QGridLayout(self.groupBox_claude2)
- self.gridLayout_65.setObjectName("gridLayout_65")
- self.gridLayout_60 = QtWidgets.QGridLayout()
- self.gridLayout_60.setObjectName("gridLayout_60")
- self.lineEdit_claude2_cookie = QtWidgets.QLineEdit(self.groupBox_claude2)
- self.lineEdit_claude2_cookie.setObjectName("lineEdit_claude2_cookie")
- self.gridLayout_60.addWidget(self.lineEdit_claude2_cookie, 0, 1, 1, 1)
- self.lineEdit_claude2_proxies_socks5 = QtWidgets.QLineEdit(self.groupBox_claude2)
- self.lineEdit_claude2_proxies_socks5.setObjectName("lineEdit_claude2_proxies_socks5")
- self.gridLayout_60.addWidget(self.lineEdit_claude2_proxies_socks5, 4, 1, 1, 1)
- self.label_claude2_proxies_https = QtWidgets.QLabel(self.groupBox_claude2)
- self.label_claude2_proxies_https.setObjectName("label_claude2_proxies_https")
- self.gridLayout_60.addWidget(self.label_claude2_proxies_https, 3, 0, 1, 1)
- self.label_claude2_proxies_socks5 = QtWidgets.QLabel(self.groupBox_claude2)
- self.label_claude2_proxies_socks5.setObjectName("label_claude2_proxies_socks5")
- self.gridLayout_60.addWidget(self.label_claude2_proxies_socks5, 4, 0, 1, 1)
- self.checkBox_claude2_use_proxy = QtWidgets.QCheckBox(self.groupBox_claude2)
- self.checkBox_claude2_use_proxy.setObjectName("checkBox_claude2_use_proxy")
- self.gridLayout_60.addWidget(self.checkBox_claude2_use_proxy, 1, 1, 1, 1)
- self.label_claude2_cookie = QtWidgets.QLabel(self.groupBox_claude2)
- self.label_claude2_cookie.setObjectName("label_claude2_cookie")
- self.gridLayout_60.addWidget(self.label_claude2_cookie, 0, 0, 1, 1)
- self.label_claude2_use_proxy = QtWidgets.QLabel(self.groupBox_claude2)
- self.label_claude2_use_proxy.setObjectName("label_claude2_use_proxy")
- self.gridLayout_60.addWidget(self.label_claude2_use_proxy, 1, 0, 1, 1)
- self.label_claude2_proxies_http = QtWidgets.QLabel(self.groupBox_claude2)
- self.label_claude2_proxies_http.setObjectName("label_claude2_proxies_http")
- self.gridLayout_60.addWidget(self.label_claude2_proxies_http, 2, 0, 1, 1)
- self.lineEdit_claude2_proxies_https = QtWidgets.QLineEdit(self.groupBox_claude2)
- self.lineEdit_claude2_proxies_https.setObjectName("lineEdit_claude2_proxies_https")
- self.gridLayout_60.addWidget(self.lineEdit_claude2_proxies_https, 3, 1, 1, 1)
- self.lineEdit_claude2_proxies_http = QtWidgets.QLineEdit(self.groupBox_claude2)
- self.lineEdit_claude2_proxies_http.setObjectName("lineEdit_claude2_proxies_http")
- self.gridLayout_60.addWidget(self.lineEdit_claude2_proxies_http, 2, 1, 1, 1)
- self.gridLayout_65.addLayout(self.gridLayout_60, 0, 0, 1, 1)
- spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_65.addItem(spacerItem1, 0, 1, 1, 1)
- self.gridLayout_65.setColumnStretch(0, 9)
- self.gridLayout_65.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_claude2, 35, 0, 1, 3)
- self.groupBox_xuniren = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_xuniren.setObjectName("groupBox_xuniren")
- self.gridLayout_89 = QtWidgets.QGridLayout(self.groupBox_xuniren)
- self.gridLayout_89.setObjectName("gridLayout_89")
- self.gridLayout_xuniren = QtWidgets.QGridLayout()
- self.gridLayout_xuniren.setObjectName("gridLayout_xuniren")
- self.gridLayout_89.addLayout(self.gridLayout_xuniren, 0, 0, 1, 1)
- self.gridLayout.addWidget(self.groupBox_xuniren, 19, 0, 1, 2)
- self.label_after_prompt = QtWidgets.QLabel(self.formWidget)
- self.label_after_prompt.setObjectName("label_after_prompt")
- self.gridLayout.addWidget(self.label_after_prompt, 6, 0, 1, 1)
- self.groupBox_chatglm = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_chatglm.setObjectName("groupBox_chatglm")
- self.gridLayout_9 = QtWidgets.QGridLayout(self.groupBox_chatglm)
- self.gridLayout_9.setObjectName("gridLayout_9")
- self.gridLayout_8 = QtWidgets.QGridLayout()
- self.gridLayout_8.setObjectName("gridLayout_8")
- self.label_chatglm_api_ip_port = QtWidgets.QLabel(self.groupBox_chatglm)
- self.label_chatglm_api_ip_port.setObjectName("label_chatglm_api_ip_port")
- self.gridLayout_8.addWidget(self.label_chatglm_api_ip_port, 0, 0, 1, 1)
- self.lineEdit_chatglm_top_p = QtWidgets.QLineEdit(self.groupBox_chatglm)
- self.lineEdit_chatglm_top_p.setObjectName("lineEdit_chatglm_top_p")
- self.gridLayout_8.addWidget(self.lineEdit_chatglm_top_p, 2, 1, 1, 1)
- self.label_chatglm_history_max_len = QtWidgets.QLabel(self.groupBox_chatglm)
- self.label_chatglm_history_max_len.setObjectName("label_chatglm_history_max_len")
- self.gridLayout_8.addWidget(self.label_chatglm_history_max_len, 5, 0, 1, 1)
- self.lineEdit_chatglm_max_length = QtWidgets.QLineEdit(self.groupBox_chatglm)
- self.lineEdit_chatglm_max_length.setObjectName("lineEdit_chatglm_max_length")
- self.gridLayout_8.addWidget(self.lineEdit_chatglm_max_length, 1, 1, 1, 1)
- self.label_chatglm_top_p = QtWidgets.QLabel(self.groupBox_chatglm)
- self.label_chatglm_top_p.setObjectName("label_chatglm_top_p")
- self.gridLayout_8.addWidget(self.label_chatglm_top_p, 2, 0, 1, 1)
- self.label_chatglm_temperature = QtWidgets.QLabel(self.groupBox_chatglm)
- self.label_chatglm_temperature.setObjectName("label_chatglm_temperature")
- self.gridLayout_8.addWidget(self.label_chatglm_temperature, 3, 0, 1, 1)
- self.lineEdit_chatglm_temperature = QtWidgets.QLineEdit(self.groupBox_chatglm)
- self.lineEdit_chatglm_temperature.setObjectName("lineEdit_chatglm_temperature")
- self.gridLayout_8.addWidget(self.lineEdit_chatglm_temperature, 3, 1, 1, 1)
- self.lineEdit_chatglm_api_ip_port = QtWidgets.QLineEdit(self.groupBox_chatglm)
- self.lineEdit_chatglm_api_ip_port.setObjectName("lineEdit_chatglm_api_ip_port")
- self.gridLayout_8.addWidget(self.lineEdit_chatglm_api_ip_port, 0, 1, 1, 1)
- self.label_chatglm_max_length = QtWidgets.QLabel(self.groupBox_chatglm)
- self.label_chatglm_max_length.setObjectName("label_chatglm_max_length")
- self.gridLayout_8.addWidget(self.label_chatglm_max_length, 1, 0, 1, 1)
- self.label_chatglm_history_enable = QtWidgets.QLabel(self.groupBox_chatglm)
- self.label_chatglm_history_enable.setObjectName("label_chatglm_history_enable")
- self.gridLayout_8.addWidget(self.label_chatglm_history_enable, 4, 0, 1, 1)
- self.checkBox_chatglm_history_enable = QtWidgets.QCheckBox(self.groupBox_chatglm)
- self.checkBox_chatglm_history_enable.setObjectName("checkBox_chatglm_history_enable")
- self.gridLayout_8.addWidget(self.checkBox_chatglm_history_enable, 4, 1, 1, 1)
- self.lineEdit_chatglm_history_max_len = QtWidgets.QLineEdit(self.groupBox_chatglm)
- self.lineEdit_chatglm_history_max_len.setObjectName("lineEdit_chatglm_history_max_len")
- self.gridLayout_8.addWidget(self.lineEdit_chatglm_history_max_len, 5, 1, 1, 1)
- self.gridLayout_9.addLayout(self.gridLayout_8, 0, 0, 1, 1)
- spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_9.addItem(spacerItem2, 0, 1, 1, 1)
- self.gridLayout_9.setColumnStretch(0, 9)
- self.gridLayout_9.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_chatglm, 36, 0, 1, 3)
- self.label_room_display_id = QtWidgets.QLabel(self.formWidget)
- self.label_room_display_id.setObjectName("label_room_display_id")
- self.gridLayout.addWidget(self.label_room_display_id, 1, 0, 1, 1)
- self.groupBox_openai = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_openai.setObjectName("groupBox_openai")
- self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_openai)
- self.gridLayout_4.setObjectName("gridLayout_4")
- self.gridLayout_2 = QtWidgets.QGridLayout()
- self.gridLayout_2.setSpacing(2)
- self.gridLayout_2.setObjectName("gridLayout_2")
- self.label_openai_api = QtWidgets.QLabel(self.groupBox_openai)
- self.label_openai_api.setObjectName("label_openai_api")
- self.gridLayout_2.addWidget(self.label_openai_api, 0, 0, 1, 1)
- self.lineEdit_openai_api = QtWidgets.QLineEdit(self.groupBox_openai)
- self.lineEdit_openai_api.setObjectName("lineEdit_openai_api")
- self.gridLayout_2.addWidget(self.lineEdit_openai_api, 0, 2, 1, 1)
- self.label_openai_api_key = QtWidgets.QLabel(self.groupBox_openai)
- self.label_openai_api_key.setObjectName("label_openai_api_key")
- self.gridLayout_2.addWidget(self.label_openai_api_key, 1, 0, 1, 1)
- self.textEdit_openai_api_key = QtWidgets.QTextEdit(self.groupBox_openai)
- self.textEdit_openai_api_key.setObjectName("textEdit_openai_api_key")
- self.gridLayout_2.addWidget(self.textEdit_openai_api_key, 1, 1, 1, 2)
- self.gridLayout_4.addLayout(self.gridLayout_2, 0, 0, 1, 1)
- spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_4.addItem(spacerItem3, 0, 1, 1, 1)
- self.gridLayout_4.setColumnStretch(0, 9)
- self.gridLayout_4.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_openai, 30, 0, 1, 3)
- self.lineEdit_before_prompt = QtWidgets.QLineEdit(self.formWidget)
- self.lineEdit_before_prompt.setObjectName("lineEdit_before_prompt")
- self.gridLayout.addWidget(self.lineEdit_before_prompt, 5, 1, 1, 1)
- self.label_visual_body = QtWidgets.QLabel(self.formWidget)
- self.label_visual_body.setObjectName("label_visual_body")
- self.gridLayout.addWidget(self.label_visual_body, 3, 0, 1, 1)
- self.comboBox_platform = QtWidgets.QComboBox(self.formWidget)
- self.comboBox_platform.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.comboBox_platform.setObjectName("comboBox_platform")
- self.gridLayout.addWidget(self.comboBox_platform, 0, 1, 1, 1)
- self.label_chat_type = QtWidgets.QLabel(self.formWidget)
- self.label_chat_type.setObjectName("label_chat_type")
- self.gridLayout.addWidget(self.label_chat_type, 2, 0, 1, 1)
- self.groupBox_local_qa = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_local_qa.setObjectName("groupBox_local_qa")
- self.gridLayout_51 = QtWidgets.QGridLayout(self.groupBox_local_qa)
- self.gridLayout_51.setObjectName("gridLayout_51")
- self.gridLayout_50 = QtWidgets.QGridLayout()
- self.gridLayout_50.setObjectName("gridLayout_50")
- self.label_local_qa_audio_enable = QtWidgets.QLabel(self.groupBox_local_qa)
- self.label_local_qa_audio_enable.setObjectName("label_local_qa_audio_enable")
- self.gridLayout_50.addWidget(self.label_local_qa_audio_enable, 4, 0, 1, 1)
- self.label_local_qa_text_enable = QtWidgets.QLabel(self.groupBox_local_qa)
- self.label_local_qa_text_enable.setObjectName("label_local_qa_text_enable")
- self.gridLayout_50.addWidget(self.label_local_qa_text_enable, 0, 0, 1, 1)
- self.checkBox_local_qa_text_enable = QtWidgets.QCheckBox(self.groupBox_local_qa)
- self.checkBox_local_qa_text_enable.setObjectName("checkBox_local_qa_text_enable")
- self.gridLayout_50.addWidget(self.checkBox_local_qa_text_enable, 0, 1, 1, 1)
- self.lineEdit_local_qa_text_file_path = QtWidgets.QLineEdit(self.groupBox_local_qa)
- self.lineEdit_local_qa_text_file_path.setObjectName("lineEdit_local_qa_text_file_path")
- self.gridLayout_50.addWidget(self.lineEdit_local_qa_text_file_path, 2, 1, 1, 1)
- self.label_local_qa_audio_similarity = QtWidgets.QLabel(self.groupBox_local_qa)
- self.label_local_qa_audio_similarity.setObjectName("label_local_qa_audio_similarity")
- self.gridLayout_50.addWidget(self.label_local_qa_audio_similarity, 6, 0, 1, 1)
- self.checkBox_local_qa_audio_enable = QtWidgets.QCheckBox(self.groupBox_local_qa)
- self.checkBox_local_qa_audio_enable.setObjectName("checkBox_local_qa_audio_enable")
- self.gridLayout_50.addWidget(self.checkBox_local_qa_audio_enable, 4, 1, 1, 1)
- self.label_local_qa_text_similarity = QtWidgets.QLabel(self.groupBox_local_qa)
- self.label_local_qa_text_similarity.setObjectName("label_local_qa_text_similarity")
- self.gridLayout_50.addWidget(self.label_local_qa_text_similarity, 3, 0, 1, 1)
- self.lineEdit_local_qa_audio_file_path = QtWidgets.QLineEdit(self.groupBox_local_qa)
- self.lineEdit_local_qa_audio_file_path.setObjectName("lineEdit_local_qa_audio_file_path")
- self.gridLayout_50.addWidget(self.lineEdit_local_qa_audio_file_path, 5, 1, 1, 1)
- self.label_local_qa_audio_file_path = QtWidgets.QLabel(self.groupBox_local_qa)
- self.label_local_qa_audio_file_path.setObjectName("label_local_qa_audio_file_path")
- self.gridLayout_50.addWidget(self.label_local_qa_audio_file_path, 5, 0, 1, 1)
- self.label_local_qa_text_file_path = QtWidgets.QLabel(self.groupBox_local_qa)
- self.label_local_qa_text_file_path.setObjectName("label_local_qa_text_file_path")
- self.gridLayout_50.addWidget(self.label_local_qa_text_file_path, 2, 0, 1, 1)
- self.lineEdit_local_qa_text_similarity = QtWidgets.QLineEdit(self.groupBox_local_qa)
- self.lineEdit_local_qa_text_similarity.setObjectName("lineEdit_local_qa_text_similarity")
- self.gridLayout_50.addWidget(self.lineEdit_local_qa_text_similarity, 3, 1, 1, 1)
- self.lineEdit_local_qa_audio_similarity = QtWidgets.QLineEdit(self.groupBox_local_qa)
- self.lineEdit_local_qa_audio_similarity.setObjectName("lineEdit_local_qa_audio_similarity")
- self.gridLayout_50.addWidget(self.lineEdit_local_qa_audio_similarity, 6, 1, 1, 1)
- self.label_local_qa_text_type = QtWidgets.QLabel(self.groupBox_local_qa)
- self.label_local_qa_text_type.setObjectName("label_local_qa_text_type")
- self.gridLayout_50.addWidget(self.label_local_qa_text_type, 1, 0, 1, 1)
- self.comboBox_local_qa_text_type = QtWidgets.QComboBox(self.groupBox_local_qa)
- self.comboBox_local_qa_text_type.setObjectName("comboBox_local_qa_text_type")
- self.comboBox_local_qa_text_type.addItem("")
- self.comboBox_local_qa_text_type.addItem("")
- self.gridLayout_50.addWidget(self.comboBox_local_qa_text_type, 1, 1, 1, 1)
- self.gridLayout_51.addLayout(self.gridLayout_50, 0, 0, 1, 1)
- spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_51.addItem(spacerItem4, 0, 1, 1, 1)
- self.gridLayout_51.setColumnStretch(0, 9)
- self.gridLayout_51.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_local_qa, 23, 0, 1, 3)
- self.groupBox_claude = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_claude.setObjectName("groupBox_claude")
- self.gridLayout_7 = QtWidgets.QGridLayout(self.groupBox_claude)
- self.gridLayout_7.setObjectName("gridLayout_7")
- self.gridLayout_6 = QtWidgets.QGridLayout()
- self.gridLayout_6.setObjectName("gridLayout_6")
- self.lineEdit_claude_slack_user_token = QtWidgets.QLineEdit(self.groupBox_claude)
- self.lineEdit_claude_slack_user_token.setObjectName("lineEdit_claude_slack_user_token")
- self.gridLayout_6.addWidget(self.lineEdit_claude_slack_user_token, 1, 1, 1, 1)
- self.label_claude_slack_user_token = QtWidgets.QLabel(self.groupBox_claude)
- self.label_claude_slack_user_token.setObjectName("label_claude_slack_user_token")
- self.gridLayout_6.addWidget(self.label_claude_slack_user_token, 1, 0, 1, 1)
- self.label_claude_bot_user_id = QtWidgets.QLabel(self.groupBox_claude)
- self.label_claude_bot_user_id.setObjectName("label_claude_bot_user_id")
- self.gridLayout_6.addWidget(self.label_claude_bot_user_id, 2, 0, 1, 1)
- self.lineEdit_claude_bot_user_id = QtWidgets.QLineEdit(self.groupBox_claude)
- self.lineEdit_claude_bot_user_id.setObjectName("lineEdit_claude_bot_user_id")
- self.gridLayout_6.addWidget(self.lineEdit_claude_bot_user_id, 2, 1, 1, 1)
- self.gridLayout_7.addLayout(self.gridLayout_6, 0, 0, 1, 1)
- spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_7.addItem(spacerItem5, 0, 1, 1, 1)
- self.gridLayout_7.setColumnStretch(0, 9)
- self.gridLayout_7.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_claude, 34, 0, 1, 3)
- self.comboBox_need_lang = QtWidgets.QComboBox(self.formWidget)
- self.comboBox_need_lang.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.comboBox_need_lang.setObjectName("comboBox_need_lang")
- self.comboBox_need_lang.addItem("")
- self.comboBox_need_lang.addItem("")
- self.comboBox_need_lang.addItem("")
- self.comboBox_need_lang.addItem("")
- self.gridLayout.addWidget(self.comboBox_need_lang, 4, 1, 1, 1)
- self.groupBox_log = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_log.setObjectName("groupBox_log")
- self.gridLayout_47 = QtWidgets.QGridLayout(self.groupBox_log)
- self.gridLayout_47.setObjectName("gridLayout_47")
- self.gridLayout_46 = QtWidgets.QGridLayout()
- self.gridLayout_46.setObjectName("gridLayout_46")
- self.comboBox_comment_log_type = QtWidgets.QComboBox(self.groupBox_log)
- self.comboBox_comment_log_type.setObjectName("comboBox_comment_log_type")
- self.comboBox_comment_log_type.addItem("")
- self.comboBox_comment_log_type.addItem("")
- self.comboBox_comment_log_type.addItem("")
- self.comboBox_comment_log_type.addItem("")
- self.gridLayout_46.addWidget(self.comboBox_comment_log_type, 1, 1, 1, 1)
- self.label_comment_log_type = QtWidgets.QLabel(self.groupBox_log)
- self.label_comment_log_type.setObjectName("label_comment_log_type")
- self.gridLayout_46.addWidget(self.label_comment_log_type, 1, 0, 1, 1)
- self.label_captions_file_path = QtWidgets.QLabel(self.groupBox_log)
- self.label_captions_file_path.setObjectName("label_captions_file_path")
- self.gridLayout_46.addWidget(self.label_captions_file_path, 3, 0, 1, 1)
- self.lineEdit_captions_file_path = QtWidgets.QLineEdit(self.groupBox_log)
- self.lineEdit_captions_file_path.setObjectName("lineEdit_captions_file_path")
- self.gridLayout_46.addWidget(self.lineEdit_captions_file_path, 3, 1, 1, 1)
- self.label_captions_enable = QtWidgets.QLabel(self.groupBox_log)
- self.label_captions_enable.setObjectName("label_captions_enable")
- self.gridLayout_46.addWidget(self.label_captions_enable, 2, 0, 1, 1)
- self.checkBox_captions_enable = QtWidgets.QCheckBox(self.groupBox_log)
- self.checkBox_captions_enable.setObjectName("checkBox_captions_enable")
- self.gridLayout_46.addWidget(self.checkBox_captions_enable, 2, 1, 1, 1)
- self.gridLayout_46.setColumnStretch(0, 1)
- self.gridLayout_46.setColumnStretch(1, 5)
- self.gridLayout_47.addLayout(self.gridLayout_46, 0, 0, 1, 1)
- spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_47.addItem(spacerItem6, 0, 1, 1, 1)
- self.gridLayout_47.setColumnStretch(0, 9)
- self.gridLayout_47.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_log, 22, 0, 1, 3)
- spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout.addItem(spacerItem7, 0, 2, 1, 1)
- self.groupBox_filter = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_filter.setStyleSheet("")
- self.groupBox_filter.setObjectName("groupBox_filter")
- self.gridLayout_26 = QtWidgets.QGridLayout(self.groupBox_filter)
- self.gridLayout_26.setObjectName("gridLayout_26")
- self.gridLayout_filter = QtWidgets.QGridLayout()
- self.gridLayout_filter.setObjectName("gridLayout_filter")
- self.label_filter_talk_forget_reserve_num = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_talk_forget_reserve_num.setObjectName("label_filter_talk_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.label_filter_talk_forget_reserve_num, 15, 0, 1, 1)
- self.lineEdit_filter_talk_forget_reserve_num = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_talk_forget_reserve_num.setObjectName("lineEdit_filter_talk_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_talk_forget_reserve_num, 15, 1, 1, 1)
- self.lineEdit_filter_max_char_len = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_max_char_len.setObjectName("lineEdit_filter_max_char_len")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_max_char_len, 5, 1, 1, 1)
- self.lineEdit_filter_comment_forget_duration = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_comment_forget_duration.setObjectName("lineEdit_filter_comment_forget_duration")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_comment_forget_duration, 6, 1, 1, 1)
- self.lineEdit_filter_entrance_forget_duration = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_entrance_forget_duration.setObjectName("lineEdit_filter_entrance_forget_duration")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_entrance_forget_duration, 12, 1, 1, 1)
- self.label_filter_comment_forget_reserve_num = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_comment_forget_reserve_num.setObjectName("label_filter_comment_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.label_filter_comment_forget_reserve_num, 7, 0, 1, 1)
- self.label_filter_max_len = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_max_len.setObjectName("label_filter_max_len")
- self.gridLayout_filter.addWidget(self.label_filter_max_len, 4, 0, 1, 1)
- self.lineEdit_filter_badwords_path = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_badwords_path.setObjectName("lineEdit_filter_badwords_path")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_badwords_path, 2, 1, 1, 1)
- self.label_filter_max_char_len = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_max_char_len.setObjectName("label_filter_max_char_len")
- self.gridLayout_filter.addWidget(self.label_filter_max_char_len, 5, 0, 1, 1)
- self.lineEdit_filter_max_len = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_max_len.setObjectName("lineEdit_filter_max_len")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_max_len, 4, 1, 1, 1)
- self.lineEdit_filter_gift_forget_duration = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_gift_forget_duration.setObjectName("lineEdit_filter_gift_forget_duration")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_gift_forget_duration, 8, 1, 1, 1)
- self.label_filter_entrance_forget_reserve_num = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_entrance_forget_reserve_num.setObjectName("label_filter_entrance_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.label_filter_entrance_forget_reserve_num, 13, 0, 1, 1)
- self.label_filter_talk_forget_duration = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_talk_forget_duration.setObjectName("label_filter_talk_forget_duration")
- self.gridLayout_filter.addWidget(self.label_filter_talk_forget_duration, 14, 0, 1, 1)
- self.label_filter_badwords_path = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_badwords_path.setObjectName("label_filter_badwords_path")
- self.gridLayout_filter.addWidget(self.label_filter_badwords_path, 2, 0, 1, 1)
- self.label_filter_schedule_forget_duration = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_schedule_forget_duration.setObjectName("label_filter_schedule_forget_duration")
- self.gridLayout_filter.addWidget(self.label_filter_schedule_forget_duration, 16, 0, 1, 1)
- self.label_filter_comment_forget_duration = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_comment_forget_duration.setObjectName("label_filter_comment_forget_duration")
- self.gridLayout_filter.addWidget(self.label_filter_comment_forget_duration, 6, 0, 1, 1)
- self.lineEdit_filter_schedule_forget_duration = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_schedule_forget_duration.setObjectName("lineEdit_filter_schedule_forget_duration")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_schedule_forget_duration, 16, 1, 1, 1)
- self.lineEdit_filter_gift_forget_reserve_num = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_gift_forget_reserve_num.setObjectName("lineEdit_filter_gift_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_gift_forget_reserve_num, 9, 1, 1, 1)
- self.label_filter_follow_forget_duration = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_follow_forget_duration.setObjectName("label_filter_follow_forget_duration")
- self.gridLayout_filter.addWidget(self.label_filter_follow_forget_duration, 10, 0, 1, 1)
- self.lineEdit_filter_entrance_forget_reserve_num = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_entrance_forget_reserve_num.setObjectName("lineEdit_filter_entrance_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_entrance_forget_reserve_num, 13, 1, 1, 1)
- self.label_filter_bad_pinyin_path = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_bad_pinyin_path.setObjectName("label_filter_bad_pinyin_path")
- self.gridLayout_filter.addWidget(self.label_filter_bad_pinyin_path, 3, 0, 1, 1)
- self.textEdit_filter_after_must_str = QtWidgets.QTextEdit(self.groupBox_filter)
- self.textEdit_filter_after_must_str.setObjectName("textEdit_filter_after_must_str")
- self.gridLayout_filter.addWidget(self.textEdit_filter_after_must_str, 1, 1, 1, 1)
- self.textEdit_filter_before_must_str = QtWidgets.QTextEdit(self.groupBox_filter)
- self.textEdit_filter_before_must_str.setObjectName("textEdit_filter_before_must_str")
- self.gridLayout_filter.addWidget(self.textEdit_filter_before_must_str, 0, 1, 1, 1)
- self.label_filter_gift_forget_reserve_num = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_gift_forget_reserve_num.setObjectName("label_filter_gift_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.label_filter_gift_forget_reserve_num, 9, 0, 1, 1)
- self.lineEdit_filter_bad_pinyin_path = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_bad_pinyin_path.setObjectName("lineEdit_filter_bad_pinyin_path")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_bad_pinyin_path, 3, 1, 1, 1)
- self.label_filter_before_must_str = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_before_must_str.setObjectName("label_filter_before_must_str")
- self.gridLayout_filter.addWidget(self.label_filter_before_must_str, 0, 0, 1, 1)
- self.lineEdit_filter_talk_forget_duration = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_talk_forget_duration.setObjectName("lineEdit_filter_talk_forget_duration")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_talk_forget_duration, 14, 1, 1, 1)
- self.label_filter_after_must_str = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_after_must_str.setObjectName("label_filter_after_must_str")
- self.gridLayout_filter.addWidget(self.label_filter_after_must_str, 1, 0, 1, 1)
- self.lineEdit_filter_comment_forget_reserve_num = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_comment_forget_reserve_num.setObjectName("lineEdit_filter_comment_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_comment_forget_reserve_num, 7, 1, 1, 1)
- self.label_filter_schedule_forget_reserve_num = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_schedule_forget_reserve_num.setObjectName("label_filter_schedule_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.label_filter_schedule_forget_reserve_num, 17, 0, 1, 1)
- self.label_filter_gift_forget_duration = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_gift_forget_duration.setObjectName("label_filter_gift_forget_duration")
- self.gridLayout_filter.addWidget(self.label_filter_gift_forget_duration, 8, 0, 1, 1)
- self.lineEdit_filter_schedule_forget_reserve_num = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_schedule_forget_reserve_num.setObjectName("lineEdit_filter_schedule_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_schedule_forget_reserve_num, 17, 1, 1, 1)
- self.label_filter_entrance_forget_duration = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_entrance_forget_duration.setObjectName("label_filter_entrance_forget_duration")
- self.gridLayout_filter.addWidget(self.label_filter_entrance_forget_duration, 12, 0, 1, 1)
- self.label_filter_follow_forget_reserve_num = QtWidgets.QLabel(self.groupBox_filter)
- self.label_filter_follow_forget_reserve_num.setObjectName("label_filter_follow_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.label_filter_follow_forget_reserve_num, 11, 0, 1, 1)
- self.lineEdit_filter_follow_forget_duration = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_follow_forget_duration.setObjectName("lineEdit_filter_follow_forget_duration")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_follow_forget_duration, 10, 1, 1, 1)
- self.lineEdit_filter_follow_forget_reserve_num = QtWidgets.QLineEdit(self.groupBox_filter)
- self.lineEdit_filter_follow_forget_reserve_num.setObjectName("lineEdit_filter_follow_forget_reserve_num")
- self.gridLayout_filter.addWidget(self.lineEdit_filter_follow_forget_reserve_num, 11, 1, 1, 1)
- self.gridLayout_26.addLayout(self.gridLayout_filter, 0, 0, 1, 1)
- spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_26.addItem(spacerItem8, 0, 1, 1, 1)
- self.gridLayout_26.setColumnStretch(0, 9)
- self.gridLayout_26.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_filter, 24, 0, 1, 3)
- self.groupBox_twitch = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_twitch.setObjectName("groupBox_twitch")
- self.gridLayout_91 = QtWidgets.QGridLayout(self.groupBox_twitch)
- self.gridLayout_91.setObjectName("gridLayout_91")
- self.gridLayout_twitch = QtWidgets.QGridLayout()
- self.gridLayout_twitch.setObjectName("gridLayout_twitch")
- self.gridLayout_91.addLayout(self.gridLayout_twitch, 0, 0, 1, 1)
- self.gridLayout.addWidget(self.groupBox_twitch, 13, 0, 1, 2)
- self.label_audio_synthesis_type = QtWidgets.QLabel(self.formWidget)
- self.label_audio_synthesis_type.setObjectName("label_audio_synthesis_type")
- self.gridLayout.addWidget(self.label_audio_synthesis_type, 11, 0, 1, 1)
- self.lineEdit_after_prompt = QtWidgets.QLineEdit(self.formWidget)
- self.lineEdit_after_prompt.setObjectName("lineEdit_after_prompt")
- self.gridLayout.addWidget(self.lineEdit_after_prompt, 6, 1, 1, 1)
- self.comboBox_chat_type = QtWidgets.QComboBox(self.formWidget)
- self.comboBox_chat_type.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.comboBox_chat_type.setObjectName("comboBox_chat_type")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.comboBox_chat_type.addItem("")
- self.gridLayout.addWidget(self.comboBox_chat_type, 2, 1, 1, 1)
- self.lineEdit_room_display_id = QtWidgets.QLineEdit(self.formWidget)
- self.lineEdit_room_display_id.setObjectName("lineEdit_room_display_id")
- self.gridLayout.addWidget(self.lineEdit_room_display_id, 1, 1, 1, 1)
- self.groupBox_bilibili = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_bilibili.setObjectName("groupBox_bilibili")
- self.gridLayout_72 = QtWidgets.QGridLayout(self.groupBox_bilibili)
- self.gridLayout_72.setObjectName("gridLayout_72")
- self.gridLayout_bilibili = QtWidgets.QGridLayout()
- self.gridLayout_bilibili.setObjectName("gridLayout_bilibili")
- self.gridLayout_72.addLayout(self.gridLayout_bilibili, 0, 0, 1, 1)
- self.gridLayout.addWidget(self.groupBox_bilibili, 12, 0, 1, 2)
- self.comboBox_visual_body = QtWidgets.QComboBox(self.formWidget)
- self.comboBox_visual_body.setObjectName("comboBox_visual_body")
- self.gridLayout.addWidget(self.comboBox_visual_body, 3, 1, 1, 1)
- self.groupBox_thanks = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_thanks.setObjectName("groupBox_thanks")
- self.gridLayout_42 = QtWidgets.QGridLayout(self.groupBox_thanks)
- self.gridLayout_42.setObjectName("gridLayout_42")
- self.label_thanks_follow_enable = QtWidgets.QLabel(self.groupBox_thanks)
- self.label_thanks_follow_enable.setObjectName("label_thanks_follow_enable")
- self.gridLayout_42.addWidget(self.label_thanks_follow_enable, 6, 0, 1, 1)
- self.label_thanks_entrance_enable = QtWidgets.QLabel(self.groupBox_thanks)
- self.label_thanks_entrance_enable.setObjectName("label_thanks_entrance_enable")
- self.gridLayout_42.addWidget(self.label_thanks_entrance_enable, 0, 0, 1, 1)
- self.label_thanks_entrance_copy = QtWidgets.QLabel(self.groupBox_thanks)
- self.label_thanks_entrance_copy.setObjectName("label_thanks_entrance_copy")
- self.gridLayout_42.addWidget(self.label_thanks_entrance_copy, 2, 0, 1, 1)
- self.lineEdit_thanks_lowest_price = QtWidgets.QLineEdit(self.groupBox_thanks)
- self.lineEdit_thanks_lowest_price.setObjectName("lineEdit_thanks_lowest_price")
- self.gridLayout_42.addWidget(self.lineEdit_thanks_lowest_price, 5, 1, 1, 1)
- self.label_thanks_follow_copy = QtWidgets.QLabel(self.groupBox_thanks)
- self.label_thanks_follow_copy.setObjectName("label_thanks_follow_copy")
- self.gridLayout_42.addWidget(self.label_thanks_follow_copy, 7, 0, 1, 1)
- self.label_thanks_gift_copy = QtWidgets.QLabel(self.groupBox_thanks)
- self.label_thanks_gift_copy.setObjectName("label_thanks_gift_copy")
- self.gridLayout_42.addWidget(self.label_thanks_gift_copy, 4, 0, 1, 1)
- self.label_thanks_gift_enable = QtWidgets.QLabel(self.groupBox_thanks)
- self.label_thanks_gift_enable.setObjectName("label_thanks_gift_enable")
- self.gridLayout_42.addWidget(self.label_thanks_gift_enable, 3, 0, 1, 1)
- self.lineEdit_thanks_follow_copy = QtWidgets.QLineEdit(self.groupBox_thanks)
- self.lineEdit_thanks_follow_copy.setObjectName("lineEdit_thanks_follow_copy")
- self.gridLayout_42.addWidget(self.lineEdit_thanks_follow_copy, 7, 1, 1, 1)
- spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_42.addItem(spacerItem9, 2, 2, 1, 1)
- self.checkBox_thanks_gift_enable = QtWidgets.QCheckBox(self.groupBox_thanks)
- self.checkBox_thanks_gift_enable.setObjectName("checkBox_thanks_gift_enable")
- self.gridLayout_42.addWidget(self.checkBox_thanks_gift_enable, 3, 1, 1, 1)
- self.lineEdit_thanks_entrance_copy = QtWidgets.QLineEdit(self.groupBox_thanks)
- self.lineEdit_thanks_entrance_copy.setObjectName("lineEdit_thanks_entrance_copy")
- self.gridLayout_42.addWidget(self.lineEdit_thanks_entrance_copy, 2, 1, 1, 1)
- self.label_thanks_lowest_price = QtWidgets.QLabel(self.groupBox_thanks)
- self.label_thanks_lowest_price.setObjectName("label_thanks_lowest_price")
- self.gridLayout_42.addWidget(self.label_thanks_lowest_price, 5, 0, 1, 1)
- self.lineEdit_thanks_gift_copy = QtWidgets.QLineEdit(self.groupBox_thanks)
- self.lineEdit_thanks_gift_copy.setObjectName("lineEdit_thanks_gift_copy")
- self.gridLayout_42.addWidget(self.lineEdit_thanks_gift_copy, 4, 1, 1, 1)
- self.checkBox_thanks_entrance_enable = QtWidgets.QCheckBox(self.groupBox_thanks)
- self.checkBox_thanks_entrance_enable.setObjectName("checkBox_thanks_entrance_enable")
- self.gridLayout_42.addWidget(self.checkBox_thanks_entrance_enable, 0, 1, 1, 1)
- self.checkBox_thanks_follow_enable = QtWidgets.QCheckBox(self.groupBox_thanks)
- self.checkBox_thanks_follow_enable.setObjectName("checkBox_thanks_follow_enable")
- self.gridLayout_42.addWidget(self.checkBox_thanks_follow_enable, 6, 1, 1, 1)
- self.gridLayout_42.setColumnStretch(0, 1)
- self.gridLayout_42.setColumnStretch(1, 8)
- self.gridLayout_42.setColumnStretch(2, 1)
- self.gridLayout.addWidget(self.groupBox_thanks, 26, 0, 1, 3)
- self.groupBox_chatgpt = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_chatgpt.setObjectName("groupBox_chatgpt")
- self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox_chatgpt)
- self.gridLayout_5.setObjectName("gridLayout_5")
- self.gridLayout_3 = QtWidgets.QGridLayout()
- self.gridLayout_3.setObjectName("gridLayout_3")
- self.lineEdit_chatgpt_max_tokens = QtWidgets.QLineEdit(self.groupBox_chatgpt)
- self.lineEdit_chatgpt_max_tokens.setObjectName("lineEdit_chatgpt_max_tokens")
- self.gridLayout_3.addWidget(self.lineEdit_chatgpt_max_tokens, 2, 1, 1, 1)
- self.label_chatgpt_model = QtWidgets.QLabel(self.groupBox_chatgpt)
- self.label_chatgpt_model.setObjectName("label_chatgpt_model")
- self.gridLayout_3.addWidget(self.label_chatgpt_model, 0, 0, 1, 1)
- self.label_chatgpt_max_tokens = QtWidgets.QLabel(self.groupBox_chatgpt)
- self.label_chatgpt_max_tokens.setObjectName("label_chatgpt_max_tokens")
- self.gridLayout_3.addWidget(self.label_chatgpt_max_tokens, 2, 0, 1, 1)
- self.lineEdit_chatgpt_presence_penalty = QtWidgets.QLineEdit(self.groupBox_chatgpt)
- self.lineEdit_chatgpt_presence_penalty.setObjectName("lineEdit_chatgpt_presence_penalty")
- self.gridLayout_3.addWidget(self.lineEdit_chatgpt_presence_penalty, 4, 1, 1, 1)
- self.label_chatgpt_temperature = QtWidgets.QLabel(self.groupBox_chatgpt)
- self.label_chatgpt_temperature.setObjectName("label_chatgpt_temperature")
- self.gridLayout_3.addWidget(self.label_chatgpt_temperature, 1, 0, 1, 1)
- self.label_chatgpt_top_p = QtWidgets.QLabel(self.groupBox_chatgpt)
- self.label_chatgpt_top_p.setObjectName("label_chatgpt_top_p")
- self.gridLayout_3.addWidget(self.label_chatgpt_top_p, 3, 0, 1, 1)
- self.lineEdit_chatgpt_top_p = QtWidgets.QLineEdit(self.groupBox_chatgpt)
- self.lineEdit_chatgpt_top_p.setObjectName("lineEdit_chatgpt_top_p")
- self.gridLayout_3.addWidget(self.lineEdit_chatgpt_top_p, 3, 1, 1, 1)
- self.lineEdit_chatgpt_temperature = QtWidgets.QLineEdit(self.groupBox_chatgpt)
- self.lineEdit_chatgpt_temperature.setObjectName("lineEdit_chatgpt_temperature")
- self.gridLayout_3.addWidget(self.lineEdit_chatgpt_temperature, 1, 1, 1, 1)
- self.label_chatgpt_frequency_penalty = QtWidgets.QLabel(self.groupBox_chatgpt)
- self.label_chatgpt_frequency_penalty.setObjectName("label_chatgpt_frequency_penalty")
- self.gridLayout_3.addWidget(self.label_chatgpt_frequency_penalty, 5, 0, 1, 1)
- self.lineEdit_chatgpt_frequency_penalty = QtWidgets.QLineEdit(self.groupBox_chatgpt)
- self.lineEdit_chatgpt_frequency_penalty.setObjectName("lineEdit_chatgpt_frequency_penalty")
- self.gridLayout_3.addWidget(self.lineEdit_chatgpt_frequency_penalty, 5, 1, 1, 1)
- self.label_chatgpt_presence_penalty = QtWidgets.QLabel(self.groupBox_chatgpt)
- self.label_chatgpt_presence_penalty.setObjectName("label_chatgpt_presence_penalty")
- self.gridLayout_3.addWidget(self.label_chatgpt_presence_penalty, 4, 0, 1, 1)
- self.label_chatgpt_preset = QtWidgets.QLabel(self.groupBox_chatgpt)
- self.label_chatgpt_preset.setObjectName("label_chatgpt_preset")
- self.gridLayout_3.addWidget(self.label_chatgpt_preset, 6, 0, 1, 1)
- self.lineEdit_chatgpt_preset = QtWidgets.QLineEdit(self.groupBox_chatgpt)
- self.lineEdit_chatgpt_preset.setObjectName("lineEdit_chatgpt_preset")
- self.gridLayout_3.addWidget(self.lineEdit_chatgpt_preset, 6, 1, 1, 1)
- self.comboBox_chatgpt_model = QtWidgets.QComboBox(self.groupBox_chatgpt)
- self.comboBox_chatgpt_model.setObjectName("comboBox_chatgpt_model")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.comboBox_chatgpt_model.addItem("")
- self.gridLayout_3.addWidget(self.comboBox_chatgpt_model, 0, 1, 1, 1)
- self.gridLayout_5.addLayout(self.gridLayout_3, 0, 0, 1, 1)
- spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_5.addItem(spacerItem10, 0, 1, 1, 1)
- self.gridLayout_5.setColumnStretch(0, 9)
- self.gridLayout_5.setColumnStretch(1, 1)
- self.gridLayout.addWidget(self.groupBox_chatgpt, 32, 0, 2, 3)
- self.groupBox_audio_player = QtWidgets.QGroupBox(self.formWidget)
- self.groupBox_audio_player.setObjectName("groupBox_audio_player")
- self.gridLayout_92 = QtWidgets.QGridLayout(self.groupBox_audio_player)
- self.gridLayout_92.setObjectName("gridLayout_92")
- self.gridLayout_audio_player = QtWidgets.QGridLayout()
- self.gridLayout_audio_player.setObjectName("gridLayout_audio_player")
- self.gridLayout_92.addLayout(self.gridLayout_audio_player, 0, 0, 1, 1)
- self.gridLayout.addWidget(self.groupBox_audio_player, 18, 0, 1, 2)
- self.gridLayout.setColumnStretch(0, 1)
- self.gridLayout.setColumnStretch(1, 8)
- self.gridLayout.setColumnStretch(2, 1)
- self.verticalLayout.addWidget(self.formWidget)
- self.groupBox_zhipu = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_zhipu.setObjectName("groupBox_zhipu")
- self.gridLayout_71 = QtWidgets.QGridLayout(self.groupBox_zhipu)
- self.gridLayout_71.setObjectName("gridLayout_71")
- self.gridLayout_zhipu = QtWidgets.QGridLayout()
- self.gridLayout_zhipu.setObjectName("gridLayout_zhipu")
- self.gridLayout_71.addLayout(self.gridLayout_zhipu, 0, 0, 1, 1)
- spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_71.addItem(spacerItem11, 0, 1, 1, 1)
- self.gridLayout_71.setColumnStretch(0, 9)
- self.gridLayout_71.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_zhipu)
- self.groupBox_langchain_chatglm = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_langchain_chatglm.setObjectName("groupBox_langchain_chatglm")
- self.gridLayout_64 = QtWidgets.QGridLayout(self.groupBox_langchain_chatglm)
- self.gridLayout_64.setObjectName("gridLayout_64")
- self.gridLayout_langchain_chatglm = QtWidgets.QGridLayout()
- self.gridLayout_langchain_chatglm.setObjectName("gridLayout_langchain_chatglm")
- self.label_langchain_chatglm_api_ip_port = QtWidgets.QLabel(self.groupBox_langchain_chatglm)
- self.label_langchain_chatglm_api_ip_port.setObjectName("label_langchain_chatglm_api_ip_port")
- self.gridLayout_langchain_chatglm.addWidget(self.label_langchain_chatglm_api_ip_port, 0, 0, 1, 1)
- self.comboBox_langchain_chatglm_chat_type = QtWidgets.QComboBox(self.groupBox_langchain_chatglm)
- self.comboBox_langchain_chatglm_chat_type.setObjectName("comboBox_langchain_chatglm_chat_type")
- self.gridLayout_langchain_chatglm.addWidget(self.comboBox_langchain_chatglm_chat_type, 1, 1, 1, 1)
- self.label_langchain_chatglm_chat_type = QtWidgets.QLabel(self.groupBox_langchain_chatglm)
- self.label_langchain_chatglm_chat_type.setObjectName("label_langchain_chatglm_chat_type")
- self.gridLayout_langchain_chatglm.addWidget(self.label_langchain_chatglm_chat_type, 1, 0, 1, 1)
- self.label_langchain_chatglm_history_enable = QtWidgets.QLabel(self.groupBox_langchain_chatglm)
- self.label_langchain_chatglm_history_enable.setObjectName("label_langchain_chatglm_history_enable")
- self.gridLayout_langchain_chatglm.addWidget(self.label_langchain_chatglm_history_enable, 3, 0, 1, 1)
- self.lineEdit_langchain_chatglm_knowledge_base_id = QtWidgets.QLineEdit(self.groupBox_langchain_chatglm)
- self.lineEdit_langchain_chatglm_knowledge_base_id.setObjectName("lineEdit_langchain_chatglm_knowledge_base_id")
- self.gridLayout_langchain_chatglm.addWidget(self.lineEdit_langchain_chatglm_knowledge_base_id, 2, 1, 1, 1)
- self.checkBox_langchain_chatglm_history_enable = QtWidgets.QCheckBox(self.groupBox_langchain_chatglm)
- self.checkBox_langchain_chatglm_history_enable.setObjectName("checkBox_langchain_chatglm_history_enable")
- self.gridLayout_langchain_chatglm.addWidget(self.checkBox_langchain_chatglm_history_enable, 3, 1, 1, 1)
- self.lineEdit_langchain_chatglm_api_ip_port = QtWidgets.QLineEdit(self.groupBox_langchain_chatglm)
- self.lineEdit_langchain_chatglm_api_ip_port.setObjectName("lineEdit_langchain_chatglm_api_ip_port")
- self.gridLayout_langchain_chatglm.addWidget(self.lineEdit_langchain_chatglm_api_ip_port, 0, 1, 1, 1)
- self.label_langchain_chatglm_knowledge_base_id = QtWidgets.QLabel(self.groupBox_langchain_chatglm)
- self.label_langchain_chatglm_knowledge_base_id.setObjectName("label_langchain_chatglm_knowledge_base_id")
- self.gridLayout_langchain_chatglm.addWidget(self.label_langchain_chatglm_knowledge_base_id, 2, 0, 1, 1)
- self.label_langchain_chatglm_history_max_len = QtWidgets.QLabel(self.groupBox_langchain_chatglm)
- self.label_langchain_chatglm_history_max_len.setObjectName("label_langchain_chatglm_history_max_len")
- self.gridLayout_langchain_chatglm.addWidget(self.label_langchain_chatglm_history_max_len, 4, 0, 1, 1)
- self.lineEdit_langchain_chatglm_history_max_len = QtWidgets.QLineEdit(self.groupBox_langchain_chatglm)
- self.lineEdit_langchain_chatglm_history_max_len.setObjectName("lineEdit_langchain_chatglm_history_max_len")
- self.gridLayout_langchain_chatglm.addWidget(self.lineEdit_langchain_chatglm_history_max_len, 4, 1, 1, 1)
- self.gridLayout_64.addLayout(self.gridLayout_langchain_chatglm, 0, 0, 1, 1)
- spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_64.addItem(spacerItem12, 0, 1, 1, 1)
- self.gridLayout_64.setColumnStretch(0, 9)
- self.gridLayout_64.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_langchain_chatglm)
- self.groupBox_chat_with_file = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_chat_with_file.setObjectName("groupBox_chat_with_file")
- self.gridLayout_10 = QtWidgets.QGridLayout(self.groupBox_chat_with_file)
- self.gridLayout_10.setObjectName("gridLayout_10")
- self.gridLayout_11 = QtWidgets.QGridLayout()
- self.gridLayout_11.setSpacing(6)
- self.gridLayout_11.setObjectName("gridLayout_11")
- self.label_chat_with_file_local_vector_embedding_model = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_local_vector_embedding_model.setObjectName("label_chat_with_file_local_vector_embedding_model")
- self.gridLayout_11.addWidget(self.label_chat_with_file_local_vector_embedding_model, 6, 0, 1, 1)
- self.label_chat_with_file_data_path = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_data_path.setObjectName("label_chat_with_file_data_path")
- self.gridLayout_11.addWidget(self.label_chat_with_file_data_path, 1, 0, 1, 1)
- self.label_chat_with_file_show_token_cost = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_show_token_cost.setObjectName("label_chat_with_file_show_token_cost")
- self.gridLayout_11.addWidget(self.label_chat_with_file_show_token_cost, 10, 0, 1, 1)
- self.label_chat_with_file_chat_mode = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_chat_mode.setObjectName("label_chat_with_file_chat_mode")
- self.gridLayout_11.addWidget(self.label_chat_with_file_chat_mode, 0, 0, 1, 1)
- self.label_chat_with_file_local_max_query = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_local_max_query.setObjectName("label_chat_with_file_local_max_query")
- self.gridLayout_11.addWidget(self.label_chat_with_file_local_max_query, 9, 0, 1, 1)
- self.label_chat_with_file_question_prompt = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_question_prompt.setObjectName("label_chat_with_file_question_prompt")
- self.gridLayout_11.addWidget(self.label_chat_with_file_question_prompt, 8, 0, 1, 1)
- self.lineEdit_chat_with_file_separator = QtWidgets.QLineEdit(self.groupBox_chat_with_file)
- self.lineEdit_chat_with_file_separator.setObjectName("lineEdit_chat_with_file_separator")
- self.gridLayout_11.addWidget(self.lineEdit_chat_with_file_separator, 2, 1, 1, 1)
- self.label_chat_with_file_chunk_size = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_chunk_size.setObjectName("label_chat_with_file_chunk_size")
- self.gridLayout_11.addWidget(self.label_chat_with_file_chunk_size, 3, 0, 1, 1)
- self.lineEdit_chat_with_file_chunk_overlap = QtWidgets.QLineEdit(self.groupBox_chat_with_file)
- self.lineEdit_chat_with_file_chunk_overlap.setObjectName("lineEdit_chat_with_file_chunk_overlap")
- self.gridLayout_11.addWidget(self.lineEdit_chat_with_file_chunk_overlap, 5, 1, 1, 1)
- self.label_chat_with_file_chain_type = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_chain_type.setObjectName("label_chat_with_file_chain_type")
- self.gridLayout_11.addWidget(self.label_chat_with_file_chain_type, 7, 0, 1, 1)
- self.checkBox_chat_with_file_show_token_cost = QtWidgets.QCheckBox(self.groupBox_chat_with_file)
- self.checkBox_chat_with_file_show_token_cost.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.checkBox_chat_with_file_show_token_cost.setObjectName("checkBox_chat_with_file_show_token_cost")
- self.gridLayout_11.addWidget(self.checkBox_chat_with_file_show_token_cost, 10, 1, 1, 1)
- self.lineEdit_chat_with_file_data_path = QtWidgets.QLineEdit(self.groupBox_chat_with_file)
- self.lineEdit_chat_with_file_data_path.setObjectName("lineEdit_chat_with_file_data_path")
- self.gridLayout_11.addWidget(self.lineEdit_chat_with_file_data_path, 1, 1, 1, 1)
- self.comboBox_chat_with_file_chat_mode = QtWidgets.QComboBox(self.groupBox_chat_with_file)
- self.comboBox_chat_with_file_chat_mode.setObjectName("comboBox_chat_with_file_chat_mode")
- self.comboBox_chat_with_file_chat_mode.addItem("")
- self.comboBox_chat_with_file_chat_mode.addItem("")
- self.comboBox_chat_with_file_chat_mode.addItem("")
- self.gridLayout_11.addWidget(self.comboBox_chat_with_file_chat_mode, 0, 1, 1, 1)
- self.lineEdit_chat_with_file_question_prompt = QtWidgets.QLineEdit(self.groupBox_chat_with_file)
- self.lineEdit_chat_with_file_question_prompt.setObjectName("lineEdit_chat_with_file_question_prompt")
- self.gridLayout_11.addWidget(self.lineEdit_chat_with_file_question_prompt, 8, 1, 1, 1)
- self.label_chat_with_file_separator = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_separator.setObjectName("label_chat_with_file_separator")
- self.gridLayout_11.addWidget(self.label_chat_with_file_separator, 2, 0, 1, 1)
- self.lineEdit_chat_with_file_chain_type = QtWidgets.QLineEdit(self.groupBox_chat_with_file)
- self.lineEdit_chat_with_file_chain_type.setObjectName("lineEdit_chat_with_file_chain_type")
- self.gridLayout_11.addWidget(self.lineEdit_chat_with_file_chain_type, 7, 1, 1, 1)
- self.label_chat_with_file_chunk_overlap = QtWidgets.QLabel(self.groupBox_chat_with_file)
- self.label_chat_with_file_chunk_overlap.setObjectName("label_chat_with_file_chunk_overlap")
- self.gridLayout_11.addWidget(self.label_chat_with_file_chunk_overlap, 5, 0, 1, 1)
- self.comboBox_chat_with_file_local_vector_embedding_model = QtWidgets.QComboBox(self.groupBox_chat_with_file)
- self.comboBox_chat_with_file_local_vector_embedding_model.setObjectName("comboBox_chat_with_file_local_vector_embedding_model")
- self.comboBox_chat_with_file_local_vector_embedding_model.addItem("")
- self.comboBox_chat_with_file_local_vector_embedding_model.addItem("")
- self.gridLayout_11.addWidget(self.comboBox_chat_with_file_local_vector_embedding_model, 6, 1, 1, 1)
- self.lineEdit_chat_with_file_local_max_query = QtWidgets.QLineEdit(self.groupBox_chat_with_file)
- self.lineEdit_chat_with_file_local_max_query.setObjectName("lineEdit_chat_with_file_local_max_query")
- self.gridLayout_11.addWidget(self.lineEdit_chat_with_file_local_max_query, 9, 1, 1, 1)
- self.lineEdit_chat_with_file_chunk_size = QtWidgets.QLineEdit(self.groupBox_chat_with_file)
- self.lineEdit_chat_with_file_chunk_size.setObjectName("lineEdit_chat_with_file_chunk_size")
- self.gridLayout_11.addWidget(self.lineEdit_chat_with_file_chunk_size, 3, 1, 1, 1)
- self.gridLayout_11.setColumnStretch(0, 1)
- self.gridLayout_10.addLayout(self.gridLayout_11, 0, 0, 1, 1)
- spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_10.addItem(spacerItem13, 0, 1, 1, 1)
- self.gridLayout_10.setColumnStretch(0, 9)
- self.gridLayout_10.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_chat_with_file)
- self.groupBox_text_generation_webui = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_text_generation_webui.setObjectName("groupBox_text_generation_webui")
- self.gridLayout_28 = QtWidgets.QGridLayout(self.groupBox_text_generation_webui)
- self.gridLayout_28.setObjectName("gridLayout_28")
- self.gridLayout_27 = QtWidgets.QGridLayout()
- self.gridLayout_27.setObjectName("gridLayout_27")
- self.lineEdit_text_generation_webui_api_ip_port = QtWidgets.QLineEdit(self.groupBox_text_generation_webui)
- self.lineEdit_text_generation_webui_api_ip_port.setObjectName("lineEdit_text_generation_webui_api_ip_port")
- self.gridLayout_27.addWidget(self.lineEdit_text_generation_webui_api_ip_port, 1, 1, 1, 1)
- self.lineEdit_text_generation_webui_mode = QtWidgets.QLineEdit(self.groupBox_text_generation_webui)
- self.lineEdit_text_generation_webui_mode.setObjectName("lineEdit_text_generation_webui_mode")
- self.gridLayout_27.addWidget(self.lineEdit_text_generation_webui_mode, 3, 1, 1, 1)
- self.lineEdit_text_generation_webui_instruction_template = QtWidgets.QLineEdit(self.groupBox_text_generation_webui)
- self.lineEdit_text_generation_webui_instruction_template.setObjectName("lineEdit_text_generation_webui_instruction_template")
- self.gridLayout_27.addWidget(self.lineEdit_text_generation_webui_instruction_template, 5, 1, 1, 1)
- self.lineEdit_text_generation_webui_max_new_tokens = QtWidgets.QLineEdit(self.groupBox_text_generation_webui)
- self.lineEdit_text_generation_webui_max_new_tokens.setObjectName("lineEdit_text_generation_webui_max_new_tokens")
- self.gridLayout_27.addWidget(self.lineEdit_text_generation_webui_max_new_tokens, 2, 1, 1, 1)
- self.label_text_generation_webui_max_new_tokens = QtWidgets.QLabel(self.groupBox_text_generation_webui)
- self.label_text_generation_webui_max_new_tokens.setObjectName("label_text_generation_webui_max_new_tokens")
- self.gridLayout_27.addWidget(self.label_text_generation_webui_max_new_tokens, 2, 0, 1, 1)
- self.label_text_generation_webui_character = QtWidgets.QLabel(self.groupBox_text_generation_webui)
- self.label_text_generation_webui_character.setObjectName("label_text_generation_webui_character")
- self.gridLayout_27.addWidget(self.label_text_generation_webui_character, 4, 0, 1, 1)
- self.label_text_generation_webui_api_ip_port = QtWidgets.QLabel(self.groupBox_text_generation_webui)
- self.label_text_generation_webui_api_ip_port.setObjectName("label_text_generation_webui_api_ip_port")
- self.gridLayout_27.addWidget(self.label_text_generation_webui_api_ip_port, 1, 0, 1, 1)
- self.lineEdit_text_generation_webui_character = QtWidgets.QLineEdit(self.groupBox_text_generation_webui)
- self.lineEdit_text_generation_webui_character.setObjectName("lineEdit_text_generation_webui_character")
- self.gridLayout_27.addWidget(self.lineEdit_text_generation_webui_character, 4, 1, 1, 1)
- self.label_text_generation_webui_instruction_template = QtWidgets.QLabel(self.groupBox_text_generation_webui)
- self.label_text_generation_webui_instruction_template.setObjectName("label_text_generation_webui_instruction_template")
- self.gridLayout_27.addWidget(self.label_text_generation_webui_instruction_template, 5, 0, 1, 1)
- self.label_text_generation_webui_mode = QtWidgets.QLabel(self.groupBox_text_generation_webui)
- self.label_text_generation_webui_mode.setObjectName("label_text_generation_webui_mode")
- self.gridLayout_27.addWidget(self.label_text_generation_webui_mode, 3, 0, 1, 1)
- self.label_text_generation_webui_your_name = QtWidgets.QLabel(self.groupBox_text_generation_webui)
- self.label_text_generation_webui_your_name.setObjectName("label_text_generation_webui_your_name")
- self.gridLayout_27.addWidget(self.label_text_generation_webui_your_name, 6, 0, 1, 1)
- self.lineEdit_text_generation_webui_your_name = QtWidgets.QLineEdit(self.groupBox_text_generation_webui)
- self.lineEdit_text_generation_webui_your_name.setObjectName("lineEdit_text_generation_webui_your_name")
- self.gridLayout_27.addWidget(self.lineEdit_text_generation_webui_your_name, 6, 1, 1, 1)
- self.gridLayout_28.addLayout(self.gridLayout_27, 0, 0, 1, 1)
- spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_28.addItem(spacerItem14, 0, 1, 1, 1)
- self.gridLayout_28.setColumnStretch(0, 9)
- self.gridLayout_28.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_text_generation_webui)
- self.groupBox_sparkdesk = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_sparkdesk.setObjectName("groupBox_sparkdesk")
- self.gridLayout_55 = QtWidgets.QGridLayout(self.groupBox_sparkdesk)
- self.gridLayout_55.setObjectName("gridLayout_55")
- self.gridLayout_54 = QtWidgets.QGridLayout()
- self.gridLayout_54.setObjectName("gridLayout_54")
- self.label_sparkdesk_api_key = QtWidgets.QLabel(self.groupBox_sparkdesk)
- self.label_sparkdesk_api_key.setObjectName("label_sparkdesk_api_key")
- self.gridLayout_54.addWidget(self.label_sparkdesk_api_key, 6, 0, 1, 1)
- self.lineEdit_sparkdesk_app_id = QtWidgets.QLineEdit(self.groupBox_sparkdesk)
- self.lineEdit_sparkdesk_app_id.setObjectName("lineEdit_sparkdesk_app_id")
- self.gridLayout_54.addWidget(self.lineEdit_sparkdesk_app_id, 4, 1, 1, 1)
- self.label_sparkdesk_api_secret = QtWidgets.QLabel(self.groupBox_sparkdesk)
- self.label_sparkdesk_api_secret.setObjectName("label_sparkdesk_api_secret")
- self.gridLayout_54.addWidget(self.label_sparkdesk_api_secret, 5, 0, 1, 1)
- self.lineEdit_sparkdesk_GtToken = QtWidgets.QLineEdit(self.groupBox_sparkdesk)
- self.lineEdit_sparkdesk_GtToken.setObjectName("lineEdit_sparkdesk_GtToken")
- self.gridLayout_54.addWidget(self.lineEdit_sparkdesk_GtToken, 3, 1, 1, 1)
- self.lineEdit_sparkdesk_cookie = QtWidgets.QLineEdit(self.groupBox_sparkdesk)
- self.lineEdit_sparkdesk_cookie.setObjectName("lineEdit_sparkdesk_cookie")
- self.gridLayout_54.addWidget(self.lineEdit_sparkdesk_cookie, 1, 1, 1, 1)
- self.comboBox_sparkdesk_type = QtWidgets.QComboBox(self.groupBox_sparkdesk)
- self.comboBox_sparkdesk_type.setObjectName("comboBox_sparkdesk_type")
- self.gridLayout_54.addWidget(self.comboBox_sparkdesk_type, 0, 1, 1, 1)
- self.label_sparkdesk_cookie = QtWidgets.QLabel(self.groupBox_sparkdesk)
- self.label_sparkdesk_cookie.setObjectName("label_sparkdesk_cookie")
- self.gridLayout_54.addWidget(self.label_sparkdesk_cookie, 1, 0, 1, 1)
- self.label_sparkdesk_type = QtWidgets.QLabel(self.groupBox_sparkdesk)
- self.label_sparkdesk_type.setObjectName("label_sparkdesk_type")
- self.gridLayout_54.addWidget(self.label_sparkdesk_type, 0, 0, 1, 1)
- self.label_sparkdesk_app_id = QtWidgets.QLabel(self.groupBox_sparkdesk)
- self.label_sparkdesk_app_id.setObjectName("label_sparkdesk_app_id")
- self.gridLayout_54.addWidget(self.label_sparkdesk_app_id, 4, 0, 1, 1)
- self.lineEdit_sparkdesk_fd = QtWidgets.QLineEdit(self.groupBox_sparkdesk)
- self.lineEdit_sparkdesk_fd.setObjectName("lineEdit_sparkdesk_fd")
- self.gridLayout_54.addWidget(self.lineEdit_sparkdesk_fd, 2, 1, 1, 1)
- self.lineEdit_sparkdesk_api_secret = QtWidgets.QLineEdit(self.groupBox_sparkdesk)
- self.lineEdit_sparkdesk_api_secret.setObjectName("lineEdit_sparkdesk_api_secret")
- self.gridLayout_54.addWidget(self.lineEdit_sparkdesk_api_secret, 5, 1, 1, 1)
- self.label_sparkdesk_fd = QtWidgets.QLabel(self.groupBox_sparkdesk)
- self.label_sparkdesk_fd.setObjectName("label_sparkdesk_fd")
- self.gridLayout_54.addWidget(self.label_sparkdesk_fd, 2, 0, 1, 1)
- self.label_sparkdesk_GtToken = QtWidgets.QLabel(self.groupBox_sparkdesk)
- self.label_sparkdesk_GtToken.setObjectName("label_sparkdesk_GtToken")
- self.gridLayout_54.addWidget(self.label_sparkdesk_GtToken, 3, 0, 1, 1)
- self.lineEdit_sparkdesk_api_key = QtWidgets.QLineEdit(self.groupBox_sparkdesk)
- self.lineEdit_sparkdesk_api_key.setObjectName("lineEdit_sparkdesk_api_key")
- self.gridLayout_54.addWidget(self.lineEdit_sparkdesk_api_key, 6, 1, 1, 1)
- self.label_sparkdesk_version = QtWidgets.QLabel(self.groupBox_sparkdesk)
- self.label_sparkdesk_version.setObjectName("label_sparkdesk_version")
- self.gridLayout_54.addWidget(self.label_sparkdesk_version, 7, 0, 1, 1)
- self.comboBox_sparkdesk_version = QtWidgets.QComboBox(self.groupBox_sparkdesk)
- self.comboBox_sparkdesk_version.setObjectName("comboBox_sparkdesk_version")
- self.gridLayout_54.addWidget(self.comboBox_sparkdesk_version, 7, 1, 1, 1)
- self.gridLayout_55.addLayout(self.gridLayout_54, 0, 0, 1, 1)
- spacerItem15 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_55.addItem(spacerItem15, 0, 1, 1, 1)
- self.gridLayout_55.setColumnStretch(0, 9)
- self.gridLayout_55.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_sparkdesk)
- self.groupBox_bard = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_bard.setObjectName("groupBox_bard")
- self.gridLayout_74 = QtWidgets.QGridLayout(self.groupBox_bard)
- self.gridLayout_74.setObjectName("gridLayout_74")
- self.gridLayout_bard = QtWidgets.QGridLayout()
- self.gridLayout_bard.setObjectName("gridLayout_bard")
- self.gridLayout_74.addLayout(self.gridLayout_bard, 0, 0, 1, 1)
- spacerItem16 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_74.addItem(spacerItem16, 0, 1, 1, 1)
- self.gridLayout_74.setColumnStretch(0, 9)
- self.gridLayout_74.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_bard)
- self.groupBox_yiyan = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_yiyan.setObjectName("groupBox_yiyan")
- self.gridLayout_76 = QtWidgets.QGridLayout(self.groupBox_yiyan)
- self.gridLayout_76.setObjectName("gridLayout_76")
- self.gridLayout_yiyan = QtWidgets.QGridLayout()
- self.gridLayout_yiyan.setObjectName("gridLayout_yiyan")
- self.gridLayout_76.addLayout(self.gridLayout_yiyan, 0, 0, 1, 1)
- spacerItem17 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_76.addItem(spacerItem17, 0, 1, 1, 1)
- self.gridLayout_76.setColumnStretch(0, 9)
- self.gridLayout_76.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_yiyan)
- self.groupBox_tongyi = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_tongyi.setObjectName("groupBox_tongyi")
- self.gridLayout_88 = QtWidgets.QGridLayout(self.groupBox_tongyi)
- self.gridLayout_88.setObjectName("gridLayout_88")
- self.gridLayout_tongyi = QtWidgets.QGridLayout()
- self.gridLayout_tongyi.setObjectName("gridLayout_tongyi")
- self.gridLayout_88.addLayout(self.gridLayout_tongyi, 0, 0, 1, 1)
- spacerItem18 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_88.addItem(spacerItem18, 0, 1, 1, 1)
- self.gridLayout_88.setColumnStretch(0, 9)
- self.gridLayout_88.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_tongyi)
- self.groupBox_chatterbot = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_chatterbot.setObjectName("groupBox_chatterbot")
- self.gridLayout_12 = QtWidgets.QGridLayout(self.groupBox_chatterbot)
- self.gridLayout_12.setObjectName("gridLayout_12")
- self.gridLayout_13 = QtWidgets.QGridLayout()
- self.gridLayout_13.setObjectName("gridLayout_13")
- self.lineEdit_chatterbot_db_path = QtWidgets.QLineEdit(self.groupBox_chatterbot)
- self.lineEdit_chatterbot_db_path.setObjectName("lineEdit_chatterbot_db_path")
- self.gridLayout_13.addWidget(self.lineEdit_chatterbot_db_path, 1, 1, 1, 1)
- self.label_chatterbot_name = QtWidgets.QLabel(self.groupBox_chatterbot)
- self.label_chatterbot_name.setObjectName("label_chatterbot_name")
- self.gridLayout_13.addWidget(self.label_chatterbot_name, 0, 0, 1, 1)
- self.label_chatterbot_db_path = QtWidgets.QLabel(self.groupBox_chatterbot)
- self.label_chatterbot_db_path.setObjectName("label_chatterbot_db_path")
- self.gridLayout_13.addWidget(self.label_chatterbot_db_path, 1, 0, 1, 1)
- self.lineEdit_chatterbot_name = QtWidgets.QLineEdit(self.groupBox_chatterbot)
- self.lineEdit_chatterbot_name.setObjectName("lineEdit_chatterbot_name")
- self.gridLayout_13.addWidget(self.lineEdit_chatterbot_name, 0, 1, 1, 1)
- self.gridLayout_12.addLayout(self.gridLayout_13, 0, 0, 1, 1)
- spacerItem19 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_12.addItem(spacerItem19, 0, 1, 1, 1)
- self.gridLayout_12.setColumnStretch(0, 9)
- self.verticalLayout.addWidget(self.groupBox_chatterbot)
- self.groupBox_edge_tts = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_edge_tts.setObjectName("groupBox_edge_tts")
- self.gridLayout_14 = QtWidgets.QGridLayout(self.groupBox_edge_tts)
- self.gridLayout_14.setObjectName("gridLayout_14")
- self.gridLayout_15 = QtWidgets.QGridLayout()
- self.gridLayout_15.setObjectName("gridLayout_15")
- self.lineEdit_edge_tts_rate = QtWidgets.QLineEdit(self.groupBox_edge_tts)
- self.lineEdit_edge_tts_rate.setObjectName("lineEdit_edge_tts_rate")
- self.gridLayout_15.addWidget(self.lineEdit_edge_tts_rate, 1, 1, 1, 1)
- self.label_edge_tts_rate = QtWidgets.QLabel(self.groupBox_edge_tts)
- self.label_edge_tts_rate.setObjectName("label_edge_tts_rate")
- self.gridLayout_15.addWidget(self.label_edge_tts_rate, 1, 0, 1, 1)
- self.label_edge_tts_voice = QtWidgets.QLabel(self.groupBox_edge_tts)
- self.label_edge_tts_voice.setObjectName("label_edge_tts_voice")
- self.gridLayout_15.addWidget(self.label_edge_tts_voice, 0, 0, 1, 1)
- self.label_edge_tts_volume = QtWidgets.QLabel(self.groupBox_edge_tts)
- self.label_edge_tts_volume.setObjectName("label_edge_tts_volume")
- self.gridLayout_15.addWidget(self.label_edge_tts_volume, 2, 0, 1, 1)
- self.lineEdit_edge_tts_volume = QtWidgets.QLineEdit(self.groupBox_edge_tts)
- self.lineEdit_edge_tts_volume.setObjectName("lineEdit_edge_tts_volume")
- self.gridLayout_15.addWidget(self.lineEdit_edge_tts_volume, 2, 1, 1, 1)
- self.comboBox_edge_tts_voice = QtWidgets.QComboBox(self.groupBox_edge_tts)
- self.comboBox_edge_tts_voice.setMaximumSize(QtCore.QSize(16777215, 100))
- self.comboBox_edge_tts_voice.setObjectName("comboBox_edge_tts_voice")
- self.gridLayout_15.addWidget(self.comboBox_edge_tts_voice, 0, 1, 1, 1)
- self.gridLayout_14.addLayout(self.gridLayout_15, 0, 1, 1, 1)
- spacerItem20 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_14.addItem(spacerItem20, 0, 2, 1, 1)
- self.gridLayout_14.setColumnStretch(1, 9)
- self.gridLayout_14.setColumnStretch(2, 1)
- self.verticalLayout.addWidget(self.groupBox_edge_tts)
- self.groupBox_vits = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_vits.setObjectName("groupBox_vits")
- self.gridLayout_63 = QtWidgets.QGridLayout(self.groupBox_vits)
- self.gridLayout_63.setObjectName("gridLayout_63")
- self.gridLayout_vits = QtWidgets.QGridLayout()
- self.gridLayout_vits.setObjectName("gridLayout_vits")
- self.gridLayout_63.addLayout(self.gridLayout_vits, 0, 0, 1, 1)
- spacerItem21 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_63.addItem(spacerItem21, 0, 1, 1, 1)
- self.gridLayout_63.setColumnStretch(0, 9)
- self.gridLayout_63.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_vits)
- self.groupBox_vits_fast = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_vits_fast.setObjectName("groupBox_vits_fast")
- self.gridLayout_23 = QtWidgets.QGridLayout(self.groupBox_vits_fast)
- self.gridLayout_23.setObjectName("gridLayout_23")
- self.gridLayout_24 = QtWidgets.QGridLayout()
- self.gridLayout_24.setObjectName("gridLayout_24")
- self.label_vits_fast_config_path = QtWidgets.QLabel(self.groupBox_vits_fast)
- self.label_vits_fast_config_path.setObjectName("label_vits_fast_config_path")
- self.gridLayout_24.addWidget(self.label_vits_fast_config_path, 0, 0, 1, 1)
- self.label_vits_fast_speed = QtWidgets.QLabel(self.groupBox_vits_fast)
- self.label_vits_fast_speed.setObjectName("label_vits_fast_speed")
- self.gridLayout_24.addWidget(self.label_vits_fast_speed, 4, 0, 1, 1)
- self.lineEdit_vits_fast_api_ip_port = QtWidgets.QLineEdit(self.groupBox_vits_fast)
- self.lineEdit_vits_fast_api_ip_port.setObjectName("lineEdit_vits_fast_api_ip_port")
- self.gridLayout_24.addWidget(self.lineEdit_vits_fast_api_ip_port, 1, 2, 1, 1)
- self.label_vits_fast_character = QtWidgets.QLabel(self.groupBox_vits_fast)
- self.label_vits_fast_character.setObjectName("label_vits_fast_character")
- self.gridLayout_24.addWidget(self.label_vits_fast_character, 2, 0, 1, 1)
- self.lineEdit_vits_fast_config_path = QtWidgets.QLineEdit(self.groupBox_vits_fast)
- self.lineEdit_vits_fast_config_path.setObjectName("lineEdit_vits_fast_config_path")
- self.gridLayout_24.addWidget(self.lineEdit_vits_fast_config_path, 0, 2, 1, 1)
- self.lineEdit_vits_fast_speed = QtWidgets.QLineEdit(self.groupBox_vits_fast)
- self.lineEdit_vits_fast_speed.setObjectName("lineEdit_vits_fast_speed")
- self.gridLayout_24.addWidget(self.lineEdit_vits_fast_speed, 4, 2, 1, 1)
- self.label_vits_fast_api_ip_port = QtWidgets.QLabel(self.groupBox_vits_fast)
- self.label_vits_fast_api_ip_port.setObjectName("label_vits_fast_api_ip_port")
- self.gridLayout_24.addWidget(self.label_vits_fast_api_ip_port, 1, 0, 1, 1)
- self.label_vits_fast_language = QtWidgets.QLabel(self.groupBox_vits_fast)
- self.label_vits_fast_language.setObjectName("label_vits_fast_language")
- self.gridLayout_24.addWidget(self.label_vits_fast_language, 3, 0, 1, 1)
- self.lineEdit_vits_fast_character = QtWidgets.QLineEdit(self.groupBox_vits_fast)
- self.lineEdit_vits_fast_character.setObjectName("lineEdit_vits_fast_character")
- self.gridLayout_24.addWidget(self.lineEdit_vits_fast_character, 2, 2, 1, 1)
- self.comboBox_vits_fast_language = QtWidgets.QComboBox(self.groupBox_vits_fast)
- self.comboBox_vits_fast_language.setObjectName("comboBox_vits_fast_language")
- self.comboBox_vits_fast_language.addItem("")
- self.comboBox_vits_fast_language.addItem("")
- self.comboBox_vits_fast_language.addItem("")
- self.comboBox_vits_fast_language.addItem("")
- self.comboBox_vits_fast_language.addItem("")
- self.gridLayout_24.addWidget(self.comboBox_vits_fast_language, 3, 2, 1, 1)
- self.gridLayout_23.addLayout(self.gridLayout_24, 0, 1, 1, 1)
- spacerItem22 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_23.addItem(spacerItem22, 0, 2, 1, 1)
- self.gridLayout_23.setColumnStretch(1, 9)
- self.gridLayout_23.setColumnStretch(2, 1)
- self.verticalLayout.addWidget(self.groupBox_vits_fast)
- self.groupBox_genshinvoice_top = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_genshinvoice_top.setObjectName("groupBox_genshinvoice_top")
- self.gridLayout_44 = QtWidgets.QGridLayout(self.groupBox_genshinvoice_top)
- self.gridLayout_44.setObjectName("gridLayout_44")
- self.gridLayout_43 = QtWidgets.QGridLayout()
- self.gridLayout_43.setObjectName("gridLayout_43")
- self.label_genshinvoice_top_speaker = QtWidgets.QLabel(self.groupBox_genshinvoice_top)
- self.label_genshinvoice_top_speaker.setObjectName("label_genshinvoice_top_speaker")
- self.gridLayout_43.addWidget(self.label_genshinvoice_top_speaker, 0, 0, 1, 1)
- self.label_genshinvoice_top_noisew = QtWidgets.QLabel(self.groupBox_genshinvoice_top)
- self.label_genshinvoice_top_noisew.setObjectName("label_genshinvoice_top_noisew")
- self.gridLayout_43.addWidget(self.label_genshinvoice_top_noisew, 2, 0, 1, 1)
- self.label_genshinvoice_top_format = QtWidgets.QLabel(self.groupBox_genshinvoice_top)
- self.label_genshinvoice_top_format.setObjectName("label_genshinvoice_top_format")
- self.gridLayout_43.addWidget(self.label_genshinvoice_top_format, 4, 0, 1, 1)
- self.lineEdit_genshinvoice_top_noisew = QtWidgets.QLineEdit(self.groupBox_genshinvoice_top)
- self.lineEdit_genshinvoice_top_noisew.setObjectName("lineEdit_genshinvoice_top_noisew")
- self.gridLayout_43.addWidget(self.lineEdit_genshinvoice_top_noisew, 2, 1, 1, 1)
- self.label_genshinvoice_top_length = QtWidgets.QLabel(self.groupBox_genshinvoice_top)
- self.label_genshinvoice_top_length.setObjectName("label_genshinvoice_top_length")
- self.gridLayout_43.addWidget(self.label_genshinvoice_top_length, 3, 0, 1, 1)
- self.lineEdit_genshinvoice_top_length = QtWidgets.QLineEdit(self.groupBox_genshinvoice_top)
- self.lineEdit_genshinvoice_top_length.setObjectName("lineEdit_genshinvoice_top_length")
- self.gridLayout_43.addWidget(self.lineEdit_genshinvoice_top_length, 3, 1, 1, 1)
- self.comboBox_genshinvoice_top_speaker = QtWidgets.QComboBox(self.groupBox_genshinvoice_top)
- self.comboBox_genshinvoice_top_speaker.setObjectName("comboBox_genshinvoice_top_speaker")
- self.gridLayout_43.addWidget(self.comboBox_genshinvoice_top_speaker, 0, 1, 1, 1)
- self.lineEdit_genshinvoice_top_format = QtWidgets.QLineEdit(self.groupBox_genshinvoice_top)
- self.lineEdit_genshinvoice_top_format.setObjectName("lineEdit_genshinvoice_top_format")
- self.gridLayout_43.addWidget(self.lineEdit_genshinvoice_top_format, 4, 1, 1, 1)
- self.lineEdit_genshinvoice_top_noise = QtWidgets.QLineEdit(self.groupBox_genshinvoice_top)
- self.lineEdit_genshinvoice_top_noise.setObjectName("lineEdit_genshinvoice_top_noise")
- self.gridLayout_43.addWidget(self.lineEdit_genshinvoice_top_noise, 1, 1, 1, 1)
- self.label_genshinvoice_top_noise = QtWidgets.QLabel(self.groupBox_genshinvoice_top)
- self.label_genshinvoice_top_noise.setObjectName("label_genshinvoice_top_noise")
- self.gridLayout_43.addWidget(self.label_genshinvoice_top_noise, 1, 0, 1, 1)
- self.label_genshinvoice_top_language = QtWidgets.QLabel(self.groupBox_genshinvoice_top)
- self.label_genshinvoice_top_language.setObjectName("label_genshinvoice_top_language")
- self.gridLayout_43.addWidget(self.label_genshinvoice_top_language, 5, 0, 1, 1)
- self.comboBox_genshinvoice_top_language = QtWidgets.QComboBox(self.groupBox_genshinvoice_top)
- self.comboBox_genshinvoice_top_language.setObjectName("comboBox_genshinvoice_top_language")
- self.gridLayout_43.addWidget(self.comboBox_genshinvoice_top_language, 5, 1, 1, 1)
- self.gridLayout_44.addLayout(self.gridLayout_43, 0, 0, 1, 1)
- spacerItem23 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_44.addItem(spacerItem23, 0, 1, 1, 1)
- self.gridLayout_44.setColumnStretch(0, 9)
- self.gridLayout_44.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_genshinvoice_top)
- self.groupBox_elevenlabs = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_elevenlabs.setObjectName("groupBox_elevenlabs")
- self.gridLayout_16 = QtWidgets.QGridLayout(self.groupBox_elevenlabs)
- self.gridLayout_16.setObjectName("gridLayout_16")
- self.gridLayout_17 = QtWidgets.QGridLayout()
- self.gridLayout_17.setObjectName("gridLayout_17")
- self.lineEdit_elevenlabs_api_key = QtWidgets.QLineEdit(self.groupBox_elevenlabs)
- self.lineEdit_elevenlabs_api_key.setObjectName("lineEdit_elevenlabs_api_key")
- self.gridLayout_17.addWidget(self.lineEdit_elevenlabs_api_key, 0, 1, 1, 1)
- self.label_elevenlabs_voice = QtWidgets.QLabel(self.groupBox_elevenlabs)
- self.label_elevenlabs_voice.setObjectName("label_elevenlabs_voice")
- self.gridLayout_17.addWidget(self.label_elevenlabs_voice, 1, 0, 1, 1)
- self.lineEdit_elevenlabs_voice = QtWidgets.QLineEdit(self.groupBox_elevenlabs)
- self.lineEdit_elevenlabs_voice.setObjectName("lineEdit_elevenlabs_voice")
- self.gridLayout_17.addWidget(self.lineEdit_elevenlabs_voice, 1, 1, 1, 1)
- self.label_elevenlabs_api_key = QtWidgets.QLabel(self.groupBox_elevenlabs)
- self.label_elevenlabs_api_key.setObjectName("label_elevenlabs_api_key")
- self.gridLayout_17.addWidget(self.label_elevenlabs_api_key, 0, 0, 1, 1)
- self.label_elevenlabs_model = QtWidgets.QLabel(self.groupBox_elevenlabs)
- self.label_elevenlabs_model.setObjectName("label_elevenlabs_model")
- self.gridLayout_17.addWidget(self.label_elevenlabs_model, 2, 0, 1, 1)
- self.lineEdit_elevenlabs_model = QtWidgets.QLineEdit(self.groupBox_elevenlabs)
- self.lineEdit_elevenlabs_model.setObjectName("lineEdit_elevenlabs_model")
- self.gridLayout_17.addWidget(self.lineEdit_elevenlabs_model, 2, 1, 1, 1)
- self.gridLayout_16.addLayout(self.gridLayout_17, 0, 0, 1, 1)
- spacerItem24 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_16.addItem(spacerItem24, 0, 1, 1, 1)
- self.gridLayout_16.setColumnStretch(0, 9)
- self.gridLayout_16.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_elevenlabs)
- self.groupBox_bark_gui = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_bark_gui.setObjectName("groupBox_bark_gui")
- self.gridLayout_57 = QtWidgets.QGridLayout(self.groupBox_bark_gui)
- self.gridLayout_57.setObjectName("gridLayout_57")
- self.gridLayout_56 = QtWidgets.QGridLayout()
- self.gridLayout_56.setObjectName("gridLayout_56")
- self.label_bark_gui_api_ip_port = QtWidgets.QLabel(self.groupBox_bark_gui)
- self.label_bark_gui_api_ip_port.setObjectName("label_bark_gui_api_ip_port")
- self.gridLayout_56.addWidget(self.label_bark_gui_api_ip_port, 0, 0, 1, 1)
- self.label_bark_gui_quick_generation = QtWidgets.QLabel(self.groupBox_bark_gui)
- self.label_bark_gui_quick_generation.setObjectName("label_bark_gui_quick_generation")
- self.gridLayout_56.addWidget(self.label_bark_gui_quick_generation, 5, 0, 1, 1)
- self.label_bark_gui_batch_count = QtWidgets.QLabel(self.groupBox_bark_gui)
- self.label_bark_gui_batch_count.setObjectName("label_bark_gui_batch_count")
- self.gridLayout_56.addWidget(self.label_bark_gui_batch_count, 7, 0, 1, 1)
- self.label_bark_gui_end_of_sentence_probability = QtWidgets.QLabel(self.groupBox_bark_gui)
- self.label_bark_gui_end_of_sentence_probability.setObjectName("label_bark_gui_end_of_sentence_probability")
- self.gridLayout_56.addWidget(self.label_bark_gui_end_of_sentence_probability, 4, 0, 1, 1)
- self.label_bark_gui_seed = QtWidgets.QLabel(self.groupBox_bark_gui)
- self.label_bark_gui_seed.setObjectName("label_bark_gui_seed")
- self.gridLayout_56.addWidget(self.label_bark_gui_seed, 6, 0, 1, 1)
- self.label_bark_gui_generation_temperature = QtWidgets.QLabel(self.groupBox_bark_gui)
- self.label_bark_gui_generation_temperature.setObjectName("label_bark_gui_generation_temperature")
- self.gridLayout_56.addWidget(self.label_bark_gui_generation_temperature, 2, 0, 1, 1)
- self.label_bark_gui_waveform_temperature = QtWidgets.QLabel(self.groupBox_bark_gui)
- self.label_bark_gui_waveform_temperature.setObjectName("label_bark_gui_waveform_temperature")
- self.gridLayout_56.addWidget(self.label_bark_gui_waveform_temperature, 3, 0, 1, 1)
- self.label_bark_gui_spk = QtWidgets.QLabel(self.groupBox_bark_gui)
- self.label_bark_gui_spk.setObjectName("label_bark_gui_spk")
- self.gridLayout_56.addWidget(self.label_bark_gui_spk, 1, 0, 1, 1)
- self.lineEdit_bark_gui_api_ip_port = QtWidgets.QLineEdit(self.groupBox_bark_gui)
- self.lineEdit_bark_gui_api_ip_port.setObjectName("lineEdit_bark_gui_api_ip_port")
- self.gridLayout_56.addWidget(self.lineEdit_bark_gui_api_ip_port, 0, 1, 1, 1)
- self.lineEdit_bark_gui_spk = QtWidgets.QLineEdit(self.groupBox_bark_gui)
- self.lineEdit_bark_gui_spk.setObjectName("lineEdit_bark_gui_spk")
- self.gridLayout_56.addWidget(self.lineEdit_bark_gui_spk, 1, 1, 1, 1)
- self.lineEdit_bark_gui_generation_temperature = QtWidgets.QLineEdit(self.groupBox_bark_gui)
- self.lineEdit_bark_gui_generation_temperature.setObjectName("lineEdit_bark_gui_generation_temperature")
- self.gridLayout_56.addWidget(self.lineEdit_bark_gui_generation_temperature, 2, 1, 1, 1)
- self.lineEdit_bark_gui_waveform_temperature = QtWidgets.QLineEdit(self.groupBox_bark_gui)
- self.lineEdit_bark_gui_waveform_temperature.setObjectName("lineEdit_bark_gui_waveform_temperature")
- self.gridLayout_56.addWidget(self.lineEdit_bark_gui_waveform_temperature, 3, 1, 1, 1)
- self.lineEdit_bark_gui_end_of_sentence_probability = QtWidgets.QLineEdit(self.groupBox_bark_gui)
- self.lineEdit_bark_gui_end_of_sentence_probability.setObjectName("lineEdit_bark_gui_end_of_sentence_probability")
- self.gridLayout_56.addWidget(self.lineEdit_bark_gui_end_of_sentence_probability, 4, 1, 1, 1)
- self.lineEdit_bark_gui_batch_count = QtWidgets.QLineEdit(self.groupBox_bark_gui)
- self.lineEdit_bark_gui_batch_count.setObjectName("lineEdit_bark_gui_batch_count")
- self.gridLayout_56.addWidget(self.lineEdit_bark_gui_batch_count, 7, 1, 1, 1)
- self.lineEdit_bark_gui_seed = QtWidgets.QLineEdit(self.groupBox_bark_gui)
- self.lineEdit_bark_gui_seed.setObjectName("lineEdit_bark_gui_seed")
- self.gridLayout_56.addWidget(self.lineEdit_bark_gui_seed, 6, 1, 1, 1)
- self.checkBox_bark_gui_quick_generation = QtWidgets.QCheckBox(self.groupBox_bark_gui)
- self.checkBox_bark_gui_quick_generation.setObjectName("checkBox_bark_gui_quick_generation")
- self.gridLayout_56.addWidget(self.checkBox_bark_gui_quick_generation, 5, 1, 1, 1)
- self.gridLayout_57.addLayout(self.gridLayout_56, 0, 0, 1, 1)
- spacerItem25 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_57.addItem(spacerItem25, 0, 1, 1, 1)
- self.gridLayout_57.setColumnStretch(0, 9)
- self.gridLayout_57.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_bark_gui)
- self.groupBox_vall_e_x = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_vall_e_x.setObjectName("groupBox_vall_e_x")
- self.gridLayout_70 = QtWidgets.QGridLayout(self.groupBox_vall_e_x)
- self.gridLayout_70.setObjectName("gridLayout_70")
- self.gridLayout_vall_e_x = QtWidgets.QGridLayout()
- self.gridLayout_vall_e_x.setObjectName("gridLayout_vall_e_x")
- self.gridLayout_70.addLayout(self.gridLayout_vall_e_x, 0, 0, 1, 1)
- spacerItem26 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_70.addItem(spacerItem26, 0, 1, 1, 1)
- self.gridLayout_70.setColumnStretch(0, 9)
- self.gridLayout_70.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_vall_e_x)
- self.groupBox_openai_tts = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_openai_tts.setObjectName("groupBox_openai_tts")
- self.gridLayout_95 = QtWidgets.QGridLayout(self.groupBox_openai_tts)
- self.gridLayout_95.setObjectName("gridLayout_95")
- self.gridLayout_openai_tts = QtWidgets.QGridLayout()
- self.gridLayout_openai_tts.setObjectName("gridLayout_openai_tts")
- self.gridLayout_95.addLayout(self.gridLayout_openai_tts, 0, 0, 1, 1)
- spacerItem27 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_95.addItem(spacerItem27, 0, 1, 1, 1)
- self.gridLayout_95.setColumnStretch(0, 9)
- self.gridLayout_95.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_openai_tts)
- self.groupBox_live2d = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_live2d.setObjectName("groupBox_live2d")
- self.gridLayout_30 = QtWidgets.QGridLayout(self.groupBox_live2d)
- self.gridLayout_30.setObjectName("gridLayout_30")
- self.gridLayout_29 = QtWidgets.QGridLayout()
- self.gridLayout_29.setObjectName("gridLayout_29")
- self.checkBox_live2d_enable = QtWidgets.QCheckBox(self.groupBox_live2d)
- self.checkBox_live2d_enable.setObjectName("checkBox_live2d_enable")
- self.gridLayout_29.addWidget(self.checkBox_live2d_enable, 0, 1, 1, 1)
- self.lineEdit_live2d_port = QtWidgets.QLineEdit(self.groupBox_live2d)
- self.lineEdit_live2d_port.setObjectName("lineEdit_live2d_port")
- self.gridLayout_29.addWidget(self.lineEdit_live2d_port, 1, 1, 1, 1)
- self.label_live2d_port = QtWidgets.QLabel(self.groupBox_live2d)
- self.label_live2d_port.setObjectName("label_live2d_port")
- self.gridLayout_29.addWidget(self.label_live2d_port, 1, 0, 1, 1)
- self.label_live2d_enable = QtWidgets.QLabel(self.groupBox_live2d)
- self.label_live2d_enable.setObjectName("label_live2d_enable")
- self.gridLayout_29.addWidget(self.label_live2d_enable, 0, 0, 1, 1)
- self.label_live2d_name = QtWidgets.QLabel(self.groupBox_live2d)
- self.label_live2d_name.setObjectName("label_live2d_name")
- self.gridLayout_29.addWidget(self.label_live2d_name, 2, 0, 1, 1)
- self.comboBox_live2d_name = QtWidgets.QComboBox(self.groupBox_live2d)
- self.comboBox_live2d_name.setObjectName("comboBox_live2d_name")
- self.gridLayout_29.addWidget(self.comboBox_live2d_name, 2, 1, 1, 1)
- self.gridLayout_29.setColumnStretch(0, 1)
- self.gridLayout_29.setColumnStretch(1, 8)
- self.gridLayout_30.addLayout(self.gridLayout_29, 0, 0, 1, 1)
- spacerItem28 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_30.addItem(spacerItem28, 0, 1, 1, 1)
- self.gridLayout_30.setColumnStretch(0, 9)
- self.gridLayout_30.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_live2d)
- self.groupBox_choose_song = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_choose_song.setObjectName("groupBox_choose_song")
- self.gridLayout_34 = QtWidgets.QGridLayout(self.groupBox_choose_song)
- self.gridLayout_34.setObjectName("gridLayout_34")
- self.gridLayout_33 = QtWidgets.QGridLayout()
- self.gridLayout_33.setObjectName("gridLayout_33")
- self.label_choose_song_stop_cmd = QtWidgets.QLabel(self.groupBox_choose_song)
- self.label_choose_song_stop_cmd.setObjectName("label_choose_song_stop_cmd")
- self.gridLayout_33.addWidget(self.label_choose_song_stop_cmd, 2, 0, 1, 1)
- self.lineEdit_choose_song_start_cmd = QtWidgets.QLineEdit(self.groupBox_choose_song)
- self.lineEdit_choose_song_start_cmd.setObjectName("lineEdit_choose_song_start_cmd")
- self.gridLayout_33.addWidget(self.lineEdit_choose_song_start_cmd, 1, 1, 1, 1)
- self.label_choose_song_song_path = QtWidgets.QLabel(self.groupBox_choose_song)
- self.label_choose_song_song_path.setObjectName("label_choose_song_song_path")
- self.gridLayout_33.addWidget(self.label_choose_song_song_path, 4, 0, 1, 1)
- self.checkBox_choose_song_enable = QtWidgets.QCheckBox(self.groupBox_choose_song)
- self.checkBox_choose_song_enable.setObjectName("checkBox_choose_song_enable")
- self.gridLayout_33.addWidget(self.checkBox_choose_song_enable, 0, 1, 1, 1)
- self.lineEdit_choose_song_song_path = QtWidgets.QLineEdit(self.groupBox_choose_song)
- self.lineEdit_choose_song_song_path.setObjectName("lineEdit_choose_song_song_path")
- self.gridLayout_33.addWidget(self.lineEdit_choose_song_song_path, 4, 1, 1, 1)
- self.label_choose_song_start_cmd = QtWidgets.QLabel(self.groupBox_choose_song)
- self.label_choose_song_start_cmd.setObjectName("label_choose_song_start_cmd")
- self.gridLayout_33.addWidget(self.label_choose_song_start_cmd, 1, 0, 1, 1)
- self.label_choose_song_enable = QtWidgets.QLabel(self.groupBox_choose_song)
- self.label_choose_song_enable.setObjectName("label_choose_song_enable")
- self.gridLayout_33.addWidget(self.label_choose_song_enable, 0, 0, 1, 1)
- self.label_choose_song_match_fail_copy = QtWidgets.QLabel(self.groupBox_choose_song)
- self.label_choose_song_match_fail_copy.setObjectName("label_choose_song_match_fail_copy")
- self.gridLayout_33.addWidget(self.label_choose_song_match_fail_copy, 5, 0, 1, 1)
- self.lineEdit_choose_song_stop_cmd = QtWidgets.QLineEdit(self.groupBox_choose_song)
- self.lineEdit_choose_song_stop_cmd.setObjectName("lineEdit_choose_song_stop_cmd")
- self.gridLayout_33.addWidget(self.lineEdit_choose_song_stop_cmd, 2, 1, 1, 1)
- self.lineEdit_choose_song_match_fail_copy = QtWidgets.QLineEdit(self.groupBox_choose_song)
- self.lineEdit_choose_song_match_fail_copy.setObjectName("lineEdit_choose_song_match_fail_copy")
- self.gridLayout_33.addWidget(self.lineEdit_choose_song_match_fail_copy, 5, 1, 1, 1)
- self.lineEdit_choose_song_random_cmd = QtWidgets.QLineEdit(self.groupBox_choose_song)
- self.lineEdit_choose_song_random_cmd.setObjectName("lineEdit_choose_song_random_cmd")
- self.gridLayout_33.addWidget(self.lineEdit_choose_song_random_cmd, 3, 1, 1, 1)
- self.label_choose_song_random_cmd = QtWidgets.QLabel(self.groupBox_choose_song)
- self.label_choose_song_random_cmd.setObjectName("label_choose_song_random_cmd")
- self.gridLayout_33.addWidget(self.label_choose_song_random_cmd, 3, 0, 1, 1)
- self.gridLayout_34.addLayout(self.gridLayout_33, 0, 0, 1, 1)
- spacerItem29 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_34.addItem(spacerItem29, 0, 1, 1, 1)
- self.gridLayout_34.setColumnStretch(0, 9)
- self.gridLayout_34.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_choose_song)
- self.groupBox_schedule = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_schedule.setObjectName("groupBox_schedule")
- self.gridLayout_61 = QtWidgets.QGridLayout(self.groupBox_schedule)
- self.gridLayout_61.setObjectName("gridLayout_61")
- self.gridLayout_schedule = QtWidgets.QGridLayout()
- self.gridLayout_schedule.setObjectName("gridLayout_schedule")
- self.gridLayout_61.addLayout(self.gridLayout_schedule, 0, 0, 1, 1)
- spacerItem30 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_61.addItem(spacerItem30, 0, 1, 1, 1)
- self.gridLayout_61.setColumnStretch(0, 9)
- self.gridLayout_61.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_schedule)
- self.groupBox_idle_time_task = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_idle_time_task.setObjectName("groupBox_idle_time_task")
- self.gridLayout_87 = QtWidgets.QGridLayout(self.groupBox_idle_time_task)
- self.gridLayout_87.setObjectName("gridLayout_87")
- spacerItem31 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_87.addItem(spacerItem31, 0, 1, 1, 1)
- self.gridLayout_idle_time_task = QtWidgets.QGridLayout()
- self.gridLayout_idle_time_task.setObjectName("gridLayout_idle_time_task")
- self.gridLayout_87.addLayout(self.gridLayout_idle_time_task, 0, 0, 1, 1)
- self.groupBox_idle_time_task_comment = QtWidgets.QGroupBox(self.groupBox_idle_time_task)
- self.groupBox_idle_time_task_comment.setObjectName("groupBox_idle_time_task_comment")
- self.gridLayout_94 = QtWidgets.QGridLayout(self.groupBox_idle_time_task_comment)
- self.gridLayout_94.setObjectName("gridLayout_94")
- self.gridLayout_idle_time_task_comment = QtWidgets.QGridLayout()
- self.gridLayout_idle_time_task_comment.setObjectName("gridLayout_idle_time_task_comment")
- self.gridLayout_94.addLayout(self.gridLayout_idle_time_task_comment, 0, 0, 1, 1)
- self.gridLayout_87.addWidget(self.groupBox_idle_time_task_comment, 1, 0, 1, 1)
- self.groupBox_idle_time_task_local_audio = QtWidgets.QGroupBox(self.groupBox_idle_time_task)
- self.groupBox_idle_time_task_local_audio.setObjectName("groupBox_idle_time_task_local_audio")
- self.gridLayout_96 = QtWidgets.QGridLayout(self.groupBox_idle_time_task_local_audio)
- self.gridLayout_96.setObjectName("gridLayout_96")
- self.gridLayout_idle_time_task_local_audio = QtWidgets.QGridLayout()
- self.gridLayout_idle_time_task_local_audio.setObjectName("gridLayout_idle_time_task_local_audio")
- self.gridLayout_96.addLayout(self.gridLayout_idle_time_task_local_audio, 0, 0, 1, 1)
- self.gridLayout_87.addWidget(self.groupBox_idle_time_task_local_audio, 2, 0, 1, 1)
- self.gridLayout_87.setColumnStretch(0, 9)
- self.gridLayout_87.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_idle_time_task)
- self.groupBox_ddsp_svc = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_ddsp_svc.setObjectName("groupBox_ddsp_svc")
- self.gridLayout_49 = QtWidgets.QGridLayout(self.groupBox_ddsp_svc)
- self.gridLayout_49.setObjectName("gridLayout_49")
- self.gridLayout_48 = QtWidgets.QGridLayout()
- self.gridLayout_48.setObjectName("gridLayout_48")
- self.label_ddsp_svc_enable = QtWidgets.QLabel(self.groupBox_ddsp_svc)
- self.label_ddsp_svc_enable.setObjectName("label_ddsp_svc_enable")
- self.gridLayout_48.addWidget(self.label_ddsp_svc_enable, 0, 0, 1, 1)
- self.label_ddsp_svc_fSafePrefixPadLength = QtWidgets.QLabel(self.groupBox_ddsp_svc)
- self.label_ddsp_svc_fSafePrefixPadLength.setObjectName("label_ddsp_svc_fSafePrefixPadLength")
- self.gridLayout_48.addWidget(self.label_ddsp_svc_fSafePrefixPadLength, 3, 0, 1, 1)
- self.lineEdit_ddsp_svc_sSpeakId = QtWidgets.QLineEdit(self.groupBox_ddsp_svc)
- self.lineEdit_ddsp_svc_sSpeakId.setObjectName("lineEdit_ddsp_svc_sSpeakId")
- self.gridLayout_48.addWidget(self.lineEdit_ddsp_svc_sSpeakId, 5, 1, 1, 1)
- self.checkBox_ddsp_svc_enable = QtWidgets.QCheckBox(self.groupBox_ddsp_svc)
- self.checkBox_ddsp_svc_enable.setObjectName("checkBox_ddsp_svc_enable")
- self.gridLayout_48.addWidget(self.checkBox_ddsp_svc_enable, 0, 1, 1, 1)
- self.lineEdit_ddsp_svc_api_ip_port = QtWidgets.QLineEdit(self.groupBox_ddsp_svc)
- self.lineEdit_ddsp_svc_api_ip_port.setObjectName("lineEdit_ddsp_svc_api_ip_port")
- self.gridLayout_48.addWidget(self.lineEdit_ddsp_svc_api_ip_port, 2, 1, 1, 1)
- self.label_ddsp_svc_api_ip_port = QtWidgets.QLabel(self.groupBox_ddsp_svc)
- self.label_ddsp_svc_api_ip_port.setObjectName("label_ddsp_svc_api_ip_port")
- self.gridLayout_48.addWidget(self.label_ddsp_svc_api_ip_port, 2, 0, 1, 1)
- self.label_ddsp_svc_config_path = QtWidgets.QLabel(self.groupBox_ddsp_svc)
- self.label_ddsp_svc_config_path.setObjectName("label_ddsp_svc_config_path")
- self.gridLayout_48.addWidget(self.label_ddsp_svc_config_path, 1, 0, 1, 1)
- self.lineEdit_ddsp_svc_fSafePrefixPadLength = QtWidgets.QLineEdit(self.groupBox_ddsp_svc)
- self.lineEdit_ddsp_svc_fSafePrefixPadLength.setObjectName("lineEdit_ddsp_svc_fSafePrefixPadLength")
- self.gridLayout_48.addWidget(self.lineEdit_ddsp_svc_fSafePrefixPadLength, 3, 1, 1, 1)
- self.lineEdit_ddsp_svc_fPitchChange = QtWidgets.QLineEdit(self.groupBox_ddsp_svc)
- self.lineEdit_ddsp_svc_fPitchChange.setObjectName("lineEdit_ddsp_svc_fPitchChange")
- self.gridLayout_48.addWidget(self.lineEdit_ddsp_svc_fPitchChange, 4, 1, 1, 1)
- self.label_ddsp_svc_sSpeakId = QtWidgets.QLabel(self.groupBox_ddsp_svc)
- self.label_ddsp_svc_sSpeakId.setObjectName("label_ddsp_svc_sSpeakId")
- self.gridLayout_48.addWidget(self.label_ddsp_svc_sSpeakId, 5, 0, 1, 1)
- self.lineEdit_ddsp_svc_config_path = QtWidgets.QLineEdit(self.groupBox_ddsp_svc)
- self.lineEdit_ddsp_svc_config_path.setObjectName("lineEdit_ddsp_svc_config_path")
- self.gridLayout_48.addWidget(self.lineEdit_ddsp_svc_config_path, 1, 1, 1, 1)
- self.label_ddsp_svc_fPitchChange = QtWidgets.QLabel(self.groupBox_ddsp_svc)
- self.label_ddsp_svc_fPitchChange.setObjectName("label_ddsp_svc_fPitchChange")
- self.gridLayout_48.addWidget(self.label_ddsp_svc_fPitchChange, 4, 0, 1, 1)
- self.label_ddsp_svc_sampleRate = QtWidgets.QLabel(self.groupBox_ddsp_svc)
- self.label_ddsp_svc_sampleRate.setObjectName("label_ddsp_svc_sampleRate")
- self.gridLayout_48.addWidget(self.label_ddsp_svc_sampleRate, 6, 0, 1, 1)
- self.lineEdit_ddsp_svc_sampleRate = QtWidgets.QLineEdit(self.groupBox_ddsp_svc)
- self.lineEdit_ddsp_svc_sampleRate.setObjectName("lineEdit_ddsp_svc_sampleRate")
- self.gridLayout_48.addWidget(self.lineEdit_ddsp_svc_sampleRate, 6, 1, 1, 1)
- self.gridLayout_49.addLayout(self.gridLayout_48, 0, 0, 1, 1)
- spacerItem32 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_49.addItem(spacerItem32, 0, 1, 1, 1)
- self.gridLayout_49.setColumnStretch(0, 9)
- self.gridLayout_49.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_ddsp_svc)
- self.groupBox_so_vits_svc = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_so_vits_svc.setObjectName("groupBox_so_vits_svc")
- self.gridLayout_36 = QtWidgets.QGridLayout(self.groupBox_so_vits_svc)
- self.gridLayout_36.setObjectName("gridLayout_36")
- self.gridLayout_35 = QtWidgets.QGridLayout()
- self.gridLayout_35.setObjectName("gridLayout_35")
- self.checkBox_so_vits_svc_enable = QtWidgets.QCheckBox(self.groupBox_so_vits_svc)
- self.checkBox_so_vits_svc_enable.setObjectName("checkBox_so_vits_svc_enable")
- self.gridLayout_35.addWidget(self.checkBox_so_vits_svc_enable, 0, 1, 1, 1)
- self.lineEdit_so_vits_svc_api_ip_port = QtWidgets.QLineEdit(self.groupBox_so_vits_svc)
- self.lineEdit_so_vits_svc_api_ip_port.setObjectName("lineEdit_so_vits_svc_api_ip_port")
- self.gridLayout_35.addWidget(self.lineEdit_so_vits_svc_api_ip_port, 2, 1, 1, 1)
- self.label_so_vits_svc_config_path = QtWidgets.QLabel(self.groupBox_so_vits_svc)
- self.label_so_vits_svc_config_path.setObjectName("label_so_vits_svc_config_path")
- self.gridLayout_35.addWidget(self.label_so_vits_svc_config_path, 1, 0, 1, 1)
- self.label_so_vits_svc_api_ip_port = QtWidgets.QLabel(self.groupBox_so_vits_svc)
- self.label_so_vits_svc_api_ip_port.setObjectName("label_so_vits_svc_api_ip_port")
- self.gridLayout_35.addWidget(self.label_so_vits_svc_api_ip_port, 2, 0, 1, 1)
- self.lineEdit_so_vits_svc_tran = QtWidgets.QLineEdit(self.groupBox_so_vits_svc)
- self.lineEdit_so_vits_svc_tran.setObjectName("lineEdit_so_vits_svc_tran")
- self.gridLayout_35.addWidget(self.lineEdit_so_vits_svc_tran, 4, 1, 1, 1)
- self.lineEdit_so_vits_svc_config_path = QtWidgets.QLineEdit(self.groupBox_so_vits_svc)
- self.lineEdit_so_vits_svc_config_path.setObjectName("lineEdit_so_vits_svc_config_path")
- self.gridLayout_35.addWidget(self.lineEdit_so_vits_svc_config_path, 1, 1, 1, 1)
- self.label_so_vits_svc_enable = QtWidgets.QLabel(self.groupBox_so_vits_svc)
- self.label_so_vits_svc_enable.setObjectName("label_so_vits_svc_enable")
- self.gridLayout_35.addWidget(self.label_so_vits_svc_enable, 0, 0, 1, 1)
- self.label_so_vits_svc_spk = QtWidgets.QLabel(self.groupBox_so_vits_svc)
- self.label_so_vits_svc_spk.setObjectName("label_so_vits_svc_spk")
- self.gridLayout_35.addWidget(self.label_so_vits_svc_spk, 3, 0, 1, 1)
- self.lineEdit_so_vits_svc_spk = QtWidgets.QLineEdit(self.groupBox_so_vits_svc)
- self.lineEdit_so_vits_svc_spk.setObjectName("lineEdit_so_vits_svc_spk")
- self.gridLayout_35.addWidget(self.lineEdit_so_vits_svc_spk, 3, 1, 1, 1)
- self.label_so_vits_svc_tran = QtWidgets.QLabel(self.groupBox_so_vits_svc)
- self.label_so_vits_svc_tran.setObjectName("label_so_vits_svc_tran")
- self.gridLayout_35.addWidget(self.label_so_vits_svc_tran, 4, 0, 1, 1)
- self.label_so_vits_svc_wav_format = QtWidgets.QLabel(self.groupBox_so_vits_svc)
- self.label_so_vits_svc_wav_format.setObjectName("label_so_vits_svc_wav_format")
- self.gridLayout_35.addWidget(self.label_so_vits_svc_wav_format, 5, 0, 1, 1)
- self.lineEdit_so_vits_svc_wav_format = QtWidgets.QLineEdit(self.groupBox_so_vits_svc)
- self.lineEdit_so_vits_svc_wav_format.setObjectName("lineEdit_so_vits_svc_wav_format")
- self.gridLayout_35.addWidget(self.lineEdit_so_vits_svc_wav_format, 5, 1, 1, 1)
- self.gridLayout_36.addLayout(self.gridLayout_35, 0, 0, 1, 1)
- spacerItem33 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_36.addItem(spacerItem33, 0, 1, 1, 1)
- self.gridLayout_36.setColumnStretch(0, 9)
- self.gridLayout_36.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_so_vits_svc)
- self.groupBox_sd = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_sd.setObjectName("groupBox_sd")
- self.gridLayout_32 = QtWidgets.QGridLayout(self.groupBox_sd)
- self.gridLayout_32.setObjectName("gridLayout_32")
- self.gridLayout_31 = QtWidgets.QGridLayout()
- self.gridLayout_31.setObjectName("gridLayout_31")
- self.lineEdit_sd_hr_second_pass_steps = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_hr_second_pass_steps.setObjectName("lineEdit_sd_hr_second_pass_steps")
- self.gridLayout_31.addWidget(self.lineEdit_sd_hr_second_pass_steps, 16, 1, 1, 1)
- self.lineEdit_prompt_llm_before_prompt = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_prompt_llm_before_prompt.setObjectName("lineEdit_prompt_llm_before_prompt")
- self.gridLayout_31.addWidget(self.lineEdit_prompt_llm_before_prompt, 2, 1, 1, 1)
- self.lineEdit_sd_seed = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_seed.setObjectName("lineEdit_sd_seed")
- self.gridLayout_31.addWidget(self.lineEdit_sd_seed, 8, 1, 1, 1)
- self.lineEdit_sd_steps = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_steps.setObjectName("lineEdit_sd_steps")
- self.gridLayout_31.addWidget(self.lineEdit_sd_steps, 11, 1, 1, 1)
- self.label_sd_port = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_port.setObjectName("label_sd_port")
- self.gridLayout_31.addWidget(self.label_sd_port, 6, 0, 1, 1)
- self.lineEdit_sd_cfg_scale = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_cfg_scale.setObjectName("lineEdit_sd_cfg_scale")
- self.gridLayout_31.addWidget(self.lineEdit_sd_cfg_scale, 10, 1, 1, 1)
- self.label_sd_enable_hr = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_enable_hr.setObjectName("label_sd_enable_hr")
- self.gridLayout_31.addWidget(self.label_sd_enable_hr, 14, 0, 1, 1)
- self.comboBox_prompt_llm_type = QtWidgets.QComboBox(self.groupBox_sd)
- self.comboBox_prompt_llm_type.setObjectName("comboBox_prompt_llm_type")
- self.gridLayout_31.addWidget(self.comboBox_prompt_llm_type, 1, 1, 1, 1)
- self.lineEdit_sd_hr_resize_x = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_hr_resize_x.setObjectName("lineEdit_sd_hr_resize_x")
- self.gridLayout_31.addWidget(self.lineEdit_sd_hr_resize_x, 12, 1, 1, 1)
- self.lineEdit_sd_ip = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_ip.setObjectName("lineEdit_sd_ip")
- self.gridLayout_31.addWidget(self.lineEdit_sd_ip, 5, 1, 1, 1)
- self.label_sd_hr_scale = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_hr_scale.setObjectName("label_sd_hr_scale")
- self.gridLayout_31.addWidget(self.label_sd_hr_scale, 15, 0, 1, 1)
- self.lineEdit_sd_denoising_strength = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_denoising_strength.setObjectName("lineEdit_sd_denoising_strength")
- self.gridLayout_31.addWidget(self.lineEdit_sd_denoising_strength, 17, 1, 1, 1)
- self.lineEdit_sd_hr_resize_y = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_hr_resize_y.setObjectName("lineEdit_sd_hr_resize_y")
- self.gridLayout_31.addWidget(self.lineEdit_sd_hr_resize_y, 13, 1, 1, 1)
- self.lineEdit_sd_port = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_port.setObjectName("lineEdit_sd_port")
- self.gridLayout_31.addWidget(self.lineEdit_sd_port, 6, 1, 1, 1)
- self.lineEdit_sd_hr_scale = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_hr_scale.setObjectName("lineEdit_sd_hr_scale")
- self.gridLayout_31.addWidget(self.lineEdit_sd_hr_scale, 15, 1, 1, 1)
- self.label_sd_hr_resize_x = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_hr_resize_x.setObjectName("label_sd_hr_resize_x")
- self.gridLayout_31.addWidget(self.label_sd_hr_resize_x, 12, 0, 1, 1)
- self.label_sd_hr_second_pass_steps = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_hr_second_pass_steps.setObjectName("label_sd_hr_second_pass_steps")
- self.gridLayout_31.addWidget(self.label_sd_hr_second_pass_steps, 16, 0, 1, 1)
- self.label_sd_denoising_strength = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_denoising_strength.setObjectName("label_sd_denoising_strength")
- self.gridLayout_31.addWidget(self.label_sd_denoising_strength, 17, 0, 1, 1)
- self.label_prompt_llm_type = QtWidgets.QLabel(self.groupBox_sd)
- self.label_prompt_llm_type.setObjectName("label_prompt_llm_type")
- self.gridLayout_31.addWidget(self.label_prompt_llm_type, 1, 0, 1, 1)
- self.label_prompt_llm_before_prompt = QtWidgets.QLabel(self.groupBox_sd)
- self.label_prompt_llm_before_prompt.setObjectName("label_prompt_llm_before_prompt")
- self.gridLayout_31.addWidget(self.label_prompt_llm_before_prompt, 2, 0, 1, 1)
- self.checkBox_sd_enable_hr = QtWidgets.QCheckBox(self.groupBox_sd)
- self.checkBox_sd_enable_hr.setObjectName("checkBox_sd_enable_hr")
- self.gridLayout_31.addWidget(self.checkBox_sd_enable_hr, 14, 1, 1, 1)
- self.label_sd_trigger = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_trigger.setObjectName("label_sd_trigger")
- self.gridLayout_31.addWidget(self.label_sd_trigger, 4, 0, 1, 1)
- self.label_sd_ip = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_ip.setObjectName("label_sd_ip")
- self.gridLayout_31.addWidget(self.label_sd_ip, 5, 0, 1, 1)
- self.label_sd_steps = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_steps.setObjectName("label_sd_steps")
- self.gridLayout_31.addWidget(self.label_sd_steps, 11, 0, 1, 1)
- self.label_sd_seed = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_seed.setObjectName("label_sd_seed")
- self.gridLayout_31.addWidget(self.label_sd_seed, 8, 0, 1, 1)
- self.lineEdit_sd_negative_prompt = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_negative_prompt.setObjectName("lineEdit_sd_negative_prompt")
- self.gridLayout_31.addWidget(self.lineEdit_sd_negative_prompt, 7, 1, 1, 1)
- self.label_sd_styles = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_styles.setObjectName("label_sd_styles")
- self.gridLayout_31.addWidget(self.label_sd_styles, 9, 0, 1, 1)
- self.label_sd_enable = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_enable.setObjectName("label_sd_enable")
- self.gridLayout_31.addWidget(self.label_sd_enable, 0, 0, 1, 1)
- self.label_sd_cfg_scale = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_cfg_scale.setObjectName("label_sd_cfg_scale")
- self.gridLayout_31.addWidget(self.label_sd_cfg_scale, 10, 0, 1, 1)
- self.textEdit_sd_styles = QtWidgets.QTextEdit(self.groupBox_sd)
- self.textEdit_sd_styles.setObjectName("textEdit_sd_styles")
- self.gridLayout_31.addWidget(self.textEdit_sd_styles, 9, 1, 1, 1)
- self.label_sd_hr_resize_y = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_hr_resize_y.setObjectName("label_sd_hr_resize_y")
- self.gridLayout_31.addWidget(self.label_sd_hr_resize_y, 13, 0, 1, 1)
- self.lineEdit_sd_trigger = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_sd_trigger.setObjectName("lineEdit_sd_trigger")
- self.gridLayout_31.addWidget(self.lineEdit_sd_trigger, 4, 1, 1, 1)
- self.checkBox_sd_enable = QtWidgets.QCheckBox(self.groupBox_sd)
- self.checkBox_sd_enable.setObjectName("checkBox_sd_enable")
- self.gridLayout_31.addWidget(self.checkBox_sd_enable, 0, 1, 1, 1)
- self.label_sd_negative_prompt = QtWidgets.QLabel(self.groupBox_sd)
- self.label_sd_negative_prompt.setObjectName("label_sd_negative_prompt")
- self.gridLayout_31.addWidget(self.label_sd_negative_prompt, 7, 0, 1, 1)
- self.label_prompt_llm_after_prompt = QtWidgets.QLabel(self.groupBox_sd)
- self.label_prompt_llm_after_prompt.setObjectName("label_prompt_llm_after_prompt")
- self.gridLayout_31.addWidget(self.label_prompt_llm_after_prompt, 3, 0, 1, 1)
- self.lineEdit_prompt_llm_after_prompt = QtWidgets.QLineEdit(self.groupBox_sd)
- self.lineEdit_prompt_llm_after_prompt.setObjectName("lineEdit_prompt_llm_after_prompt")
- self.gridLayout_31.addWidget(self.lineEdit_prompt_llm_after_prompt, 3, 1, 1, 1)
- self.gridLayout_32.addLayout(self.gridLayout_31, 0, 0, 1, 1)
- spacerItem34 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_32.addItem(spacerItem34, 0, 1, 1, 1)
- self.gridLayout_32.setColumnStretch(0, 9)
- self.gridLayout_32.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_sd)
- self.groupBox_trends_copywriting = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_trends_copywriting.setObjectName("groupBox_trends_copywriting")
- self.gridLayout_66 = QtWidgets.QGridLayout(self.groupBox_trends_copywriting)
- self.gridLayout_66.setObjectName("gridLayout_66")
- self.gridLayout_trends_copywriting = QtWidgets.QGridLayout()
- self.gridLayout_trends_copywriting.setObjectName("gridLayout_trends_copywriting")
- self.label_trends_copywriting_random_play = QtWidgets.QLabel(self.groupBox_trends_copywriting)
- self.label_trends_copywriting_random_play.setObjectName("label_trends_copywriting_random_play")
- self.gridLayout_trends_copywriting.addWidget(self.label_trends_copywriting_random_play, 2, 0, 1, 1)
- self.checkBox_trends_copywriting_random_play = QtWidgets.QCheckBox(self.groupBox_trends_copywriting)
- self.checkBox_trends_copywriting_random_play.setObjectName("checkBox_trends_copywriting_random_play")
- self.gridLayout_trends_copywriting.addWidget(self.checkBox_trends_copywriting_random_play, 2, 1, 1, 1)
- self.lineEdit_trends_copywriting_play_interval = QtWidgets.QLineEdit(self.groupBox_trends_copywriting)
- self.lineEdit_trends_copywriting_play_interval.setObjectName("lineEdit_trends_copywriting_play_interval")
- self.gridLayout_trends_copywriting.addWidget(self.lineEdit_trends_copywriting_play_interval, 3, 1, 1, 1)
- self.gridLayout_trends_copywriting_2 = QtWidgets.QGridLayout()
- self.gridLayout_trends_copywriting_2.setObjectName("gridLayout_trends_copywriting_2")
- self.gridLayout_trends_copywriting.addLayout(self.gridLayout_trends_copywriting_2, 0, 0, 1, 2)
- self.label_trends_copywriting_play_interval = QtWidgets.QLabel(self.groupBox_trends_copywriting)
- self.label_trends_copywriting_play_interval.setObjectName("label_trends_copywriting_play_interval")
- self.gridLayout_trends_copywriting.addWidget(self.label_trends_copywriting_play_interval, 3, 0, 1, 1)
- self.label_trends_copywriting_enable = QtWidgets.QLabel(self.groupBox_trends_copywriting)
- self.label_trends_copywriting_enable.setObjectName("label_trends_copywriting_enable")
- self.gridLayout_trends_copywriting.addWidget(self.label_trends_copywriting_enable, 1, 0, 1, 1)
- self.checkBox_trends_copywriting_enable = QtWidgets.QCheckBox(self.groupBox_trends_copywriting)
- self.checkBox_trends_copywriting_enable.setObjectName("checkBox_trends_copywriting_enable")
- self.gridLayout_trends_copywriting.addWidget(self.checkBox_trends_copywriting_enable, 1, 1, 1, 1)
- self.gridLayout_66.addLayout(self.gridLayout_trends_copywriting, 0, 0, 1, 1)
- spacerItem35 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_66.addItem(spacerItem35, 0, 1, 1, 1)
- self.gridLayout_66.setColumnStretch(0, 9)
- self.gridLayout_66.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_trends_copywriting)
- self.groupBox_header = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_header.setObjectName("groupBox_header")
- self.gridLayout_18 = QtWidgets.QGridLayout(self.groupBox_header)
- self.gridLayout_18.setObjectName("gridLayout_18")
- self.gridLayout_19 = QtWidgets.QGridLayout()
- self.gridLayout_19.setObjectName("gridLayout_19")
- self.label_header_useragent = QtWidgets.QLabel(self.groupBox_header)
- self.label_header_useragent.setObjectName("label_header_useragent")
- self.gridLayout_19.addWidget(self.label_header_useragent, 0, 0, 1, 1)
- self.lineEdit_header_useragent = QtWidgets.QLineEdit(self.groupBox_header)
- self.lineEdit_header_useragent.setObjectName("lineEdit_header_useragent")
- self.gridLayout_19.addWidget(self.lineEdit_header_useragent, 0, 1, 1, 1)
- self.gridLayout_18.addLayout(self.gridLayout_19, 0, 1, 1, 1)
- spacerItem36 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_18.addItem(spacerItem36, 0, 2, 1, 1)
- self.gridLayout_18.setColumnStretch(1, 9)
- self.gridLayout_18.setColumnStretch(2, 1)
- self.verticalLayout.addWidget(self.groupBox_header)
- self.groupBox_web_captions_printer = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_web_captions_printer.setObjectName("groupBox_web_captions_printer")
- self.gridLayout_69 = QtWidgets.QGridLayout(self.groupBox_web_captions_printer)
- self.gridLayout_69.setObjectName("gridLayout_69")
- self.gridLayout_web_captions_printer = QtWidgets.QGridLayout()
- self.gridLayout_web_captions_printer.setObjectName("gridLayout_web_captions_printer")
- self.gridLayout_69.addLayout(self.gridLayout_web_captions_printer, 0, 0, 1, 1)
- spacerItem37 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_69.addItem(spacerItem37, 0, 1, 1, 1)
- self.gridLayout_69.setColumnStretch(0, 9)
- self.gridLayout_69.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_web_captions_printer)
- self.groupBox_database = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_database.setObjectName("groupBox_database")
- self.gridLayout_67 = QtWidgets.QGridLayout(self.groupBox_database)
- self.gridLayout_67.setObjectName("gridLayout_67")
- self.gridLayout_database = QtWidgets.QGridLayout()
- self.gridLayout_database.setObjectName("gridLayout_database")
- self.gridLayout_67.addLayout(self.gridLayout_database, 0, 0, 1, 1)
- spacerItem38 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_67.addItem(spacerItem38, 0, 1, 1, 1)
- self.gridLayout_67.setColumnStretch(0, 9)
- self.gridLayout_67.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_database)
- self.groupBox_key_mapping = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_key_mapping.setObjectName("groupBox_key_mapping")
- self.gridLayout_90 = QtWidgets.QGridLayout(self.groupBox_key_mapping)
- self.gridLayout_90.setObjectName("gridLayout_90")
- spacerItem39 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_90.addItem(spacerItem39, 0, 1, 1, 1)
- self.gridLayout_key_mapping = QtWidgets.QGridLayout()
- self.gridLayout_key_mapping.setObjectName("gridLayout_key_mapping")
- self.checkBox_key_mapping_enable = QtWidgets.QCheckBox(self.groupBox_key_mapping)
- self.checkBox_key_mapping_enable.setObjectName("checkBox_key_mapping_enable")
- self.gridLayout_key_mapping.addWidget(self.checkBox_key_mapping_enable, 0, 1, 1, 1)
- self.label_key_mapping_enable = QtWidgets.QLabel(self.groupBox_key_mapping)
- self.label_key_mapping_enable.setObjectName("label_key_mapping_enable")
- self.gridLayout_key_mapping.addWidget(self.label_key_mapping_enable, 0, 0, 1, 1)
- self.lineEdit_key_mapping_start_cmd = QtWidgets.QLineEdit(self.groupBox_key_mapping)
- self.lineEdit_key_mapping_start_cmd.setObjectName("lineEdit_key_mapping_start_cmd")
- self.gridLayout_key_mapping.addWidget(self.lineEdit_key_mapping_start_cmd, 2, 1, 1, 1)
- self.label_key_mapping_start_cmd = QtWidgets.QLabel(self.groupBox_key_mapping)
- self.label_key_mapping_start_cmd.setObjectName("label_key_mapping_start_cmd")
- self.gridLayout_key_mapping.addWidget(self.label_key_mapping_start_cmd, 2, 0, 1, 1)
- self.label_key_mapping_type = QtWidgets.QLabel(self.groupBox_key_mapping)
- self.label_key_mapping_type.setObjectName("label_key_mapping_type")
- self.gridLayout_key_mapping.addWidget(self.label_key_mapping_type, 1, 0, 1, 1)
- self.comboBox_key_mapping_type = QtWidgets.QComboBox(self.groupBox_key_mapping)
- self.comboBox_key_mapping_type.setObjectName("comboBox_key_mapping_type")
- self.gridLayout_key_mapping.addWidget(self.comboBox_key_mapping_type, 1, 1, 1, 1)
- self.gridLayout_90.addLayout(self.gridLayout_key_mapping, 0, 0, 1, 1)
- self.gridLayout_key_mapping_config = QtWidgets.QGridLayout()
- self.gridLayout_key_mapping_config.setObjectName("gridLayout_key_mapping_config")
- self.gridLayout_90.addLayout(self.gridLayout_key_mapping_config, 1, 0, 1, 1)
- self.gridLayout_90.setColumnStretch(0, 9)
- self.gridLayout_90.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_key_mapping)
- self.groupBox_unity = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
- self.groupBox_unity.setObjectName("groupBox_unity")
- self.gridLayout_97 = QtWidgets.QGridLayout(self.groupBox_unity)
- self.gridLayout_97.setObjectName("gridLayout_97")
- self.gridLayout_unity = QtWidgets.QGridLayout()
- self.gridLayout_unity.setObjectName("gridLayout_unity")
- self.gridLayout_97.addLayout(self.gridLayout_unity, 0, 0, 1, 1)
- spacerItem40 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_97.addItem(spacerItem40, 0, 1, 1, 1)
- self.gridLayout_97.setColumnStretch(0, 9)
- self.gridLayout_97.setColumnStretch(1, 1)
- self.verticalLayout.addWidget(self.groupBox_unity)
- self.scrollArea.setWidget(self.scrollAreaWidgetContents)
- self.gridLayout_21.addWidget(self.scrollArea, 0, 0, 1, 1)
- self.stackedWidget.addWidget(self.page)
- self.page_2 = QtWidgets.QWidget()
- self.page_2.setObjectName("page_2")
- self.gridLayout_22 = QtWidgets.QGridLayout(self.page_2)
- self.gridLayout_22.setObjectName("gridLayout_22")
- self.textBrowser = QtWidgets.QTextBrowser(self.page_2)
- self.textBrowser.setStyleSheet("font: 12pt \"仿宋\";\n"
-"")
- self.textBrowser.setObjectName("textBrowser")
- self.gridLayout_22.addWidget(self.textBrowser, 0, 0, 1, 1)
- self.stackedWidget.addWidget(self.page_2)
- self.page_3 = QtWidgets.QWidget()
- self.page_3.setObjectName("page_3")
- self.gridLayout_38 = QtWidgets.QGridLayout(self.page_3)
- self.gridLayout_38.setObjectName("gridLayout_38")
- self.scrollArea_2 = QtWidgets.QScrollArea(self.page_3)
- self.scrollArea_2.setStyleSheet("font: 75 13pt \"微软雅黑\";\n"
-"")
- self.scrollArea_2.setWidgetResizable(True)
- self.scrollArea_2.setObjectName("scrollArea_2")
- self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
- self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 698, 1156))
- self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
- self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_2)
- self.verticalLayout_2.setObjectName("verticalLayout_2")
- self.widget = QtWidgets.QWidget(self.scrollAreaWidgetContents_2)
- self.widget.setAutoFillBackground(False)
- self.widget.setStyleSheet("")
- self.widget.setObjectName("widget")
- self.gridLayout_37 = QtWidgets.QGridLayout(self.widget)
- self.gridLayout_37.setObjectName("gridLayout_37")
- self.label_copywriting_edit = QtWidgets.QLabel(self.widget)
- self.label_copywriting_edit.setStyleSheet("")
- self.label_copywriting_edit.setObjectName("label_copywriting_edit")
- self.gridLayout_37.addWidget(self.label_copywriting_edit, 6, 0, 1, 1)
- self.pushButton_copywriting_save = QtWidgets.QPushButton(self.widget)
- self.pushButton_copywriting_save.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_save.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_copywriting_save.setObjectName("pushButton_copywriting_save")
- self.gridLayout_37.addWidget(self.pushButton_copywriting_save, 7, 2, 1, 1)
- self.scrollArea_copywriting_config = QtWidgets.QScrollArea(self.widget)
- self.scrollArea_copywriting_config.setMinimumSize(QtCore.QSize(0, 500))
- self.scrollArea_copywriting_config.setMaximumSize(QtCore.QSize(16777215, 16777215))
- self.scrollArea_copywriting_config.setWidgetResizable(True)
- self.scrollArea_copywriting_config.setObjectName("scrollArea_copywriting_config")
- self.scrollAreaWidgetContents_4 = QtWidgets.QWidget()
- self.scrollAreaWidgetContents_4.setGeometry(QtCore.QRect(0, 0, 359, 104))
- self.scrollAreaWidgetContents_4.setObjectName("scrollAreaWidgetContents_4")
- self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_4)
- self.verticalLayout_4.setObjectName("verticalLayout_4")
- self.widget_copywriting_config = QtWidgets.QWidget(self.scrollAreaWidgetContents_4)
- self.widget_copywriting_config.setObjectName("widget_copywriting_config")
- self.gridLayout_25 = QtWidgets.QGridLayout(self.widget_copywriting_config)
- self.gridLayout_25.setObjectName("gridLayout_25")
- self.pushButton_copywriting_config_index_add = QtWidgets.QPushButton(self.widget_copywriting_config)
- self.pushButton_copywriting_config_index_add.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_config_index_add.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_copywriting_config_index_add.setObjectName("pushButton_copywriting_config_index_add")
- self.gridLayout_25.addWidget(self.pushButton_copywriting_config_index_add, 0, 2, 1, 1)
- self.lineEdit_copywriting_config_index = QtWidgets.QLineEdit(self.widget_copywriting_config)
- self.lineEdit_copywriting_config_index.setStyleSheet("min-height:40px;")
- self.lineEdit_copywriting_config_index.setObjectName("lineEdit_copywriting_config_index")
- self.gridLayout_25.addWidget(self.lineEdit_copywriting_config_index, 0, 1, 1, 1)
- self.label_copywriting_config_index = QtWidgets.QLabel(self.widget_copywriting_config)
- self.label_copywriting_config_index.setObjectName("label_copywriting_config_index")
- self.gridLayout_25.addWidget(self.label_copywriting_config_index, 0, 0, 1, 1)
- self.pushButton_copywriting_config_index_del = QtWidgets.QPushButton(self.widget_copywriting_config)
- self.pushButton_copywriting_config_index_del.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_config_index_del.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_copywriting_config_index_del.setObjectName("pushButton_copywriting_config_index_del")
- self.gridLayout_25.addWidget(self.pushButton_copywriting_config_index_del, 0, 3, 1, 1)
- self.gridLayout_copywriting_config = QtWidgets.QGridLayout()
- self.gridLayout_copywriting_config.setObjectName("gridLayout_copywriting_config")
- self.gridLayout_25.addLayout(self.gridLayout_copywriting_config, 1, 0, 1, 4)
- self.gridLayout_25.setColumnStretch(0, 1)
- self.gridLayout_25.setColumnStretch(1, 5)
- self.gridLayout_25.setColumnStretch(2, 1)
- self.gridLayout_25.setColumnStretch(3, 1)
- self.verticalLayout_4.addWidget(self.widget_copywriting_config)
- self.scrollArea_copywriting_config.setWidget(self.scrollAreaWidgetContents_4)
- self.gridLayout_37.addWidget(self.scrollArea_copywriting_config, 0, 0, 1, 6)
- self.pushButton_copywriting_pause_play = QtWidgets.QPushButton(self.widget)
- self.pushButton_copywriting_pause_play.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_pause_play.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_copywriting_pause_play.setObjectName("pushButton_copywriting_pause_play")
- self.gridLayout_37.addWidget(self.pushButton_copywriting_pause_play, 7, 5, 1, 1)
- self.pushButton_copywriting_synthetic_audio = QtWidgets.QPushButton(self.widget)
- self.pushButton_copywriting_synthetic_audio.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_synthetic_audio.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_copywriting_synthetic_audio.setObjectName("pushButton_copywriting_synthetic_audio")
- self.gridLayout_37.addWidget(self.pushButton_copywriting_synthetic_audio, 7, 3, 1, 1)
- self.pushButton_copywriting_loop_play = QtWidgets.QPushButton(self.widget)
- self.pushButton_copywriting_loop_play.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_loop_play.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_copywriting_loop_play.setObjectName("pushButton_copywriting_loop_play")
- self.gridLayout_37.addWidget(self.pushButton_copywriting_loop_play, 7, 4, 1, 1)
- self.lineEdit_copywriting_audio_interval = QtWidgets.QLineEdit(self.widget)
- self.lineEdit_copywriting_audio_interval.setStyleSheet("min-height:40px;")
- self.lineEdit_copywriting_audio_interval.setObjectName("lineEdit_copywriting_audio_interval")
- self.gridLayout_37.addWidget(self.lineEdit_copywriting_audio_interval, 1, 1, 1, 5)
- self.pushButton_copywriting_refresh_list = QtWidgets.QPushButton(self.widget)
- self.pushButton_copywriting_refresh_list.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_refresh_list.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_copywriting_refresh_list.setObjectName("pushButton_copywriting_refresh_list")
- self.gridLayout_37.addWidget(self.pushButton_copywriting_refresh_list, 5, 5, 1, 1)
- self.label_copywriting_select = QtWidgets.QLabel(self.widget)
- self.label_copywriting_select.setStyleSheet("")
- self.label_copywriting_select.setObjectName("label_copywriting_select")
- self.gridLayout_37.addWidget(self.label_copywriting_select, 5, 0, 1, 1)
- self.label_copywriting_switching_random_play = QtWidgets.QLabel(self.widget)
- self.label_copywriting_switching_random_play.setStyleSheet("")
- self.label_copywriting_switching_random_play.setObjectName("label_copywriting_switching_random_play")
- self.gridLayout_37.addWidget(self.label_copywriting_switching_random_play, 4, 0, 1, 1)
- spacerItem41 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_37.addItem(spacerItem41, 7, 0, 1, 1)
- self.label_copywriting_audio_interval = QtWidgets.QLabel(self.widget)
- self.label_copywriting_audio_interval.setStyleSheet("")
- self.label_copywriting_audio_interval.setObjectName("label_copywriting_audio_interval")
- self.gridLayout_37.addWidget(self.label_copywriting_audio_interval, 1, 0, 1, 1)
- self.lineEdit_copywriting_switching_interval = QtWidgets.QLineEdit(self.widget)
- self.lineEdit_copywriting_switching_interval.setStyleSheet("min-height:40px;")
- self.lineEdit_copywriting_switching_interval.setObjectName("lineEdit_copywriting_switching_interval")
- self.gridLayout_37.addWidget(self.lineEdit_copywriting_switching_interval, 2, 1, 1, 5)
- spacerItem42 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_37.addItem(spacerItem42, 7, 1, 1, 1)
- self.pushButton_copywriting_select = QtWidgets.QPushButton(self.widget)
- self.pushButton_copywriting_select.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_copywriting_select.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_copywriting_select.setObjectName("pushButton_copywriting_select")
- self.gridLayout_37.addWidget(self.pushButton_copywriting_select, 5, 4, 1, 1)
- self.textEdit_copywriting_edit = QtWidgets.QTextEdit(self.widget)
- self.textEdit_copywriting_edit.setStyleSheet("min-height:300px;")
- self.textEdit_copywriting_edit.setObjectName("textEdit_copywriting_edit")
- self.gridLayout_37.addWidget(self.textEdit_copywriting_edit, 6, 1, 1, 5)
- self.lineEdit_copywriting_select = QtWidgets.QLineEdit(self.widget)
- self.lineEdit_copywriting_select.setStyleSheet("min-height:50px;")
- self.lineEdit_copywriting_select.setObjectName("lineEdit_copywriting_select")
- self.gridLayout_37.addWidget(self.lineEdit_copywriting_select, 5, 1, 1, 3)
- self.checkBox_copywriting_switching_random_play = QtWidgets.QCheckBox(self.widget)
- self.checkBox_copywriting_switching_random_play.setStyleSheet("min-height:40px;")
- self.checkBox_copywriting_switching_random_play.setObjectName("checkBox_copywriting_switching_random_play")
- self.gridLayout_37.addWidget(self.checkBox_copywriting_switching_random_play, 4, 1, 1, 1)
- self.label_copywriting_switching_interval = QtWidgets.QLabel(self.widget)
- self.label_copywriting_switching_interval.setStyleSheet("")
- self.label_copywriting_switching_interval.setObjectName("label_copywriting_switching_interval")
- self.gridLayout_37.addWidget(self.label_copywriting_switching_interval, 2, 0, 1, 1)
- self.label_copywriting_switching_auto_play = QtWidgets.QLabel(self.widget)
- self.label_copywriting_switching_auto_play.setObjectName("label_copywriting_switching_auto_play")
- self.gridLayout_37.addWidget(self.label_copywriting_switching_auto_play, 3, 0, 1, 1)
- self.checkBox_copywriting_switching_auto_play = QtWidgets.QCheckBox(self.widget)
- self.checkBox_copywriting_switching_auto_play.setObjectName("checkBox_copywriting_switching_auto_play")
- self.gridLayout_37.addWidget(self.checkBox_copywriting_switching_auto_play, 3, 1, 1, 1)
- self.gridLayout_37.setColumnStretch(0, 1)
- self.gridLayout_37.setColumnStretch(1, 3)
- self.gridLayout_37.setColumnStretch(2, 1)
- self.gridLayout_37.setColumnStretch(3, 1)
- self.gridLayout_37.setColumnStretch(4, 1)
- self.gridLayout_37.setColumnStretch(5, 1)
- self.verticalLayout_2.addWidget(self.widget)
- self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2)
- self.gridLayout_38.addWidget(self.scrollArea_2, 0, 0, 1, 1)
- self.stackedWidget.addWidget(self.page_3)
- self.page_4 = QtWidgets.QWidget()
- self.page_4.setObjectName("page_4")
- self.gridLayout_39 = QtWidgets.QGridLayout(self.page_4)
- self.gridLayout_39.setObjectName("gridLayout_39")
- self.scrollArea_3 = QtWidgets.QScrollArea(self.page_4)
- self.scrollArea_3.setStyleSheet("font: 75 14pt \"微软雅黑\";\n"
-"")
- self.scrollArea_3.setWidgetResizable(True)
- self.scrollArea_3.setObjectName("scrollArea_3")
- self.scrollAreaWidgetContents_3 = QtWidgets.QWidget()
- self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 433, 911))
- self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3")
- self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_3)
- self.verticalLayout_3.setObjectName("verticalLayout_3")
- self.widget_2 = QtWidgets.QWidget(self.scrollAreaWidgetContents_3)
- self.widget_2.setObjectName("widget_2")
- self.gridLayout_40 = QtWidgets.QGridLayout(self.widget_2)
- self.gridLayout_40.setObjectName("gridLayout_40")
- self.checkBox_talk_continuous_talk = QtWidgets.QCheckBox(self.widget_2)
- self.checkBox_talk_continuous_talk.setObjectName("checkBox_talk_continuous_talk")
- self.gridLayout_40.addWidget(self.checkBox_talk_continuous_talk, 1, 1, 1, 4)
- self.lineEdit_talk_silence_threshold = QtWidgets.QLineEdit(self.widget_2)
- self.lineEdit_talk_silence_threshold.setObjectName("lineEdit_talk_silence_threshold")
- self.gridLayout_40.addWidget(self.lineEdit_talk_silence_threshold, 6, 1, 1, 4)
- self.label_talk_continuous_talk = QtWidgets.QLabel(self.widget_2)
- self.label_talk_continuous_talk.setObjectName("label_talk_continuous_talk")
- self.gridLayout_40.addWidget(self.label_talk_continuous_talk, 1, 0, 1, 1)
- self.lineEdit_talk_username = QtWidgets.QLineEdit(self.widget_2)
- self.lineEdit_talk_username.setObjectName("lineEdit_talk_username")
- self.gridLayout_40.addWidget(self.lineEdit_talk_username, 0, 1, 1, 4)
- self.label_talk_username = QtWidgets.QLabel(self.widget_2)
- self.label_talk_username.setObjectName("label_talk_username")
- self.gridLayout_40.addWidget(self.label_talk_username, 0, 0, 1, 1)
- self.textEdit_talk_chat_box = QtWidgets.QTextEdit(self.widget_2)
- self.textEdit_talk_chat_box.setObjectName("textEdit_talk_chat_box")
- self.gridLayout_40.addWidget(self.textEdit_talk_chat_box, 9, 1, 1, 1)
- self.pushButton_talk_chat_box_reread = QtWidgets.QPushButton(self.widget_2)
- self.pushButton_talk_chat_box_reread.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_talk_chat_box_reread.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_talk_chat_box_reread.setObjectName("pushButton_talk_chat_box_reread")
- self.gridLayout_40.addWidget(self.pushButton_talk_chat_box_reread, 9, 3, 1, 1)
- self.groupBox_talk_google = QtWidgets.QGroupBox(self.widget_2)
- self.groupBox_talk_google.setObjectName("groupBox_talk_google")
- self.gridLayout_41 = QtWidgets.QGridLayout(self.groupBox_talk_google)
- self.gridLayout_41.setObjectName("gridLayout_41")
- self.comboBox_talk_google_tgt_lang = QtWidgets.QComboBox(self.groupBox_talk_google)
- self.comboBox_talk_google_tgt_lang.setObjectName("comboBox_talk_google_tgt_lang")
- self.gridLayout_41.addWidget(self.comboBox_talk_google_tgt_lang, 1, 1, 1, 1)
- self.label_talk_google_tgt_lang = QtWidgets.QLabel(self.groupBox_talk_google)
- self.label_talk_google_tgt_lang.setObjectName("label_talk_google_tgt_lang")
- self.gridLayout_41.addWidget(self.label_talk_google_tgt_lang, 1, 0, 1, 1)
- self.gridLayout_41.setColumnStretch(0, 1)
- self.gridLayout_41.setColumnStretch(1, 8)
- self.gridLayout_40.addWidget(self.groupBox_talk_google, 8, 0, 1, 5)
- self.pushButton_talk_chat_box_send = QtWidgets.QPushButton(self.widget_2)
- self.pushButton_talk_chat_box_send.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_talk_chat_box_send.setStyleSheet("text-align: center;\n"
-"padding: 12px 16px;\n"
-"font: 80 10pt \"微软雅黑\";\n"
-"border:2px solid #ffffff;\n"
-"border-radius: 3px;")
- self.pushButton_talk_chat_box_send.setObjectName("pushButton_talk_chat_box_send")
- self.gridLayout_40.addWidget(self.pushButton_talk_chat_box_send, 9, 2, 1, 1)
- self.comboBox_talk_stop_trigger_key = QtWidgets.QComboBox(self.widget_2)
- self.comboBox_talk_stop_trigger_key.setObjectName("comboBox_talk_stop_trigger_key")
- self.gridLayout_40.addWidget(self.comboBox_talk_stop_trigger_key, 3, 1, 1, 4)
- self.label_talk_silence_threshold = QtWidgets.QLabel(self.widget_2)
- self.label_talk_silence_threshold.setObjectName("label_talk_silence_threshold")
- self.gridLayout_40.addWidget(self.label_talk_silence_threshold, 6, 0, 1, 1)
- self.label_talk_stop_trigger_key = QtWidgets.QLabel(self.widget_2)
- self.label_talk_stop_trigger_key.setObjectName("label_talk_stop_trigger_key")
- self.gridLayout_40.addWidget(self.label_talk_stop_trigger_key, 3, 0, 1, 1)
- self.label_talk_trigger_key = QtWidgets.QLabel(self.widget_2)
- self.label_talk_trigger_key.setObjectName("label_talk_trigger_key")
- self.gridLayout_40.addWidget(self.label_talk_trigger_key, 2, 0, 1, 1)
- self.textBrowser_talk_log = QtWidgets.QTextBrowser(self.widget_2)
- self.textBrowser_talk_log.setStyleSheet("font: 12pt \"仿宋\";\n"
-"min-height:200px;\n"
-"")
- self.textBrowser_talk_log.setObjectName("textBrowser_talk_log")
- self.gridLayout_40.addWidget(self.textBrowser_talk_log, 10, 0, 2, 5)
- self.label_talk_volume_threshold = QtWidgets.QLabel(self.widget_2)
- self.label_talk_volume_threshold.setObjectName("label_talk_volume_threshold")
- self.gridLayout_40.addWidget(self.label_talk_volume_threshold, 5, 0, 1, 1)
- self.lineEdit_talk_volume_threshold = QtWidgets.QLineEdit(self.widget_2)
- self.lineEdit_talk_volume_threshold.setObjectName("lineEdit_talk_volume_threshold")
- self.gridLayout_40.addWidget(self.lineEdit_talk_volume_threshold, 5, 1, 1, 4)
- self.label_talk_type = QtWidgets.QLabel(self.widget_2)
- self.label_talk_type.setObjectName("label_talk_type")
- self.gridLayout_40.addWidget(self.label_talk_type, 4, 0, 1, 1)
- self.label_talk_chat_box = QtWidgets.QLabel(self.widget_2)
- self.label_talk_chat_box.setObjectName("label_talk_chat_box")
- self.gridLayout_40.addWidget(self.label_talk_chat_box, 9, 0, 1, 1)
- self.comboBox_talk_trigger_key = QtWidgets.QComboBox(self.widget_2)
- self.comboBox_talk_trigger_key.setObjectName("comboBox_talk_trigger_key")
- self.gridLayout_40.addWidget(self.comboBox_talk_trigger_key, 2, 1, 1, 4)
- self.comboBox_talk_type = QtWidgets.QComboBox(self.widget_2)
- self.comboBox_talk_type.setObjectName("comboBox_talk_type")
- self.gridLayout_40.addWidget(self.comboBox_talk_type, 4, 1, 1, 4)
- self.groupBox_talk_baidu = QtWidgets.QGroupBox(self.widget_2)
- self.groupBox_talk_baidu.setObjectName("groupBox_talk_baidu")
- self.gridLayout_45 = QtWidgets.QGridLayout(self.groupBox_talk_baidu)
- self.gridLayout_45.setObjectName("gridLayout_45")
- self.lineEdit_talk_baidu_app_id = QtWidgets.QLineEdit(self.groupBox_talk_baidu)
- self.lineEdit_talk_baidu_app_id.setObjectName("lineEdit_talk_baidu_app_id")
- self.gridLayout_45.addWidget(self.lineEdit_talk_baidu_app_id, 0, 1, 1, 1)
- self.label_talk_baidu_app_id = QtWidgets.QLabel(self.groupBox_talk_baidu)
- self.label_talk_baidu_app_id.setObjectName("label_talk_baidu_app_id")
- self.gridLayout_45.addWidget(self.label_talk_baidu_app_id, 0, 0, 1, 1)
- self.lineEdit_talk_baidu_api_key = QtWidgets.QLineEdit(self.groupBox_talk_baidu)
- self.lineEdit_talk_baidu_api_key.setObjectName("lineEdit_talk_baidu_api_key")
- self.gridLayout_45.addWidget(self.lineEdit_talk_baidu_api_key, 1, 1, 1, 1)
- self.label_talk_baidu_api_key = QtWidgets.QLabel(self.groupBox_talk_baidu)
- self.label_talk_baidu_api_key.setObjectName("label_talk_baidu_api_key")
- self.gridLayout_45.addWidget(self.label_talk_baidu_api_key, 1, 0, 1, 1)
- self.label_talk_baidu_secret_key = QtWidgets.QLabel(self.groupBox_talk_baidu)
- self.label_talk_baidu_secret_key.setObjectName("label_talk_baidu_secret_key")
- self.gridLayout_45.addWidget(self.label_talk_baidu_secret_key, 2, 0, 1, 1)
- self.lineEdit_talk_baidu_secret_key = QtWidgets.QLineEdit(self.groupBox_talk_baidu)
- self.lineEdit_talk_baidu_secret_key.setObjectName("lineEdit_talk_baidu_secret_key")
- self.gridLayout_45.addWidget(self.lineEdit_talk_baidu_secret_key, 2, 1, 1, 1)
- self.gridLayout_40.addWidget(self.groupBox_talk_baidu, 7, 0, 1, 5)
- spacerItem43 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_40.addItem(spacerItem43, 0, 5, 1, 1)
- self.gridLayout_40.setRowMinimumHeight(0, 1)
- self.gridLayout_40.setRowMinimumHeight(1, 1)
- self.gridLayout_40.setRowMinimumHeight(2, 1)
- self.gridLayout_40.setRowMinimumHeight(3, 1)
- self.gridLayout_40.setRowMinimumHeight(4, 1)
- self.gridLayout_40.setRowMinimumHeight(5, 1)
- self.gridLayout_40.setRowMinimumHeight(6, 1)
- self.gridLayout_40.setRowMinimumHeight(7, 1)
- self.gridLayout_40.setRowMinimumHeight(8, 1)
- self.gridLayout_40.setRowMinimumHeight(9, 1)
- self.gridLayout_40.setRowMinimumHeight(10, 1)
- self.gridLayout_40.setColumnStretch(0, 1)
- self.gridLayout_40.setColumnStretch(1, 8)
- self.gridLayout_40.setColumnStretch(2, 1)
- self.gridLayout_40.setRowStretch(0, 1)
- self.gridLayout_40.setRowStretch(1, 1)
- self.gridLayout_40.setRowStretch(2, 1)
- self.gridLayout_40.setRowStretch(3, 1)
- self.gridLayout_40.setRowStretch(4, 1)
- self.gridLayout_40.setRowStretch(5, 1)
- self.gridLayout_40.setRowStretch(6, 1)
- self.gridLayout_40.setRowStretch(7, 1)
- self.gridLayout_40.setRowStretch(8, 1)
- self.gridLayout_40.setRowStretch(9, 1)
- self.gridLayout_40.setRowStretch(10, 5)
- self.verticalLayout_3.addWidget(self.widget_2)
- self.scrollArea_3.setWidget(self.scrollAreaWidgetContents_3)
- self.gridLayout_39.addWidget(self.scrollArea_3, 0, 0, 1, 1)
- self.stackedWidget.addWidget(self.page_4)
- self.page_5 = QtWidgets.QWidget()
- self.page_5.setObjectName("page_5")
- self.gridLayout_77 = QtWidgets.QGridLayout(self.page_5)
- self.gridLayout_77.setObjectName("gridLayout_77")
- self.scrollArea_4 = QtWidgets.QScrollArea(self.page_5)
- self.scrollArea_4.setWidgetResizable(True)
- self.scrollArea_4.setObjectName("scrollArea_4")
- self.scrollAreaWidgetContents_5 = QtWidgets.QWidget()
- self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 181, 631))
- self.scrollAreaWidgetContents_5.setObjectName("scrollAreaWidgetContents_5")
- self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_5)
- self.verticalLayout_6.setObjectName("verticalLayout_6")
- self.widget_3 = QtWidgets.QWidget(self.scrollAreaWidgetContents_5)
- self.widget_3.setObjectName("widget_3")
- self.gridLayout_78 = QtWidgets.QGridLayout(self.widget_3)
- self.gridLayout_78.setObjectName("gridLayout_78")
- self.groupBox_integral_entrance = QtWidgets.QGroupBox(self.widget_3)
- self.groupBox_integral_entrance.setObjectName("groupBox_integral_entrance")
- self.gridLayout_85 = QtWidgets.QGridLayout(self.groupBox_integral_entrance)
- self.gridLayout_85.setObjectName("gridLayout_85")
- self.gridLayout_integral_entrance = QtWidgets.QGridLayout()
- self.gridLayout_integral_entrance.setObjectName("gridLayout_integral_entrance")
- self.gridLayout_85.addLayout(self.gridLayout_integral_entrance, 0, 0, 1, 1)
- self.groupBox_integral_entrance_copywriting = QtWidgets.QGroupBox(self.groupBox_integral_entrance)
- self.groupBox_integral_entrance_copywriting.setObjectName("groupBox_integral_entrance_copywriting")
- self.gridLayout_82 = QtWidgets.QGridLayout(self.groupBox_integral_entrance_copywriting)
- self.gridLayout_82.setObjectName("gridLayout_82")
- self.gridLayout_integral_entrance_copywriting = QtWidgets.QGridLayout()
- self.gridLayout_integral_entrance_copywriting.setObjectName("gridLayout_integral_entrance_copywriting")
- self.gridLayout_82.addLayout(self.gridLayout_integral_entrance_copywriting, 0, 0, 1, 1)
- self.gridLayout_85.addWidget(self.groupBox_integral_entrance_copywriting, 1, 0, 1, 1)
- self.gridLayout_78.addWidget(self.groupBox_integral_entrance, 3, 0, 1, 1)
- self.groupBox_integral_sign = QtWidgets.QGroupBox(self.widget_3)
- self.groupBox_integral_sign.setObjectName("groupBox_integral_sign")
- self.gridLayout_83 = QtWidgets.QGridLayout(self.groupBox_integral_sign)
- self.gridLayout_83.setObjectName("gridLayout_83")
- self.gridLayout_integral_sign = QtWidgets.QGridLayout()
- self.gridLayout_integral_sign.setObjectName("gridLayout_integral_sign")
- self.gridLayout_83.addLayout(self.gridLayout_integral_sign, 0, 0, 1, 1)
- self.groupBox_integral_sign_copywriting = QtWidgets.QGroupBox(self.groupBox_integral_sign)
- self.groupBox_integral_sign_copywriting.setObjectName("groupBox_integral_sign_copywriting")
- self.gridLayout_80 = QtWidgets.QGridLayout(self.groupBox_integral_sign_copywriting)
- self.gridLayout_80.setObjectName("gridLayout_80")
- self.gridLayout_integral_sign_copywriting = QtWidgets.QGridLayout()
- self.gridLayout_integral_sign_copywriting.setObjectName("gridLayout_integral_sign_copywriting")
- self.gridLayout_80.addLayout(self.gridLayout_integral_sign_copywriting, 0, 0, 1, 1)
- self.gridLayout_83.addWidget(self.groupBox_integral_sign_copywriting, 1, 0, 1, 1)
- self.gridLayout_78.addWidget(self.groupBox_integral_sign, 1, 0, 1, 1)
- self.groupBox_integral_gift = QtWidgets.QGroupBox(self.widget_3)
- self.groupBox_integral_gift.setObjectName("groupBox_integral_gift")
- self.gridLayout_84 = QtWidgets.QGridLayout(self.groupBox_integral_gift)
- self.gridLayout_84.setObjectName("gridLayout_84")
- self.gridLayout_integral_gift = QtWidgets.QGridLayout()
- self.gridLayout_integral_gift.setObjectName("gridLayout_integral_gift")
- self.gridLayout_84.addLayout(self.gridLayout_integral_gift, 0, 0, 1, 1)
- self.groupBox_integral_gift_copywriting = QtWidgets.QGroupBox(self.groupBox_integral_gift)
- self.groupBox_integral_gift_copywriting.setObjectName("groupBox_integral_gift_copywriting")
- self.gridLayout_81 = QtWidgets.QGridLayout(self.groupBox_integral_gift_copywriting)
- self.gridLayout_81.setObjectName("gridLayout_81")
- self.gridLayout_integral_gift_copywriting = QtWidgets.QGridLayout()
- self.gridLayout_integral_gift_copywriting.setObjectName("gridLayout_integral_gift_copywriting")
- self.gridLayout_81.addLayout(self.gridLayout_integral_gift_copywriting, 0, 0, 1, 1)
- self.gridLayout_84.addWidget(self.groupBox_integral_gift_copywriting, 1, 0, 1, 1)
- self.gridLayout_78.addWidget(self.groupBox_integral_gift, 2, 0, 1, 1)
- self.groupBox_integral_crud = QtWidgets.QGroupBox(self.widget_3)
- self.groupBox_integral_crud.setObjectName("groupBox_integral_crud")
- self.gridLayout_86 = QtWidgets.QGridLayout(self.groupBox_integral_crud)
- self.gridLayout_86.setObjectName("gridLayout_86")
- self.gridLayout_integral_crud = QtWidgets.QGridLayout()
- self.gridLayout_integral_crud.setObjectName("gridLayout_integral_crud")
- self.groupBox_integral_crud_query = QtWidgets.QGroupBox(self.groupBox_integral_crud)
- self.groupBox_integral_crud_query.setObjectName("groupBox_integral_crud_query")
- self.gridLayout_73 = QtWidgets.QGridLayout(self.groupBox_integral_crud_query)
- self.gridLayout_73.setObjectName("gridLayout_73")
- self.gridLayout_integral_crud_query = QtWidgets.QGridLayout()
- self.gridLayout_integral_crud_query.setObjectName("gridLayout_integral_crud_query")
- self.gridLayout_73.addLayout(self.gridLayout_integral_crud_query, 0, 0, 1, 1)
- self.gridLayout_integral_crud.addWidget(self.groupBox_integral_crud_query, 0, 0, 1, 1)
- self.gridLayout_86.addLayout(self.gridLayout_integral_crud, 0, 0, 1, 1)
- self.gridLayout_78.addWidget(self.groupBox_integral_crud, 4, 0, 1, 1)
- self.groupBox_integral_common = QtWidgets.QGroupBox(self.widget_3)
- self.groupBox_integral_common.setObjectName("groupBox_integral_common")
- self.gridLayout_79 = QtWidgets.QGridLayout(self.groupBox_integral_common)
- self.gridLayout_79.setObjectName("gridLayout_79")
- self.gridLayout_integral_common = QtWidgets.QGridLayout()
- self.gridLayout_integral_common.setObjectName("gridLayout_integral_common")
- self.label_integral_common_enable = QtWidgets.QLabel(self.groupBox_integral_common)
- self.label_integral_common_enable.setObjectName("label_integral_common_enable")
- self.gridLayout_integral_common.addWidget(self.label_integral_common_enable, 0, 0, 1, 1)
- self.checkBox_integral_common_enable = QtWidgets.QCheckBox(self.groupBox_integral_common)
- self.checkBox_integral_common_enable.setObjectName("checkBox_integral_common_enable")
- self.gridLayout_integral_common.addWidget(self.checkBox_integral_common_enable, 0, 1, 1, 1)
- self.gridLayout_integral_common.setColumnStretch(0, 1)
- self.gridLayout_integral_common.setColumnStretch(1, 6)
- self.gridLayout_79.addLayout(self.gridLayout_integral_common, 0, 0, 1, 1)
- self.gridLayout_78.addWidget(self.groupBox_integral_common, 0, 0, 1, 1)
- spacerItem44 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout_78.addItem(spacerItem44, 0, 1, 1, 1)
- self.gridLayout_78.setColumnStretch(0, 12)
- self.gridLayout_78.setColumnStretch(1, 1)
- self.verticalLayout_6.addWidget(self.widget_3)
- self.scrollArea_4.setWidget(self.scrollAreaWidgetContents_5)
- self.gridLayout_77.addWidget(self.scrollArea_4, 0, 0, 1, 1)
- self.stackedWidget.addWidget(self.page_5)
- self.gridLayout_20.addWidget(self.stackedWidget, 0, 0, 10, 1)
- self.pushButton_talk_page = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_talk_page.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_talk_page.setStyleSheet("border: 1px solid #dcdfe6;\n"
-"background-color: #e6a23c;\n"
-"text-align: center;\n"
-"padding: 12px 16px;\n"
-"border-radius: 4px;\n"
-"font: 75 12pt \"微软雅黑\";")
- self.pushButton_talk_page.setObjectName("pushButton_talk_page")
- self.gridLayout_20.addWidget(self.pushButton_talk_page, 6, 1, 1, 1)
- self.pushButton_integral_page = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_integral_page.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_integral_page.setStyleSheet("border: 1px solid #dcdfe6;\n"
-"background-color: #e6a23c;\n"
-"text-align: center;\n"
-"padding: 12px 16px;\n"
-"border-radius: 4px;\n"
-"font: 75 12pt \"微软雅黑\";")
- self.pushButton_integral_page.setObjectName("pushButton_integral_page")
- self.gridLayout_20.addWidget(self.pushButton_integral_page, 7, 1, 1, 1)
- self.pushButton_factory = QtWidgets.QPushButton(self.centralwidget)
- self.pushButton_factory.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
- self.pushButton_factory.setStyleSheet("border: 1px solid #dcdfe6;\n"
-"background-color: #f56c6c;\n"
-"text-align: center;\n"
-"padding: 12px 16px;\n"
-"border-radius: 4px;\n"
-"font: 75 12pt \"微软雅黑\";")
- self.pushButton_factory.setObjectName("pushButton_factory")
- self.gridLayout_20.addWidget(self.pushButton_factory, 9, 1, 1, 1)
- MainWindow.setCentralWidget(self.centralwidget)
- self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 1191, 26))
- self.menubar.setObjectName("menubar")
- self.menu_about = QtWidgets.QMenu(self.menubar)
- self.menu_about.setObjectName("menu_about")
- self.menu = QtWidgets.QMenu(self.menubar)
- self.menu.setObjectName("menu")
- MainWindow.setMenuBar(self.menubar)
- self.statusbar = QtWidgets.QStatusBar(MainWindow)
- self.statusbar.setObjectName("statusbar")
- MainWindow.setStatusBar(self.statusbar)
- self.action_official_store = QtWidgets.QAction(MainWindow)
- self.action_official_store.setObjectName("action_official_store")
- self.action_video_tutorials = QtWidgets.QAction(MainWindow)
- self.action_video_tutorials.setObjectName("action_video_tutorials")
- self.action_exit = QtWidgets.QAction(MainWindow)
- self.action_exit.setObjectName("action_exit")
- self.action_online_doc = QtWidgets.QAction(MainWindow)
- self.action_online_doc.setObjectName("action_online_doc")
- self.action_about = QtWidgets.QAction(MainWindow)
- self.action_about.setObjectName("action_about")
- self.action_tip1 = QtWidgets.QAction(MainWindow)
- self.action_tip1.setObjectName("action_tip1")
- self.action_official_qq_group = QtWidgets.QAction(MainWindow)
- self.action_official_qq_group.setObjectName("action_official_qq_group")
- self.menu_about.addAction(self.action_official_store)
- self.menu_about.addAction(self.action_video_tutorials)
- self.menu_about.addAction(self.action_online_doc)
- self.menu_about.addAction(self.action_about)
- self.menu_about.addSeparator()
- self.menu_about.addAction(self.action_tip1)
- self.menu_about.addAction(self.action_official_qq_group)
- self.menu.addAction(self.action_exit)
- self.menubar.addAction(self.menu.menuAction())
- self.menubar.addAction(self.menu_about.menuAction())
-
- self.retranslateUi(MainWindow)
- self.stackedWidget.setCurrentIndex(0)
- QtCore.QMetaObject.connectSlotsByName(MainWindow)
-
- def retranslateUi(self, MainWindow):
- _translate = QtCore.QCoreApplication.translate
- MainWindow.setWindowTitle(_translate("MainWindow", "AI Vtuber"))
- self.pushButton_run_page.setText(_translate("MainWindow", "②运行页"))
- self.pushButton_copywriting_page.setText(_translate("MainWindow", "③文案页"))
- self.pushButton_run.setText(_translate("MainWindow", "运行"))
- self.pushButton_config_page.setText(_translate("MainWindow", "①配置页"))
- self.pushButton_save.setText(_translate("MainWindow", "保存配置"))
- self.groupBox_read_comment.setTitle(_translate("MainWindow", "念弹幕"))
- self.label_before_prompt.setText(_translate("MainWindow", "提示词前缀"))
- self.groupBox_audio_random_speed.setTitle(_translate("MainWindow", "音频随机变速"))
- self.label_audio_random_speed_normal_enable.setText(_translate("MainWindow", "普通音频变速"))
- self.label_audio_random_speed_normal_speed_min.setText(_translate("MainWindow", "速度下限"))
- self.label_audio_random_speed_normal_speed_max.setText(_translate("MainWindow", "速度上限"))
- self.checkBox_audio_random_speed_normal_enable.setText(_translate("MainWindow", "启用"))
- self.label_audio_random_speed_copywriting_enable.setText(_translate("MainWindow", "文案音频变速"))
- self.checkBox_audio_random_speed_copywriting_enable.setText(_translate("MainWindow", "启用"))
- self.label_audio_random_speed_copywriting_speed_min.setText(_translate("MainWindow", "速度下限"))
- self.label_audio_random_speed_copywriting_speed_max.setText(_translate("MainWindow", "速度上限"))
- self.groupBox_read_user_name.setTitle(_translate("MainWindow", "念用户名"))
- self.label_read_user_name_reply_before.setText(_translate("MainWindow", "前置回复"))
- self.label_read_user_name_enable.setText(_translate("MainWindow", "启用"))
- self.checkBox_read_user_name_enable.setText(_translate("MainWindow", "是"))
- self.label_read_user_name_voice_change.setText(_translate("MainWindow", "启用变声"))
- self.checkBox_read_user_name_voice_change.setText(_translate("MainWindow", "是"))
- self.label_read_user_name_reply_after.setText(_translate("MainWindow", "后置回复"))
- self.groupBox_play_audio.setTitle(_translate("MainWindow", "音频播放"))
- self.label_platform.setText(_translate("MainWindow", "平台"))
- self.label_need_lang.setText(_translate("MainWindow", "回复语言"))
- self.groupBox_show_box.setTitle(_translate("MainWindow", "自定义显示板块"))
- self.groupBox_claude2.setTitle(_translate("MainWindow", "Claude2"))
- self.label_claude2_proxies_https.setText(_translate("MainWindow", "https代理地址"))
- self.label_claude2_proxies_socks5.setText(_translate("MainWindow", "socks5代理地址"))
- self.checkBox_claude2_use_proxy.setText(_translate("MainWindow", "启用"))
- self.label_claude2_cookie.setText(_translate("MainWindow", "cookie"))
- self.label_claude2_use_proxy.setText(_translate("MainWindow", "启用代理"))
- self.label_claude2_proxies_http.setText(_translate("MainWindow", "http代理地址"))
- self.groupBox_xuniren.setTitle(_translate("MainWindow", "xuniren"))
- self.label_after_prompt.setText(_translate("MainWindow", "提示词后缀"))
- self.groupBox_chatglm.setTitle(_translate("MainWindow", "ChatGLM"))
- self.label_chatglm_api_ip_port.setText(_translate("MainWindow", "api地址"))
- self.label_chatglm_history_max_len.setText(_translate("MainWindow", "最大记忆长度"))
- self.label_chatglm_top_p.setText(_translate("MainWindow", "前p个选择"))
- self.label_chatglm_temperature.setText(_translate("MainWindow", "温度"))
- self.label_chatglm_max_length.setText(_translate("MainWindow", "最大长度限制"))
- self.label_chatglm_history_enable.setText(_translate("MainWindow", "上下文记忆"))
- self.checkBox_chatglm_history_enable.setText(_translate("MainWindow", "启用"))
- self.label_room_display_id.setText(_translate("MainWindow", "直播间号"))
- self.groupBox_openai.setTitle(_translate("MainWindow", "openai"))
- self.label_openai_api.setText(_translate("MainWindow", "API"))
- self.label_openai_api_key.setText(_translate("MainWindow", "API KEY"))
- self.label_visual_body.setText(_translate("MainWindow", "虚拟身体"))
- self.label_chat_type.setText(_translate("MainWindow", "聊天类型"))
- self.groupBox_local_qa.setTitle(_translate("MainWindow", "本地问答"))
- self.label_local_qa_audio_enable.setText(_translate("MainWindow", "音频匹配"))
- self.label_local_qa_text_enable.setText(_translate("MainWindow", "文本匹配"))
- self.checkBox_local_qa_text_enable.setText(_translate("MainWindow", "启用"))
- self.label_local_qa_audio_similarity.setText(_translate("MainWindow", "音频最低相似度"))
- self.checkBox_local_qa_audio_enable.setText(_translate("MainWindow", "启用"))
- self.label_local_qa_text_similarity.setText(_translate("MainWindow", "文本最低相似度"))
- self.label_local_qa_audio_file_path.setText(_translate("MainWindow", "音频存储路径"))
- self.label_local_qa_text_file_path.setText(_translate("MainWindow", "文本问答数据路径"))
- self.label_local_qa_text_type.setText(_translate("MainWindow", "文本问答算法类型"))
- self.comboBox_local_qa_text_type.setItemText(0, _translate("MainWindow", "自定义json"))
- self.comboBox_local_qa_text_type.setItemText(1, _translate("MainWindow", "一问一答"))
- self.groupBox_claude.setTitle(_translate("MainWindow", "Claude"))
- self.label_claude_slack_user_token.setText(_translate("MainWindow", "slack_user_token"))
- self.label_claude_bot_user_id.setText(_translate("MainWindow", "bot_user_id"))
- self.comboBox_need_lang.setItemText(0, _translate("MainWindow", "所有"))
- self.comboBox_need_lang.setItemText(1, _translate("MainWindow", "中文"))
- self.comboBox_need_lang.setItemText(2, _translate("MainWindow", "英文"))
- self.comboBox_need_lang.setItemText(3, _translate("MainWindow", "日文"))
- self.groupBox_log.setTitle(_translate("MainWindow", "日志"))
- self.comboBox_comment_log_type.setItemText(0, _translate("MainWindow", "问答"))
- self.comboBox_comment_log_type.setItemText(1, _translate("MainWindow", "问题"))
- self.comboBox_comment_log_type.setItemText(2, _translate("MainWindow", "回答"))
- self.comboBox_comment_log_type.setItemText(3, _translate("MainWindow", "不记录"))
- self.label_comment_log_type.setText(_translate("MainWindow", "弹幕日志类型"))
- self.label_captions_file_path.setText(_translate("MainWindow", "字幕日志路径"))
- self.label_captions_enable.setText(_translate("MainWindow", "字幕日志"))
- self.checkBox_captions_enable.setText(_translate("MainWindow", "启用"))
- self.groupBox_filter.setTitle(_translate("MainWindow", "过滤"))
- self.label_filter_talk_forget_reserve_num.setText(_translate("MainWindow", "聊天保留数"))
- self.label_filter_comment_forget_reserve_num.setText(_translate("MainWindow", "弹幕保留数"))
- self.label_filter_max_len.setText(_translate("MainWindow", "最大单词数"))
- self.label_filter_max_char_len.setText(_translate("MainWindow", "最大字符数"))
- self.label_filter_entrance_forget_reserve_num.setText(_translate("MainWindow", "入场保留数"))
- self.label_filter_talk_forget_duration.setText(_translate("MainWindow", "聊天遗忘间隔"))
- self.label_filter_badwords_path.setText(_translate("MainWindow", "违禁词路径"))
- self.label_filter_schedule_forget_duration.setText(_translate("MainWindow", "定时遗忘间隔"))
- self.label_filter_comment_forget_duration.setText(_translate("MainWindow", "弹幕遗忘间隔"))
- self.label_filter_follow_forget_duration.setText(_translate("MainWindow", "关注遗忘间隔"))
- self.label_filter_bad_pinyin_path.setText(_translate("MainWindow", "违禁拼音路径"))
- self.label_filter_gift_forget_reserve_num.setText(_translate("MainWindow", "礼物保留数"))
- self.label_filter_before_must_str.setText(_translate("MainWindow", "弹幕前缀"))
- self.label_filter_after_must_str.setText(_translate("MainWindow", "弹幕后缀"))
- self.label_filter_schedule_forget_reserve_num.setText(_translate("MainWindow", "定时保留数"))
- self.label_filter_gift_forget_duration.setText(_translate("MainWindow", "礼物遗忘间隔"))
- self.label_filter_entrance_forget_duration.setText(_translate("MainWindow", "入场遗忘间隔"))
- self.label_filter_follow_forget_reserve_num.setText(_translate("MainWindow", "关注保留数"))
- self.groupBox_twitch.setTitle(_translate("MainWindow", "twitch"))
- self.label_audio_synthesis_type.setText(_translate("MainWindow", "语音合成"))
- self.comboBox_chat_type.setItemText(0, _translate("MainWindow", "不启用"))
- self.comboBox_chat_type.setItemText(1, _translate("MainWindow", "复读机"))
- self.comboBox_chat_type.setItemText(2, _translate("MainWindow", "ChatGPT"))
- self.comboBox_chat_type.setItemText(3, _translate("MainWindow", "Claude"))
- self.comboBox_chat_type.setItemText(4, _translate("MainWindow", "ChatGLM"))
- self.comboBox_chat_type.setItemText(5, _translate("MainWindow", "chat_with_file"))
- self.comboBox_chat_type.setItemText(6, _translate("MainWindow", "Chatterbot"))
- self.comboBox_chat_type.setItemText(7, _translate("MainWindow", "text-generation-webui"))
- self.comboBox_chat_type.setItemText(8, _translate("MainWindow", "讯飞星火"))
- self.comboBox_chat_type.setItemText(9, _translate("MainWindow", "Langchain_ChatGLM"))
- self.groupBox_bilibili.setTitle(_translate("MainWindow", "哔哩哔哩"))
- self.groupBox_thanks.setTitle(_translate("MainWindow", "答谢"))
- self.label_thanks_follow_enable.setText(_translate("MainWindow", "关注答谢"))
- self.label_thanks_entrance_enable.setText(_translate("MainWindow", "入场欢迎"))
- self.label_thanks_entrance_copy.setText(_translate("MainWindow", "入场文案"))
- self.label_thanks_follow_copy.setText(_translate("MainWindow", "关注文案"))
- self.label_thanks_gift_copy.setText(_translate("MainWindow", "礼物文案"))
- self.label_thanks_gift_enable.setText(_translate("MainWindow", "礼物答谢"))
- self.checkBox_thanks_gift_enable.setText(_translate("MainWindow", "启用"))
- self.label_thanks_lowest_price.setText(_translate("MainWindow", "最低答谢价格"))
- self.checkBox_thanks_entrance_enable.setText(_translate("MainWindow", "启用"))
- self.checkBox_thanks_follow_enable.setText(_translate("MainWindow", "启用"))
- self.groupBox_chatgpt.setTitle(_translate("MainWindow", "chatgpt"))
- self.label_chatgpt_model.setText(_translate("MainWindow", "模型"))
- self.label_chatgpt_max_tokens.setText(_translate("MainWindow", "最大令牌数"))
- self.label_chatgpt_temperature.setText(_translate("MainWindow", "温度"))
- self.label_chatgpt_top_p.setText(_translate("MainWindow", "前p个选择"))
- self.label_chatgpt_frequency_penalty.setText(_translate("MainWindow", "频率惩罚"))
- self.label_chatgpt_presence_penalty.setText(_translate("MainWindow", "存在惩罚"))
- self.label_chatgpt_preset.setText(_translate("MainWindow", "预设"))
- self.comboBox_chatgpt_model.setItemText(0, _translate("MainWindow", "gpt-3.5-turbo"))
- self.comboBox_chatgpt_model.setItemText(1, _translate("MainWindow", "gpt-3.5-turbo-0301"))
- self.comboBox_chatgpt_model.setItemText(2, _translate("MainWindow", "gpt-3.5-turbo-0613"))
- self.comboBox_chatgpt_model.setItemText(3, _translate("MainWindow", "gpt-3.5-turbo-16k"))
- self.comboBox_chatgpt_model.setItemText(4, _translate("MainWindow", "gpt-3.5-turbo-16k-0613"))
- self.comboBox_chatgpt_model.setItemText(5, _translate("MainWindow", "gpt-4"))
- self.comboBox_chatgpt_model.setItemText(6, _translate("MainWindow", "gpt-4-0314"))
- self.comboBox_chatgpt_model.setItemText(7, _translate("MainWindow", "gpt-4-0613"))
- self.comboBox_chatgpt_model.setItemText(8, _translate("MainWindow", "gpt-4-32k"))
- self.comboBox_chatgpt_model.setItemText(9, _translate("MainWindow", "gpt-4-32k-0314"))
- self.comboBox_chatgpt_model.setItemText(10, _translate("MainWindow", "gpt-4-32k-0613"))
- self.comboBox_chatgpt_model.setItemText(11, _translate("MainWindow", "text-embedding-ada-002"))
- self.comboBox_chatgpt_model.setItemText(12, _translate("MainWindow", "text-davinci-003"))
- self.comboBox_chatgpt_model.setItemText(13, _translate("MainWindow", "text-davinci-002"))
- self.comboBox_chatgpt_model.setItemText(14, _translate("MainWindow", "text-curie-001"))
- self.comboBox_chatgpt_model.setItemText(15, _translate("MainWindow", "text-babbage-001"))
- self.comboBox_chatgpt_model.setItemText(16, _translate("MainWindow", "text-ada-001"))
- self.comboBox_chatgpt_model.setItemText(17, _translate("MainWindow", "text-moderation-latest"))
- self.comboBox_chatgpt_model.setItemText(18, _translate("MainWindow", "text-moderation-stable"))
- self.groupBox_audio_player.setTitle(_translate("MainWindow", "audio_player"))
- self.groupBox_zhipu.setTitle(_translate("MainWindow", "智谱AI"))
- self.groupBox_langchain_chatglm.setTitle(_translate("MainWindow", "Langchain_ChatGLM"))
- self.label_langchain_chatglm_api_ip_port.setText(_translate("MainWindow", "api地址"))
- self.label_langchain_chatglm_chat_type.setText(_translate("MainWindow", "聊天类型"))
- self.label_langchain_chatglm_history_enable.setText(_translate("MainWindow", "上下文记忆"))
- self.checkBox_langchain_chatglm_history_enable.setText(_translate("MainWindow", "启用"))
- self.label_langchain_chatglm_knowledge_base_id.setText(_translate("MainWindow", "知识库名称"))
- self.label_langchain_chatglm_history_max_len.setText(_translate("MainWindow", "最大记忆长度"))
- self.groupBox_chat_with_file.setTitle(_translate("MainWindow", "chat_with_file"))
- self.label_chat_with_file_local_vector_embedding_model.setText(_translate("MainWindow", "模型"))
- self.label_chat_with_file_data_path.setText(_translate("MainWindow", "pdf文件路径"))
- self.label_chat_with_file_show_token_cost.setText(_translate("MainWindow", "显示成本"))
- self.label_chat_with_file_chat_mode.setText(_translate("MainWindow", "聊天模式"))
- self.label_chat_with_file_local_max_query.setText(_translate("MainWindow", "最大查询数据库次数"))
- self.label_chat_with_file_question_prompt.setText(_translate("MainWindow", "问题总结提示词"))
- self.label_chat_with_file_chunk_size.setText(_translate("MainWindow", "块大小"))
- self.label_chat_with_file_chain_type.setText(_translate("MainWindow", "链类型"))
- self.checkBox_chat_with_file_show_token_cost.setText(_translate("MainWindow", "启用"))
- self.comboBox_chat_with_file_chat_mode.setItemText(0, _translate("MainWindow", "claude"))
- self.comboBox_chat_with_file_chat_mode.setItemText(1, _translate("MainWindow", "openai_gpt"))
- self.comboBox_chat_with_file_chat_mode.setItemText(2, _translate("MainWindow", "openai_vector_search"))
- self.label_chat_with_file_separator.setText(_translate("MainWindow", "分隔符"))
- self.label_chat_with_file_chunk_overlap.setText(_translate("MainWindow", "块重叠"))
- self.comboBox_chat_with_file_local_vector_embedding_model.setItemText(0, _translate("MainWindow", "sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco"))
- self.comboBox_chat_with_file_local_vector_embedding_model.setItemText(1, _translate("MainWindow", "GanymedeNil/text2vec-large-chinese"))
- self.groupBox_text_generation_webui.setTitle(_translate("MainWindow", "text-generation-webui"))
- self.label_text_generation_webui_max_new_tokens.setText(_translate("MainWindow", "max_new_tokens"))
- self.label_text_generation_webui_character.setText(_translate("MainWindow", "角色"))
- self.label_text_generation_webui_api_ip_port.setText(_translate("MainWindow", "api地址"))
- self.label_text_generation_webui_instruction_template.setText(_translate("MainWindow", "instruction_template"))
- self.label_text_generation_webui_mode.setText(_translate("MainWindow", "模式"))
- self.label_text_generation_webui_your_name.setText(_translate("MainWindow", "你的名字"))
- self.groupBox_sparkdesk.setTitle(_translate("MainWindow", "讯飞星火"))
- self.label_sparkdesk_api_key.setText(_translate("MainWindow", "api_key"))
- self.label_sparkdesk_api_secret.setText(_translate("MainWindow", "api_secret"))
- self.label_sparkdesk_cookie.setText(_translate("MainWindow", "cookie"))
- self.label_sparkdesk_type.setText(_translate("MainWindow", "类型"))
- self.label_sparkdesk_app_id.setText(_translate("MainWindow", "app_id"))
- self.label_sparkdesk_fd.setText(_translate("MainWindow", "fd"))
- self.label_sparkdesk_GtToken.setText(_translate("MainWindow", "GtToken"))
- self.label_sparkdesk_version.setText(_translate("MainWindow", "版本"))
- self.groupBox_bard.setTitle(_translate("MainWindow", "Bard"))
- self.groupBox_yiyan.setTitle(_translate("MainWindow", "文心一言"))
- self.groupBox_tongyi.setTitle(_translate("MainWindow", "通义千问"))
- self.groupBox_chatterbot.setTitle(_translate("MainWindow", "Chatterbot"))
- self.label_chatterbot_name.setText(_translate("MainWindow", "bot名称"))
- self.label_chatterbot_db_path.setText(_translate("MainWindow", "数据库路径"))
- self.groupBox_edge_tts.setTitle(_translate("MainWindow", "Edge-TTS"))
- self.label_edge_tts_rate.setText(_translate("MainWindow", "语速增益"))
- self.label_edge_tts_voice.setText(_translate("MainWindow", "说话人"))
- self.label_edge_tts_volume.setText(_translate("MainWindow", "音量增益"))
- self.groupBox_vits.setTitle(_translate("MainWindow", "VITS"))
- self.groupBox_vits_fast.setTitle(_translate("MainWindow", "VITS-Fast"))
- self.label_vits_fast_config_path.setText(_translate("MainWindow", "配置文件路径"))
- self.label_vits_fast_speed.setText(_translate("MainWindow", "语速"))
- self.label_vits_fast_character.setText(_translate("MainWindow", "说话人"))
- self.label_vits_fast_api_ip_port.setText(_translate("MainWindow", "API地址"))
- self.label_vits_fast_language.setText(_translate("MainWindow", "语言"))
- self.comboBox_vits_fast_language.setItemText(0, _translate("MainWindow", "自动识别"))
- self.comboBox_vits_fast_language.setItemText(1, _translate("MainWindow", "日本語"))
- self.comboBox_vits_fast_language.setItemText(2, _translate("MainWindow", "简体中文"))
- self.comboBox_vits_fast_language.setItemText(3, _translate("MainWindow", "English"))
- self.comboBox_vits_fast_language.setItemText(4, _translate("MainWindow", "Mix"))
- self.groupBox_genshinvoice_top.setTitle(_translate("MainWindow", "genshinvoice_top"))
- self.label_genshinvoice_top_speaker.setText(_translate("MainWindow", "角色"))
- self.label_genshinvoice_top_noisew.setText(_translate("MainWindow", "音素长度"))
- self.label_genshinvoice_top_format.setText(_translate("MainWindow", "格式"))
- self.label_genshinvoice_top_length.setText(_translate("MainWindow", "语速"))
- self.label_genshinvoice_top_noise.setText(_translate("MainWindow", "感情"))
- self.label_genshinvoice_top_language.setText(_translate("MainWindow", "语言"))
- self.groupBox_elevenlabs.setTitle(_translate("MainWindow", "elevenlabs"))
- self.label_elevenlabs_voice.setText(_translate("MainWindow", "说话人"))
- self.label_elevenlabs_api_key.setText(_translate("MainWindow", "api密钥"))
- self.label_elevenlabs_model.setText(_translate("MainWindow", "模型"))
- self.groupBox_bark_gui.setTitle(_translate("MainWindow", "bark-gui"))
- self.label_bark_gui_api_ip_port.setText(_translate("MainWindow", "API地址"))
- self.label_bark_gui_quick_generation.setText(_translate("MainWindow", "快速生成"))
- self.label_bark_gui_batch_count.setText(_translate("MainWindow", "批量数"))
- self.label_bark_gui_end_of_sentence_probability.setText(_translate("MainWindow", "句末概率"))
- self.label_bark_gui_seed.setText(_translate("MainWindow", "随机种子"))
- self.label_bark_gui_generation_temperature.setText(_translate("MainWindow", "生成温度"))
- self.label_bark_gui_waveform_temperature.setText(_translate("MainWindow", "波形温度"))
- self.label_bark_gui_spk.setText(_translate("MainWindow", "说话人"))
- self.checkBox_bark_gui_quick_generation.setText(_translate("MainWindow", "启用"))
- self.groupBox_vall_e_x.setTitle(_translate("MainWindow", "VALL-E-X"))
- self.groupBox_openai_tts.setTitle(_translate("MainWindow", "OpenAI TTS"))
- self.groupBox_live2d.setTitle(_translate("MainWindow", "Live2D"))
- self.checkBox_live2d_enable.setText(_translate("MainWindow", "是"))
- self.label_live2d_port.setText(_translate("MainWindow", "端口"))
- self.label_live2d_enable.setText(_translate("MainWindow", "启用"))
- self.label_live2d_name.setText(_translate("MainWindow", "模型名"))
- self.groupBox_choose_song.setTitle(_translate("MainWindow", "点歌模式"))
- self.label_choose_song_stop_cmd.setText(_translate("MainWindow", "取消点歌命令"))
- self.label_choose_song_song_path.setText(_translate("MainWindow", "歌曲路径"))
- self.checkBox_choose_song_enable.setText(_translate("MainWindow", "是"))
- self.label_choose_song_start_cmd.setText(_translate("MainWindow", "点歌触发命令"))
- self.label_choose_song_enable.setText(_translate("MainWindow", "启用"))
- self.label_choose_song_match_fail_copy.setText(_translate("MainWindow", "匹配失败文案"))
- self.label_choose_song_random_cmd.setText(_translate("MainWindow", "随机点歌命令"))
- self.groupBox_schedule.setTitle(_translate("MainWindow", "定时任务"))
- self.groupBox_idle_time_task.setTitle(_translate("MainWindow", "闲时任务"))
- self.groupBox_idle_time_task_comment.setTitle(_translate("MainWindow", "LLM模式"))
- self.groupBox_idle_time_task_local_audio.setTitle(_translate("MainWindow", "本地音频模式"))
- self.groupBox_ddsp_svc.setTitle(_translate("MainWindow", "DDSP_SVC"))
- self.label_ddsp_svc_enable.setText(_translate("MainWindow", "启用"))
- self.label_ddsp_svc_fSafePrefixPadLength.setText(_translate("MainWindow", "安全前缀填充长度"))
- self.checkBox_ddsp_svc_enable.setText(_translate("MainWindow", "是"))
- self.label_ddsp_svc_api_ip_port.setText(_translate("MainWindow", "API地址"))
- self.label_ddsp_svc_config_path.setText(_translate("MainWindow", "配置文件路径"))
- self.label_ddsp_svc_sSpeakId.setText(_translate("MainWindow", "说话人ID"))
- self.label_ddsp_svc_fPitchChange.setText(_translate("MainWindow", "变调"))
- self.label_ddsp_svc_sampleRate.setText(_translate("MainWindow", "采样率"))
- self.groupBox_so_vits_svc.setTitle(_translate("MainWindow", "so-vits-svc"))
- self.checkBox_so_vits_svc_enable.setText(_translate("MainWindow", "是"))
- self.label_so_vits_svc_config_path.setText(_translate("MainWindow", "配置文件路径"))
- self.label_so_vits_svc_api_ip_port.setText(_translate("MainWindow", "API地址"))
- self.label_so_vits_svc_enable.setText(_translate("MainWindow", "启用"))
- self.label_so_vits_svc_spk.setText(_translate("MainWindow", "说话人"))
- self.label_so_vits_svc_tran.setText(_translate("MainWindow", "音调"))
- self.label_so_vits_svc_wav_format.setText(_translate("MainWindow", "输出音频格式"))
- self.groupBox_sd.setTitle(_translate("MainWindow", "Stable Diffusion"))
- self.label_sd_port.setText(_translate("MainWindow", "端口"))
- self.label_sd_enable_hr.setText(_translate("MainWindow", "高分辨率生成"))
- self.label_sd_hr_scale.setText(_translate("MainWindow", "高分辨率缩放因子"))
- self.label_sd_hr_resize_x.setText(_translate("MainWindow", "图像水平像素"))
- self.label_sd_hr_second_pass_steps.setText(_translate("MainWindow", "高分生二次传递步数"))
- self.label_sd_denoising_strength.setText(_translate("MainWindow", "去噪强度"))
- self.label_prompt_llm_type.setText(_translate("MainWindow", "LLM类型"))
- self.label_prompt_llm_before_prompt.setText(_translate("MainWindow", "提示词前缀"))
- self.checkBox_sd_enable_hr.setText(_translate("MainWindow", "启用"))
- self.label_sd_trigger.setText(_translate("MainWindow", "弹幕触发前缀"))
- self.label_sd_ip.setText(_translate("MainWindow", "IP地址"))
- self.label_sd_steps.setText(_translate("MainWindow", "生成图像步数"))
- self.label_sd_seed.setText(_translate("MainWindow", "随机种子"))
- self.label_sd_styles.setText(_translate("MainWindow", "图像风格"))
- self.label_sd_enable.setText(_translate("MainWindow", "启用"))
- self.label_sd_cfg_scale.setText(_translate("MainWindow", "提示词相关性"))
- self.label_sd_hr_resize_y.setText(_translate("MainWindow", "图像垂直像素"))
- self.checkBox_sd_enable.setText(_translate("MainWindow", "是"))
- self.label_sd_negative_prompt.setText(_translate("MainWindow", "负面提示词"))
- self.label_prompt_llm_after_prompt.setText(_translate("MainWindow", "提示词后缀"))
- self.groupBox_trends_copywriting.setTitle(_translate("MainWindow", "动态文案"))
- self.label_trends_copywriting_random_play.setText(_translate("MainWindow", "随机播放"))
- self.checkBox_trends_copywriting_random_play.setText(_translate("MainWindow", "启用"))
- self.label_trends_copywriting_play_interval.setText(_translate("MainWindow", "文案播放间隔"))
- self.label_trends_copywriting_enable.setText(_translate("MainWindow", "启用"))
- self.checkBox_trends_copywriting_enable.setText(_translate("MainWindow", "是"))
- self.groupBox_header.setTitle(_translate("MainWindow", "请求头"))
- self.label_header_useragent.setText(_translate("MainWindow", "userAgent"))
- self.lineEdit_header_useragent.setText(_translate("MainWindow", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42"))
- self.groupBox_web_captions_printer.setTitle(_translate("MainWindow", "web字幕打印机"))
- self.groupBox_database.setTitle(_translate("MainWindow", "数据库"))
- self.groupBox_key_mapping.setTitle(_translate("MainWindow", "按键映射"))
- self.checkBox_key_mapping_enable.setText(_translate("MainWindow", "是"))
- self.label_key_mapping_enable.setText(_translate("MainWindow", "启用"))
- self.label_key_mapping_start_cmd.setText(_translate("MainWindow", "命令前缀"))
- self.label_key_mapping_type.setText(_translate("MainWindow", "类型"))
- self.groupBox_unity.setTitle(_translate("MainWindow", "Unity"))
- self.textBrowser.setHtml(_translate("MainWindow", "\n"
-"
\n"
-"
"))
- self.label_copywriting_edit.setText(_translate("MainWindow", "编辑文案"))
- self.pushButton_copywriting_save.setText(_translate("MainWindow", "保存文案"))
- self.pushButton_copywriting_config_index_add.setText(_translate("MainWindow", "增加"))
- self.label_copywriting_config_index.setText(_translate("MainWindow", "文案编号"))
- self.pushButton_copywriting_config_index_del.setText(_translate("MainWindow", "删除"))
- self.pushButton_copywriting_pause_play.setText(_translate("MainWindow", "暂停播放"))
- self.pushButton_copywriting_synthetic_audio.setText(_translate("MainWindow", "合成音频"))
- self.pushButton_copywriting_loop_play.setText(_translate("MainWindow", "循环播放"))
- self.pushButton_copywriting_refresh_list.setText(_translate("MainWindow", "刷新列表"))
- self.label_copywriting_select.setText(_translate("MainWindow", "选择文案"))
- self.label_copywriting_switching_random_play.setText(_translate("MainWindow", "音频随机播放"))
- self.label_copywriting_audio_interval.setText(_translate("MainWindow", "音频播放间隔"))
- self.pushButton_copywriting_select.setText(_translate("MainWindow", "加载"))
- self.checkBox_copywriting_switching_random_play.setText(_translate("MainWindow", "启用"))
- self.label_copywriting_switching_interval.setText(_translate("MainWindow", "音频切换间隔"))
- self.label_copywriting_switching_auto_play.setText(_translate("MainWindow", "自动播放"))
- self.checkBox_copywriting_switching_auto_play.setText(_translate("MainWindow", "启用"))
- self.checkBox_talk_continuous_talk.setText(_translate("MainWindow", "启用"))
- self.label_talk_continuous_talk.setText(_translate("MainWindow", "连续对话"))
- self.label_talk_username.setText(_translate("MainWindow", "你的名字"))
- self.pushButton_talk_chat_box_reread.setText(_translate("MainWindow", "直接复读"))
- self.groupBox_talk_google.setTitle(_translate("MainWindow", "谷歌"))
- self.label_talk_google_tgt_lang.setText(_translate("MainWindow", "目标翻译语言"))
- self.pushButton_talk_chat_box_send.setText(_translate("MainWindow", "发送"))
- self.label_talk_silence_threshold.setText(_translate("MainWindow", "沉默阈值"))
- self.label_talk_stop_trigger_key.setText(_translate("MainWindow", "停录按键"))
- self.label_talk_trigger_key.setText(_translate("MainWindow", "录音按键"))
- self.label_talk_volume_threshold.setText(_translate("MainWindow", "音量阈值"))
- self.label_talk_type.setText(_translate("MainWindow", "录音类型"))
- self.label_talk_chat_box.setText(_translate("MainWindow", "聊天框"))
- self.groupBox_talk_baidu.setTitle(_translate("MainWindow", "百度"))
- self.label_talk_baidu_app_id.setText(_translate("MainWindow", "AppID"))
- self.label_talk_baidu_api_key.setText(_translate("MainWindow", "API Key"))
- self.label_talk_baidu_secret_key.setText(_translate("MainWindow", "Secret Key"))
- self.groupBox_integral_entrance.setTitle(_translate("MainWindow", "入场"))
- self.groupBox_integral_entrance_copywriting.setTitle(_translate("MainWindow", "文案"))
- self.groupBox_integral_sign.setTitle(_translate("MainWindow", "签到"))
- self.groupBox_integral_sign_copywriting.setTitle(_translate("MainWindow", "文案"))
- self.groupBox_integral_gift.setTitle(_translate("MainWindow", "礼物"))
- self.groupBox_integral_gift_copywriting.setTitle(_translate("MainWindow", "文案"))
- self.groupBox_integral_crud.setTitle(_translate("MainWindow", "增删改查"))
- self.groupBox_integral_crud_query.setTitle(_translate("MainWindow", "查询"))
- self.groupBox_integral_common.setTitle(_translate("MainWindow", "通用"))
- self.label_integral_common_enable.setText(_translate("MainWindow", "启用"))
- self.checkBox_integral_common_enable.setText(_translate("MainWindow", "是"))
- self.pushButton_talk_page.setText(_translate("MainWindow", "④聊天页"))
- self.pushButton_integral_page.setText(_translate("MainWindow", "⑤积分页"))
- self.pushButton_factory.setText(_translate("MainWindow", "恢复出厂配置"))
- self.menu_about.setTitle(_translate("MainWindow", "帮助"))
- self.menu.setTitle(_translate("MainWindow", "文件"))
- self.action_official_store.setText(_translate("MainWindow", "官方仓库"))
- self.action_video_tutorials.setText(_translate("MainWindow", "视频教程"))
- self.action_exit.setText(_translate("MainWindow", "退出"))
- self.action_online_doc.setText(_translate("MainWindow", "在线文档"))
- self.action_about.setText(_translate("MainWindow", "关于"))
- self.action_tip1.setText(_translate("MainWindow", "本软件完全免费"))
- self.action_official_qq_group.setText(_translate("MainWindow", "官方Q群:587663288"))
diff --git a/main-old.py b/main-old.py
deleted file mode 100644
index 3f976fda..00000000
--- a/main-old.py
+++ /dev/null
@@ -1,4979 +0,0 @@
-import sys, os, json, subprocess, importlib, re, threading, signal
-import logging, traceback
-import time
-import asyncio
-# from functools import partial
-
-from utils.config import Config
-
-from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QLabel, QComboBox, QLineEdit, QTextEdit, QCheckBox, QGroupBox
-from PyQt5.QtGui import QFont, QDesktopServices, QIcon, QPixmap
-from PyQt5.QtCore import QTimer, QThread, QEventLoop, pyqtSignal, QUrl, Qt, QEvent
-
-import http.server
-import socketserver
-
-import UI_main
-
-from utils.common import Common
-from utils.logger import Configure_logger
-from utils.audio import Audio
-
-"""
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@@@@@@@@@@@@@@@.:;;;++;;;;:,@@@@@@@@@@@@@@@@@@@@@@
-@@@@@@@@@@@@@@:;+++++;;++++;;;.@@@@@@@@@@@@@@@@@@@
-@@@@@@@@@@@@@:++++;;;;;;;;;;+++;,@@@@@@@@@@@@@@@@@
-@@@@@@@@@@@.;+++;;;;;;;;;;;;;;++;:@@@@@@@@@@@@@@@@
-@@@@@@@@@@;+++;;;;;;;;;;;;;;;;;;++;:@@@@@@@@@@@@@@
-@@@@@@@@@:+++;;;;;;;;;;;;;;;;;;;;++;.@@@@@@@@@@@@@
-@@@@@@@@;;+;;;;;;;;;;;;;;;;;;;;;;;++:@@@@@@@@@@@@@
-@@@@@@@@;+;;;;:::;;;;;;;;;;;;;;;;:;+;,@@@@@@@@@@@@
-@@@@@@@:+;;:;;:::;:;;:;;;;::;;:;:::;+;.@@@@@@@@@@@
-@@@@@@.;+;::;:,:;:;;+:++:;:::+;:::::++:+@@@@@@@@@@
-@@@@@@:+;;:;;:::;;;+%;*?;;:,:;*;;;;:;+;:@@@@@@@@@@
-@@@@@@;;;+;;+;:;;;+??;*?++;,:;+++;;;:++:@@@@@@@@@@
-@@@@@.++*+;;+;;;;+?;?**??+;:;;+.:+;;;;+;;@@@@@@@@@
-@@@@@,+;;;;*++*;+?+;**;:?*;;;;*:,+;;;;+;,@@@@@@@@@
-@@@@@,:,+;+?+?++?+;,?#%*??+;;;*;;:+;;;;+:@@@@@@@@@
-@@@@@@@:+;*?+?#%;;,,?###@#+;;;*;;,+;;;;+:@@@@@@@@@
-@@@@@@@;+;??+%#%;,,,;SSS#S*+++*;..:+;?;+;@@@@@@@@@
-@@@@@@@:+**?*?SS,,,,,S#S#+***?*;..;?;**+;@@@@@@@@@
-@@@@@@@:+*??*??S,,,,,*%SS+???%++;***;+;;;.@@@@@@@@
-@@@@@@@:*?*;*+;%:,,,,;?S?+%%S?%+,:?;+:,,,@@@@@@@@
-@@@@@@@,*?,;+;+S:,,,,%?+;S%S%++:+??+:,,,:@@@@@@@@
-@@@@@@@,:,@;::;+,,,,,+?%*+S%#?*???*;,,,,,.@@@@@@@@
-@@@@@@@@:;,::;;:,,,,,,,,,?SS#??*?+,.,,,:,@@@@@@@@@
-@@@@@@;;+;;+:,:%?%*;,,,,SS#%*??%,.,,,,,:@@@@@@@@@
-@@@@@.+++,++:;???%S?%;.+#####??;.,,,,,,:@@@@@@@@@
-@@@@@:++::??+S#??%#??S%?#@#S*+?*,,,,,,:,@@@@@@@@@@
-@@@@@:;;:*?;+%#%?S#??%SS%+#%..;+:,,,,,,@@@@@@@@@@@
-@@@@@@,,*S*;?SS?%##%?S#?,.:#+,,+:,,,,,,@@@@@@@@@@@
-@@@@@@@;%?%#%?*S##??##?,..*#,,+:,,;*;.@@@@@@@@@@@
-@@@@@@.*%??#S*?S#@###%;:*,.:#:,+;:;*+:@@@@@@@@@@@@
-@@@@@@,%S??SS%##@@#%S+..;;.,#*;???*?+++:@@@@@@@@@@
-@@@@@@:S%??%####@@S,,*,.;*;+#*;+?%??#S%+.@@@@@@@@@
-@@@@@@:%???%@###@@?,,:**S##S*;.,%S?;+*?+.,..@@@@@@
-@@@@@@;%??%#@###@@#:.;@@#@%%,.,%S*;++*++++;.@@@@@
-@@@@@@,%S?S@@###@@@%+#@@#@?;,.:?;??++?%?***+.@@@@@
-@@@@@@.*S?S####@@####@@##@?..:*,+:??**%+;;;;..@@@@
-@@@@@@:+%?%####@@####@@#@%;:.;;:,+;?**;++;,:;:,@@@
-@@@@@@;;*%?%@##@@@###@#S#*:;*+,;.+***?******+:.@@@
-@@@@@@:;:??%@###%##@#%++;+*:+;,:;+%?*;+++++;:.@@@@
-@@@@@@.+;:?%@@#%;+S*;;,:::**+,;:%??*+.@....@@@@@@@
-@@@@@@@;*::?#S#S+;,..,:,;:?+?++*%?+::@@@@@@@@@@@@@
-@@@@@@@.+*+++?%S++...,;:***??+;++:.@@@@@@@@@@@@@@@
-@@@@@@@@:::..,;+*+;;+*?**+;;;+;:.@@@@@@@@@@@@@@@@@
-@@@@@@@@@@@@@@@,+*++;;:,..@@@@@@@@@@@@@@@@@@@@@@@@
-@@@@@@@@@@@@@@@@::,.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-
-"""
-
-
-class AI_VTB(QMainWindow):
- proxy = None
- # proxy = {
- # "http": "http://127.0.0.1:10809",
- # "https": "http://127.0.0.1:10809"
- # }
-
- # 平台端线程
- platform_thread = None
- # 平台端进程
- platform_process = None
-
- terminate_event = threading.Event()
- _instance = None
-
- # 单例模式
- def __new__(cls, *args, **kwargs):
- if cls._instance is None:
- cls._instance = super(AI_VTB, cls).__new__(cls, *args, **kwargs)
- return cls._instance
-
-
- '''
- 初始化
- '''
- def __init__(self):
- logging.info("程序开始运行")
-
- self.app = QApplication(sys.argv)
- super().__init__()
- self.ui = UI_main.Ui_MainWindow()
- self.ui.setupUi(self)
-
- # 获取显示器分辨率
- self.desktop = QApplication.desktop()
- self.screenRect = self.desktop.screenGeometry()
- self.screenheight = self.screenRect.height()
- self.screenwidth = self.screenRect.width()
-
- logging.debug("Screen height {}".format(self.screenheight))
- logging.debug("Screen width {}".format(self.screenwidth))
-
- # self.height = int(self.screenheight * 0.7)
- # self.width = int(self.screenwidth * 0.7)
-
- # 设置软件图标
- app_icon = QIcon("ui/icon.png")
- self.setWindowIcon(app_icon)
-
- # self.resize(self.width, self.height)
-
- # 页面索引
- self.stackedWidget_index = 0
-
- # 调用设置背景图的方法
- self.set_background()
-
- # 设置实例
- self.CreateItems()
- # 读取配置文件 进行初始化
- self.init_config()
- # 初始化
- self.init_ui()
-
-
- # 设置背景图
- def set_background(self):
- # 创建一个 QLabel 用于显示背景图
- background_label = QLabel(self)
-
- # 加载背景图,替换 'background.jpg' 为你的图片路径
- pixmap = QPixmap('ui/bg.png')
-
- screen = QApplication.primaryScreen()
- screen_size = screen.size()
-
- # 计算缩放比例,使图片等比缩放至全屏
- scaled_pixmap = pixmap.scaled(screen_size, aspectRatioMode=Qt.KeepAspectRatio)
-
- # 设置 Label 大小为窗口大小
- background_label.setPixmap(scaled_pixmap)
-
- # 高度减一点,顶部菜单栏覆盖不到,什么dio问题
- background_label.setGeometry(0, 0, screen_size.width(), screen_size.height() - 15)
-
- # 让 Label 放置在顶层,成为背景
- background_label.lower()
-
-
- # 关闭窗口
- def closeEvent(self, event):
- global web_server_thread
-
- AI_VTB.terminate_event.set()
-
- if AI_VTB.platform_process:
- # 终止进程
- AI_VTB.platform_process.terminate()
-
- if AI_VTB.platform_thread:
- # 停止线程
- AI_VTB.platform_thread.terminate()
-
- if config.get("live2d", "enable"):
- web_server_thread.terminate()
-
- # 关闭窗口
- event.accept()
-
-
- # 设置实例
- def CreateItems(self):
- # 定时器
- self.timer = QTimer(self)
- self.eventLoop = QEventLoop(self)
-
- # self.timer_connection = None
-
-
- # 过滤 QComboBox 的选项并更新
- def filter_combobox(self, combo_box, text, manual_clear=True):
- if manual_clear:
- combo_box.lineEdit().textChanged.disconnect() # 断开信号连接
- combo_box.clear()
-
- # print(text)
-
- if text:
- matching_items = [item for item in combo_box.original_items if text.lower() in item.lower()]
- combo_box.addItems(matching_items)
- elif text == '':
- combo_box.addItems(combo_box.original_items)
-
- # combo_box.setCurrentIndex(-1) # 将当前索引设置为 -1,以取消选择
-
- combo_box.lineEdit().textChanged.connect(lambda text, combo=combo_box: self.filter_combobox(combo, text, manual_clear=True))
-
-
- # 从json数据中动态创建widgets
- def create_widgets_from_json(self, data):
- widgets = []
-
- for item in data:
- # logging.info(item)
-
- if item["label_text"] != "":
- label_text = item["label_text"]
- label = QLabel(label_text)
- label.setToolTip(item["label_tip"])
- widgets.append(label)
-
- data_type = type(item["data"])
-
- # 是否限定了widget的类型
- if "widget_type" in item:
- if item["widget_type"] == "combo_box":
- widget = QComboBox()
- # 允许编辑
- widget.setEditable(True)
- # 添加多个item
- widget.addItems(item["combo_data_list"])
- # data必须在list中,不然,报错咯
- widget.setCurrentIndex(item["combo_data_list"].index(item["data"]))
-
- widget.original_items = item["combo_data_list"]
-
- # 设置下拉列表的对象名称
- widget.setObjectName(item["main_obj_name"] + "_QComboBox_" + str(item["index"]))
-
- widget.lineEdit().textChanged.connect(lambda text, combo=widget: self.filter_combobox(combo, text, True))
- else:
- # 根据数据类型,自动生成对应类实例
- if data_type == str or data_type == int or data_type == float:
- widget = QLineEdit()
- widget.setText(str(item["data"]))
- widget.setObjectName(item["main_obj_name"] + "_QLineEdit_" + str(item["index"]))
- elif data_type == bool:
- widget = QCheckBox()
- if item["widget_text"] == "":
- widget.setText("启用")
- else:
- widget.setText(item["widget_text"])
- widget.setChecked(item["data"])
- widget.setObjectName(item["main_obj_name"] + "_QCheckBox_" + str(item["index"]))
-
- if item["click_func"] == "show_box":
- widget.disconnect()
- # 连接点击信号到槽函数
- widget.clicked.connect(lambda state, text=item["main_obj_name"]: self.show_box_clicked(state, text))
- # 直接运行恢复显隐状态
- self.show_box_clicked(item["data"], item["main_obj_name"])
-
- elif data_type == list:
- widget = QTextEdit()
-
- tmp_str = ""
- for tmp in item["data"]:
- tmp_str = tmp_str + tmp + "\n"
- widget.setText(tmp_str)
- widget.setObjectName(item["main_obj_name"] + "_QTextEdit_" + str(item["index"]))
-
- # 判断readonly是否存在
- if item.get("readonly") is not None:
- widget.setReadOnly(item["readonly"])
-
- widgets.append(widget)
-
- return widgets
-
-
- # 从gridLayout中读取所有的widget,返回widget列表
- def read_widgets_from_gridLayout(self, gridLayout):
- widgets = []
- for row in range(gridLayout.rowCount()):
- for col in range(gridLayout.columnCount()):
- widget_item = gridLayout.itemAtPosition(row, col)
- if widget_item is not None:
- widget = widget_item.widget()
- if widget is not None:
- widgets.append(widget)
- return widgets
-
-
- # 从gridLayout的widgets中获取数据到data
- def update_data_from_gridLayout(self, gridLayout, type=""):
- widgets = self.read_widgets_from_gridLayout(gridLayout)
- logging.debug(widgets)
-
- data = {}
-
- for index, widget in enumerate(widgets):
- if isinstance(widget, QLineEdit):
- # data["QLineEdit_" + str(index)] = widget.text()
- data[str(index)] = widget.text()
- elif isinstance(widget, QCheckBox):
- if type == "show_box":
- data[widget.objectName()] = widget.isChecked()
- else:
- # data["QCheckBox_" + str(index)] = widget.isChecked()
- data[str(index)] = widget.isChecked()
- elif isinstance(widget, QTextEdit):
- data_list = widget.toPlainText().splitlines()
- # data["QTextEdit_" + str(index)] = data_list
- data[str(index)] = data_list
- elif isinstance(widget, QComboBox):
- # data["QComboBox_" + str(index)] = widget.text()
- data[str(index)] = widget.currentText()
-
- logging.debug(data)
-
- return data
-
-
- # 读取配置文件 进行初始化(开始堆shi喵)
- def init_config(self):
- global config, config_path
-
- # 如果配置文件不存在,创建一个新的配置文件
- if not os.path.exists(config_path):
- logging.error("配置文件不存在!!!请恢复")
- self.show_message_box("错误", f"配置文件不存在!!!请恢复", QMessageBox.Critical)
- os._exit(0)
-
-
- config = Config(config_path)
-
-
- try:
- # 运行标志位,避免重复运行
- self.running_flag = 0
-
- # 设置会话初始值
- self.session_config = {'msg': [{"role": "system", "content": config.get('chatgpt', 'preset')}]}
- self.sessions = {}
- self.current_key_index = 0
-
- self.platform = config.get("platform")
-
- # 直播间号
- self.room_id = config.get("room_display_id")
-
- self.before_prompt = config.get("before_prompt")
- self.after_prompt = config.get("after_prompt")
-
- self.comment_log_type = config.get("comment_log_type")
-
- # 日志
- self.captions_config = config.get("captions")
-
- # 本地问答
- self.local_qa_config = config.get("local_qa")
-
- # 过滤配置
- self.filter_config = config.get("filter")
-
- # 答谢
- self.thanks_config = config.get("thanks")
-
- self.chat_type = config.get("chat_type")
-
- self.need_lang = config.get("need_lang")
-
- self.live2d_config = config.get("live2d")
-
- # openai
- self.openai_config = config.get("openai")
- # chatgpt
- self.chatgpt_config = config.get("chatgpt")
- # claude
- self.claude_config = config.get("claude")
- # claude2
- self.claude2_config = config.get("claude2")
- # chatterbot
- self.chatterbot_config = config.get("chatterbot")
- # chat_with_file
- self.chat_with_file_config = config.get("chat_with_file")
- # chatglm
- self.chatglm_config = config.get("chatglm")
- # text_generation_webui
- self.text_generation_webui_config = config.get("text_generation_webui")
- # sparkdesk
- self.sparkdesk_config = config.get("sparkdesk")
- # 智谱AI
- self.zhipu_config = config.get("zhipu")
-
- # 音频合成使用技术
- self.audio_synthesis_type = config.get("audio_synthesis_type")
-
- self.edge_tts_config = config.get("edge-tts")
- self.vits_fast_config = config.get("vits_fast")
- self.elevenlabs_config = config.get("elevenlabs")
- self.genshinvoice_top_config = config.get("genshinvoice_top")
- self.bark_gui_config = config.get("bark_gui")
-
- # 点歌模式
- self.choose_song_config = config.get("choose_song")
-
- self.so_vits_svc_config = config.get("so_vits_svc")
-
- # SD
- self.sd_config = config.get("sd")
-
- # 文案
- self.copywriting_config = config.get("copywriting")
-
- self.header_config = config.get("header")
-
- # 聊天
- self.talk_config = config.get("talk")
-
- """
- 配置Label提示
- """
- # 设置鼠标悬停时的提示文本
- self.ui.label_platform.setToolTip("运行的平台版本")
- self.ui.label_room_display_id.setToolTip("待监听的直播间的房间号(直播间URL最后一个/后的数字和字母),需要是开播状态")
- self.ui.label_chat_type.setToolTip("弹幕对接的聊天类型")
- self.ui.label_visual_body.setToolTip("对接的虚拟身体应用,暂时只用于对接xuniren应用,预留给未来其他应用使用")
- self.ui.label_need_lang.setToolTip("只回复选中语言的弹幕,其他语言将被过滤")
- self.ui.label_before_prompt.setToolTip("提示词前缀,会自带追加在弹幕前,主要用于追加一些特殊的限制")
- self.ui.label_after_prompt.setToolTip("提示词后缀,会自带追加在弹幕后,主要用于追加一些特殊的限制")
- self.ui.label_comment_log_type.setToolTip("弹幕日志类型,用于记录弹幕触发时记录的内容,默认只记录回答,降低当用户使用弹幕日志显示在直播间时,因为用户的不良弹幕造成直播间被封禁问题")
-
- # 念用户名
- self.ui.label_read_user_name_enable.setToolTip("是否启用回复用户弹幕时,念用户的昵称,例:回复xxx。你好")
- self.ui.label_read_user_name_voice_change.setToolTip("是否启用变声功能,就是说不仅仅进行TTS,还进行变声,这是为了针对特定场景,区分念用户名和正经回复")
- self.ui.label_read_user_name_reply_before.setToolTip("在正经回复前的念用户名的文案,目前是本地问答库-文本 触发时使用")
- self.ui.label_read_user_name_reply_after.setToolTip("在正经回复后的念用户名的文案,目前是本地问答库-音频 触发时使用")
-
- self.ui.label_captions_enable.setToolTip("是否启用字幕日志记录,字幕输出内容为当前合成播放的音频的文本")
- self.ui.label_captions_file_path.setToolTip("字幕日志存储路径")
-
- # 本地问答
- self.ui.label_local_qa_text_enable.setToolTip("是否启用本地问答文本匹配,完全命中设定的问题后,自动合成对应的回答")
- self.ui.label_local_qa_text_type.setToolTip("本地问答文本匹配算法类型,默认就是json的自定义数据,更高级。\n一问一答就是旧版本的一行问题一行答案这种,适合新手")
- self.ui.label_local_qa_text_file_path.setToolTip("本地问答文本数据存储路径")
- self.ui.label_local_qa_text_similarity.setToolTip("最低文本匹配相似度,就是说用户发送的内容和本地问答库中设定的内容的最低相似度。\n低了就会被当做一般弹幕处理")
- self.ui.label_local_qa_audio_enable.setToolTip("是否启用本地问答音频匹配,部分命中音频文件名后,直接播放对应的音频文件")
- self.ui.label_local_qa_audio_file_path.setToolTip("本地问答音频文件存储路径")
- self.ui.label_local_qa_audio_similarity.setToolTip("最低音频匹配相似度,就是说用户发送的内容和本地音频库中音频文件名的最低相似度。\n低了就会被当做一般弹幕处理")
-
- # 过滤
- self.ui.label_filter_before_must_str.setToolTip("弹幕过滤,必须携带的触发前缀字符串(任一)\n例如:配置#,那么就需要发送:#你好")
- self.ui.label_filter_after_must_str.setToolTip("弹幕过滤,必须携带的触发后缀字符串(任一)\n例如:配置。那么就需要发送:你好。")
- self.ui.label_filter_badwords_path.setToolTip("本地违禁词数据路径(你如果不需要,可以清空文件内容)")
- self.ui.label_filter_bad_pinyin_path.setToolTip("本地违禁拼音数据路径(你如果不需要,可以清空文件内容)")
- self.ui.label_filter_max_len.setToolTip("最长阅读的英文单词数(空格分隔)")
- self.ui.label_filter_max_char_len.setToolTip("最长阅读的字符数,双重过滤,避免溢出")
- self.ui.label_filter_comment_forget_duration.setToolTip("指的是每隔这个间隔时间(秒),就会丢弃这个间隔时间中接收到的数据,\n保留数据在以下配置中可以自定义")
- self.ui.label_filter_comment_forget_reserve_num.setToolTip("保留最新收到的数据的数量")
- self.ui.label_filter_gift_forget_duration.setToolTip("指的是每隔这个间隔时间(秒),就会丢弃这个间隔时间中接收到的数据,\n保留数据在以下配置中可以自定义")
- self.ui.label_filter_gift_forget_reserve_num.setToolTip("保留最新收到的数据的数量")
- self.ui.label_filter_entrance_forget_duration.setToolTip("指的是每隔这个间隔时间(秒),就会丢弃这个间隔时间中接收到的数据,\n保留数据在以下配置中可以自定义")
- self.ui.label_filter_entrance_forget_reserve_num.setToolTip("保留最新收到的数据的数量")
- self.ui.label_filter_follow_forget_duration.setToolTip("指的是每隔这个间隔时间(秒),就会丢弃这个间隔时间中接收到的数据,\n保留数据在以下配置中可以自定义")
- self.ui.label_filter_follow_forget_reserve_num.setToolTip("保留最新收到的数据的数量")
- self.ui.label_filter_talk_forget_duration.setToolTip("指的是每隔这个间隔时间(秒),就会丢弃这个间隔时间中接收到的数据,\n保留数据在以下配置中可以自定义")
- self.ui.label_filter_talk_forget_reserve_num.setToolTip("保留最新收到的数据的数量")
- self.ui.label_filter_schedule_forget_duration.setToolTip("指的是每隔这个间隔时间(秒),就会丢弃这个间隔时间中接收到的数据,\n保留数据在以下配置中可以自定义")
- self.ui.label_filter_schedule_forget_reserve_num.setToolTip("保留最新收到的数据的数量")
-
- # 答谢
- self.ui.label_thanks_entrance_enable.setToolTip("是否启用欢迎用户进入直播间功能")
- self.ui.label_thanks_entrance_copy.setToolTip("用户进入直播间的相关文案,请勿动 {username},此字符串用于替换用户名")
- self.ui.label_thanks_gift_enable.setToolTip("是否启用感谢用户赠送礼物功能")
- self.ui.label_thanks_gift_copy.setToolTip("用户赠送礼物的相关文案,请勿动 {username} 和 {gift_name},此字符串用于替换用户名和礼物名")
- self.ui.label_thanks_lowest_price.setToolTip("设置最低答谢礼物的价格(元),低于这个设置的礼物不会触发答谢")
- self.ui.label_thanks_follow_enable.setToolTip("是否启用感谢用户关注的功能")
- self.ui.label_thanks_follow_copy.setToolTip("用户关注时的相关文案,请勿动 {username},此字符串用于替换用户名")
-
- self.ui.label_live2d_enable.setToolTip("启动web服务,用于加载本地Live2D模型")
- self.ui.label_live2d_port.setToolTip("web服务运行的端口号,默认:12345,范围:0-65535,没事不要乱改就好")
- self.ui.label_live2d_name.setToolTip("模型名称,模型存放于Live2D\live2d-model路径下,请注意路径和模型内容是否匹配")
-
- # 音频随机变速
- self.ui.label_audio_random_speed_normal_enable.setToolTip("是否启用普通音频的随机变速功能")
- self.ui.label_audio_random_speed_normal_speed_min.setToolTip("普通音频的随机变速倍率的下限,就是正常语速乘以上下限直接随机出的数的倍率,\n就是变速后的语速,默认语速倍率为1")
- self.ui.label_audio_random_speed_normal_speed_max.setToolTip("普通音频的随机变速倍率的上限,就是正常语速乘以上下限直接随机出的数的倍率,\n就是变速后的语速,默认语速倍率为1")
- self.ui.label_audio_random_speed_normal_enable.setToolTip("是否启用文案音频的随机变速功能")
- self.ui.label_audio_random_speed_normal_speed_min.setToolTip("文案音频的随机变速倍率的下限,就是正常语速乘以上下限直接随机出的数的倍率,\n就是变速后的语速,默认语速倍率为1")
- self.ui.label_audio_random_speed_normal_speed_max.setToolTip("文案音频的随机变速倍率的上限,就是正常语速乘以上下限直接随机出的数的倍率,\n就是变速后的语速,默认语速倍率为1")
-
- self.ui.label_audio_synthesis_type.setToolTip("语音合成的类型")
-
- self.ui.label_openai_api.setToolTip("API请求地址,支持代理")
- self.ui.label_openai_api_key.setToolTip("API KEY,支持代理")
- self.ui.label_chatgpt_model.setToolTip("指定要使用的模型,可以去官方API文档查看模型列表")
- self.ui.label_chatgpt_temperature.setToolTip("控制生成文本的随机性。较高的温度值会使生成的文本更随机和多样化,而较低的温度值会使生成的文本更加确定和一致。")
- self.ui.label_chatgpt_max_tokens.setToolTip("限制生成回答的最大长度。")
- self.ui.label_chatgpt_top_p.setToolTip("也被称为 Nucleus采样。这个参数控制模型从累积概率大于一定阈值的令牌中进行采样。较高的值会产生更多的多样性,较低的值会产生更少但更确定的回答。")
- self.ui.label_chatgpt_presence_penalty.setToolTip("控制模型生成回答时对给定问题提示的关注程度。较高的存在惩罚值会减少模型对给定提示的重复程度,鼓励模型更自主地生成回答。")
- self.ui.label_chatgpt_frequency_penalty.setToolTip("控制生成回答时对已经出现过的令牌的惩罚程度。较高的频率惩罚值会减少模型生成已经频繁出现的令牌,以避免重复和过度使用特定词语。")
- self.ui.label_chatgpt_preset.setToolTip("用于指定一组预定义的设置,以便模型更好地适应特定的对话场景。")
-
- self.ui.label_claude_slack_user_token.setToolTip("Slack平台配置的用户Token,参考文档的Claude板块进行配置")
- self.ui.label_claude_bot_user_id.setToolTip("Slack平台添加的Claude显示的成员ID,参考文档的Claude板块进行配置")
-
- self.ui.label_claude2_cookie.setToolTip("claude.ai官网,打开F12,随便提问抓个包,请求头cookie配置于此")
- self.ui.label_claude2_use_proxy.setToolTip("是否启用代理发送请求")
- self.ui.label_claude2_proxies_http.setToolTip("http代理地址,默认为 http://127.0.0.1:10809")
- self.ui.label_claude2_proxies_https.setToolTip("https代理地址,默认为 http://127.0.0.1:10809")
- self.ui.label_claude2_proxies_socks5.setToolTip("socks5代理地址,默认为 socks://127.0.0.1:10808")
-
- # chatglm
- self.ui.label_chatglm_api_ip_port.setToolTip("ChatGLM的API版本运行后的服务链接(需要完整的URL)")
- self.ui.label_chatglm_max_length.setToolTip("生成回答的最大长度限制,以令牌数或字符数为单位。")
- self.ui.label_chatglm_top_p.setToolTip("也称为 Nucleus采样。控制模型生成时选择概率的阈值范围。")
- self.ui.label_chatglm_temperature.setToolTip("温度参数,控制生成文本的随机性。较高的温度值会产生更多的随机性和多样性。")
- self.ui.label_chatglm_history_enable.setToolTip("是否启用上下文历史记忆,让chatglm可以记得前面的内容")
- self.ui.label_chatglm_history_max_len.setToolTip("最大记忆的上下文字符数量,不建议设置过大,容易爆显存,自行根据情况配置")
-
- # langchain_chatglm
- self.ui.label_langchain_chatglm_api_ip_port.setToolTip("langchain_chatglm的API版本运行后的服务链接(需要完整的URL)")
- self.ui.label_langchain_chatglm_chat_type.setToolTip("选择的聊天类型:模型/知识库/必应")
- self.ui.label_langchain_chatglm_knowledge_base_id.setToolTip("本地存在的知识库名称,日志也有输出知识库列表,可以查看")
- self.ui.label_langchain_chatglm_history_enable.setToolTip("是否启用上下文历史记忆,让langchain_chatglm可以记得前面的内容")
- self.ui.label_langchain_chatglm_history_max_len.setToolTip("最大记忆的上下文字符数量,不建议设置过大,容易爆显存,自行根据情况配置")
-
- # 讯飞星火
- self.ui.label_sparkdesk_type.setToolTip("选择使用的类型,web抓包 或者 官方API")
- self.ui.label_sparkdesk_cookie.setToolTip("web抓包请求头中的cookie,参考文档教程")
- self.ui.label_sparkdesk_fd.setToolTip("web抓包负载中的fd,参考文档教程")
- self.ui.label_sparkdesk_GtToken.setToolTip("web抓包负载中的GtToken,参考文档教程")
- self.ui.label_sparkdesk_app_id.setToolTip("申请官方API后,云平台中提供的APPID")
- self.ui.label_sparkdesk_api_secret.setToolTip("申请官方API后,云平台中提供的APISecret")
- self.ui.label_sparkdesk_api_key.setToolTip("申请官方API后,云平台中提供的APIKey")
- self.ui.label_sparkdesk_version.setToolTip("此处选择模型版本号")
-
- self.ui.label_chat_with_file_chat_mode.setToolTip("本地向量数据库模式")
- self.ui.label_chat_with_file_data_path.setToolTip("加载的本地zip数据文件路径(到x.zip), 如:./data/伊卡洛斯百度百科.zip")
- self.ui.label_chat_with_file_separator.setToolTip("拆分文本的分隔符,这里使用 换行符 作为分隔符。")
- self.ui.label_chat_with_file_chunk_size.setToolTip("每个文本块的最大字符数(文本块字符越多,消耗token越多,回复越详细)")
- self.ui.label_chat_with_file_chunk_overlap.setToolTip("两个相邻文本块之间的重叠字符数。这种重叠可以帮助保持文本的连贯性,特别是当文本被用于训练语言模型或其他需要上下文信息的机器学习模型时")
- self.ui.label_chat_with_file_local_vector_embedding_model.setToolTip("指定要使用的OpenAI模型名称")
- self.ui.label_chat_with_file_chain_type.setToolTip("指定要生成的语言链的类型,例如:stuff")
- self.ui.label_chat_with_file_show_token_cost.setToolTip("表示是否显示生成文本的成本。如果启用,将在终端中显示成本信息。")
- self.ui.label_chat_with_file_question_prompt.setToolTip("通过LLM总结本地向量数据库输出内容,此处填写总结用提示词")
- self.ui.label_chat_with_file_local_max_query.setToolTip("最大查询数据库次数。限制次数有助于节省token")
-
- self.ui.label_text_generation_webui_api_ip_port.setToolTip("text-generation-webui开启API模式后监听的IP和端口地址")
- self.ui.label_text_generation_webui_max_new_tokens.setToolTip("自行查阅")
- self.ui.label_text_generation_webui_mode.setToolTip("自行查阅")
- self.ui.label_text_generation_webui_character.setToolTip("自行查阅")
- self.ui.label_text_generation_webui_instruction_template.setToolTip("自行查阅")
- self.ui.label_text_generation_webui_your_name.setToolTip("自行查阅")
-
- self.ui.label_chatterbot_name.setToolTip("机器人名称")
- self.ui.label_chatterbot_db_path.setToolTip("数据库路径")
-
- self.ui.label_edge_tts_voice.setToolTip("选定的说话人(cmd执行:edge-tts -l 可以查看所有支持的说话人)")
- self.ui.label_edge_tts_rate.setToolTip("语速增益 默认是 +0%,可以增减,注意 + - %符合别搞没了,不然会影响语音合成")
- self.ui.label_edge_tts_volume.setToolTip("音量增益 默认是 +0%,可以增减,注意 + - %符合别搞没了,不然会影响语音合成")
-
- # vits_fast
- self.ui.label_vits_fast_config_path.setToolTip("配置文件的路径,例如:E:\\inference\\finetune_speaker.json")
- self.ui.label_vits_fast_api_ip_port.setToolTip("推理服务运行的链接(需要完整的URL)")
- self.ui.label_vits_fast_character.setToolTip("选择的说话人,配置文件中的speaker中的其中一个")
- self.ui.label_vits_fast_language.setToolTip("选择的合成文本的语言,建议和模型语言匹配,效果最佳")
- self.ui.label_vits_fast_speed.setToolTip("语速,默认为1")
-
- self.ui.label_elevenlabs_api_key.setToolTip("elevenlabs密钥,可以不填,默认也有一定额度的免费使用权限,具体多少不知道")
- self.ui.label_elevenlabs_voice.setToolTip("选择的说话人名")
- self.ui.label_elevenlabs_model.setToolTip("选择的模型")
-
- self.ui.label_genshinvoice_top_speaker.setToolTip("生成对应角色的语音")
- self.ui.label_genshinvoice_top_noise.setToolTip("控制感情变化程度,默认为0.2")
- self.ui.label_genshinvoice_top_noisew.setToolTip("控制音节发音长度变化程度,默认为0.9")
- self.ui.label_genshinvoice_top_length.setToolTip("可用于控制整体语速。默认为1.2")
- self.ui.label_genshinvoice_top_format.setToolTip("原有接口以WAV格式合成语音,在MP3格式合成语音的情况下,涉及到音频格式转换合成速度会变慢,建议选择WAV格式")
- self.ui.label_genshinvoice_top_language.setToolTip("合成文本对应的语言")
-
- # bark-gui
- self.ui.label_bark_gui_api_ip_port.setToolTip("bark-gui开启webui后监听的IP和端口地址")
- self.ui.label_bark_gui_spk.setToolTip("选择的说话人,webui的voice中对应的说话人")
- self.ui.label_bark_gui_generation_temperature.setToolTip("控制合成过程中生成语音的随机性。较高的值(接近1.0)会使输出更加随机,而较低的值(接近0.0)则使其更加确定性和集中。")
- self.ui.label_bark_gui_waveform_temperature.setToolTip("类似于generation_temperature,但该参数专门控制从语音模型生成的波形的随机性")
- self.ui.label_bark_gui_end_of_sentence_probability.setToolTip("该参数确定在句子结尾添加停顿或间隔的可能性。较高的值会增加停顿的几率,而较低的值则会减少。")
- self.ui.label_bark_gui_quick_generation.setToolTip("如果启用,可能会启用一些优化或在合成过程中采用更快的方式来生成语音。然而,这可能会影响语音的质量。")
- self.ui.label_bark_gui_seed.setToolTip("用于随机数生成器的种子值。使用特定的种子确保相同的输入文本每次生成的语音输出都是相同的。值为-1表示将使用随机种子。")
- self.ui.label_bark_gui_batch_count.setToolTip("指定一次批量合成的句子或话语数量。将其设置为1意味着逐句合成一次。")
-
- # 点歌
- self.ui.label_choose_song_enable.setToolTip("是否启用点歌模式")
- self.ui.label_choose_song_start_cmd.setToolTip("点歌触发命令(完全匹配才行)")
- self.ui.label_choose_song_stop_cmd.setToolTip("停止点歌命令(完全匹配才行)")
- self.ui.label_choose_song_random_cmd.setToolTip("随机点歌命令(完全匹配才行)")
- self.ui.label_choose_song_song_path.setToolTip("歌曲音频路径(默认为本项目的song文件夹)")
- self.ui.label_choose_song_match_fail_copy.setToolTip("匹配失败返回的音频文案 注意 {content} 这个是用于替换用户发送的歌名的,请务必不要乱删!影响使用!")
-
- # DDSP-SVC
- self.ui.label_ddsp_svc_enable.setToolTip("是否启用DDSP-SVC进行音频的变声")
- self.ui.label_ddsp_svc_config_path.setToolTip("模型配置文件config.yaml的路径(此处可以不配置,暂时没有用到)")
- self.ui.label_ddsp_svc_api_ip_port.setToolTip("flask_api服务运行的ip端口,例如:http://127.0.0.1:6844")
- self.ui.label_ddsp_svc_fSafePrefixPadLength.setToolTip("安全前缀填充长度,不知道干啥用,默认为0")
- self.ui.label_ddsp_svc_fPitchChange.setToolTip("音调设置,默认为0")
- self.ui.label_ddsp_svc_sSpeakId.setToolTip("说话人ID,需要和模型数据对应,默认为0")
- self.ui.label_ddsp_svc_sampleRate.setToolTip("DAW所需的采样率,默认为44100")
-
- # so-vits-svc
- self.ui.label_so_vits_svc_enable.setToolTip("是否启用so-vits-svc进行音频的变声")
- self.ui.label_so_vits_svc_config_path.setToolTip("模型配置文件config.json的路径")
- self.ui.label_so_vits_svc_api_ip_port.setToolTip("flask_api_full_song服务运行的ip端口,例如:http://127.0.0.1:1145")
- self.ui.label_so_vits_svc_spk.setToolTip("说话人,需要和配置文件内容对应")
- self.ui.label_so_vits_svc_tran.setToolTip("音调设置,默认为1")
- self.ui.label_so_vits_svc_wav_format.setToolTip("音频合成后输出的格式")
-
- # SD
- self.ui.label_sd_enable.setToolTip("是否启用SD来进行画图")
- self.ui.label_prompt_llm_type.setToolTip("选择LLM来对提示词进行优化")
- self.ui.label_prompt_llm_before_prompt.setToolTip("LLM提示词前缀")
- self.ui.label_prompt_llm_after_prompt.setToolTip("LLM提示词后缀")
- self.ui.label_sd_trigger.setToolTip("触发的关键词(弹幕头部触发)")
- self.ui.label_sd_ip.setToolTip("服务运行的IP地址")
- self.ui.label_sd_port.setToolTip("服务运行的端口")
- self.ui.label_sd_negative_prompt.setToolTip("负面文本提示,用于指定与生成图像相矛盾或相反的内容")
- self.ui.label_sd_seed.setToolTip("随机种子,用于控制生成过程的随机性。可以设置一个整数值,以获得可重复的结果。")
- self.ui.label_sd_styles.setToolTip("样式列表,用于指定生成图像的风格。可以包含多个风格,例如 [\"anime\", \"portrait\"]")
- self.ui.label_sd_cfg_scale.setToolTip("提示词相关性,无分类器指导信息影响尺度(Classifier Free Guidance Scale) -图像应在多大程度上服从提示词-较低的值会产生更有创意的结果。")
- self.ui.label_sd_steps.setToolTip("生成图像的步数,用于控制生成的精确程度。")
- self.ui.label_sd_enable_hr.setToolTip("是否启用高分辨率生成。默认为 False。")
- self.ui.label_sd_hr_scale.setToolTip("高分辨率缩放因子,用于指定生成图像的高分辨率缩放级别。")
- self.ui.label_sd_hr_second_pass_steps.setToolTip("高分辨率生成的第二次传递步数。")
- self.ui.label_sd_hr_resize_x.setToolTip("生成图像的水平尺寸。")
- self.ui.label_sd_hr_resize_y.setToolTip("生成图像的垂直尺寸。")
- self.ui.label_sd_denoising_strength.setToolTip("去噪强度,用于控制生成图像中的噪点。")
-
- self.ui.label_header_useragent.setToolTip("请求头,暂时没有用到,备用")
-
- # 文案
- self.ui.label_copywriting_config_index.setToolTip("文案编号索引,用于对指定编号进行增加删除操作")
- self.ui.pushButton_copywriting_config_index_add.setToolTip("对指定编号文案进行增加操作")
- self.ui.pushButton_copywriting_config_index_del.setToolTip("对指定编号文案进行删除操作")
- self.ui.label_copywriting_audio_interval.setToolTip("文案音频播放之间的间隔时间。就是前一个文案播放完成后,到后一个文案开始播放之间的间隔时间。")
- self.ui.label_copywriting_switching_interval.setToolTip("文案音频切换到弹幕音频的切换间隔时间(反之一样)。\n就是在播放文案时,有弹幕触发并合成完毕,此时会暂停文案播放,然后等待这个间隔时间后,再播放弹幕回复音频。")
- self.ui.label_copywriting_switching_auto_play.setToolTip("文案自动播放,就是说启用后,会自动播放,不需要手动点播放了")
- self.ui.label_copywriting_switching_random_play.setToolTip("文案随机播放,就是不根据播放音频文件列表的顺序播放,而是随机打乱顺序进行播放。")
- self.ui.label_copywriting_select.setToolTip("输入要加载的文案文件全名,文件全名从文案列表中复制。如果文件不存在,则会自动创建")
- self.ui.pushButton_copywriting_select.setToolTip("加载 左侧输入框中的文件相对/绝对路径的文件内容,输出到下方编辑框内。如果文件不存在,则会自动创建")
- self.ui.pushButton_copywriting_refresh_list.setToolTip("刷新 文案列表、音频列表中的内容,用于加载新数据")
- self.ui.label_copywriting_edit.setToolTip("此处由上方 选择的文案通过加载读取文件内容,在此可以修改文案内容,方便重新合成")
- self.ui.pushButton_copywriting_save.setToolTip("保存上方 文案编辑框中的内容到文案文件中")
- self.ui.pushButton_copywriting_synthetic_audio.setToolTip("读取当前选择的文案文件内容,通过配置的 语音合成模式来进行合成,和弹幕合成机制类似。\n需要注意,合成前记得保存文案,合成文案较多时,请耐心等待。建议:自行手动合成文案音频,放到文案音频目录中,这里合成感觉不太行")
- self.ui.pushButton_copywriting_loop_play.setToolTip("循环播放 播放列表中配置的音频文件(记得保存配置)。")
- self.ui.pushButton_copywriting_pause_play.setToolTip("暂停当前播放的音频")
-
- # 聊天
- self.ui.label_talk_username.setToolTip("日志中你的名字,暂时没有实质作用")
- self.ui.label_talk_continuous_talk.setToolTip("是否开启连续对话模式,点击触发按键后可以持续进行录音,点击停录按键停止录音")
- self.ui.label_talk_trigger_key.setToolTip("录音触发按键(单击此按键进行录音)")
- self.ui.label_talk_stop_trigger_key.setToolTip("停止录音按键(单击此按键停止下一次录音)")
- self.ui.label_talk_type.setToolTip("选择的语音识别类型")
- self.ui.label_talk_volume_threshold.setToolTip("音量阈值,指的是触发录音的起始音量值,请根据自己的麦克风进行微调到最佳")
- self.ui.label_talk_silence_threshold.setToolTip("沉默阈值,指的是触发停止路径的最低音量值,请根据自己的麦克风进行微调到最佳")
- self.ui.label_talk_baidu_app_id.setToolTip("百度云 语音识别应用的 AppID")
- self.ui.label_talk_baidu_api_key.setToolTip("百度云 语音识别应用的 API Key")
- self.ui.label_talk_baidu_secret_key.setToolTip("百度云 语音识别应用的 Secret Key")
- self.ui.label_talk_google_tgt_lang.setToolTip("录音后识别转换成的目标语言(就是你说的语言)")
- self.ui.label_talk_chat_box.setToolTip("此处填写对话内容可以直接进行对话(前面配置好聊天模式,记得运行先)")
- self.ui.pushButton_talk_chat_box_send.setToolTip("点击发送聊天框内的内容")
- self.ui.pushButton_talk_chat_box_reread.setToolTip("点击发送聊天框内的内容,直接让程序通过配置的TTS和变声进行复读")
-
- # 动态文案
- self.ui.label_trends_copywriting_enable.setToolTip("是否启用动态文案功能")
- self.ui.label_trends_copywriting_random_play.setToolTip("是否启用随机播放功能")
- self.ui.label_trends_copywriting_play_interval.setToolTip("文案于文案之间的播放间隔时间(秒)")
-
- # 按键映射
- self.ui.label_key_mapping_enable.setToolTip("是否启用按键映射功能")
- self.ui.label_key_mapping_type.setToolTip("触发按键映射功能的板块类型")
- self.ui.label_key_mapping_start_cmd.setToolTip("按键映射命令的命令起始,默认为:按键 ,如果弹幕不是这个命令打头,则不会触发")
-
- # 积分页
- self.ui.label_integral_common_enable.setToolTip("是否启用积分机制")
-
- """
- 配置同步UI
- """
- # 修改下拉框内容
- self.ui.comboBox_platform.clear()
- self.ui.comboBox_platform.addItems(["聊天模式", "哔哩哔哩", "抖音", "快手", "斗鱼", "YouTube", "twitch", "哔哩哔哩2"])
- platform_index = 0
- if self.platform == "talk":
- platform_index = 0
- elif self.platform == "bilibili":
- platform_index = 1
- elif self.platform == "dy":
- platform_index = 2
- elif self.platform == "ks":
- platform_index = 3
- elif self.platform == "douyu":
- platform_index = 4
- elif self.platform == "youtube":
- platform_index = 5
- elif self.platform == "twitch":
- platform_index = 6
- elif self.platform == "bilibili2":
- platform_index = 7
- self.ui.comboBox_platform.setCurrentIndex(platform_index)
-
- # 修改输入框内容
- self.ui.lineEdit_room_display_id.setText(self.room_id)
-
- # 新增LLM时,需要为这块的下拉菜单追加配置项
- self.ui.comboBox_chat_type.clear()
- self.ui.comboBox_chat_type.addItems([
- "不启用",
- "复读机",
- "ChatGPT/闻达",
- "Claude",
- "Claude2",
- "ChatGLM",
- "chat_with_file",
- "Chatterbot",
- "text_generation_webui",
- "讯飞星火",
- "langchain_chatglm",
- "智谱AI",
- "Bard",
- "文心一言",
- "通义千问"
- ])
- chat_type_index = 0
- if self.chat_type == "none":
- chat_type_index = 0
- elif self.chat_type == "reread":
- chat_type_index = 1
- elif self.chat_type == "chatgpt":
- chat_type_index = 2
- elif self.chat_type == "claude":
- chat_type_index = 3
- elif self.chat_type == "claude2":
- chat_type_index = 4
- elif self.chat_type == "chatglm":
- chat_type_index = 5
- elif self.chat_type == "chat_with_file":
- chat_type_index = 6
- elif self.chat_type == "chatterbot":
- chat_type_index = 7
- elif self.chat_type == "text_generation_webui":
- chat_type_index = 8
- elif self.chat_type == "sparkdesk":
- chat_type_index = 9
- elif self.chat_type == "langchain_chatglm":
- chat_type_index = 10
- elif self.chat_type == "zhipu":
- chat_type_index = 11
- elif self.chat_type == "bard":
- chat_type_index = 12
- elif self.chat_type == "yiyan":
- chat_type_index = 13
- elif self.chat_type == "tongyi":
- chat_type_index = 14
- self.ui.comboBox_chat_type.setCurrentIndex(chat_type_index)
-
- # 虚拟身体
- self.ui.comboBox_visual_body.clear()
- self.ui.comboBox_visual_body.addItems(["其他", "xuniren", "unity"])
- visual_body_index = 0
- if config.get("visual_body") == "其他":
- visual_body_index = 0
- elif config.get("visual_body") == "xuniren":
- visual_body_index = 1
- elif config.get("visual_body") == "unity":
- visual_body_index = 2
- self.ui.comboBox_visual_body.setCurrentIndex(visual_body_index)
-
- self.ui.comboBox_need_lang.clear()
- self.ui.comboBox_need_lang.addItems(["所有", "中文", "英文", "日文"])
- need_lang_index = 0
- if self.need_lang == "none":
- need_lang_index = 0
- elif self.need_lang == "zh":
- need_lang_index = 1
- elif self.need_lang == "en":
- need_lang_index = 2
- elif self.need_lang == "jp":
- need_lang_index = 3
- self.ui.comboBox_need_lang.setCurrentIndex(need_lang_index)
-
- self.ui.lineEdit_before_prompt.setText(self.before_prompt)
- self.ui.lineEdit_after_prompt.setText(self.after_prompt)
-
- # 本地问答
- if config.get("read_user_name", "enable"):
- self.ui.checkBox_read_user_name_enable.setChecked(True)
- if config.get("read_user_name", "voice_change"):
- self.ui.checkBox_read_user_name_voice_change.setChecked(True)
- tmp_str = ""
- for tmp in config.get("read_user_name", "reply_before"):
- tmp_str = tmp_str + tmp + "\n"
- self.ui.textEdit_read_user_name_reply_before.setText(tmp_str)
- tmp_str = ""
- for tmp in config.get("read_user_name", "reply_after"):
- tmp_str = tmp_str + tmp + "\n"
- self.ui.textEdit_read_user_name_reply_after.setText(tmp_str)
-
- self.ui.comboBox_comment_log_type.clear()
- comment_log_types = ["问答", "问题", "回答", "不记录"]
- self.ui.comboBox_comment_log_type.addItems(comment_log_types)
- comment_log_type_index = comment_log_types.index(self.comment_log_type)
- self.ui.comboBox_comment_log_type.setCurrentIndex(comment_log_type_index)
-
-
- # 日志
- if self.captions_config['enable']:
- self.ui.checkBox_captions_enable.setChecked(True)
- self.ui.lineEdit_captions_file_path.setText(self.captions_config['file_path'])
-
- # 本地问答
- if self.local_qa_config['text']['enable']:
- self.ui.checkBox_local_qa_text_enable.setChecked(True)
- self.ui.comboBox_local_qa_text_type.clear()
- local_qa_text_types = ["自定义json", "一问一答"]
- self.ui.comboBox_local_qa_text_type.addItems(local_qa_text_types)
- if self.local_qa_config['text']['type'] == "text":
- self.ui.comboBox_local_qa_text_type.setCurrentIndex(1)
- else:
- self.ui.comboBox_local_qa_text_type.setCurrentIndex(0)
- self.ui.lineEdit_local_qa_text_file_path.setText(self.local_qa_config['text']['file_path'])
- self.ui.lineEdit_local_qa_text_similarity.setText(str(self.local_qa_config['text']['similarity']))
- if self.local_qa_config['audio']['enable']:
- self.ui.checkBox_local_qa_audio_enable.setChecked(True)
- self.ui.lineEdit_local_qa_audio_file_path.setText(self.local_qa_config['audio']['file_path'])
- self.ui.lineEdit_local_qa_audio_similarity.setText(str(self.local_qa_config['audio']['similarity']))
-
- # 过滤
- tmp_str = ""
- for tmp in self.filter_config['before_must_str']:
- tmp_str = tmp_str + tmp + "\n"
- self.ui.textEdit_filter_before_must_str.setText(tmp_str)
- tmp_str = ""
- for tmp in self.filter_config['after_must_str']:
- tmp_str = tmp_str + tmp + "\n"
- self.ui.textEdit_filter_after_must_str.setText(tmp_str)
- self.ui.lineEdit_filter_badwords_path.setText(self.filter_config['badwords_path'])
- self.ui.lineEdit_filter_bad_pinyin_path.setText(self.filter_config['bad_pinyin_path'])
- self.ui.lineEdit_filter_max_len.setText(str(self.filter_config['max_len']))
- self.ui.lineEdit_filter_max_char_len.setText(str(self.filter_config['max_char_len']))
- self.ui.lineEdit_filter_comment_forget_duration.setText(str(self.filter_config['comment_forget_duration']))
- self.ui.lineEdit_filter_comment_forget_reserve_num.setText(str(self.filter_config['comment_forget_reserve_num']))
- self.ui.lineEdit_filter_gift_forget_duration.setText(str(self.filter_config['gift_forget_duration']))
- self.ui.lineEdit_filter_gift_forget_reserve_num.setText(str(self.filter_config['gift_forget_reserve_num']))
- self.ui.lineEdit_filter_entrance_forget_duration.setText(str(self.filter_config['entrance_forget_duration']))
- self.ui.lineEdit_filter_entrance_forget_reserve_num.setText(str(self.filter_config['entrance_forget_reserve_num']))
- self.ui.lineEdit_filter_follow_forget_duration.setText(str(self.filter_config['follow_forget_duration']))
- self.ui.lineEdit_filter_follow_forget_reserve_num.setText(str(self.filter_config['follow_forget_reserve_num']))
- self.ui.lineEdit_filter_talk_forget_duration.setText(str(self.filter_config['talk_forget_duration']))
- self.ui.lineEdit_filter_talk_forget_reserve_num.setText(str(self.filter_config['talk_forget_reserve_num']))
- self.ui.lineEdit_filter_schedule_forget_duration.setText(str(self.filter_config['schedule_forget_duration']))
- self.ui.lineEdit_filter_schedule_forget_reserve_num.setText(str(self.filter_config['schedule_forget_reserve_num']))
-
-
- # 答谢
- if self.thanks_config['entrance_enable']:
- self.ui.checkBox_thanks_entrance_enable.setChecked(True)
- self.ui.lineEdit_thanks_entrance_copy.setText(self.thanks_config['entrance_copy'])
- if self.thanks_config['gift_enable']:
- self.ui.checkBox_thanks_gift_enable.setChecked(True)
- self.ui.lineEdit_thanks_gift_copy.setText(self.thanks_config['gift_copy'])
- self.ui.lineEdit_thanks_lowest_price.setText(str(self.thanks_config['lowest_price']))
- if self.thanks_config['follow_enable']:
- self.ui.checkBox_thanks_follow_enable.setChecked(True)
- self.ui.lineEdit_thanks_follow_copy.setText(self.thanks_config['follow_copy'])
-
- if self.live2d_config['enable']:
- self.ui.checkBox_live2d_enable.setChecked(True)
- self.ui.lineEdit_live2d_port.setText(str(self.live2d_config['port']))
- self.ui.comboBox_live2d_name.clear()
- live2d_names = common.get_folder_names("Live2D/live2d-model") # 路径写死
- logging.info(f"本地Live2D模型名列表:{live2d_names}")
- self.ui.comboBox_live2d_name.addItems(live2d_names)
- live2d_model_name = common.get_live2d_model_name("Live2D/js/model_name.js") # 路径写死
- live2d_name_index = live2d_names.index(live2d_model_name)
- self.ui.comboBox_live2d_name.setCurrentIndex(live2d_name_index)
- self.ui.comboBox_live2d_name.setEditable(True)
- self.ui.comboBox_live2d_name.original_items = live2d_names
- self.ui.comboBox_live2d_name.lineEdit().textChanged.connect(lambda text, combo=self.ui.comboBox_live2d_name: self.filter_combobox(combo, text, manual_clear=True))
-
-
- # 音频随机变速
- if config.get("audio_random_speed", "normal", "enable"):
- self.ui.checkBox_audio_random_speed_normal_enable.setChecked(True)
- self.ui.lineEdit_audio_random_speed_normal_speed_min.setText(str(config.get("audio_random_speed", "normal", "speed_min")))
- self.ui.lineEdit_audio_random_speed_normal_speed_max.setText(str(config.get("audio_random_speed", "normal", "speed_max")))
- if config.get("audio_random_speed", "copywriting", "enable"):
- self.ui.checkBox_audio_random_speed_copywriting_enable.setChecked(True)
- self.ui.lineEdit_audio_random_speed_copywriting_speed_min.setText(str(config.get("audio_random_speed", "copywriting", "speed_min")))
- self.ui.lineEdit_audio_random_speed_copywriting_speed_max.setText(str(config.get("audio_random_speed", "copywriting", "speed_max")))
-
- self.ui.lineEdit_header_useragent.setText(self.header_config['userAgent'])
-
- self.ui.lineEdit_openai_api.setText(self.openai_config['api'])
- tmp_str = ""
- for tmp in self.openai_config['api_key']:
- tmp_str = tmp_str + tmp + "\n"
- self.ui.textEdit_openai_api_key.setText(tmp_str)
-
- self.ui.comboBox_chatgpt_model.clear()
- chatgpt_models = ["gpt-3.5-turbo",
- "gpt-3.5-turbo-0301",
- "gpt-3.5-turbo-0613",
- "gpt-3.5-turbo-16k",
- "gpt-3.5-turbo-16k-0613",
- "gpt-4",
- "gpt-4-0314",
- "gpt-4-0613",
- "gpt-4-32k",
- "gpt-4-32k-0314",
- "gpt-4-32k-0613",
- "gpt-4-1106-preview",
- "text-embedding-ada-002",
- "text-davinci-003",
- "text-davinci-002",
- "text-curie-001",
- "text-babbage-001",
- "text-ada-001",
- "text-moderation-latest",
- "text-moderation-stable",
- "rwkv",
- "chatglm3-6b"]
- self.ui.comboBox_chatgpt_model.addItems(chatgpt_models)
- chatgpt_model_index = chatgpt_models.index(self.chatgpt_config['model'])
- self.ui.comboBox_chatgpt_model.setCurrentIndex(chatgpt_model_index)
- self.ui.lineEdit_chatgpt_temperature.setText(str(self.chatgpt_config['temperature']))
- self.ui.lineEdit_chatgpt_max_tokens.setText(str(self.chatgpt_config['max_tokens']))
- self.ui.lineEdit_chatgpt_top_p.setText(str(self.chatgpt_config['top_p']))
- self.ui.lineEdit_chatgpt_presence_penalty.setText(str(self.chatgpt_config['presence_penalty']))
- self.ui.lineEdit_chatgpt_frequency_penalty.setText(str(self.chatgpt_config['frequency_penalty']))
- self.ui.lineEdit_chatgpt_preset.setText(self.chatgpt_config['preset'])
-
- self.ui.lineEdit_claude_slack_user_token.setText(self.claude_config['slack_user_token'])
- self.ui.lineEdit_claude_bot_user_id.setText(self.claude_config['bot_user_id'])
-
- self.ui.lineEdit_claude2_cookie.setText(self.claude2_config['cookie'])
- if self.claude2_config['use_proxy']:
- self.ui.checkBox_claude2_use_proxy.setChecked(True)
- self.ui.lineEdit_claude2_proxies_http.setText(self.claude2_config['proxies']['http'])
- self.ui.lineEdit_claude2_proxies_https.setText(self.claude2_config['proxies']['https'])
- self.ui.lineEdit_claude2_proxies_socks5.setText(self.claude2_config['proxies']['socks5'])
-
- # chatglm
- self.ui.lineEdit_chatglm_api_ip_port.setText(self.chatglm_config['api_ip_port'])
- self.ui.lineEdit_chatglm_max_length.setText(str(self.chatglm_config['max_length']))
- self.ui.lineEdit_chatglm_top_p.setText(str(self.chatglm_config['top_p']))
- self.ui.lineEdit_chatglm_temperature.setText(str(self.chatglm_config['temperature']))
- if self.chatglm_config['history_enable']:
- self.ui.checkBox_chatglm_history_enable.setChecked(True)
- self.ui.lineEdit_chatglm_history_max_len.setText(str(self.chatglm_config['history_max_len']))
-
- # langchain_chatglm
- self.ui.lineEdit_langchain_chatglm_api_ip_port.setText(config.get("langchain_chatglm", "api_ip_port"))
- self.ui.comboBox_langchain_chatglm_chat_type.clear()
- self.ui.comboBox_langchain_chatglm_chat_type.addItems(["模型", "知识库", "必应"])
- langchain_chatglm_chat_type_index = 0
- if config.get("langchain_chatglm", "chat_type") == "模型":
- langchain_chatglm_chat_type_index = 0
- elif config.get("langchain_chatglm", "chat_type") == "知识库":
- langchain_chatglm_chat_type_index = 1
- elif config.get("langchain_chatglm", "chat_type") == "必应":
- langchain_chatglm_chat_type_index = 2
- self.ui.comboBox_langchain_chatglm_chat_type.setCurrentIndex(langchain_chatglm_chat_type_index)
- self.ui.lineEdit_langchain_chatglm_knowledge_base_id.setText(config.get("langchain_chatglm", "knowledge_base_id"))
- if config.get("langchain_chatglm", "history_enable"):
- self.ui.checkBox_langchain_chatglm_history_enable.setChecked(True)
- self.ui.lineEdit_langchain_chatglm_history_max_len.setText(str(config.get("langchain_chatglm", "history_max_len")))
-
- self.ui.comboBox_chat_with_file_chat_mode.clear()
- self.ui.comboBox_chat_with_file_chat_mode.addItems(["claude", "openai_gpt", "openai_vector_search"])
- chat_with_file_chat_mode_index = 0
- if self.chat_with_file_config['chat_mode'] == "claude":
- chat_with_file_chat_mode_index = 0
- elif self.chat_with_file_config['chat_mode'] == "openai_gpt":
- chat_with_file_chat_mode_index = 1
- elif self.chat_with_file_config['chat_mode'] == "openai_vector_search":
- chat_with_file_chat_mode_index = 2
- self.ui.comboBox_chat_with_file_chat_mode.setCurrentIndex(chat_with_file_chat_mode_index)
- self.ui.comboBox_chat_with_file_local_vector_embedding_model.clear()
- self.ui.comboBox_chat_with_file_local_vector_embedding_model.addItems(["sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco", "GanymedeNil/text2vec-large-chinese"])
- chat_with_file_local_vector_embedding_model_index = 0
- if self.chat_with_file_config['local_vector_embedding_model'] == "sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco":
- chat_with_file_local_vector_embedding_model_index = 0
- elif self.chat_with_file_config['local_vector_embedding_model'] == "GanymedeNil/text2vec-large-chinese":
- chat_with_file_local_vector_embedding_model_index = 1
- self.ui.comboBox_chat_with_file_local_vector_embedding_model.setCurrentIndex(chat_with_file_local_vector_embedding_model_index)
- self.ui.lineEdit_chat_with_file_data_path.setText(self.chat_with_file_config['data_path'])
- self.ui.lineEdit_chat_with_file_separator.setText(self.chat_with_file_config['separator'])
- self.ui.lineEdit_chat_with_file_chunk_size.setText(str(self.chat_with_file_config['chunk_size']))
- self.ui.lineEdit_chat_with_file_chunk_overlap.setText(str(self.chat_with_file_config['chunk_overlap']))
- self.ui.lineEdit_chat_with_file_question_prompt.setText(str(self.chat_with_file_config['question_prompt']))
- self.ui.lineEdit_chat_with_file_local_max_query.setText(str(self.chat_with_file_config['local_max_query']))
- self.ui.lineEdit_chat_with_file_chain_type.setText(self.chat_with_file_config['chain_type'])
- if self.chat_with_file_config['show_token_cost']:
- self.ui.checkBox_chat_with_file_show_token_cost.setChecked(True)
-
- self.ui.lineEdit_chatterbot_name.setText(self.chatterbot_config['name'])
- self.ui.lineEdit_chatterbot_db_path.setText(self.chatterbot_config['db_path'])
-
- self.ui.lineEdit_text_generation_webui_api_ip_port.setText(str(self.text_generation_webui_config['api_ip_port']))
- self.ui.lineEdit_text_generation_webui_max_new_tokens.setText(str(self.text_generation_webui_config['max_new_tokens']))
- self.ui.lineEdit_text_generation_webui_mode.setText(str(self.text_generation_webui_config['mode']))
- self.ui.lineEdit_text_generation_webui_character.setText(str(self.text_generation_webui_config['character']))
- self.ui.lineEdit_text_generation_webui_instruction_template.setText(str(self.text_generation_webui_config['instruction_template']))
- self.ui.lineEdit_text_generation_webui_your_name.setText(str(self.text_generation_webui_config['your_name']))
-
- # 讯飞星火
- self.ui.comboBox_sparkdesk_type.clear()
- self.ui.comboBox_sparkdesk_type.addItems(["web", "api"])
- sparkdesk_type_index = 0
- if self.sparkdesk_config['type'] == "web":
- sparkdesk_type_index = 0
- elif self.sparkdesk_config['type'] == "api":
- sparkdesk_type_index = 1
- self.ui.comboBox_sparkdesk_type.setCurrentIndex(sparkdesk_type_index)
- self.ui.lineEdit_sparkdesk_cookie.setText(self.sparkdesk_config['cookie'])
- self.ui.lineEdit_sparkdesk_fd.setText(self.sparkdesk_config['fd'])
- self.ui.lineEdit_sparkdesk_GtToken.setText(self.sparkdesk_config['GtToken'])
- self.ui.lineEdit_sparkdesk_app_id.setText(self.sparkdesk_config['app_id'])
- self.ui.lineEdit_sparkdesk_api_secret.setText(self.sparkdesk_config['api_secret'])
- self.ui.lineEdit_sparkdesk_api_key.setText(self.sparkdesk_config['api_key'])
- self.ui.comboBox_sparkdesk_version.clear()
- self.ui.comboBox_sparkdesk_version.addItems(["3.1", "2.1", "1.1"])
- sparkdesk_version_index = 0
- if self.sparkdesk_config['version'] == 3.1:
- sparkdesk_version_index = 0
- elif self.sparkdesk_config['version'] == 2.1:
- sparkdesk_version_index = 1
- elif self.sparkdesk_config['version'] == 1.1:
- sparkdesk_version_index = 2
- self.ui.comboBox_sparkdesk_version.setCurrentIndex(sparkdesk_version_index)
-
- self.ui.comboBox_audio_synthesis_type.clear()
- self.ui.comboBox_audio_synthesis_type.addItems(["Edge-TTS", "VITS", "VITS-Fast", "elevenlabs", "genshinvoice_top", "bark_gui", "VALL-E-X", "OpenAI TTS"])
- audio_synthesis_type_index = 0
- if self.audio_synthesis_type == "edge-tts":
- audio_synthesis_type_index = 0
- elif self.audio_synthesis_type == "vits":
- audio_synthesis_type_index = 1
- elif self.audio_synthesis_type == "vits_fast":
- audio_synthesis_type_index = 2
- elif self.audio_synthesis_type == "elevenlabs":
- audio_synthesis_type_index = 3
- elif self.audio_synthesis_type == "genshinvoice_top":
- audio_synthesis_type_index = 4
- elif self.audio_synthesis_type == "bark_gui":
- audio_synthesis_type_index = 5
- elif self.audio_synthesis_type == "vall_e_x":
- audio_synthesis_type_index = 6
- elif self.audio_synthesis_type == "openai_tts":
- audio_synthesis_type_index = 7
- self.ui.comboBox_audio_synthesis_type.setCurrentIndex(audio_synthesis_type_index)
-
- # vits_fast
- self.ui.lineEdit_vits_fast_config_path.setText(self.vits_fast_config['config_path'])
- self.ui.lineEdit_vits_fast_api_ip_port.setText(self.vits_fast_config['api_ip_port'])
- self.ui.lineEdit_vits_fast_character.setText(self.vits_fast_config['character'])
- self.ui.comboBox_vits_fast_language.clear()
- self.ui.comboBox_vits_fast_language.addItems(["自动识别", "日本語", "简体中文", "English", "Mix"])
- vits_fast_language_index = 0
- if self.vits_fast_config['language'] == "自动识别":
- vits_fast_language_index = 0
- elif self.vits_fast_config['language'] == "日本語":
- vits_fast_language_index = 1
- elif self.vits_fast_config['language'] == "简体中文":
- vits_fast_language_index = 2
- elif self.vits_fast_config['language'] == "English":
- vits_fast_language_index = 3
- elif self.vits_fast_config['language'] == "Mix":
- vits_fast_language_index = 4
- self.ui.comboBox_vits_fast_language.setCurrentIndex(vits_fast_language_index)
- self.ui.lineEdit_vits_fast_speed.setText(str(self.vits_fast_config['speed']))
-
- self.ui.comboBox_edge_tts_voice.clear()
- with open('data\edge-tts-voice-list.txt', 'r') as file:
- file_content = file.read()
- # 按行分割内容,并去除每行末尾的换行符
- lines = file_content.strip().split('\n')
- # 存储到字符串数组中
- edge_tts_voices = [line for line in lines]
- # print(edge_tts_voices)
- self.ui.comboBox_edge_tts_voice.addItems(edge_tts_voices)
- edge_tts_voice_index = edge_tts_voices.index(self.edge_tts_config['voice'])
- self.ui.comboBox_edge_tts_voice.setCurrentIndex(edge_tts_voice_index)
- self.ui.lineEdit_edge_tts_rate.setText(self.edge_tts_config['rate'])
- self.ui.lineEdit_edge_tts_volume.setText(self.edge_tts_config['volume'])
-
- self.ui.lineEdit_elevenlabs_api_key.setText(self.elevenlabs_config['api_key'])
- self.ui.lineEdit_elevenlabs_voice.setText(self.elevenlabs_config['voice'])
- self.ui.lineEdit_elevenlabs_model.setText(self.elevenlabs_config['model'])
-
- self.ui.comboBox_genshinvoice_top_speaker.clear()
- with open('data\genshinvoice_top_speak_list.txt', 'r', encoding='utf-8') as file:
- file_content = file.read()
- # 按行分割内容,并去除每行末尾的换行符
- lines = file_content.strip().split('\n')
- # 存储到字符串数组中
- genshinvoice_top_speaker = [line for line in lines]
- # print(genshinvoice_top_speaker)
- self.ui.comboBox_genshinvoice_top_speaker.addItems(genshinvoice_top_speaker)
- self.ui.comboBox_genshinvoice_top_speaker.setEditable(True)
- self.ui.comboBox_genshinvoice_top_speaker.original_items = genshinvoice_top_speaker
- genshinvoice_top_speaker_index = genshinvoice_top_speaker.index(self.genshinvoice_top_config['speaker'])
- self.ui.comboBox_genshinvoice_top_speaker.setCurrentIndex(genshinvoice_top_speaker_index)
- self.ui.comboBox_genshinvoice_top_speaker.lineEdit().textChanged.connect(lambda text, combo=self.ui.comboBox_genshinvoice_top_speaker: self.filter_combobox(combo, text, manual_clear=True))
- self.ui.lineEdit_genshinvoice_top_noise.setText(self.genshinvoice_top_config['noise'])
- self.ui.lineEdit_genshinvoice_top_noisew.setText(self.genshinvoice_top_config['noisew'])
- self.ui.lineEdit_genshinvoice_top_length.setText(self.genshinvoice_top_config['length'])
- self.ui.lineEdit_genshinvoice_top_format.setText(self.genshinvoice_top_config['format'])
- self.ui.comboBox_genshinvoice_top_language.clear()
- self.ui.comboBox_genshinvoice_top_language.addItems(["ZH", "EN", "JP"])
- genshinvoice_top_language_index = 0
- if config.get("genshinvoice_top", "language") == "ZH":
- genshinvoice_top_language_index = 0
- elif config.get("genshinvoice_top", "language") == "EN":
- genshinvoice_top_language_index = 1
- elif config.get("genshinvoice_top", "language") == "JP":
- genshinvoice_top_language_index = 2
- self.ui.comboBox_genshinvoice_top_language.setCurrentIndex(genshinvoice_top_language_index)
-
- # bark-gui
- self.ui.lineEdit_bark_gui_api_ip_port.setText(config.get("bark_gui", "api_ip_port"))
- self.ui.lineEdit_bark_gui_spk.setText(config.get("bark_gui", "spk"))
- self.ui.lineEdit_bark_gui_generation_temperature.setText(str(config.get("bark_gui", "generation_temperature")))
- self.ui.lineEdit_bark_gui_waveform_temperature.setText(str(config.get("bark_gui", "waveform_temperature")))
- self.ui.lineEdit_bark_gui_end_of_sentence_probability.setText(str(config.get("bark_gui", "end_of_sentence_probability")))
- if config.get("bark_gui", "quick_generation"):
- self.ui.checkBox_bark_gui_quick_generation.setChecked(True)
- self.ui.lineEdit_bark_gui_seed.setText(str(config.get("bark_gui", "seed")))
- self.ui.lineEdit_bark_gui_batch_count.setText(str(config.get("bark_gui", "batch_count")))
-
- # 点歌模式 配置回显部分
- if self.choose_song_config['enable']:
- self.ui.checkBox_choose_song_enable.setChecked(True)
- self.ui.lineEdit_choose_song_start_cmd.setText(self.choose_song_config['start_cmd'])
- self.ui.lineEdit_choose_song_stop_cmd.setText(self.choose_song_config['stop_cmd'])
- self.ui.lineEdit_choose_song_random_cmd.setText(self.choose_song_config['random_cmd'])
- self.ui.lineEdit_choose_song_song_path.setText(self.choose_song_config['song_path'])
- self.ui.lineEdit_choose_song_match_fail_copy.setText(self.choose_song_config['match_fail_copy'])
-
- # ddsp-svc
- if config.get("ddsp_svc", "enable"):
- self.ui.checkBox_ddsp_svc_enable.setChecked(True)
- self.ui.lineEdit_ddsp_svc_config_path.setText(config.get("ddsp_svc", "config_path"))
- self.ui.lineEdit_ddsp_svc_api_ip_port.setText(config.get("ddsp_svc", "api_ip_port"))
- self.ui.lineEdit_ddsp_svc_fSafePrefixPadLength.setText(str(config.get("ddsp_svc", "fSafePrefixPadLength")))
- self.ui.lineEdit_ddsp_svc_fPitchChange.setText(str(config.get("ddsp_svc", "fPitchChange")))
- self.ui.lineEdit_ddsp_svc_sSpeakId.setText(str(config.get("ddsp_svc", "sSpeakId")))
- self.ui.lineEdit_ddsp_svc_sampleRate.setText(str(config.get("ddsp_svc", "sampleRate")))
-
- if self.so_vits_svc_config['enable']:
- self.ui.checkBox_so_vits_svc_enable.setChecked(True)
- self.ui.lineEdit_so_vits_svc_config_path.setText(self.so_vits_svc_config['config_path'])
- self.ui.lineEdit_so_vits_svc_api_ip_port.setText(self.so_vits_svc_config['api_ip_port'])
- self.ui.lineEdit_so_vits_svc_spk.setText(self.so_vits_svc_config['spk'])
- self.ui.lineEdit_so_vits_svc_tran.setText(str(self.so_vits_svc_config['tran']))
- self.ui.lineEdit_so_vits_svc_wav_format.setText(self.so_vits_svc_config['wav_format'])
-
- # sd 配置回显部分
- if self.sd_config['enable']:
- self.ui.checkBox_sd_enable.setChecked(True)
- self.ui.lineEdit_sd_trigger.setText(self.sd_config['trigger'])
- self.ui.comboBox_prompt_llm_type.clear()
- self.ui.comboBox_prompt_llm_type.addItems(["chatgpt", "claude", "chatglm", "text_generation_webui", "none"])
- prompt_llm_type_index = 0
- if self.sd_config['prompt_llm']['type'] == "chatgpt":
- prompt_llm_type_index = 0
- elif self.sd_config['prompt_llm']['type'] == "claude":
- prompt_llm_type_index = 1
- elif self.sd_config['prompt_llm']['type'] == "chatglm":
- prompt_llm_type_index = 2
- elif self.sd_config['prompt_llm']['type'] == "text_generation_webui":
- prompt_llm_type_index = 3
- elif self.sd_config['prompt_llm']['type'] == "none":
- prompt_llm_type_index = 4
- self.ui.comboBox_prompt_llm_type.setCurrentIndex(prompt_llm_type_index)
- self.ui.lineEdit_prompt_llm_before_prompt.setText(self.sd_config['prompt_llm']['before_prompt'])
- self.ui.lineEdit_prompt_llm_after_prompt.setText(self.sd_config['prompt_llm']['after_prompt'])
- self.ui.lineEdit_sd_ip.setText(self.sd_config['ip'])
- self.ui.lineEdit_sd_port.setText(str(self.sd_config['port']))
- self.ui.lineEdit_sd_negative_prompt.setText(self.sd_config['negative_prompt'])
- self.ui.lineEdit_sd_seed.setText(str(self.sd_config['seed']))
- tmp_str = ""
- for tmp in self.sd_config['styles']:
- tmp_str = tmp_str + tmp + "\n"
- self.ui.textEdit_sd_styles.setText(tmp_str)
- self.ui.lineEdit_sd_cfg_scale.setText(str(self.sd_config['cfg_scale']))
- self.ui.lineEdit_sd_steps.setText(str(self.sd_config['steps']))
- self.ui.lineEdit_sd_hr_resize_x.setText(str(self.sd_config['hr_resize_x']))
- self.ui.lineEdit_sd_hr_resize_y.setText(str(self.sd_config['hr_resize_y']))
- if self.sd_config['enable_hr']:
- self.ui.checkBox_sd_enable_hr.setChecked(True)
- self.ui.lineEdit_sd_hr_scale.setText(str(self.sd_config['hr_scale']))
- self.ui.lineEdit_sd_hr_second_pass_steps.setText(str(self.sd_config['hr_second_pass_steps']))
- self.ui.lineEdit_sd_denoising_strength.setText(str(self.sd_config['denoising_strength']))
-
- # 聊天
- self.ui.lineEdit_talk_username.setText(self.talk_config['username'])
- if self.talk_config['continuous_talk']:
- self.ui.checkBox_talk_continuous_talk.setChecked(True)
- self.ui.comboBox_talk_trigger_key.clear()
- with open('data\keyboard.txt', 'r') as file:
- file_content = file.read()
- # 按行分割内容,并去除每行末尾的换行符
- lines = file_content.strip().split('\n')
- # 存储到字符串数组中
- trigger_keys = [line for line in lines]
- # print(trigger_keys)
- self.ui.comboBox_talk_trigger_key.addItems(trigger_keys)
- trigger_key_index = trigger_keys.index(self.talk_config['trigger_key'])
- self.ui.comboBox_talk_trigger_key.setCurrentIndex(trigger_key_index)
- self.ui.comboBox_talk_stop_trigger_key.clear()
- self.ui.comboBox_talk_stop_trigger_key.addItems(trigger_keys)
- stop_trigger_key_index = trigger_keys.index(self.talk_config['stop_trigger_key'])
- self.ui.comboBox_talk_stop_trigger_key.setCurrentIndex(stop_trigger_key_index)
- self.ui.comboBox_talk_type.clear()
- self.ui.comboBox_talk_type.addItems(["baidu", "google"])
- talk_type_index = 0
- if self.talk_config['type'] == "baidu":
- talk_type_index = 0
- elif self.talk_config['type'] == "google":
- talk_type_index = 1
- self.ui.comboBox_talk_type.setCurrentIndex(talk_type_index)
- self.ui.lineEdit_talk_volume_threshold.setText(str(self.talk_config['volume_threshold']))
- self.ui.lineEdit_talk_silence_threshold.setText(str(self.talk_config['silence_threshold']))
- self.ui.lineEdit_talk_baidu_app_id.setText(self.talk_config['baidu']['app_id'])
- self.ui.lineEdit_talk_baidu_api_key.setText(self.talk_config['baidu']['api_key'])
- self.ui.lineEdit_talk_baidu_secret_key.setText(self.talk_config['baidu']['secret_key'])
- self.ui.comboBox_talk_google_tgt_lang.clear()
- self.ui.comboBox_talk_google_tgt_lang.addItems(["zh-CN", "en-US", "ja-JP"])
- talk_google_tgt_lang_index = 0
- if self.talk_config['google']['tgt_lang'] == "zh-CN":
- talk_google_tgt_lang_index = 0
- elif self.talk_config['google']['tgt_lang'] == "en-US":
- talk_google_tgt_lang_index = 1
- elif self.talk_config['google']['tgt_lang'] == "ja-JP":
- talk_google_tgt_lang_index = 2
- self.ui.comboBox_talk_google_tgt_lang.setCurrentIndex(talk_google_tgt_lang_index)
-
- # 连接回车按键的信号与槽
- self.ui.textEdit_talk_chat_box.installEventFilter(self)
-
- """
- GUI部分 动态生成的widget
- 推荐使用这种形式进行UI加载,更具动态,不过目前封装实现还是垃圾了些,不是很好用,待优化
- """
- # 自定义显隐各板块
- def get_box_name_by_key(key):
- # 定义键和值的映射关系,请和配置文件中的键保持一致
- # 添加时需要同步给配置文件中的show_box配置项追加你添加的键名
- key_value_map = {
- "read_comment": "念弹幕",
- "read_user_name": "念用户名",
- "filter": "过滤",
- "thanks": "答谢",
- "live2d": "Live2D",
- "audio_random_speed": "音频随机变速",
- "so_vits_svc": "so-vits-svc",
- "ddsp_svc": "DDSP-SVC",
- "local_qa": "本地问答",
- "choose_song": "点歌模式",
- "sd": "Stable Diffusion",
- "log": "日志",
- "schedule": "定时任务",
- "idle_time_task": "闲时任务",
- "database": "数据库",
- "play_audio": "播放音频",
- "web_captions_printer": "web字幕打印机",
- "key_mapping": "按键映射",
- "unity": "Unity",
- # 可以继续添加其他键和值
- }
-
- # 查找并返回对应的值,如果找不到键则返回None
- return key_value_map.get(key)
-
- data_json = []
- # 遍历字典并获取键名和对应值
- for index, (key, value) in enumerate(config.get("show_box").items()):
- tmp_json = {
- "label_text": "",
- "label_tip": "",
- "data": value,
- "widget_text": get_box_name_by_key(key),
- "click_func": "show_box",
- "main_obj_name": key,
- "index": index
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row, col, max_col = 0, 0, 3
- for widget in widgets:
- self.ui.gridLayout_show_box.addWidget(widget, row, col)
- col += 1
- if col > max_col:
- col = 0
- row += 1
-
-
- # 定时任务动态加载
- data_json = []
- for index, tmp in enumerate(config.get("schedule")):
- tmp_json = {
- "label_text": "任务" + str(index),
- "label_tip": "是否启用此定时任务",
- "data": tmp["enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "schedule",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "循环周期",
- "label_tip": "定时任务循环的周期时长(秒),即每间隔这个周期就会执行一次",
- "data": tmp["time"],
- "main_obj_name": "schedule",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "文案列表",
- "label_tip": "存放文案的列表,通过空格或换行分割,通过{变量}来替换关键数据,可修改源码自定义功能",
- "data": tmp["copy"],
- "main_obj_name": "schedule",
- "index": index
- }
- data_json.append(tmp_json)
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_schedule.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_schedule.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- # 闲时任务动态加载
- def idle_time_task_gui_create():
- data_json = []
- idle_time_task_config = config.get("idle_time_task")
-
- tmp_json = {
- "label_text": "闲时任务",
- "label_tip": "是否启用闲时任务",
- "data": idle_time_task_config["enable"],
- "widget_text": "启用",
- "click_func": "",
- "main_obj_name": "idle_time_task",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "闲时时间",
- "label_tip": "闲时间隔时间(正整数),就是在没有弹幕情况下经过的时间",
- "data": idle_time_task_config["idle_time"],
- "main_obj_name": "zhipu",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "随机闲时时间",
- "label_tip": "是否启用随机闲时时间,从0到闲时时间随机一个数",
- "data": idle_time_task_config["random_time"],
- "widget_text": "启用",
- "click_func": "",
- "main_obj_name": "idle_time_task",
- "index": 2
- }
- data_json.append(tmp_json)
-
- # logging.info(data_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_idle_time_task.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_idle_time_task.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- idle_time_task_gui_create()
-
- def idle_time_task_comment_gui_create():
- data_json = []
- idle_time_task_config = config.get("idle_time_task")
-
- tmp_json = {
- "label_text": "LLM模式",
- "label_tip": "是否启用LLM模式",
- "data": idle_time_task_config["comment"]["enable"],
- "widget_text": "启用",
- "click_func": "",
- "main_obj_name": "idle_time_task",
- "index": 3
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "随机文案",
- "label_tip": "是否启用随机文案,打乱文案触发顺序",
- "data": idle_time_task_config["comment"]["random"],
- "widget_text": "启用",
- "click_func": "",
- "main_obj_name": "idle_time_task",
- "index": 4
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "文案列表",
- "label_tip": "文案列表,文案之间用换行分隔,文案会丢LLM进行处理后直接合成返回的结果",
- "data": idle_time_task_config["comment"]["copy"],
- "main_obj_name": "idle_time_task",
- "index": 5
- }
- data_json.append(tmp_json)
-
- # logging.info(data_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_idle_time_task_comment.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_idle_time_task_comment.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- idle_time_task_comment_gui_create()
-
- def idle_time_task_local_audio_gui_create():
- data_json = []
- idle_time_task_config = config.get("idle_time_task")
-
- tmp_json = {
- "label_text": "本地音频模式",
- "label_tip": "是否启用本地音频模式",
- "data": idle_time_task_config["local_audio"]["enable"],
- "widget_text": "启用",
- "click_func": "",
- "main_obj_name": "idle_time_task",
- "index": 6
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "随机本地音频",
- "label_tip": "是否启用随机本地音频,打乱本地音频触发顺序",
- "data": idle_time_task_config["local_audio"]["random"],
- "widget_text": "启用",
- "click_func": "",
- "main_obj_name": "idle_time_task",
- "index": 7
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "本地音频路径列表",
- "label_tip": "本地音频路径列表,相对/绝对路径之间用换行分隔,音频文件会直接丢进音频播放队列",
- "data": idle_time_task_config["local_audio"]["path"],
- "main_obj_name": "idle_time_task",
- "index": 8
- }
- data_json.append(tmp_json)
-
- # logging.info(data_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_idle_time_task_local_audio.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_idle_time_task_local_audio.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- idle_time_task_local_audio_gui_create()
-
- # 文案配置动态加载
- self.ui.lineEdit_copywriting_audio_interval.setText(str(self.copywriting_config['audio_interval']))
- self.ui.lineEdit_copywriting_switching_interval.setText(str(self.copywriting_config['switching_interval']))
- if self.copywriting_config['auto_play']:
- self.ui.checkBox_copywriting_switching_auto_play.setChecked(True)
- if self.copywriting_config['random_play']:
- self.ui.checkBox_copywriting_switching_random_play.setChecked(True)
-
- data_json = []
- for index, tmp in enumerate(config.get("copywriting", "config")):
- tmp_json = {
- "label_text": "文案存储路径" + str(index),
- "label_tip": "文案文件存储路径,默认不可编辑。不建议更改。",
- "data": tmp["file_path"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_file_path",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "音频存储路径" + str(index),
- "label_tip": "文案音频文件存储路径,默认不可编辑。不建议更改。",
- "data": tmp["audio_path"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_audio_path",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_str = ""
- copywriting_file_names = self.get_dir_txt_filename(self.copywriting_config["config"][index]['file_path'])
- for tmp_copywriting_file_name in copywriting_file_names:
- tmp_str = tmp_str + tmp_copywriting_file_name + "\n"
- tmp_json = {
- "label_text": "文案列表" + str(index),
- "label_tip": "加载配置文件中配置的文案路径下的所有文件,请勿放入其他非文案文件",
- "data": [tmp_str],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_copywriting_list",
- "readonly": True,
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "播放列表" + str(index),
- "label_tip": "此处填写需要播放的音频文件全名,填写完毕后点击 保存配置。文件全名从音频列表中复制,换行分隔,请勿随意填写",
- "data": tmp["play_list"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_play_list",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_str = ""
- copywriting_audio_file_names = self.get_dir_audio_filename(self.copywriting_config["config"][index]['audio_path'])
- for tmp_copywriting_audio_file_name in copywriting_audio_file_names:
- tmp_str = tmp_str + tmp_copywriting_audio_file_name + "\n"
- tmp_json = {
- "label_text": "已合成\n音频列表" + str(index),
- "label_tip": "加载配置文件中配置的音频路径下的所有文件,请勿放入其他非音频文件",
- "data": [tmp_str],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_audio_list",
- "readonly": True,
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "连续播放数" + str(index),
- "label_tip": "文案播放列表中连续播放的音频文件个数,如果超过了这个个数就会切换下一个文案列表",
- "data": tmp["continuous_play_num"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_continuous_play_num",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "连续播放时间" + str(index),
- "label_tip": "文案播放列表中连续播放音频的时长,如果超过了这个时长就会切换下一个文案列表",
- "data": tmp["max_play_time"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_max_play_time",
- "index": index
- }
- data_json.append(tmp_json)
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_copywriting_config.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_copywriting_config.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- # 智谱AI
- def zhipu_gui_create():
- data_json = []
- zhipu_config = config.get("zhipu")
-
- tmp_json = {
- "label_text": "api key",
- "label_tip": "具体参考官方文档,申请地址:https://open.bigmodel.cn/usercenter/apikeys",
- "data": zhipu_config["api_key"],
- "main_obj_name": "zhipu",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "模型",
- "label_tip": "使用的语言模型",
- "widget_type": "combo_box",
- "combo_data_list": ['chatglm_pro', 'chatglm_std', 'chatglm_lite', 'chatglm_lite_32k', 'characterglm'],
- "data": zhipu_config["model"],
- "main_obj_name": "zhipu",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "top_p",
- "label_tip": "用温度取样的另一种方法,称为核取样\n取值范围是:(0.0,1.0);开区间,不能等于 0 或 1,默认值为 0.7\n模型考虑具有 top_p 概率质量的令牌的结果。所以 0.1 意味着模型解码器只考虑从前 10% 的概率的候选集中取tokens\n建议您根据应用场景调整 top_p 或 temperature 参数,但不要同时调整两个参数",
- "data": zhipu_config["top_p"],
- "main_obj_name": "zhipu",
- "index": 2
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "temperature",
- "label_tip": "采样温度,控制输出的随机性,必须为正数\n取值范围是:(0.0,1.0],不能等于 0,默认值为 0.95\n值越大,会使输出更随机,更具创造性;值越小,输出会更加稳定或确定\n建议您根据应用场景调整 top_p 或 temperature 参数,但不要同时调整两个参数",
- "data": zhipu_config["temperature"],
- "main_obj_name": "zhipu",
- "index": 3
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "上下文记忆",
- "label_tip": "是否开启上下文记忆功能,可以记住前面说的内容",
- "data": zhipu_config["history_enable"],
- "widget_text": "启用",
- "click_func": "",
- "main_obj_name": "zhipu",
- "index": 4
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "最大记忆长度",
- "label_tip": "最长能记忆的问答字符串长度,超长会丢弃最早记忆的内容,请慎用!配置过大可能会有丢大米",
- "data": zhipu_config["history_max_len"],
- "main_obj_name": "zhipu",
- "index": 5
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "用户信息",
- "label_tip": "用户信息,当使用characterglm时需要配置",
- "data": zhipu_config["user_info"],
- "main_obj_name": "zhipu",
- "index": 6
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "角色信息",
- "label_tip": "角色信息,当使用characterglm时需要配置",
- "data": zhipu_config["bot_info"],
- "main_obj_name": "zhipu",
- "index": 7
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "角色名称",
- "label_tip": "角色名称,当使用characterglm时需要配置",
- "data": zhipu_config["bot_name"],
- "main_obj_name": "zhipu",
- "index": 8
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "用户名称",
- "label_tip": "用户名称,默认值为用户,当使用characterglm时需要配置",
- "data": zhipu_config["user_name"],
- "main_obj_name": "zhipu",
- "index": 9
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "删除无用符号",
- "label_tip": "是否开启删除无用符号功能,因为模型会有心理描述和啥特殊字符的内容,不需要的可以开启",
- "data": zhipu_config["remove_useless"],
- "widget_text": "启用",
- "click_func": "",
- "main_obj_name": "zhipu",
- "index": 10
- }
- data_json.append(tmp_json)
-
- # logging.info(data_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_zhipu.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_zhipu.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- zhipu_gui_create()
-
- # VITS
- def vits_gui_create():
- data_json = []
-
- vits_config = config.get("vits")
- tmp_json = {
- "label_text": "类型",
- "label_tip": "选用的TTS模型",
- "widget_type": "combo_box",
- "combo_data_list": ["vits", "bert_vits2"],
- "data": vits_config["type"],
- "main_obj_name": "vits",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "配置文件路径",
- "label_tip": "模型配置文件存储路径",
- "data": vits_config["config_path"],
- "main_obj_name": "vits",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "API地址",
- "label_tip": "vits-simple-api启动后监听的ip端口地址",
- "data": vits_config["api_ip_port"],
- "main_obj_name": "vits",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "说话人ID",
- "label_tip": "API启动时会给配置文件重新划分id,一般为拼音顺序排列,从0开始",
- "data": vits_config["id"],
- "main_obj_name": "vits",
- "index": 2
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "语言",
- "label_tip": "auto为自动识别语言模式,也是默认模式。lang=mix时,文本应该用[ZH] 或 [JA] 包裹。方言无法自动识别。",
- "widget_type": "combo_box",
- "combo_data_list": ["自动", "中文", "英文", "日文"],
- "data": vits_config["lang"],
- "main_obj_name": "vits",
- "index": 4
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "语音长度",
- "label_tip": "调节语音长度,相当于调节语速,该数值越大语速越慢",
- "data": vits_config["length"],
- "main_obj_name": "vits",
- "index": 5
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "噪声",
- "label_tip": "控制感情变化程度",
- "data": vits_config["noise"],
- "main_obj_name": "vits",
- "index": 6
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "噪声偏差",
- "label_tip": "控制音素发音长度",
- "data": vits_config["noisew"],
- "main_obj_name": "vits",
- "index": 7
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "分段阈值",
- "label_tip": "按标点符号分段,加起来大于max时为一段文本。max<=0表示不分段。",
- "data": vits_config["max"],
- "main_obj_name": "vits",
- "index": 8
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "音频格式",
- "label_tip": "支持wav,ogg,silk,mp3,flac",
- "data": vits_config["format"],
- "main_obj_name": "vits",
- "index": 9
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "SDP/DP混合比",
- "label_tip": "SDP/DP混合比:SDP在合成时的占比,理论上此比率越高,合成的语音语调方差越大。",
- "data": vits_config["sdp_radio"],
- "main_obj_name": "vits",
- "index": 10
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_vits.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_vits.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- vits_gui_create()
-
- # 数据库
- def database_gui_create():
- data_json = []
-
- database_config = config.get("database")
- tmp_json = {
- "label_text": "数据库路径",
- "label_tip": "数据库文件存储路径",
- "data": database_config["path"],
- "main_obj_name": "database",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "弹幕日志",
- "label_tip": "存储记录原始的用户弹幕数据,用于后期排查问题、分析用户画像等",
- "data": database_config["comment_enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "database",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "入场日志",
- "label_tip": "存储记录原始的用户入场数据,用于后期排查问题、分析流量等",
- "data": database_config["entrance_enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "database",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "礼物日志",
- "label_tip": "存储记录原始的用户礼物数据,用于后期排查问题、分析富哥富婆等",
- "data": database_config["gift_enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "database",
- "index": 1
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_database.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_database.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- database_gui_create()
-
- # 播放音频
- def play_audio_gui_create():
- data_json = []
-
- play_audio_config = config.get("play_audio")
- tmp_json = {
- "label_text": "启用",
- "label_tip": "是否开启音频播放,如果不启用,则会只合成音频文件,不会进行播放操作",
- "data": play_audio_config["enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "play_audio",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "音频输出路径",
- "label_tip": "音频文件合成后存储的路径,支持相对路径或绝对路径",
- "data": play_audio_config["out_path"],
- "main_obj_name": "play_audio",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "播放器",
- "label_tip": "选择不同播放器播放音频,播放器不同,处理逻辑也有所不同",
- "widget_type": "combo_box",
- "combo_data_list": ['pygame', 'audio_player'],
- "data": play_audio_config["player"],
- "main_obj_name": "play_audio",
- "index": 2
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_play_audio.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_play_audio.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- play_audio_gui_create()
-
- # audio_player
- def audio_player_gui_create():
- data_json = []
-
- audio_player_config = config.get("audio_player")
- tmp_json = {
- "label_text": "API地址",
- "label_tip": "audio_player的API地址,只需要 http://ip:端口 即可",
- "data": audio_player_config["api_ip_port"],
- "main_obj_name": "audio_player",
- "index": 0
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_audio_player.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_audio_player.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- audio_player_gui_create()
-
- # 动态文案
- self.ui.checkBox_trends_copywriting_enable.setChecked(config.get("trends_copywriting", "enable"))
- self.ui.checkBox_trends_copywriting_random_play.setChecked(config.get("trends_copywriting", "random_play"))
- self.ui.lineEdit_trends_copywriting_play_interval.setText(str(config.get("trends_copywriting", "play_interval")))
- def trends_copywriting_gui_create():
- data_json = []
-
- trends_copywriting_config = config.get("trends_copywriting", "copywriting")
- for tmp in trends_copywriting_config:
- tmp_json = {
- "label_text": "文案路径",
- "label_tip": "文案文件存储的文件夹路径",
- "data": tmp["folder_path"],
- "main_obj_name": "trends_copywriting",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "提示词转换",
- "label_tip": "是否启用提示词对文案内容进行转换",
- "data": tmp["prompt_change_enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "trends_copywriting",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "提示词转换内容",
- "label_tip": "使用此提示词内容对文案内容进行转换后再进行合成,使用的LLM为聊天类型配置",
- "data": tmp["prompt_change_content"],
- "main_obj_name": "trends_copywriting",
- "index": 0
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_trends_copywriting_2.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_trends_copywriting_2.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- trends_copywriting_gui_create()
-
- # web字幕打印机
- def web_captions_printer_gui_create():
- data_json = []
-
- web_captions_printer_config = config.get("web_captions_printer")
- tmp_json = {
- "label_text": "启用",
- "label_tip": "是否启用web字幕打印机功能(需要先启动web字幕打印机程序才能使用)",
- "data": web_captions_printer_config["enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "web_captions_printer",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "API地址",
- "label_tip": "web字幕打印机的API地址,只需要 http://ip:端口 即可",
- "data": web_captions_printer_config["api_ip_port"],
- "main_obj_name": "web_captions_printer",
- "index": 1
- }
- data_json.append(tmp_json)
-
- # tmp_json = {
- # "label_text": "类型",
- # "label_tip": "发送给web字幕打印机内容,可以自定义哪些内容发过去显示",
- # "widget_type": "combo_box",
- # "combo_data_list": ["弹幕", "回复", "复读", "弹幕+回复", "回复+复读", "弹幕+回复+复读"],
- # "data": web_captions_printer_config["type"],
- # "main_obj_name": "web_captions_printer",
- # "index": 1
- # }
- # data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_web_captions_printer.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_web_captions_printer.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- web_captions_printer_gui_create()
-
- # VALL-E-X
- def vall_e_x_gui_create():
- data_json = []
- vall_e_x_config = config.get("vall_e_x")
-
- tmp_json = {
- "label_text": "API地址",
- "label_tip": "VALL-E-X启动后监听的ip端口地址",
- "data": vall_e_x_config["api_ip_port"],
- "main_obj_name": "vall_e_x",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "language",
- "label_tip": "VALL-E-X language",
- "widget_type": "combo_box",
- "combo_data_list": ['auto-detect', 'English', '中文', '日本語', 'Mix'],
- "data": vall_e_x_config["language"],
- "main_obj_name": "vall_e_x",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "accent",
- "label_tip": "VALL-E-X accent",
- "widget_type": "combo_box",
- "combo_data_list": ['no-accent', 'English', '中文', '日本語'],
- "data": vall_e_x_config["accent"],
- "main_obj_name": "vall_e_x",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "voice preset",
- "label_tip": "VALL-E-X说话人预设名(Prompt name)",
- "data": vall_e_x_config["voice_preset"],
- "main_obj_name": "vall_e_x",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "voice_preset_file_path",
- "label_tip": "VALL-E-X说话人预设文件路径(npz)",
- "data": vall_e_x_config["voice_preset_file_path"],
- "main_obj_name": "vall_e_x",
- "index": 1
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_vall_e_x.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_vall_e_x.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- vall_e_x_gui_create()
-
- # OpenAI TTS
- def openai_tts_gui_create():
- data_json = []
- openai_tts_config = config.get("openai_tts")
-
- tmp_json = {
- "label_text": "type",
- "label_tip": "类型",
- "widget_type": "combo_box",
- "combo_data_list": ['api', 'huggingface'],
- "data": openai_tts_config["type"],
- "main_obj_name": "openai_tts",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "API地址",
- "label_tip": "huggingface适配项目的API地址",
- "data": openai_tts_config["api_ip_port"],
- "main_obj_name": "openai_tts",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "模型",
- "label_tip": "使用的模型",
- "widget_type": "combo_box",
- "combo_data_list": ['tts-1', 'tts-1-hd'],
- "data": openai_tts_config["model"],
- "main_obj_name": "openai_tts",
- "index": 2
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "voice",
- "label_tip": "说话人",
- "widget_type": "combo_box",
- "combo_data_list": ['alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer'],
- "data": openai_tts_config["voice"],
- "main_obj_name": "openai_tts",
- "index": 3
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "API Key",
- "label_tip": "OpenAI API Key",
- "data": openai_tts_config["api_key"],
- "main_obj_name": "openai_tts",
- "index": 4
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_openai_tts.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_openai_tts.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- openai_tts_gui_create()
-
- # 哔哩哔哩
- def bilibili_gui_create():
- data_json = []
- bilibili_config = config.get("bilibili")
-
- tmp_json = {
- "label_text": "登录方式",
- "label_tip": "选择登录b站账号的方式,用于获取b站账号相关信息",
- "widget_type": "combo_box",
- "combo_data_list": ['手机扫码', '手机扫码-终端', 'cookie', '账号密码登录', 'open_live', '不登录'],
- "data": bilibili_config["login_type"],
- "main_obj_name": "bilibili",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "cookie",
- "label_tip": "b站登录后F12抓网络包获取cookie,强烈建议使用小号!有封号风险",
- "data": bilibili_config["cookie"],
- "main_obj_name": "bilibili",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "ac_time_value",
- "label_tip": "b站登录后,F12控制台,输入window.localStorage.ac_time_value获取(如果没有,请重新登录)",
- "data": bilibili_config["ac_time_value"],
- "main_obj_name": "bilibili",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "用户名",
- "label_tip": "b站账号(建议使用小号)",
- "data": bilibili_config["username"],
- "main_obj_name": "bilibili",
- "index": 2
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "密码",
- "label_tip": "b站密码(建议使用小号)",
- "data": bilibili_config["password"],
- "main_obj_name": "bilibili",
- "index": 3
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_bilibili.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_bilibili.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- bilibili_gui_create()
-
- # twitch
- def twitch_gui_create():
- data_json = []
- twitch_config = config.get("twitch")
-
- tmp_json = {
- "label_text": "token",
- "label_tip": "访问 https://twitchapps.com/tmi/ 获取,格式为:oauth:xxx",
- "data": twitch_config["token"],
- "main_obj_name": "twitch",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "用户名",
- "label_tip": "你的twitch账号用户名",
- "data": twitch_config["user"],
- "main_obj_name": "twitch",
- "index": 2
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "HTTP代理IP地址",
- "label_tip": "代理软件,http协议监听的ip地址,一般为:127.0.0.1",
- "data": twitch_config["proxy_server"],
- "main_obj_name": "twitch",
- "index": 3
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "HTTP代理端口",
- "label_tip": "代理软件,http协议监听的端口,一般为:1080",
- "data": twitch_config["proxy_port"],
- "main_obj_name": "twitch",
- "index": 4
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_twitch.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_twitch.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- twitch_gui_create()
-
- # bard
- def bard_gui_create():
- data_json = []
- bard_config = config.get("bard")
-
- tmp_json = {
- "label_text": "token",
- "label_tip": "登录bard,打开F12,在cookie中获取 __Secure-1PSID 对应的值",
- "data": bard_config["token"],
- "main_obj_name": "bard",
- "index": 1
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_bard.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_bard.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- bard_gui_create()
-
- # 文心一言
- def yiyan_gui_create():
- data_json = []
- yiyan_config = config.get("yiyan")
-
- tmp_json = {
- "label_text": "API地址",
- "label_tip": "yiyan-api启动后监听的ip端口地址",
- "data": yiyan_config["api_ip_port"],
- "main_obj_name": "yiyan",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "类型",
- "label_tip": "使用的接口类型,暂时只提供web版",
- "widget_type": "combo_box",
- "combo_data_list": ['web'],
- "data": yiyan_config["type"],
- "main_obj_name": "yiyan",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "cookie",
- "label_tip": "文心一言登录后,跳过debug后,抓取请求包中的cookie",
- "data": yiyan_config["cookie"],
- "main_obj_name": "yiyan",
- "index": 2
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_yiyan.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_yiyan.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- yiyan_gui_create()
-
- # 通义千问
- def tongyi_gui_create():
- data_json = []
- tongyi_config = config.get("tongyi")
-
- tmp_json = {
- "label_text": "类型",
- "label_tip": "使用的接口类型,暂时只提供web版",
- "widget_type": "combo_box",
- "combo_data_list": ['web'],
- "data": tongyi_config["type"],
- "main_obj_name": "tongyi",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "cookie路径",
- "label_tip": "通义千问登录后,通过浏览器插件Cookie Editor获取Cookie JSON串,然后将数据保存在这个路径的文件中",
- "data": tongyi_config["cookie_path"],
- "main_obj_name": "tongyi",
- "index": 1
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_tongyi.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_tongyi.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- tongyi_gui_create()
-
- # 念弹幕
- def read_comment_create():
- data_json = []
- read_comment_config = config.get("read_comment")
-
- tmp_json = {
- "label_text": "念弹幕",
- "label_tip": "是否启用念弹幕的功能",
- "data": read_comment_config["enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "read_comment",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "念用户名",
- "label_tip": "是否启用念用户名的功能,就是说在念弹幕的前面顺便把用户名念一下",
- "data": read_comment_config["read_username_enable"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "read_comment",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "变声",
- "label_tip": "是否启用变声功能,会使用已配置的变声内容来进行变声",
- "data": read_comment_config["voice_change"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "read_comment",
- "index": 2
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "念用户名文案",
- "label_tip": "念用户名时使用的文案,可以自定义编辑多个(换行分隔),实际中会随机一个使用",
- "data": read_comment_config["read_username_copywriting"],
- "main_obj_name": "read_comment",
- "index": 3
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_read_comment.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_read_comment.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- read_comment_create()
-
- # 按键映射
- self.ui.checkBox_key_mapping_enable.setChecked(config.get("key_mapping", "enable"))
- self.ui.comboBox_key_mapping_type.clear()
- self.ui.comboBox_key_mapping_type.addItems(["弹幕", "回复", "弹幕+回复"])
- key_mapping_type_index = 0
- if config.get('key_mapping', 'type') == "弹幕":
- key_mapping_type_index = 0
- elif config.get('key_mapping', 'type') == "回复":
- key_mapping_type_index = 1
- elif config.get('key_mapping', 'type') == "弹幕+回复":
- key_mapping_type_index = 2
- self.ui.comboBox_key_mapping_type.setCurrentIndex(key_mapping_type_index)
- self.ui.lineEdit_key_mapping_start_cmd.setText(config.get("key_mapping", "start_cmd"))
-
- def key_mapping_config_create():
- data_json = []
- for index, tmp in enumerate(config.get("key_mapping", "config")):
- tmp_json = {
- "label_text": "关键词#" + str(index),
- "label_tip": "触发按键映射的关键词,可以配置多个,用换行进行分隔",
- "data": tmp["keywords"],
- "main_obj_name": "key_mapping_config",
- "index": 3 * index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "按键#" + str(index),
- "label_tip": "触发按键映射的对应的按键(参考pyautogui文档配置),可以配置多个,用换行进行分隔",
- "data": tmp["keys"],
- "main_obj_name": "key_mapping_config",
- "index": 3 * index + 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "相似度#" + str(index),
- "label_tip": "关键词命中的相似度,默认1为100%命中后才会触发",
- "data": tmp["similarity"],
- "main_obj_name": "key_mapping_config",
- "index": 3 * index + 2
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_key_mapping_config.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_key_mapping_config.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- key_mapping_config_create()
-
- """
- 积分页
- """
- self.ui.checkBox_integral_common_enable.setChecked(config.get("integral", "enable"))
-
- # 入场-文案
- def integral_entrance_copywriting_create():
- data_json = []
- for index, tmp in enumerate(config.get("integral", "entrance", "copywriting")):
- tmp_json = {
- "label_text": "入场数区间" + str(index),
- "label_tip": "限制在此区间内的入场数来触发对应的文案,用-号来进行区间划分,包含边界值",
- "data": tmp["entrance_num_interval"],
- "main_obj_name": "integral_entrance_copywriting_entrance_num_interval",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "文案" + str(index),
- "label_tip": "在此入场区间内,触发的文案内容,换行分隔",
- "data": tmp["copywriting"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "integral_entrance_copywriting_copywriting",
- "index": index
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_integral_entrance_copywriting.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_integral_entrance_copywriting.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- integral_entrance_copywriting_create()
-
- # 入场
- def integral_entrance_create():
- data_json = []
- integral_entrance_config = config.get("integral", "entrance")
-
- tmp_json = {
- "label_text": "启用入场",
- "label_tip": "是否启用入场功能",
- "data": integral_entrance_config["enable"],
- "widget_text": "是",
- "click_func": "",
- "main_obj_name": "integral_entrance",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "获得积分数",
- "label_tip": "入场可以获得的积分数,请填写正整数!",
- "data": integral_entrance_config["get_integral"],
- "main_obj_name": "integral_entrance",
- "index": 1
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_integral_entrance.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_integral_entrance.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- integral_entrance_create()
-
- # 签到-文案
- def integral_sign_copywriting_create():
- data_json = []
- for index, tmp in enumerate(config.get("integral", "sign", "copywriting")):
- tmp_json = {
- "label_text": "签到数区间" + str(index),
- "label_tip": "限制在此区间内的签到数来触发对应的文案,用-号来进行区间划分,包含边界值",
- "data": tmp["sign_num_interval"],
- "main_obj_name": "integral_sign_copywriting_sign_num_interval",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "文案" + str(index),
- "label_tip": "在此签到区间内,触发的文案内容,换行分隔",
- "data": tmp["copywriting"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "integral_sign_copywriting_copywriting",
- "index": index
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_integral_sign_copywriting.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_integral_sign_copywriting.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- integral_sign_copywriting_create()
-
- # 签到
- def integral_sign_create():
- data_json = []
- integral_sign_config = config.get("integral", "sign")
-
- tmp_json = {
- "label_text": "启用签到",
- "label_tip": "是否启用签到功能",
- "data": integral_sign_config["enable"],
- "widget_text": "是",
- "click_func": "",
- "main_obj_name": "integral_sign",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "签到命令",
- "label_tip": "弹幕发送以下命令可以触发签到功能,换行分隔命令",
- "data": integral_sign_config["cmd"],
- "main_obj_name": "integral_sign",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "获得积分数",
- "label_tip": "签到成功可以获得的积分数,请填写正整数!",
- "data": integral_sign_config["get_integral"],
- "main_obj_name": "integral_sign",
- "index": 2
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_integral_sign.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_integral_sign.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- integral_sign_create()
-
- # 礼物-文案
- def integral_gift_copywriting_create():
- data_json = []
- for index, tmp in enumerate(config.get("integral", "gift", "copywriting")):
- tmp_json = {
- "label_text": "礼物价格区间" + str(index),
- "label_tip": "限制在此区间内的礼物价格来触发对应的文案,用-号来进行区间划分,包含边界值",
- "data": tmp["gift_price_interval"],
- "main_obj_name": "integral_gift_copywriting_gift_price_interval",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "文案" + str(index),
- "label_tip": "在此礼物区间内,触发的文案内容,换行分隔",
- "data": tmp["copywriting"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "integral_gift_copywriting_copywriting",
- "index": index
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_integral_gift_copywriting.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_integral_gift_copywriting.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- integral_gift_copywriting_create()
-
- # 礼物
- def integral_gift_create():
- data_json = []
- integral_gift_config = config.get("integral", "gift")
-
- tmp_json = {
- "label_text": "启用礼物",
- "label_tip": "是否启用礼物功能",
- "data": integral_gift_config["enable"],
- "widget_text": "是",
- "click_func": "",
- "main_obj_name": "integral_gift",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "获得积分比例",
- "label_tip": "此比例和礼物真实金额(元)挂钩,默认就是1元=10积分",
- "data": integral_gift_config["get_integral_proportion"],
- "main_obj_name": "integral_gift",
- "index": 2
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_integral_gift.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_integral_gift.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- integral_gift_create()
-
- # 增删改查
- # 查询
- def integral_crud_query_create():
- data_json = []
- integral_crud_query_config = config.get("integral", "crud", "query")
-
- tmp_json = {
- "label_text": "启用查询",
- "label_tip": "是否启用查询功能",
- "data": integral_crud_query_config["enable"],
- "widget_text": "是",
- "click_func": "",
- "main_obj_name": "integral_crud_query",
- "index": 0
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "查询命令",
- "label_tip": "弹幕发送以下命令可以触发查询功能,换行分隔命令",
- "data": integral_crud_query_config["cmd"],
- "main_obj_name": "integral_crud_query",
- "index": 1
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "文案",
- "label_tip": "触发查询功能后返回的文案内容,换行分隔命令",
- "data": integral_crud_query_config["copywriting"],
- "main_obj_name": "integral_crud_query",
- "index": 2
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_integral_crud_query.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_integral_crud_query.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- integral_crud_query_create()
-
- # xuniren
- def xuniren_create():
- data_json = []
-
- xuniren_config = config.get("xuniren")
-
- tmp_json = {
- "label_text": "API地址",
- "label_tip": "xuniren应用启动API后,监听的ip和端口",
- "data": xuniren_config["api_ip_port"],
- "main_obj_name": "xuniren",
- "index": 0
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_xuniren.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_xuniren.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- xuniren_create()
-
- # unity
- def unity_create():
- data_json = []
-
- unity_config = config.get("unity")
-
- # tmp_json = {
- # "label_text": "Unity中转",
- # "label_tip": "是否启用Unity中转功能",
- # "data": unity_config["enable"],
- # "widget_text": "启用",
- # "click_func": "",
- # "main_obj_name": "unity",
- # "index": 0
- # }
- # data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "API地址",
- "label_tip": "对接Unity应用使用的HTTP中转站监听的ip和端口",
- "data": unity_config["api_ip_port"],
- "main_obj_name": "unity",
- "index": 0
- }
- data_json.append(tmp_json)
-
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- # 分2列,左边就是label说明,右边就是输入框等
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_unity.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_unity.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- unity_create()
-
- """
- ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
- -------------------------------------------------------------------------------------------------------------
- """
-
- # 显隐各板块
- self.oncomboBox_chat_type_IndexChanged(chat_type_index)
- self.oncomboBox_audio_synthesis_type_IndexChanged(audio_synthesis_type_index)
- self.oncomboBox_talk_type_IndexChanged(talk_type_index)
-
- # 打开Live2D页面
- # if self.live2d_config["enable"]:
- # url = QUrl("http://127.0.0.1:12345/Live2D/") # 指定要打开的网页地址
- # QDesktopServices.openUrl(url)
-
- logging.info("配置文件加载成功。")
- except Exception as e:
- logging.error(traceback.format_exc())
- return None
-
-
- # ui初始化
- def init_ui(self):
- # 统一设置下样式先
- comboBox_common_css = '''
- margin: 5px 0px;
- height: 40px;
- background-color: rgba(255, 255, 255, 100);
- '''
-
- # 无效设置
- font = QFont("仿宋", 14) # 创建一个字体对象
- font.setWeight(QFont.Bold) # 设置字体粗细
-
- comboBoxs = self.findChildren(QComboBox)
- for comboBox in comboBoxs:
- comboBox.setStyleSheet(comboBox_common_css)
- comboBox.setFont(font)
-
- label_common_css = '''
- background-color: rgba(255, 255, 255, 0);
- '''
-
- labels = self.findChildren(QLabel)
- for label in labels:
- label.setStyleSheet(label_common_css)
- label.setFont(font)
-
-
- groupBox_common_css = '''
- background-color: rgba(255, 255, 255, 0);
- '''
-
- groupBoxs = self.findChildren(QGroupBox)
- for groupBox in groupBoxs:
- groupBox.setStyleSheet(groupBox_common_css)
- groupBox.setFont(font)
-
- if False:
- # 统一设置下样式先
- common_css = "margin: 5px 0px; height: 40px;"
-
- # 无效设置
- font = QFont("微软雅黑", 14) # 创建一个字体对象
- font.setWeight(QFont.Bold) # 设置字体粗细
-
- labels = self.findChildren(QLabel)
- for label in labels:
- label.setStyleSheet(common_css)
- label.setFont(font)
-
-
- comboBoxs = self.findChildren(QComboBox)
- for comboBox in comboBoxs:
- comboBox.setStyleSheet(common_css)
- comboBox.setFont(font)
-
- lineEdits = self.findChildren(QLineEdit)
- for lineEdit in lineEdits:
- lineEdit.setStyleSheet(common_css)
- lineEdit.setFont(font)
-
- textEdits = self.findChildren(QTextEdit)
- for textEdit in textEdits:
- textEdit.setStyleSheet(common_css)
- textEdit.setFont(font)
-
-
- self.show()
-
- # 将按钮点击事件与自定义的功能函数进行连接
- self.ui.pushButton_save.disconnect()
- self.ui.pushButton_factory.disconnect()
- self.ui.pushButton_run.disconnect()
- self.ui.pushButton_config_page.disconnect()
- self.ui.pushButton_run_page.disconnect()
- self.ui.pushButton_copywriting_page.disconnect()
- self.ui.pushButton_talk_page.disconnect()
- self.ui.pushButton_integral_page.disconnect()
- self.ui.pushButton_save.clicked.connect(self.on_pushButton_save_clicked)
- self.ui.pushButton_factory.clicked.connect(self.on_pushButton_factory_clicked)
- self.ui.pushButton_run.clicked.connect(self.on_pushButton_run_clicked)
- self.ui.pushButton_config_page.clicked.connect(lambda: self.on_pushButton_change_page_clicked(0))
- self.ui.pushButton_run_page.clicked.connect(lambda: self.on_pushButton_change_page_clicked(1))
- self.ui.pushButton_copywriting_page.clicked.connect(lambda: self.on_pushButton_change_page_clicked(2))
- self.ui.pushButton_talk_page.clicked.connect(lambda: self.on_pushButton_change_page_clicked(3))
- self.ui.pushButton_integral_page.clicked.connect(lambda: self.on_pushButton_change_page_clicked(4))
-
-
- # 文案页
- self.ui.pushButton_copywriting_config_index_add.disconnect()
- self.ui.pushButton_copywriting_config_index_del.disconnect()
- self.ui.pushButton_copywriting_select.disconnect()
- self.ui.pushButton_copywriting_refresh_list.disconnect()
- self.ui.pushButton_copywriting_save.disconnect()
- self.ui.pushButton_copywriting_synthetic_audio.disconnect()
- self.ui.pushButton_copywriting_loop_play.disconnect()
- self.ui.pushButton_copywriting_pause_play.disconnect()
- self.ui.pushButton_copywriting_config_index_add.clicked.connect(self.on_pushButton_copywriting_config_index_add_clicked)
- self.ui.pushButton_copywriting_config_index_del.clicked.connect(self.on_pushButton_copywriting_config_index_del_clicked)
- self.ui.pushButton_copywriting_select.clicked.connect(self.on_pushButton_copywriting_select_clicked)
- self.ui.pushButton_copywriting_refresh_list.clicked.connect(self.on_pushButton_copywriting_refresh_list_clicked)
- self.ui.pushButton_copywriting_save.clicked.connect(self.on_pushButton_copywriting_save_clicked)
- self.ui.pushButton_copywriting_synthetic_audio.clicked.connect(self.on_pushButton_copywriting_synthetic_audio_clicked)
- self.ui.pushButton_copywriting_loop_play.clicked.connect(self.on_pushButton_copywriting_loop_play_clicked)
- self.ui.pushButton_copywriting_pause_play.clicked.connect(self.on_pushButton_copywriting_pause_play_clicked)
-
- # 聊天页
- self.ui.pushButton_talk_chat_box_send.disconnect()
- self.ui.pushButton_talk_chat_box_reread.disconnect()
- self.ui.pushButton_talk_chat_box_send.clicked.connect(self.on_pushButton_talk_chat_box_send_clicked)
- self.ui.pushButton_talk_chat_box_reread.clicked.connect(self.on_pushButton_talk_chat_box_reread_clicked)
-
- # 下拉框相关槽函数
- self.ui.comboBox_chat_type.disconnect()
- self.ui.comboBox_audio_synthesis_type.disconnect()
- self.ui.comboBox_talk_type.disconnect()
- self.ui.comboBox_chat_type.currentIndexChanged.connect(lambda index: self.oncomboBox_chat_type_IndexChanged(index))
- self.ui.comboBox_audio_synthesis_type.currentIndexChanged.connect(lambda index: self.oncomboBox_audio_synthesis_type_IndexChanged(index))
- self.ui.comboBox_talk_type.currentIndexChanged.connect(lambda index: self.oncomboBox_talk_type_IndexChanged(index))
-
- # 顶部餐单栏槽函数
- self.ui.action_official_store.triggered.connect(self.openBrowser_github)
- self.ui.action_video_tutorials.triggered.connect(self.openBrowser_video)
- self.ui.action_online_doc.triggered.connect(self.openBrowser_online_doc)
- self.ui.action_about.triggered.connect(self.alert_about)
- self.ui.action_exit.triggered.connect(self.exit_soft)
- self.ui.action_official_qq_group.triggered.connect(self.openBrowser_official_qq_group)
-
- # 创建节流函数,并将其保存为类的属性,delay秒内只执行一次
- self.throttled_save = self.throttle(self.save, 1)
- self.throttled_factory = self.throttle(self.factory, 1)
- self.throttled_run = self.throttle(self.run, 1)
- self.throttled_change_page = self.throttle(self.change_page, 0.5)
- self.throttled_copywriting_config_index_add = self.throttle(self.copywriting_config_index_add, 1)
- self.throttled_copywriting_config_index_del = self.throttle(self.copywriting_config_index_del, 1)
- self.throttled_copywriting_select = self.throttle(self.copywriting_select, 1)
- self.throttled_copywriting_refresh_list = self.throttle(self.copywriting_refresh_list, 1)
- self.throttled_copywriting_save = self.throttle(self.copywriting_save, 1)
- self.throttled_copywriting_synthetic_audio = self.throttle(self.copywriting_synthetic_audio, 1)
- self.throttled_copywriting_loop_play = self.throttle(self.copywriting_loop_play, 1)
- self.throttled_copywriting_pause_play = self.throttle(self.copywriting_pause_play, 1)
- self.throttled_talk_chat_box_send = self.throttle(self.talk_chat_box_send, 0.5)
- self.throttled_talk_chat_box_reread = self.throttle(self.talk_chat_box_reread, 0.5)
-
-
-
- '''
- 按钮相关的函数
- '''
- # 保存喵(开始堆shi喵)
- def save(self):
- global config, config_path
- try:
- with open(config_path, 'r', encoding="utf-8") as config_file:
- config_data = json.load(config_file)
- except Exception as e:
- logging.error(f"无法写入配置文件!\n{e}")
- self.show_message_box("错误", f"无法写入配置文件!\n{e}", QMessageBox.Critical)
- return False
-
- def common_textEdit_handle(content):
- """通用的textEdit 多行文本内容处理
-
- Args:
- content (str): 原始多行文本内容
-
- Returns:
- _type_: 处理好的多行文本内容
- """
- # 通用多行分隔符
- separators = [" ", "\n"]
-
- ret = [token.strip() for separator in separators for part in content.split(separator) if (token := part.strip())]
- if 0 != len(ret):
- ret = ret[1:]
-
- return ret
-
-
- try:
- # 获取下拉框当前选中的内容
- platform = self.ui.comboBox_platform.currentText()
- if platform == "聊天模式":
- config_data["platform"] = "talk"
- elif platform == "哔哩哔哩":
- config_data["platform"] = "bilibili"
- elif platform == "抖音":
- config_data["platform"] = "dy"
- elif platform == "快手":
- config_data["platform"] = "ks"
- elif platform == "斗鱼":
- config_data["platform"] = "douyu"
- elif platform == "YouTube":
- config_data["platform"] = "youtube"
- elif platform == "twitch":
- config_data["platform"] = "twitch"
- elif platform == "哔哩哔哩2":
- config_data["platform"] = "bilibili2"
-
- # 获取单行文本输入框的内容
- room_display_id = self.ui.lineEdit_room_display_id.text()
- # 直播间号配置放宽
- # if False == self.is_alpha_numeric(room_display_id):
- # logging.error("直播间号只由字母或数字组成,请勿输入错误内容")
- # self.show_message_box("错误", "直播间号只由字母或数字组成,请勿输入错误内容", QMessageBox.Critical)
- # return False
- config_data["room_display_id"] = room_display_id
-
- # 新增LLM时,这块也需要适配,保存回配置文件
- chat_type = self.ui.comboBox_chat_type.currentText()
- logging.info(f"chat_type={chat_type}")
- if chat_type == "不启用":
- config_data["chat_type"] = "none"
- elif chat_type == "复读机":
- config_data["chat_type"] = "reread"
- elif chat_type == "ChatGPT/闻达":
- config_data["chat_type"] = "chatgpt"
- elif chat_type == "Claude":
- config_data["chat_type"] = "claude"
- elif chat_type == "Claude2":
- config_data["chat_type"] = "claude2"
- elif chat_type == "ChatGLM":
- config_data["chat_type"] = "chatglm"
- elif chat_type == "chat_with_file":
- config_data["chat_type"] = "chat_with_file"
- elif chat_type == "Chatterbot":
- config_data["chat_type"] = "chatterbot"
- elif chat_type == "text_generation_webui":
- config_data["chat_type"] = "text_generation_webui"
- elif chat_type == "讯飞星火":
- config_data["chat_type"] = "sparkdesk"
- elif chat_type == "langchain_chatglm":
- config_data["chat_type"] = "langchain_chatglm"
- elif chat_type == "智谱AI":
- config_data["chat_type"] = "zhipu"
- elif chat_type == "Bard":
- config_data["chat_type"] = "bard"
- elif chat_type == "文心一言":
- config_data["chat_type"] = "yiyan"
- elif chat_type == "通义千问":
- config_data["chat_type"] = "tongyi"
-
- config_data["visual_body"] = self.ui.comboBox_visual_body.currentText()
-
- config_data["before_prompt"] = self.ui.lineEdit_before_prompt.text()
- config_data["after_prompt"] = self.ui.lineEdit_after_prompt.text()
-
- # 本地问答
- config_data["read_user_name"]["enable"] = self.ui.checkBox_read_user_name_enable.isChecked()
- config_data["read_user_name"]["voice_change"] = self.ui.checkBox_read_user_name_voice_change.isChecked()
- config_data["read_user_name"]["reply_before"] = common_textEdit_handle(self.ui.textEdit_read_user_name_reply_before.toPlainText())
- config_data["read_user_name"]["reply_after"] = common_textEdit_handle(self.ui.textEdit_read_user_name_reply_after.toPlainText())
-
- need_lang = self.ui.comboBox_need_lang.currentText()
- if need_lang == "所有":
- config_data["need_lang"] = "none"
- elif need_lang == "中文":
- config_data["need_lang"] = "zh"
- elif need_lang == "英文":
- config_data["need_lang"] = "en"
- elif need_lang == "日文":
- config_data["need_lang"] = "jp"
-
- config_data["comment_log_type"] = self.ui.comboBox_comment_log_type.currentText()
-
- # 日志
- config_data["captions"]["enable"] = self.ui.checkBox_captions_enable.isChecked()
- config_data["captions"]["file_path"] = self.ui.lineEdit_captions_file_path.text()
-
- # 本地问答
- config_data["local_qa"]["text"]["enable"] = self.ui.checkBox_local_qa_text_enable.isChecked()
- local_qa_text_type = self.ui.comboBox_local_qa_text_type.currentText()
- if local_qa_text_type == "自定义json":
- config_data["local_qa"]["text"]["type"] = "json"
- elif local_qa_text_type == "一问一答":
- config_data["local_qa"]["text"]["type"] = "text"
- config_data["local_qa"]["text"]["file_path"] = self.ui.lineEdit_local_qa_text_file_path.text()
- config_data["local_qa"]["text"]["similarity"] = round(float(self.ui.lineEdit_local_qa_text_similarity.text()), 2)
- config_data["local_qa"]["audio"]["enable"] = self.ui.checkBox_local_qa_audio_enable.isChecked()
- config_data["local_qa"]["audio"]["file_path"] = self.ui.lineEdit_local_qa_audio_file_path.text()
- config_data["local_qa"]["audio"]["similarity"] = round(float(self.ui.lineEdit_local_qa_audio_similarity.text()), 2)
-
- # 过滤
- config_data["filter"]["before_must_str"] = common_textEdit_handle(self.ui.textEdit_filter_before_must_str.toPlainText())
- config_data["filter"]["after_must_str"] = common_textEdit_handle(self.ui.textEdit_filter_after_must_str.toPlainText())
- config_data["filter"]["badwords_path"] = self.ui.lineEdit_filter_badwords_path.text()
- config_data["filter"]["bad_pinyin_path"] = self.ui.lineEdit_filter_bad_pinyin_path.text()
- config_data["filter"]["max_len"] = int(self.ui.lineEdit_filter_max_len.text())
- config_data["filter"]["max_char_len"] = int(self.ui.lineEdit_filter_max_char_len.text())
- config_data["filter"]["comment_forget_duration"] = round(float(self.ui.lineEdit_filter_comment_forget_duration.text()), 2)
- config_data["filter"]["comment_forget_reserve_num"] = int(self.ui.lineEdit_filter_comment_forget_reserve_num.text())
- config_data["filter"]["gift_forget_duration"] = round(float(self.ui.lineEdit_filter_gift_forget_duration.text()), 2)
- config_data["filter"]["gift_forget_reserve_num"] = int(self.ui.lineEdit_filter_gift_forget_reserve_num.text())
- config_data["filter"]["entrance_forget_duration"] = round(float(self.ui.lineEdit_filter_entrance_forget_duration.text()), 2)
- config_data["filter"]["entrance_forget_reserve_num"] = int(self.ui.lineEdit_filter_entrance_forget_reserve_num.text())
- config_data["filter"]["follow_forget_duration"] = round(float(self.ui.lineEdit_filter_follow_forget_duration.text()), 2)
- config_data["filter"]["follow_forget_reserve_num"] = int(self.ui.lineEdit_filter_follow_forget_reserve_num.text())
- config_data["filter"]["talk_forget_duration"] = round(float(self.ui.lineEdit_filter_talk_forget_duration.text()), 2)
- config_data["filter"]["talk_forget_reserve_num"] = int(self.ui.lineEdit_filter_talk_forget_reserve_num.text())
- config_data["filter"]["schedule_forget_duration"] = round(float(self.ui.lineEdit_filter_schedule_forget_duration.text()), 2)
- config_data["filter"]["schedule_forget_reserve_num"] = int(self.ui.lineEdit_filter_schedule_forget_reserve_num.text())
-
- # 答谢
- config_data["thanks"]["entrance_enable"] = self.ui.checkBox_thanks_entrance_enable.isChecked()
- config_data["thanks"]["entrance_copy"] = self.ui.lineEdit_thanks_entrance_copy.text()
- config_data["thanks"]["gift_enable"] = self.ui.checkBox_thanks_gift_enable.isChecked()
- config_data["thanks"]["gift_copy"] = self.ui.lineEdit_thanks_gift_copy.text()
- config_data["thanks"]["lowest_price"] = round(float(self.ui.lineEdit_thanks_lowest_price.text()), 2)
- config_data["thanks"]["follow_enable"] = self.ui.checkBox_thanks_follow_enable.isChecked()
- config_data["thanks"]["follow_copy"] = self.ui.lineEdit_thanks_follow_copy.text()
-
- config_data["live2d"]["enable"] = self.ui.checkBox_live2d_enable.isChecked()
- live2d_port = self.ui.lineEdit_live2d_port.text()
- config_data["live2d"]["port"] = int(live2d_port)
- tmp_str = f"var model_name = \"{self.ui.comboBox_live2d_name.currentText()}\";"
- common.write_content_to_file("Live2D/js/model_name.js", tmp_str)
-
- openai_api = self.ui.lineEdit_openai_api.text()
- config_data["openai"]["api"] = openai_api
- # 获取多行文本输入框的内容
- config_data["openai"]["api_key"] = common_textEdit_handle(self.ui.textEdit_openai_api_key.toPlainText())
-
- config_data["chatgpt"]["model"] = self.ui.comboBox_chatgpt_model.currentText()
- config_data["chatgpt"]["temperature"] = round(float(self.ui.lineEdit_chatgpt_temperature.text()), 1)
- config_data["chatgpt"]["max_tokens"] = int(self.ui.lineEdit_chatgpt_max_tokens.text())
- config_data["chatgpt"]["top_p"] = round(float(self.ui.lineEdit_chatgpt_top_p.text()), 1)
- config_data["chatgpt"]["presence_penalty"] = round(float(self.ui.lineEdit_chatgpt_presence_penalty.text()), 1)
- config_data["chatgpt"]["frequency_penalty"] = round(float(self.ui.lineEdit_chatgpt_frequency_penalty.text()), 1)
- config_data["chatgpt"]["preset"] = self.ui.lineEdit_chatgpt_preset.text()
-
- chatterbot_name = self.ui.lineEdit_chatterbot_name.text()
- config_data["chatterbot"]["name"] = chatterbot_name
- chatterbot_db_path = self.ui.lineEdit_chatterbot_db_path.text()
- config_data["chatterbot"]["db_path"] = chatterbot_db_path
-
- config_data["claude"]["slack_user_token"] = self.ui.lineEdit_claude_slack_user_token.text()
- config_data["claude"]["bot_user_id"] = self.ui.lineEdit_claude_bot_user_id.text()
-
- config_data["claude2"]["cookie"] = self.ui.lineEdit_claude2_cookie.text()
- config_data["claude2"]["use_proxy"] = self.ui.checkBox_claude2_use_proxy.isChecked()
- config_data["claude2"]["proxies"]["http"] = self.ui.lineEdit_claude2_proxies_http.text()
- config_data["claude2"]["proxies"]["https"] = self.ui.lineEdit_claude2_proxies_https.text()
- config_data["claude2"]["proxies"]["socks5"] = self.ui.lineEdit_claude2_proxies_socks5.text()
-
- config_data["chatglm"]["api_ip_port"] = self.ui.lineEdit_chatglm_api_ip_port.text()
- config_data["chatglm"]["max_length"] = int(self.ui.lineEdit_chatglm_max_length.text())
- config_data["chatglm"]["top_p"] = round(float(self.ui.lineEdit_chatglm_top_p.text()), 1)
- config_data["chatglm"]["temperature"] = round(float(self.ui.lineEdit_chatglm_temperature.text()), 2)
- config_data["chatglm"]["history_enable"] = self.ui.checkBox_chatglm_history_enable.isChecked()
- config_data["chatglm"]["history_max_len"] = int(self.ui.lineEdit_chatglm_history_max_len.text())
-
- config_data["langchain_chatglm"]["api_ip_port"] = self.ui.lineEdit_langchain_chatglm_api_ip_port.text()
- config_data["langchain_chatglm"]["chat_type"] = self.ui.comboBox_langchain_chatglm_chat_type.currentText()
- config_data["langchain_chatglm"]["knowledge_base_id"] = self.ui.lineEdit_langchain_chatglm_knowledge_base_id.text()
- config_data["langchain_chatglm"]["history_enable"] = self.ui.checkBox_langchain_chatglm_history_enable.isChecked()
- config_data["langchain_chatglm"]["history_max_len"] = int(self.ui.lineEdit_langchain_chatglm_history_max_len.text())
-
- config_data["chat_with_file"]["chat_mode"] = self.ui.comboBox_chat_with_file_chat_mode.currentText()
- chat_with_file_data_path = self.ui.lineEdit_chat_with_file_data_path.text()
- config_data["chat_with_file"]["data_path"] = chat_with_file_data_path
- chat_with_file_separator = self.ui.lineEdit_chat_with_file_separator.text()
- config_data["chat_with_file"]["separator"] = chat_with_file_separator
- chat_with_file_chunk_size = self.ui.lineEdit_chat_with_file_chunk_size.text()
- config_data["chat_with_file"]["chunk_size"] = int(chat_with_file_chunk_size)
- chat_with_file_chunk_overlap = self.ui.lineEdit_chat_with_file_chunk_overlap.text()
- config_data["chat_with_file"]["chunk_overlap"] = int(chat_with_file_chunk_overlap)
- config_data["chat_with_file"]["local_vector_embedding_model"] = self.ui.comboBox_chat_with_file_local_vector_embedding_model.currentText()
- chat_with_file_chain_type = self.ui.lineEdit_chat_with_file_chain_type.text()
- config_data["chat_with_file"]["chain_type"] = chat_with_file_chain_type
- # 获取复选框的选中状态
- chat_with_file_show_token_cost = self.ui.checkBox_chat_with_file_show_token_cost.isChecked()
- config_data["chat_with_file"]["show_token_cost"] = chat_with_file_show_token_cost
- chat_with_file_question_prompt = self.ui.lineEdit_chat_with_file_question_prompt.text()
- config_data["chat_with_file"]["question_prompt"] = chat_with_file_question_prompt
- chat_with_file_local_max_query = self.ui.lineEdit_chat_with_file_local_max_query.text()
- config_data["chat_with_file"]["local_max_query"] = int(chat_with_file_local_max_query)
-
- config_data["text_generation_webui"]["api_ip_port"] = self.ui.lineEdit_text_generation_webui_api_ip_port.text()
- config_data["text_generation_webui"]["max_new_tokens"] = int(self.ui.lineEdit_text_generation_webui_max_new_tokens.text())
- config_data["text_generation_webui"]["mode"] = self.ui.lineEdit_text_generation_webui_mode.text()
- config_data["text_generation_webui"]["character"] = self.ui.lineEdit_text_generation_webui_character.text()
- config_data["text_generation_webui"]["instruction_template"] = self.ui.lineEdit_text_generation_webui_instruction_template.text()
- config_data["text_generation_webui"]["your_name"] = self.ui.lineEdit_text_generation_webui_your_name.text()
-
- # sparkdesk
- config_data["sparkdesk"]["type"] = self.ui.comboBox_sparkdesk_type.currentText()
- config_data["sparkdesk"]["cookie"] = self.ui.lineEdit_sparkdesk_cookie.text()
- config_data["sparkdesk"]["fd"] = self.ui.lineEdit_sparkdesk_fd.text()
- config_data["sparkdesk"]["GtToken"] = self.ui.lineEdit_sparkdesk_GtToken.text()
- config_data["sparkdesk"]["app_id"] = self.ui.lineEdit_sparkdesk_app_id.text()
- config_data["sparkdesk"]["api_secret"] = self.ui.lineEdit_sparkdesk_api_secret.text()
- config_data["sparkdesk"]["api_key"] = self.ui.lineEdit_sparkdesk_api_key.text()
- config_data["sparkdesk"]["version"] = round(float(self.ui.comboBox_sparkdesk_version.currentText()), 1)
-
- audio_synthesis_type = self.ui.comboBox_audio_synthesis_type.currentText()
- if audio_synthesis_type == "Edge-TTS":
- config_data["audio_synthesis_type"] = "edge-tts"
- elif audio_synthesis_type == "VITS":
- config_data["audio_synthesis_type"] = "vits"
- elif audio_synthesis_type == "VITS-Fast":
- config_data["audio_synthesis_type"] = "vits_fast"
- elif audio_synthesis_type == "elevenlabs":
- config_data["audio_synthesis_type"] = "elevenlabs"
- elif audio_synthesis_type == "genshinvoice_top":
- config_data["audio_synthesis_type"] = "genshinvoice_top"
- elif audio_synthesis_type == "bark_gui":
- config_data["audio_synthesis_type"] = "bark_gui"
- elif audio_synthesis_type == "VALL-E-X":
- config_data["audio_synthesis_type"] = "vall_e_x"
- elif audio_synthesis_type == "OpenAI TTS":
- config_data["audio_synthesis_type"] = "openai_tts"
-
- # 音频随机变速
- config_data["audio_random_speed"]["normal"]["enable"] = self.ui.checkBox_audio_random_speed_normal_enable.isChecked()
- config_data["audio_random_speed"]["normal"]["speed_min"] = round(float(self.ui.lineEdit_audio_random_speed_normal_speed_min.text()), 2)
- config_data["audio_random_speed"]["normal"]["speed_max"] = round(float(self.ui.lineEdit_audio_random_speed_normal_speed_max.text()), 2)
- config_data["audio_random_speed"]["copywriting"]["enable"] = self.ui.checkBox_audio_random_speed_copywriting_enable.isChecked()
- config_data["audio_random_speed"]["copywriting"]["speed_min"] = round(float(self.ui.lineEdit_audio_random_speed_copywriting_speed_min.text()), 2)
- config_data["audio_random_speed"]["copywriting"]["speed_max"] = round(float(self.ui.lineEdit_audio_random_speed_copywriting_speed_max.text()), 2)
-
- config_data["vits_fast"]["config_path"] = self.ui.lineEdit_vits_fast_config_path.text()
- config_data["vits_fast"]["api_ip_port"] = self.ui.lineEdit_vits_fast_api_ip_port.text()
- config_data["vits_fast"]["character"] = self.ui.lineEdit_vits_fast_character.text()
- config_data["vits_fast"]["language"] = self.ui.comboBox_vits_fast_language.currentText()
- config_data["vits_fast"]["speed"] = round(float(self.ui.lineEdit_vits_fast_speed.text()), 1)
-
- config_data["edge-tts"]["voice"] = self.ui.comboBox_edge_tts_voice.currentText()
- config_data["edge-tts"]["rate"] = self.ui.lineEdit_edge_tts_rate.text()
- config_data["edge-tts"]["volume"] = self.ui.lineEdit_edge_tts_volume.text()
-
- config_data["elevenlabs"]["api_key"] = self.ui.lineEdit_elevenlabs_api_key.text()
- config_data["elevenlabs"]["voice"] = self.ui.lineEdit_elevenlabs_voice.text()
- config_data["elevenlabs"]["model"] = self.ui.lineEdit_elevenlabs_model.text()
-
- config_data["genshinvoice_top"]["speaker"] = self.ui.comboBox_genshinvoice_top_speaker.currentText()
- config_data["genshinvoice_top"]["noise"] = self.ui.lineEdit_genshinvoice_top_noise.text()
- config_data["genshinvoice_top"]["noisew"] = self.ui.lineEdit_genshinvoice_top_noisew.text()
- config_data["genshinvoice_top"]["length"] = self.ui.lineEdit_genshinvoice_top_length.text()
- config_data["genshinvoice_top"]["format"] = self.ui.lineEdit_genshinvoice_top_format.text()
- config_data["genshinvoice_top"]["language"] = self.ui.comboBox_genshinvoice_top_language.currentText()
-
- # bark-gui
- config_data["bark_gui"]["api_ip_port"] = self.ui.lineEdit_bark_gui_api_ip_port.text()
- config_data["bark_gui"]["spk"] = self.ui.lineEdit_bark_gui_spk.text()
- config_data["bark_gui"]["generation_temperature"] = round(float(self.ui.lineEdit_bark_gui_generation_temperature.text()), 1)
- config_data["bark_gui"]["waveform_temperature"] = round(float(self.ui.lineEdit_bark_gui_waveform_temperature.text()), 1)
- config_data["bark_gui"]["end_of_sentence_probability"] = round(float(self.ui.lineEdit_bark_gui_end_of_sentence_probability.text()), 2)
- config_data["bark_gui"]["quick_generation"] = self.ui.checkBox_bark_gui_quick_generation.isChecked()
- config_data["bark_gui"]["seed"] = round(float(self.ui.lineEdit_bark_gui_seed.text()), 2)
- config_data["bark_gui"]["batch_count"] = int(self.ui.lineEdit_bark_gui_batch_count.text())
-
- # 点歌
- config_data["choose_song"]["enable"] = self.ui.checkBox_choose_song_enable.isChecked()
- config_data["choose_song"]["start_cmd"] = self.ui.lineEdit_choose_song_start_cmd.text()
- config_data["choose_song"]["stop_cmd"] = self.ui.lineEdit_choose_song_stop_cmd.text()
- config_data["choose_song"]["random_cmd"] = self.ui.lineEdit_choose_song_random_cmd.text()
- config_data["choose_song"]["song_path"] = self.ui.lineEdit_choose_song_song_path.text()
- config_data["choose_song"]["match_fail_copy"] = self.ui.lineEdit_choose_song_match_fail_copy.text()
-
- # DDSP-SVC
- config_data["ddsp_svc"]["enable"] = self.ui.checkBox_ddsp_svc_enable.isChecked()
- config_data["ddsp_svc"]["config_path"] = self.ui.lineEdit_ddsp_svc_config_path.text()
- config_data["ddsp_svc"]["api_ip_port"] = self.ui.lineEdit_ddsp_svc_api_ip_port.text()
- config_data["ddsp_svc"]["fSafePrefixPadLength"] = round(float(self.ui.lineEdit_ddsp_svc_fSafePrefixPadLength.text()), 1)
- config_data["ddsp_svc"]["fPitchChange"] = round(float(self.ui.lineEdit_ddsp_svc_fPitchChange.text()), 1)
- config_data["ddsp_svc"]["sSpeakId"] = int(self.ui.lineEdit_ddsp_svc_sSpeakId.text())
- config_data["ddsp_svc"]["sampleRate"] = int(self.ui.lineEdit_ddsp_svc_sampleRate.text())
-
- # so-vits-svc
- config_data["so_vits_svc"]["enable"] = self.ui.checkBox_so_vits_svc_enable.isChecked()
- config_data["so_vits_svc"]["config_path"] = self.ui.lineEdit_so_vits_svc_config_path.text()
- config_data["so_vits_svc"]["api_ip_port"] = self.ui.lineEdit_so_vits_svc_api_ip_port.text()
- config_data["so_vits_svc"]["spk"] = self.ui.lineEdit_so_vits_svc_spk.text()
- config_data["so_vits_svc"]["tran"] = round(float(self.ui.lineEdit_so_vits_svc_tran.text()), 1)
- config_data["so_vits_svc"]["wav_format"] = self.ui.lineEdit_so_vits_svc_wav_format.text()
-
- # SD
- config_data["sd"]["enable"] = self.ui.checkBox_sd_enable.isChecked()
- config_data["sd"]["prompt_llm"]["type"] = self.ui.comboBox_prompt_llm_type.currentText()
- config_data["sd"]["prompt_llm"]["before_prompt"] = self.ui.lineEdit_prompt_llm_before_prompt.text()
- config_data["sd"]["prompt_llm"]["after_prompt"] = self.ui.lineEdit_prompt_llm_after_prompt.text()
- config_data["sd"]["trigger"] = self.ui.lineEdit_sd_trigger.text()
- config_data["sd"]["ip"] = self.ui.lineEdit_sd_ip.text()
- sd_port = self.ui.lineEdit_sd_port.text()
- # logging.info(f"sd_port={sd_port}")
- config_data["sd"]["port"] = int(sd_port)
- config_data["sd"]["negative_prompt"] = self.ui.lineEdit_sd_negative_prompt.text()
- config_data["sd"]["seed"] = float(self.ui.lineEdit_sd_seed.text())
- # 获取多行文本输入框的内容
- config_data["sd"]["styles"] = common_textEdit_handle(self.ui.textEdit_sd_styles.toPlainText())
- config_data["sd"]["cfg_scale"] = int(self.ui.lineEdit_sd_cfg_scale.text())
- config_data["sd"]["steps"] = int(self.ui.lineEdit_sd_steps.text())
- config_data["sd"]["hr_resize_x"] = int(self.ui.lineEdit_sd_hr_resize_x.text())
- config_data["sd"]["hr_resize_y"] = int(self.ui.lineEdit_sd_hr_resize_y.text())
- config_data["sd"]["enable_hr"] = self.ui.checkBox_sd_enable_hr.isChecked()
- config_data["sd"]["hr_scale"] = int(self.ui.lineEdit_sd_hr_scale.text())
- config_data["sd"]["hr_second_pass_steps"] = int(self.ui.lineEdit_sd_hr_second_pass_steps.text())
- config_data["sd"]["denoising_strength"] = round(float(self.ui.lineEdit_sd_denoising_strength.text()), 1)
-
- config_data["header"]["userAgent"] = self.ui.lineEdit_header_useragent.text()
-
- # 聊天
- config_data["talk"]["username"] = self.ui.lineEdit_talk_username.text()
- config_data["talk"]["continuous_talk"] = self.ui.checkBox_talk_continuous_talk.isChecked()
- config_data["talk"]["trigger_key"] = self.ui.comboBox_talk_trigger_key.currentText()
- config_data["talk"]["stop_trigger_key"] = self.ui.comboBox_talk_stop_trigger_key.currentText()
- config_data["talk"]["type"] = self.ui.comboBox_talk_type.currentText()
- config_data["talk"]["volume_threshold"] = round(float(self.ui.lineEdit_talk_volume_threshold.text()), 1)
- config_data["talk"]["silence_threshold"] = round(float(self.ui.lineEdit_talk_silence_threshold.text()), 1)
- config_data["talk"]["baidu"]["app_id"] = self.ui.lineEdit_talk_baidu_app_id.text()
- config_data["talk"]["baidu"]["api_key"] = self.ui.lineEdit_talk_baidu_api_key.text()
- config_data["talk"]["baidu"]["secret_key"] = self.ui.lineEdit_talk_baidu_secret_key.text()
- config_data["talk"]["google"]["tgt_lang"] = self.ui.comboBox_talk_google_tgt_lang.currentText()
-
- schedule_data = self.update_data_from_gridLayout(self.ui.gridLayout_schedule)
-
- """
- 动态读取GUI内数据到配置变量
- """
- # 通用的函数用于将GridLayout数据重组为JSON格式列表
- def reorganize_grid_data_list(grid_data, keys_per_item):
- tmp_json = []
- keys = list(grid_data.keys())
-
- for i in range(0, len(keys), len(keys_per_item)):
- item = {}
- for j, key in enumerate(keys_per_item):
- item[key] = grid_data[keys[i + j]]
- tmp_json.append(item)
-
- logging.debug(f"tmp_json={tmp_json}")
- return tmp_json
-
- # 通用的函数用于将GridLayout数据重组为JSON格式
- def reorganize_grid_data(grid_data, keys_mapping):
- keys = list(grid_data.keys())
- tmp_json = {new_key: grid_data[keys[old_key]] for new_key, old_key in keys_mapping.items()}
- logging.debug(f"tmp_json={tmp_json}")
- return tmp_json
-
- def reorganize_schedule_data(schedule_data):
- tmp_json = []
- keys = list(schedule_data.keys())
-
- for i in range(0, len(keys), 3):
- item = {}
-
- key_checkbox = keys[i]
- key_lineedit = keys[i + 1]
- key_textedit = keys[i + 2]
-
- item["enable"] = schedule_data[key_checkbox]
-
- time_value = schedule_data[key_lineedit]
- try:
- item["time"] = float(time_value)
- except ValueError:
- item["time"] = 1.0
-
- # 对于文本列表,确保处理成字符串列表类型
- copy_list = schedule_data[key_textedit]
- if isinstance(copy_list, list):
- item["copy"] = [str(item) for item in copy_list if isinstance(item, str)]
- else:
- item["copy"] = []
-
- tmp_json.append(item)
-
- logging.debug(f"tmp_json={tmp_json}")
-
- return tmp_json
-
- # 写回json
- config_data["schedule"] = reorganize_schedule_data(schedule_data)
- # logging.info(config_data)
-
- # 文案
- copywriting_config_data = self.update_data_from_gridLayout(self.ui.gridLayout_copywriting_config)
-
- def reorganize_copywriting_config_data(copywriting_config_data):
- tmp_json = []
- keys = list(copywriting_config_data.keys())
-
- for i in range(0, len(keys), 7):
- item = {}
-
- key_file_path = keys[i]
- key_audio_path = keys[i + 1]
- # 跳过1个
- key_play_list = keys[i + 2 + 1]
- # 跳过1个
- key_continuous_play_num = keys[i + 3 + 2]
- key_max_play_time = keys[i + 4 + 2]
-
- item["file_path"] = copywriting_config_data[key_file_path]
- item["audio_path"] = copywriting_config_data[key_audio_path]
-
- # 对于文本列表,确保处理成字符串列表类型
- play_list = copywriting_config_data[key_play_list]
- if isinstance(play_list, list):
- item["play_list"] = [str(item) for item in play_list if isinstance(item, str)]
- else:
- item["play_list"] = []
-
- try:
- item["continuous_play_num"] = int(copywriting_config_data[key_continuous_play_num])
- except ValueError:
- item["continuous_play_num"] = 1
-
- max_play_time = copywriting_config_data[key_max_play_time]
- try:
- item["max_play_time"] = round(float(max_play_time), 2)
- except ValueError:
- item["max_play_time"] = 1.0
-
- tmp_json.append(item)
-
- logging.debug(f"tmp_json={tmp_json}")
-
- return tmp_json
-
- config_data["copywriting"]["config"] = reorganize_copywriting_config_data(copywriting_config_data)
- config_data["copywriting"]["audio_interval"] = round(float(self.ui.lineEdit_copywriting_audio_interval.text()), 1)
- config_data["copywriting"]["switching_interval"] = round(float(self.ui.lineEdit_copywriting_switching_interval.text()), 1)
- config_data["copywriting"]["auto_play"] = self.ui.checkBox_copywriting_switching_auto_play.isChecked()
- config_data["copywriting"]["random_play"] = self.ui.checkBox_copywriting_switching_random_play.isChecked()
-
-
- # 定义每个GridLayout的键映射
- zhipu_keys_mapping = {
- "api_key": 0,
- "model": 1,
- "top_p": 2,
- "temperature": 3,
- "history_enable": 4,
- "history_max_len": 5,
- "user_info": 6,
- "bot_info": 7,
- "bot_name": 8,
- "user_name": 9,
- "remove_useless": 10
- }
-
- # 重组zhipu数据并写回json
- zhipu_data = self.update_data_from_gridLayout(self.ui.gridLayout_zhipu)
- config_data["zhipu"] = reorganize_grid_data(zhipu_data, zhipu_keys_mapping)
-
- # 动态文案
- config_data["trends_copywriting"]["enable"] = self.ui.checkBox_trends_copywriting_enable.isChecked()
- config_data["trends_copywriting"]["random_play"] = self.ui.checkBox_trends_copywriting_random_play.isChecked()
- config_data["trends_copywriting"]["play_interval"] = int(self.ui.lineEdit_trends_copywriting_play_interval.text())
-
- # 定义trends_copywriting GridLayout的键映射
- trends_copywriting_keys_per_item = ["folder_path", "prompt_change_enable", "prompt_change_content"]
- # 重组trends_copywriting数据并写回json
- trends_copywriting_data = self.update_data_from_gridLayout(self.ui.gridLayout_trends_copywriting_2)
- config_data["trends_copywriting"]["copywriting"] = reorganize_grid_data_list(trends_copywriting_data, trends_copywriting_keys_per_item)
-
- # 闲时文案
- idle_time_task_keys_mapping = {
- "enable": 0,
- "idle_time": 1,
- "random_time": 2
- }
-
- # 重组idle_time_task数据并写回json
- idle_time_task_data = self.update_data_from_gridLayout(self.ui.gridLayout_idle_time_task)
- config_data["idle_time_task"] = reorganize_grid_data(idle_time_task_data, idle_time_task_keys_mapping)
-
- idle_time_task_comment_keys_mapping = {
- "enable": 0,
- "random": 1,
- "copy": 2
- }
-
- # 重组idle_time_task_comment数据并写回json
- idle_time_task_comment_data = self.update_data_from_gridLayout(self.ui.gridLayout_idle_time_task_comment)
- config_data["idle_time_task"]["comment"] = reorganize_grid_data(idle_time_task_comment_data, idle_time_task_comment_keys_mapping)
-
- idle_time_task_local_audio_keys_mapping = {
- "enable": 0,
- "random": 1,
- "path": 2
- }
-
- # 重组idle_time_task_local_audio数据并写回json
- idle_time_task_local_audio_data = self.update_data_from_gridLayout(self.ui.gridLayout_idle_time_task_local_audio)
- config_data["idle_time_task"]["local_audio"] = reorganize_grid_data(idle_time_task_local_audio_data, idle_time_task_local_audio_keys_mapping)
-
- vits_keys_mapping = {
- "type": 0,
- "config_path": 1,
- "api_ip_port": 2,
- "id": 3,
- "lang": 4,
- "length": 5,
- "noise": 6,
- "noisew": 7,
- "max": 8,
- "format": 9,
- "sdp_radio": 10,
- }
-
- # 重组vits数据并写回json
- vits_data = self.update_data_from_gridLayout(self.ui.gridLayout_vits)
- config_data["vits"] = reorganize_grid_data(vits_data, vits_keys_mapping)
-
- database_keys_mapping = {
- "path": 0,
- "comment_enable": 1,
- "entrance_enable": 2,
- "gift_enable": 3
- }
-
- # 重组database数据并写回json
- database_data = self.update_data_from_gridLayout(self.ui.gridLayout_database)
- config_data["database"] = reorganize_grid_data(database_data, database_keys_mapping)
-
- play_audio_keys_mapping = {
- "enable": 0,
- "out_path": 1,
- "player": 2
- }
-
- # 重组play_audio数据并写回json
- play_audio_data = self.update_data_from_gridLayout(self.ui.gridLayout_play_audio)
- config_data["play_audio"] = reorganize_grid_data(play_audio_data, play_audio_keys_mapping)
-
- audio_player_keys_mapping = {
- "api_ip_port": 0
- # "type": 2 # 如果不需要该字段,可以注释掉或删除
- }
-
- # 重组audio_player数据并写回json
- audio_player_data = self.update_data_from_gridLayout(self.ui.gridLayout_audio_player)
- config_data["audio_player"] = reorganize_grid_data(audio_player_data, audio_player_keys_mapping)
-
- web_captions_printer_keys_mapping = {
- "enable": 0,
- "api_ip_port": 1
- # "type": 2 # 如果不需要该字段,可以注释掉或删除
- }
-
- # 重组web_captions_printer数据并写回json
- web_captions_printer_data = self.update_data_from_gridLayout(self.ui.gridLayout_web_captions_printer)
- config_data["web_captions_printer"] = reorganize_grid_data(web_captions_printer_data, web_captions_printer_keys_mapping)
-
- vall_e_x_keys_mapping = {
- "api_ip_port": 0,
- "language": 1,
- "accent": 2,
- "voice_preset": 3,
- "voice_preset_file_path": 4
- }
-
- # 重组bilibili数据并写回json
- vall_e_x_data = self.update_data_from_gridLayout(self.ui.gridLayout_vall_e_x)
- config_data["vall_e_x"] = reorganize_grid_data(vall_e_x_data, vall_e_x_keys_mapping)
-
- openai_tts_keys_mapping = {
- "type": 0,
- "api_ip_port": 1,
- "model": 2,
- "voice": 3,
- "api_key": 4
- }
-
- # 重组openai_tts数据并写回json
- openai_tts_data = self.update_data_from_gridLayout(self.ui.gridLayout_openai_tts)
- config_data["openai_tts"] = reorganize_grid_data(openai_tts_data, openai_tts_keys_mapping)
-
- bilibili_keys_mapping = {
- "login_type": 0,
- "cookie": 1,
- "ac_time_value": 2,
- "username": 3,
- "password": 4
- }
-
- # 重组bilibili数据并写回json
- bilibili_data = self.update_data_from_gridLayout(self.ui.gridLayout_bilibili)
- config_data["bilibili"] = reorganize_grid_data(bilibili_data, bilibili_keys_mapping)
-
- twitch_keys_mapping = {
- "token": 0,
- "user": 1,
- "proxy_server": 2,
- "proxy_port": 3
- }
-
- # 重组twitch数据并写回json
- twitch_data = self.update_data_from_gridLayout(self.ui.gridLayout_twitch)
- config_data["twitch"] = reorganize_grid_data(twitch_data, twitch_keys_mapping)
-
-
- bard_keys_mapping = {
- "token": 0
- }
-
- # 重组bard数据并写回json
- bard_data = self.update_data_from_gridLayout(self.ui.gridLayout_bard)
- config_data["bard"] = reorganize_grid_data(bard_data, bard_keys_mapping)
-
- # 文心一言
- yiyan_keys_mapping = {
- "api_ip_port": 0,
- "type": 1,
- "cookie": 2
- }
-
- # 重组yiyan数据并写回json
- yiyan_data = self.update_data_from_gridLayout(self.ui.gridLayout_yiyan)
- config_data["yiyan"] = reorganize_grid_data(yiyan_data, yiyan_keys_mapping)
-
- # 通义千问
- tongyi_keys_mapping = {
- "type": 0,
- "cookie_path": 1
- }
-
- tongyi_data = self.update_data_from_gridLayout(self.ui.gridLayout_tongyi)
- config_data["tongyi"] = reorganize_grid_data(tongyi_data, tongyi_keys_mapping)
-
- # 念弹幕
- read_comment_keys_mapping = {
- "enable": 0,
- "read_username_enable": 1,
- "voice_change": 2,
- "read_username_copywriting": 3
- }
-
- # 重组read_comment数据并写回json
- read_comment_data = self.update_data_from_gridLayout(self.ui.gridLayout_read_comment)
- config_data["read_comment"] = reorganize_grid_data(read_comment_data, read_comment_keys_mapping)
-
- # 按键映射
- config_data["key_mapping"]["enable"] = self.ui.checkBox_key_mapping_enable.isChecked()
- config_data["key_mapping"]["type"] = self.ui.comboBox_key_mapping_type.currentText()
- config_data["key_mapping"]["start_cmd"] = self.ui.lineEdit_key_mapping_start_cmd.text()
-
- key_mapping_config_keys_per_item = ["keywords", "keys", "similarity"]
-
- # 重组key_mapping_config数据并写回json
- key_mapping_config_data = self.update_data_from_gridLayout(self.ui.gridLayout_key_mapping_config)
- config_data["key_mapping"]["config"] = reorganize_grid_data_list(key_mapping_config_data, key_mapping_config_keys_per_item)
-
- """
- 积分页
- """
- config_data["integral"]["enable"] = self.ui.checkBox_integral_common_enable.isChecked()
-
- # 入场
- def reorganize_integral_entrance_data(integral_entrance_data):
- keys = list(integral_entrance_data.keys())
-
- tmp_json = {
- "enable": integral_entrance_data[keys[0]],
- "get_integral": int(integral_entrance_data[keys[1]]),
- "copywriting": []
- }
-
- logging.debug(f"tmp_json={tmp_json}")
-
- return tmp_json
-
- integral_entrance_data = self.update_data_from_gridLayout(self.ui.gridLayout_integral_entrance)
- # 写回json
- config_data["integral"]["entrance"] = reorganize_integral_entrance_data(integral_entrance_data)
-
- # 入场-文案
- # 定义 GridLayout的键映射
- integral_entrance_copywriting_keys_per_item = ["entrance_num_interval", "copywriting"]
-
- # 重组 数据并写回json
- integral_entrance_copywriting_data = self.update_data_from_gridLayout(self.ui.gridLayout_integral_entrance_copywriting)
- config_data["integral"]["entrance"]["copywriting"] = reorganize_grid_data_list(integral_entrance_copywriting_data, integral_entrance_copywriting_keys_per_item)
-
- # 签到
- def reorganize_integral_sign_data(integral_sign_data):
- keys = list(integral_sign_data.keys())
-
- tmp_json = {
- "enable": integral_sign_data[keys[0]],
- "cmd": integral_sign_data[keys[1]],
- "get_integral": int(integral_sign_data[keys[2]]),
- "copywriting": []
- }
-
- logging.debug(f"tmp_json={tmp_json}")
-
- return tmp_json
-
- integral_sign_data = self.update_data_from_gridLayout(self.ui.gridLayout_integral_sign)
- # 写回json
- config_data["integral"]["sign"] = reorganize_integral_sign_data(integral_sign_data)
-
- # 签到-文案
- # 定义integral_sign_copywriting GridLayout的键映射
- integral_sign_copywriting_keys_per_item = ["sign_num_interval", "copywriting"]
-
- # 重组integral_sign_copywriting数据并写回json
- integral_sign_copywriting_data = self.update_data_from_gridLayout(self.ui.gridLayout_integral_sign_copywriting)
- config_data["integral"]["sign"]["copywriting"] = reorganize_grid_data_list(integral_sign_copywriting_data, integral_sign_copywriting_keys_per_item)
-
- # 礼物
- def reorganize_integral_gift_data(integral_gift_data):
- keys = list(integral_gift_data.keys())
-
- tmp_json = {
- "enable": integral_gift_data[keys[0]],
- "get_integral_proportion": float(integral_gift_data[keys[1]]),
- "copywriting": []
- }
-
- logging.debug(f"tmp_json={tmp_json}")
-
- return tmp_json
-
- integral_gift_data = self.update_data_from_gridLayout(self.ui.gridLayout_integral_gift)
- # 写回json
- config_data["integral"]["gift"] = reorganize_integral_gift_data(integral_gift_data)
-
- # 礼物-文案
- # 定义 GridLayout的键映射
- integral_gift_copywriting_keys_per_item = ["gift_price_interval", "copywriting"]
-
- # 重组 数据并写回json
- integral_gift_copywriting_data = self.update_data_from_gridLayout(self.ui.gridLayout_integral_gift_copywriting)
- config_data["integral"]["gift"]["copywriting"] = reorganize_grid_data_list(integral_gift_copywriting_data, integral_gift_copywriting_keys_per_item)
-
- # 增删查改
- def reorganize_integral_crud_query_data(integral_crud_query_data):
- keys = list(integral_crud_query_data.keys())
-
- tmp_json = {
- "enable": integral_crud_query_data[keys[0]],
- "cmd": integral_crud_query_data[keys[1]],
- "copywriting": integral_crud_query_data[keys[2]]
- }
-
- logging.debug(f"tmp_json={tmp_json}")
-
- return tmp_json
-
- integral_crud_query_data = self.update_data_from_gridLayout(self.ui.gridLayout_integral_crud_query)
- # 写回json
- config_data["integral"]["crud"]["query"] = reorganize_integral_crud_query_data(integral_crud_query_data)
-
- xuniren_keys_mapping = {
- "api_ip_port": 0
- # "type": 2 # 如果不需要该字段,可以注释掉或删除
- }
-
- xuniren_data = self.update_data_from_gridLayout(self.ui.gridLayout_xuniren)
- config_data["xuniren"] = reorganize_grid_data(xuniren_data, xuniren_keys_mapping)
-
- unity_keys_mapping = {
- #"enable": 0,
- "api_ip_port": 0
- # "type": 2 # 如果不需要该字段,可以注释掉或删除
- }
-
- unity_data = self.update_data_from_gridLayout(self.ui.gridLayout_unity)
- config_data["unity"] = reorganize_grid_data(unity_data, unity_keys_mapping)
-
- """
- ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
- -------------------------------------------------------------------------------------------------------------
- """
-
- # 获取自定义板块显隐的数据
- show_box_data = self.update_data_from_gridLayout(self.ui.gridLayout_show_box, "show_box")
- show_box_json = {}
- for key, value in show_box_data.items():
- checkbox_name = key.split('_QCheckBox')[0]
- show_box_json[checkbox_name] = value
-
- logging.debug(show_box_json)
- config_data["show_box"] = show_box_json
-
- except Exception as e:
- logging.error(traceback.format_exc())
- self.show_message_box("错误", f"配置项格式有误,请检查配置!\n{e}", QMessageBox.Critical)
- return False
-
- try:
- with open(config_path, 'w', encoding="utf-8") as config_file:
- json.dump(config_data, config_file, indent=2, ensure_ascii=False)
- config_file.flush() # 刷新缓冲区,确保写入立即生效
-
- logging.info("配置数据已成功写入文件!程序将在3秒后重启~")
- self.show_message_box("提示", "配置数据已成功写入文件!程序将在3秒后重启~", QMessageBox.Information, 3000)
-
- self.restart_application()
-
- return True
- except Exception as e:
- logging.error(traceback.format_exc())
- logging.error(f"无法写入配置文件!\n{e}")
- self.show_message_box("错误", f"无法写入配置文件!\n{e}", QMessageBox.Critical)
- return False
-
-
- '''
- 按钮相关的函数
- '''
-
- # 恢复出厂配置
- def factory(self):
- result = QMessageBox.question(
- None, "确认框", "您确定要恢复出厂配置吗?", QMessageBox.Yes | QMessageBox.No
- )
- if result == QMessageBox.No:
- return
-
- source_file = 'config.json.bak'
- destination_file = 'config.json'
-
- try:
- with open(source_file, 'r', encoding="utf-8") as source:
- with open(destination_file, 'w', encoding="utf-8") as destination:
- destination.write(source.read())
- logging.info("恢复出厂配置成功!")
- except Exception as e:
- logging.error(f"恢复出厂配置失败!\n{e}")
- self.show_message_box("错误", f"恢复出厂配置失败!\n{e}", QMessageBox.Critical)
-
- # 重载下配置
- self.init_config()
-
-
- # 运行
- def run(self):
- if self.running_flag == 1:
- self.show_message_box("提醒", "程序运行中,请勿重复运行,请耐心等待喵~如果卡死或者3分钟都没有运行日志,可以重启重新运行",
- QMessageBox.Information, 3000)
- return
-
- self.running_flag = 1
-
- self.show_message_box("提示", "3秒后开始运行,运行可能比较缓慢,请耐心等待,如果3分钟都没有运行日志输出,则可能是程序卡死,建议重启~",
- QMessageBox.Information, 3000)
-
- def delayed_run():
- # 判断当前位于的页面,如果是聊天页,则不跳转到运行页
- if self.stackedWidget_index != 3:
- # 切换到索引为 1 的页面 运行页
- self.ui.stackedWidget.setCurrentIndex(1)
-
- # 开冲!
- try:
- # self.run_external_command()
- # 连接信号与槽函数,用于接收输出并更新 UI
- # thread.output_ready.connect(self.ui.textBrowser.setText)
-
- # 连接 output_ready 信号和 update_textbrowser 槽函数
- # thread.output_ready.connect(self.update_textbrowser)
-
- # 创建线程对象
- self.platform_thread = ExternalCommandThread()
- self.platform_thread.platform = self.platform
- # 启动线程执行 run_external_command()
- self.platform_thread.start()
-
- # 设置定时器间隔为 300 毫秒
- self.timer.setInterval(300)
- # 每次定时器触发时调用 update_text_browser 函数
- self.timer.timeout.connect(self.update_text_browser)
- # 启动定时器
- self.timer.start()
-
- self.show_message_box("提示", "开始运行喵~\n不要忘记保存配置~", QMessageBox.Information, 3000)
- except Exception as e:
- logging.error("平台配置出错,程序自爆~\n{e}")
- self.show_message_box("错误", f"平台配置出错,程序自爆~\n{e}", QMessageBox.Critical)
- os._exit(0)
-
- # 启动定时器,延迟 秒后触发函数执行
- QTimer.singleShot(100, delayed_run)
-
-
- # 切换至index页面
- def change_page(self, index):
- self.stackedWidget_index = index
- self.ui.stackedWidget.setCurrentIndex(index)
-
-
- # 保存配置
- def on_pushButton_save_clicked(self):
- self.throttled_save()
-
- # 初始化配置
- def on_pushButton_factory_clicked(self):
- self.throttled_factory()
-
- # 运行
- def on_pushButton_run_clicked(self):
- self.throttled_run()
-
- # 切换页面
- def on_pushButton_change_page_clicked(self, index):
- self.throttled_change_page(index)
-
-
- # 根据文案索引添加文案
- def copywriting_config_index_add(self):
- try:
- index = int(self.ui.lineEdit_copywriting_config_index.text())
-
- tmp = {
- "file_path": "",
- "audio_path": "",
- "play_list": [],
- "continuous_play_num": 1,
- "max_play_time": 5.0
- }
-
- # 追加数据到成员变量
- self.copywriting_config["config"].append(tmp)
-
- data_json = []
- tmp_json = {
- "label_text": "文案存储路径" + str(index),
- "label_tip": "文案文件存储路径,默认不可编辑。不建议更改。",
- "data": tmp["file_path"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_file_path",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "音频存储路径" + str(index),
- "label_tip": "文案音频文件存储路径,默认不可编辑。不建议更改。",
- "data": tmp["audio_path"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_audio_path",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "文案列表" + str(index),
- "label_tip": "加载配置文件中配置的文案路径(data/copywriting/)下的所有文件,请勿放入其他非文案文件",
- "data": [],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_copywriting_list",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "播放列表" + str(index),
- "label_tip": "此处填写需要播放的音频文件全名,填写完毕后点击 保存配置。文件全名从音频列表中复制,换行分隔,请勿随意填写",
- "data": tmp["play_list"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_play_list",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "已合成\n音频列表" + str(index),
- "label_tip": "加载配置文件中配置的音频路径(out/copywriting/)下的所有文件,请勿放入其他非音频文件",
- "data": [],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_audio_list",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "连续播放数" + str(index),
- "label_tip": "文案播放列表中连续播放的音频文件个数,如果超过了这个个数就会切换下一个文案列表",
- "data": tmp["continuous_play_num"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_continuous_play_num",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "连续播放时间" + str(index),
- "label_tip": "文案播放列表中连续播放音频的时长,如果超过了这个时长就会切换下一个文案列表",
- "data": tmp["max_play_time"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_max_play_time",
- "index": index
- }
- data_json.append(tmp_json)
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_copywriting_config.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_copywriting_config.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- self.copywriting_refresh_list()
- except Exception as e:
- logging.error(traceback.format_exc())
-
-
- # 根据文案索引删除文案
- def copywriting_config_index_del(self):
- try:
- index = int(self.ui.lineEdit_copywriting_config_index.text())
-
- # 删除指定索引的数据
- if 0 <= index < len(self.copywriting_config["config"]):
- del self.copywriting_config["config"][index]
-
- self.copywriting_refresh_list()
- except Exception as e:
- logging.error(traceback.format_exc())
-
-
- # 加载文案
- def copywriting_select(self):
- select_file_path = self.ui.lineEdit_copywriting_select.text()
- if "" == select_file_path:
- logging.warning(f"请输入 文案路径喵~")
- self.show_message_box("警告", "请输入 文案路径喵~", QMessageBox.Critical, 3000)
- return
-
- # 传入完整文件路径 绝对或相对
- logging.info(f"准备加载 文件:[{select_file_path}]")
- new_file_path = os.path.join(select_file_path)
-
- content = common.read_file_return_content(new_file_path)
- if content is None:
- logging.error(f"读取失败!请检测配置、文件路径、文件名")
- self.show_message_box("错误", "读取失败!请检测配置、文件路径、文件名", QMessageBox.Critical)
- return
-
- self.ui.textEdit_copywriting_edit.setText(content)
-
- logging.info(f"成功加载文案:{select_file_path}")
- self.show_message_box("提示", f"成功加载文案:{select_file_path}", QMessageBox.Information, 3000)
-
- self.copywriting_refresh_list()
-
-
- def on_pushButton_copywriting_config_index_add_clicked(self):
- self.throttled_copywriting_config_index_add()
-
- def on_pushButton_copywriting_config_index_del_clicked(self):
- self.throttled_copywriting_config_index_del()
-
-
- # 加载文案按钮
- def on_pushButton_copywriting_select_clicked(self):
- self.throttled_copywriting_select()
-
-
- # 刷新列表
- def copywriting_refresh_list(self):
- try:
- while self.ui.gridLayout_copywriting_config.count():
- item = self.ui.gridLayout_copywriting_config.takeAt(0)
- widget = item.widget()
- if widget is not None:
- widget.deleteLater()
-
- data_json = []
- for index, tmp in enumerate(self.copywriting_config["config"]):
- tmp_json = {
- "label_text": "文案存储路径" + str(index),
- "label_tip": "文案文件存储路径,默认不可编辑。不建议更改。",
- "data": tmp["file_path"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_file_path",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "音频存储路径" + str(index),
- "label_tip": "文案音频文件存储路径,默认不可编辑。不建议更改。",
- "data": tmp["audio_path"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_audio_path",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_str = ""
- copywriting_file_names = self.get_dir_txt_filename(self.copywriting_config["config"][index]['file_path'])
- for tmp_copywriting_file_name in copywriting_file_names:
- tmp_str = tmp_str + tmp_copywriting_file_name + "\n"
- tmp_json = {
- "label_text": "文案列表" + str(index),
- "label_tip": "加载配置文件中配置的文案路径(data/copywriting/)下的所有文件,请勿放入其他非文案文件",
- "data": [tmp_str],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_copywriting_list",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "播放列表" + str(index),
- "label_tip": "此处填写需要播放的音频文件全名,填写完毕后点击 保存配置。文件全名从音频列表中复制,换行分隔,请勿随意填写",
- "data": tmp["play_list"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_play_list",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_str = ""
- copywriting_audio_file_names = self.get_dir_audio_filename(self.copywriting_config["config"][index]['audio_path'])
- for tmp_copywriting_audio_file_name in copywriting_audio_file_names:
- tmp_str = tmp_str + tmp_copywriting_audio_file_name + "\n"
- tmp_json = {
- "label_text": "已合成\n音频列表" + str(index),
- "label_tip": "加载配置文件中配置的音频路径(out/copywriting/)下的所有文件,请勿放入其他非音频文件",
- "data": [tmp_str],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_audio_list",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "连续播放数" + str(index),
- "label_tip": "文案播放列表中连续播放的音频文件个数,如果超过了这个个数就会切换下一个文案列表",
- "data": tmp["continuous_play_num"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_continuous_play_num",
- "index": index
- }
- data_json.append(tmp_json)
-
- tmp_json = {
- "label_text": "连续播放时间" + str(index),
- "label_tip": "文案播放列表中连续播放音频的时长,如果超过了这个时长就会切换下一个文案列表",
- "data": tmp["max_play_time"],
- "widget_text": "",
- "click_func": "",
- "main_obj_name": "copywriting_config_max_play_time",
- "index": index
- }
- data_json.append(tmp_json)
- widgets = self.create_widgets_from_json(data_json)
-
- # 动态添加widget到对应的gridLayout
- row = 0
- for i in range(0, len(widgets), 2):
- self.ui.gridLayout_copywriting_config.addWidget(widgets[i], row, 0)
- self.ui.gridLayout_copywriting_config.addWidget(widgets[i + 1], row, 1)
- row += 1
-
- logging.info("刷新文件列表")
- except Exception as e:
- logging.error(traceback.format_exc())
- self.show_message_box("错误", f"刷新失败!{e}", QMessageBox.Critical)
-
-
- # 刷新列表按钮
- def on_pushButton_copywriting_refresh_list_clicked(self):
- self.throttled_copywriting_refresh_list()
-
-
- # 保存文案
- def copywriting_save(self):
- content = self.ui.textEdit_copywriting_edit.toPlainText()
- select_file_path = self.ui.lineEdit_copywriting_select.text()
- if "" == select_file_path:
- logging.warning(f"请输入 文案路径喵~")
- return
-
- new_file_path = os.path.join(select_file_path)
- if True == common.write_content_to_file(new_file_path, content):
- self.show_message_box("提示", "保存成功~", QMessageBox.Information, 3000)
- else:
- self.show_message_box("错误", "保存失败!请查看日志排查问题", QMessageBox.Critical)
-
-
- # 保存文案按钮
- def on_pushButton_copywriting_save_clicked(self):
- self.throttled_copywriting_save()
-
-
- # 合成音频 正经版
- async def copywriting_synthetic_audio_main(self):
- select_file_path = self.ui.lineEdit_copywriting_select.text()
-
- # 将一个文件路径的字符串切分成路径和文件名
- folder_path, file_name = common.split_path_and_filename(select_file_path)
-
- flag = 0
-
- # 判断文件是哪个路径的
- for copywriting_config in config.get("copywriting", "config"):
- if folder_path == copywriting_config["file_path"]:
- folder_path = copywriting_config["audio_path"]
- flag = 1
- break
-
- if flag == 0:
- logging.error(f"文件路径与配置不匹配,将默认输出到同路径")
- self.show_message_box("提示", f"文件路径与配置不匹配,将默认输出到同路径", QMessageBox.Information, 3000)
-
- ret = await audio.copywriting_synthesis_audio(select_file_path, folder_path)
- if ret is None:
- logging.error(f"合成失败!请排查原因")
- self.show_message_box("错误", "合成失败!请排查原因", QMessageBox.Critical)
- else:
- logging.info(f"合成成功,文件输出到:{ret}")
- self.show_message_box("提示", f"合成成功,文件输出到:{ret}", QMessageBox.Information, 3000)
-
- # 刷新文案和音频列表
- self.copywriting_refresh_list()
-
-
- # 合成音频
- def copywriting_synthetic_audio(self):
- if self.running_flag != 1:
- self.show_message_box("提醒", "请先点击“运行”,然后再进行合成操作",
- QMessageBox.Information, 3000)
- return
-
- result = QMessageBox.question(
- None, "确认框", "开始合成后请勿做其他操作,耐心等待合成完成,您确定开始吗?", QMessageBox.Yes | QMessageBox.No
- )
- if result == QMessageBox.No:
- return
-
- asyncio.run(self.copywriting_synthetic_audio_main())
-
-
-
- # 合成音频按钮
- def on_pushButton_copywriting_synthetic_audio_clicked(self):
- self.throttled_copywriting_synthetic_audio()
-
-
- # 循环播放
- def copywriting_loop_play(self):
- if self.running_flag != 1:
- self.show_message_box("提醒", "请先点击“运行”,然后再进行播放",
- QMessageBox.Information, 3000)
- return
-
- self.show_message_box("提示", "3秒后开始循环播放文案~", QMessageBox.Information, 3000)
- audio.unpause_copywriting_play()
-
-
- # 循环播放按钮
- def on_pushButton_copywriting_loop_play_clicked(self):
- self.throttled_copywriting_loop_play()
-
-
- # 暂停播放
- def copywriting_pause_play(self):
- if self.running_flag != 1:
- self.show_message_box("提醒", "请先点击“运行”,然后再进行暂停",
- QMessageBox.Information, 3000)
- return
-
- audio.pause_copywriting_play()
- self.show_message_box("提示", "暂停文案完毕~", QMessageBox.Information, 3000)
-
-
- # 暂停播放按钮
- def on_pushButton_copywriting_pause_play_clicked(self):
- self.throttled_copywriting_pause_play()
-
-
- '''
- 聊天页相关的函数
- '''
-
- # 发送 聊天框内容
- def talk_chat_box_send(self):
- global my_handle
-
- if self.running_flag != 1:
- self.show_message_box("提醒", "请先点击“运行”,然后再进行聊天",
- QMessageBox.Information, 3000)
- return
-
- if my_handle is None:
- from utils.my_handle import My_handle
-
- my_handle = My_handle(config_path)
- if my_handle is None:
- logging.error("程序初始化失败!")
- self.show_message_box("错误", "程序初始化失败!请排查原因", QMessageBox.Critical)
- os._exit(0)
-
- # 获取用户名和文本内容
- user_name = self.ui.lineEdit_talk_username.text()
- content = self.ui.textEdit_talk_chat_box.toPlainText()
-
- # 清空聊天框
- self.ui.textEdit_talk_chat_box.setText("")
-
- data = {
- "username": user_name,
- "content": content
- }
-
- # 正义执行
- my_handle.process_data(data, "comment")
-
-
- # 发送 聊天框内容 进行复读
- def talk_chat_box_reread(self):
- global my_handle
-
- if self.running_flag != 1:
- self.show_message_box("提醒", "请先点击“运行”,然后再进行复读",
- QMessageBox.Information, 3000)
- return
-
- if my_handle is None:
- from utils.my_handle import My_handle
-
- my_handle = My_handle(config_path)
- if my_handle is None:
- logging.error("程序初始化失败!")
- self.show_message_box("错误", "程序初始化失败!请排查原因", QMessageBox.Critical)
- os._exit(0)
-
- # 获取用户名和文本内容
- user_name = self.ui.lineEdit_talk_username.text()
- content = self.ui.textEdit_talk_chat_box.toPlainText()
-
- # 清空聊天框
- self.ui.textEdit_talk_chat_box.setText("")
-
- data = {
- "user_name": user_name,
- "content": content
- }
-
- # 正义执行 直接复读
- my_handle.reread_handle(data)
-
-
- # 事件过滤器会监听 QTextEdit 内的按键事件,当按下回车键时,会调用 eventFilter 方法,然后执行 talk_handleEnterKey 方法中的自定义处理代码。
- def eventFilter(self, source, event):
- # print(event.type())
- if (event.type() == QEvent.KeyPress and
- event.key() == Qt.Key_Return and
- source is self.ui.textEdit_talk_chat_box):
- # 在这里执行回车按键事件的处理代码
- self.talk_handleEnterKey()
- return True
- return super().eventFilter(source, event)
-
-
- def talk_handleEnterKey(self):
- # 发送 聊天框内容
- self.talk_chat_box_send()
-
-
- def on_pushButton_talk_chat_box_send_clicked(self):
- self.throttled_talk_chat_box_send()
-
-
- def on_pushButton_talk_chat_box_reread_clicked(self):
- self.throttled_talk_chat_box_reread()
-
-
- '''
- 餐单栏相关的函数
- '''
- def openBrowser_github(self):
- url = QUrl("https://github.com/Ikaros-521/AI-Vtuber") # 指定要打开的网页地址
- QDesktopServices.openUrl(url)
-
- def openBrowser_video(self):
- url = QUrl("https://space.bilibili.com/3709626/channel/collectiondetail?sid=1422512") # 指定要打开的网页地址
- QDesktopServices.openUrl(url)
-
- def openBrowser_online_doc(self):
- url = QUrl("https://luna.docs.ie.cx") # 指定要打开的网页地址
- QDesktopServices.openUrl(url)
-
- # 跳转到官方Q群
- def openBrowser_official_qq_group(self):
- url = QUrl("https://qm.qq.com/cgi-bin/qm/qr?k=sYTkGUFactreB4MJZx-aPeWvYtpWaJYG&jump_from=webapi&authKey=NVHJc5hDHOk0ynysKZ8BqIpnLxYfsJWnCb0vH02xBwE2BYP8UPSce7qJ4EPa6wGu") # 指定要打开的网页地址
- QDesktopServices.openUrl(url)
-
- # 弹出关于窗口
- def alert_about(self):
- about_str = """
-项目地址:https://github.com/Ikaros-521/AI-Vtuber
-视频教程:https://space.bilibili.com/3709626/channel/collectiondetail?sid=1422512
-在线文档:https://luna.docs.ie.cx
-
-项目完全免费,如果您是在第三方平台购买了本项目,均为盗版,请及时止损(可怜的娃呀~)
- """
- self.show_message_box("关于", about_str, QMessageBox.Information, 180000)
-
- def exit_soft(self):
- os._exit(0)
-
- '''
- UI操作的函数
- '''
- # 自定义板块显隐
- def show_box_clicked(self, status, text):
- box_obj_name = "groupBox_" + text
- # 使用getattr()函数来从self.ui对象中获取属性。getattr()函数接收三个参数:对象,属性名(字符串),和默认值(可选)。
- # 如果属性存在,则返回对应的属性值(在这里是一个groupBox对象),否则返回默认值(在这里是None)。
- # 这样就可以根据字符串构造变量名,并获取对应的groupBox对象。
- box_widget = getattr(self.ui, box_obj_name, None)
- if box_widget is not None:
- box_widget.setVisible(status)
-
-
- # 聊天类型改变 加载显隐不同groupBox
- def oncomboBox_chat_type_IndexChanged(self, index):
- # 各index对应的groupbox的显隐值
- visibility_map = {
- 0: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- 1: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- 2: (1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- 3: (0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- 4: (0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- 5: (0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0),
- 6: (1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0),
- 7: (0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0),
- 8: (0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0),
- 9: (0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0),
- 10: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
- 11: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0),
- 12: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0),
- 13: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0),
- 14: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
- }
-
- visibility_values = visibility_map.get(index, (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
-
- self.ui.groupBox_openai.setVisible(visibility_values[0])
- self.ui.groupBox_chatgpt.setVisible(visibility_values[1])
- self.ui.groupBox_header.setVisible(visibility_values[2])
- self.ui.groupBox_claude.setVisible(visibility_values[3])
- self.ui.groupBox_claude2.setVisible(visibility_values[4])
- self.ui.groupBox_chatglm.setVisible(visibility_values[5])
- self.ui.groupBox_chat_with_file.setVisible(visibility_values[6])
- self.ui.groupBox_chatterbot.setVisible(visibility_values[7])
- self.ui.groupBox_text_generation_webui.setVisible(visibility_values[8])
- self.ui.groupBox_sparkdesk.setVisible(visibility_values[9])
- self.ui.groupBox_langchain_chatglm.setVisible(visibility_values[10])
- self.ui.groupBox_zhipu.setVisible(visibility_values[11])
- self.ui.groupBox_bard.setVisible(visibility_values[12])
- self.ui.groupBox_yiyan.setVisible(visibility_values[13])
- self.ui.groupBox_tongyi.setVisible(visibility_values[14])
-
-
- # 语音合成类型改变 加载显隐不同groupBox
- # 当你新增TTS时,你需要同步修改此处的TTS配置的显隐
- def oncomboBox_audio_synthesis_type_IndexChanged(self, index):
- # 各index对应的groupbox的显隐值
- visibility_map = {
- 0: (1, 0, 0, 0, 0, 0, 0, 0),
- 1: (0, 1, 0, 0, 0, 0, 0, 0),
- 2: (0, 0, 1, 0, 0, 0, 0, 0),
- 3: (0, 0, 0, 1, 0, 0, 0, 0),
- 4: (0, 0, 0, 0, 1, 0, 0, 0),
- 5: (0, 0, 0, 0, 0, 1, 0, 0),
- 6: (0, 0, 0, 0, 0, 0, 1, 0),
- 7: (0, 0, 0, 0, 0, 0, 0, 1)
- }
-
- visibility_values = visibility_map.get(index, (0, 0, 0, 0, 0, 0, 0, 0))
-
- self.ui.groupBox_edge_tts.setVisible(visibility_values[0])
- self.ui.groupBox_vits.setVisible(visibility_values[1])
- self.ui.groupBox_vits_fast.setVisible(visibility_values[2])
- self.ui.groupBox_elevenlabs.setVisible(visibility_values[3])
- self.ui.groupBox_genshinvoice_top.setVisible(visibility_values[4])
- self.ui.groupBox_bark_gui.setVisible(visibility_values[5])
- self.ui.groupBox_vall_e_x.setVisible(visibility_values[6])
- self.ui.groupBox_openai_tts.setVisible(visibility_values[7])
-
-
- # 语音识别类型改变 加载显隐不同groupBox
- def oncomboBox_talk_type_IndexChanged(self, index):
- # 各index对应的groupbox的显隐值
- visibility_map = {
- 0: (1, 0),
- 1: (0, 1)
- }
-
- visibility_values = visibility_map.get(index, (0, 0))
-
- self.ui.groupBox_talk_baidu.setVisible(visibility_values[0])
- self.ui.groupBox_talk_google.setVisible(visibility_values[1])
-
-
- # 输出文本到运行页的textbrowser
- # def output_to_textbrowser(self, content):
- # max_content_len = 10000
-
- # text = self.ui.textBrowser.toPlainText() + content # 将新内容添加到已有内容后面
- # if len(text) > max_content_len:
- # text = text[-max_content_len:] # 保留最后一万个字符,截断超出部分
- # self.ui.textBrowser.setText(text)
-
-
- # def update_textbrowser(self, output_text):
- # cursor = self.ui.textBrowser.textCursor()
- # cursor.movePosition(QTextCursor.End)
- # cursor.insertText(output_text)
- # self.ui.textBrowser.setTextCursor(cursor)
- # self.ui.textBrowser.ensureCursorVisible()
-
-
- # 获取一个文件最后num_lines行数据
- def load_last_lines(self, file_path, num_lines=1000):
- lines = []
- with open(file_path, 'r', encoding="utf-8") as file:
- # 将文件内容逐行读取到列表中
- lines = file.readlines()
-
- # 只保留最后1000行文本
- last_lines = lines[-num_lines:]
-
- # 倒序排列文本行
- last_lines.reverse()
-
- return last_lines
-
-
- # 清空text_browser,显示文件内的数据
- def update_text_browser(self):
- global file_path
-
- # 记录当前的滚动位置
- scroll_position = self.ui.textBrowser.verticalScrollBar().value()
- scroll_position_talk_log = self.ui.textBrowser_talk_log.verticalScrollBar().value()
-
- # print(f"scroll_position={scroll_position}, scroll_position_talk_log={scroll_position_talk_log}")
-
- # 加载文件的最后1000行文本
- last_lines = self.load_last_lines(file_path)
-
- # 获取当前文本光标
- cursor = self.ui.textBrowser.textCursor()
- cursor_talk_log = self.ui.textBrowser_talk_log.textCursor()
-
- # 获取当前选中的文本
- selected_text = cursor.selectedText()
- selected_text_talk_log = cursor_talk_log.selectedText()
-
- # 判断是否有选中的文本
- has_selection = len(selected_text) > 0
- has_selection_talk_log = len(selected_text_talk_log) > 0
-
- # 清空 textBrowser
- self.ui.textBrowser.clear()
- self.ui.textBrowser_talk_log.clear()
-
- # 设置文本浏览器打开外部链接功能
- self.ui.textBrowser.setOpenExternalLinks(True)
- self.ui.textBrowser_talk_log.setOpenExternalLinks(True)
-
- # 将文本逐行添加到 textBrowser 中
- for line in last_lines:
- self.ui.textBrowser.insertPlainText(line)
- self.ui.textBrowser_talk_log.insertPlainText(line)
-
- # 恢复滚动位置
- if not has_selection:
- self.ui.textBrowser.verticalScrollBar().setValue(scroll_position)
-
- if not has_selection_talk_log:
- self.ui.textBrowser_talk_log.verticalScrollBar().setValue(scroll_position_talk_log)
-
-
- '''
- 通用的函数
- '''
- # 获取本地音频文件夹内所有的txt文件名
- def get_dir_txt_filename(self, txt_path):
- try:
- # 使用 os.walk 遍历文件夹及其子文件夹
- txt_files = []
- for root, dirs, files in os.walk(txt_path):
- for file in files:
- if file.endswith(('.txt')):
- txt_files.append(os.path.join(root, file))
-
- # 提取文件名
- file_names = [os.path.basename(file) for file in txt_files]
- # 保留子文件夹路径
- # file_names = [os.path.relpath(file, txt_path) for file in txt_files]
-
- logging.debug("获取到文案文件名列表如下:")
- logging.debug(file_names)
-
- return file_names
- except Exception as e:
- logging.error(traceback.format_exc())
- return None
-
-
- # 获取本地音频文件夹内所有的音频文件名
- def get_dir_audio_filename(self, audio_path):
- try:
- # 使用 os.walk 遍历文件夹及其子文件夹
- audio_files = []
- for root, dirs, files in os.walk(audio_path):
- for file in files:
- if file.endswith(('.MP3', '.mp3', '.WAV', '.wav', '.flac', '.aac', '.ogg', '.m4a')):
- audio_files.append(os.path.join(root, file))
-
- # 提取文件名
- audio_file_names = [os.path.basename(file) for file in audio_files]
- # 保留子文件夹路径
- # file_names = [os.path.relpath(file, song_path) for file in audio_audio_files]
-
- logging.debug("获取到本地文案音频文件名列表如下:")
- logging.debug(audio_file_names)
-
- return audio_file_names
- except Exception as e:
- logging.error(traceback.format_exc())
- return None
-
-
- def restart_application(self):
- QApplication.exit() # Exit the current application instance
- python = sys.executable
- os.execl(python, python, *sys.argv) # Start a new instance of the application
-
-
- # 字符串是否只由字母或数字组成
- def is_alpha_numeric(self, string):
- pattern = r'^[a-zA-Z0-9]+$'
- return re.match(pattern, string) is not None
-
-
- # 显示提示弹窗框,自动关闭时间(单位:毫秒)
- def show_message_box(self, title, text, icon=QMessageBox.Information, timeout_ms=60 * 1000):
- msg_box = QMessageBox()
- msg_box.setWindowTitle(title)
- msg_box.setText(text)
- msg_box.setIcon(icon)
-
- def close_message_box():
- msg_box.close()
-
- QTimer.singleShot(timeout_ms, close_message_box)
-
- msg_box.exec_()
-
-
- # 套娃运行喵(会卡死)
- def run_external_command(self):
- module = importlib.import_module(self.platform)
- platform_process = subprocess.Popen([sys.executable, '-c', 'import {}'.format(module.__name__)], stdout=subprocess.PIPE, stderr=subprocess.PIPE,
- args=(AI_VTB.terminate_event,))
- output, _ = platform_process.communicate()
- output_text = output.decode("utf-8") # 将字节流解码为字符串
- self.output_to_textbrowser(output_text)
-
- # 调用 start_server() 并将输出追加到 textbrowser
- start_server_output = module.start_server() # 调用 start_server() 函数并获取输出
- output_text += start_server_output
-
-
- # 节流函数,单位时间内只执行一次函数
- def throttle(self, func, delay):
- last_executed = 0
-
- def throttled(*args, **kwargs):
- nonlocal last_executed
- current_time = time.time()
- if current_time - last_executed > delay:
- last_executed = current_time
- func(*args, **kwargs)
-
- return throttled
-
-
-# 执行额外命令的线程
-class ExternalCommandThread(QThread):
- output_ready = pyqtSignal(str)
-
- def __init__(self, platform=None):
- super().__init__()
- self.platform = platform
-
- def run(self):
- if self.platform is None:
- # 处理没有传递 platform 的情况
- self.output_ready.emit("没有传入platform,取名为寄!")
- return
-
- logging.debug(f"platform={self.platform}")
-
- module = importlib.import_module(self.platform)
- AI_VTB.platform_process = subprocess.Popen([sys.executable, '-c', 'import {}'.format(module.__name__)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- output, _ = AI_VTB.platform_process.communicate()
- # logging.debug(output)
- # output_text = output.decode("utf-8") # 将字节流解码为字符串
-
- # 调用 start_server() 并将输出追加到 textbrowser
- start_server_output = module.start_server() # 调用 start_server() 函数并获取输出
- # output_text += start_server_output
-
-
-# web服务线程
-class WebServerThread(QThread):
- def run(self):
- Handler = http.server.SimpleHTTPRequestHandler
- with socketserver.TCPServer(("", web_server_port), Handler) as httpd:
- logging.info(f"Web运行在端口:{web_server_port}")
- logging.info(f"可以直接访问Live2D页, http://127.0.0.1:{web_server_port}/Live2D/")
- httpd.serve_forever()
-
-
-# 退出程序
-def exit_handler(signum, frame):
- print("收到信号:", signum)
-
- os._exit(0)
-
-
-# 程序入口
-if __name__ == '__main__':
- common = Common()
- my_handle = None
-
- if getattr(sys, 'frozen', False):
- # 当前是打包后的可执行文件
- bundle_dir = getattr(sys, '_MEIPASS', os.path.abspath(os.path.dirname(sys.executable)))
- file_relative_path = os.path.dirname(os.path.abspath(bundle_dir))
- else:
- # 当前是源代码
- file_relative_path = os.path.dirname(os.path.abspath(__file__))
-
- # logging.info(file_relative_path)
-
- # 创建日志文件夹
- log_dir = os.path.join(file_relative_path, 'log')
- if not os.path.exists(log_dir):
- os.makedirs(log_dir)
-
- # 创建音频输出文件夹
- audio_out_dir = os.path.join(file_relative_path, 'out')
- if not os.path.exists(audio_out_dir):
- os.makedirs(audio_out_dir)
-
- # # 创建配置文件夹
- # config_dir = os.path.join(file_relative_path, 'config')
- # if not os.path.exists(config_dir):
- # os.makedirs(config_dir)
-
- # 配置文件路径
- config_path = os.path.join(file_relative_path, 'config.json')
-
- audio = Audio(config_path, 2)
-
- # 日志文件路径
- file_path = "./log/log-" + common.get_bj_time(1) + ".txt"
- Configure_logger(file_path)
-
- # 获取 httpx 库的日志记录器
- httpx_logger = logging.getLogger("httpx")
- # 设置 httpx 日志记录器的级别为 WARNING
- httpx_logger.setLevel(logging.WARNING)
-
- web_server_port = 12345
-
- # 本地测试时候的日志设置
- '''
- # 日志格式
- log_format = '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
- # 日志文件路径
- file_path = os.path.join(file_relative_path, 'log/log.txt')
-
- # 自定义控制台输出类
- class ColoredStreamHandler(logging.StreamHandler):
- """
- 自定义 StreamHandler 类,用于在控制台中为不同级别的日志信息设置不同的颜色
- """
- def __init__(self):
- super().__init__()
- self._colors = {
- logging.DEBUG: '\033[1;34m', # 蓝色
- logging.INFO: '\033[1;37m', # 白色
- logging.WARNING: '\033[1;33m', # 黄色
- logging.ERROR: '\033[1;31m', # 红色
- logging.CRITICAL: '\033[1;35m' # 紫色
- }
-
- def emit(self, record):
- # 根据日志级别设置颜色
- color = self._colors.get(record.levelno, '\033[0m') # 默认为关闭颜色设置
- # 设置日志输出格式和颜色
- self.stream.write(color)
- super().emit(record)
- self.stream.write('\033[0m')
-
- # 创建 logger 对象并设置日志级别
- logger = logging.getLogger(__name__)
- logging.setLevel(logging.DEBUG)
-
- # 创建 FileHandler 对象和 StreamHandler 对象并设置日志级别
- fh = logging.FileHandler(file_path, encoding='utf-8', mode='a+')
- fh.setLevel(logging.DEBUG)
- ch = ColoredStreamHandler()
- ch.setLevel(logging.DEBUG)
-
- # 创建 Formatter 对象并设置日志输出格式
- formatter = logging.Formatter(log_format)
- fh.setFormatter(formatter)
- ch.setFormatter(formatter)
-
- # 将 FileHandler 对象和 ColoredStreamHandler 对象添加到 logger 对象中
- logging.addHandler(fh)
- logging.addHandler(ch)
- '''
-
-
- logging.debug("配置文件路径=" + str(config_path))
-
- # 实例化配置类
- config = Config(config_path)
-
- try:
- if config.get("live2d", "enable"):
- web_server_port = int(config.get("live2d", "port"))
- # 创建 web服务线程
- web_server_thread = WebServerThread()
- # 运行 web服务线程
- web_server_thread.start()
- except Exception as e:
- logging.error(traceback.format_exc())
- os._exit(0)
-
- signal.signal(signal.SIGINT, exit_handler)
- signal.signal(signal.SIGTERM, exit_handler)
-
- e = AI_VTB()
-
- sys.exit(e.app.exec())
-
diff --git a/ui/main.ui b/ui/main.ui
deleted file mode 100644
index c441c1ba..00000000
--- a/ui/main.ui
+++ /dev/null
@@ -1,4420 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 1191
- 834
-
-
-
- AI Vtuber
-
-
- background-color: rgba(255, 255, 255, 50);
-
-
-
- -
-
-
- PointingHandCursor
-
-
- border: 1px solid #dcdfe6;
-background-color: #e6a23c;
-text-align: center;
-padding: 12px 16px;
-border-radius: 4px;
-font: 75 12pt "微软雅黑";
-
-
- ②运行页
-
-
-
- -
-
-
- PointingHandCursor
-
-
- border: 1px solid #dcdfe6;
-background-color: #e6a23c;
-text-align: center;
-padding: 12px 16px;
-border-radius: 4px;
-font: 75 12pt "微软雅黑";
-
-
- ③文案页
-
-
-
- -
-
-
- PointingHandCursor
-
-
- border: 1px solid #dcdfe6;
-background-color: rgba(103, 194, 58, 255);
-text-align: center;
-padding: 12px 16px;
-border-radius: 4px;
-font: 75 12pt "微软雅黑";
-
-
- 运行
-
-
-
- -
-
-
- PointingHandCursor
-
-
- border: 1px solid #dcdfe6;
-background-color: #e6a23c;
-text-align: center;
-padding: 12px 16px;
-border-radius: 4px;
-font: 75 12pt "微软雅黑";
-
-
- ①配置页
-
-
-
- -
-
-
- PointingHandCursor
-
-
- border: 1px solid #dcdfe6;
-background-color: rgba(64, 158, 255, 255);
-text-align: center;
-padding: 12px 16px;
-border-radius: 4px;
-font: 75 12pt "微软雅黑";
-
-
- 保存配置
-
-
-
- -
-
-
- background-color: rgba(255, 255, 255, 0);
-font: 75 14pt "微软雅黑";
-
-
- 0
-
-
-
-
-
-
-
- font: 75 14pt "微软雅黑";
-background-color: rgba(255, 255, 255, 50);
-
-
-
- Qt::ScrollBarAsNeeded
-
-
- true
-
-
-
-
- 0
- -6720
- 991
- 11374
-
-
-
-
- 20
-
-
- 35
-
-
- 20
-
-
- 35
-
-
- 20
-
-
-
-
-
- background-color: rgba(255, 255, 255, 0);
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
- PointingHandCursor
-
-
-
- -
-
-
- 念弹幕
-
-
-
-
-
-
-
-
-
- -
-
-
- 提示词前缀
-
-
-
- -
-
-
- 音频随机变速
-
-
-
-
-
-
-
-
-
- -
-
-
- 普通音频变速
-
-
-
- -
-
-
- 速度下限
-
-
-
- -
-
-
- 速度上限
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- -
-
-
- 文案音频变速
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 速度下限
-
-
-
- -
-
-
- -
-
-
- 速度上限
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 念用户名
-
-
-
-
-
-
-
-
-
- 前置回复
-
-
-
- -
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 是
-
-
-
- -
-
-
- 启用变声
-
-
-
- -
-
-
- 是
-
-
-
- -
-
-
- 后置回复
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
- 音频播放
-
-
-
-
-
-
-
-
-
- -
-
-
- false
-
-
- 平台
-
-
-
- -
-
-
- 回复语言
-
-
-
- -
-
-
- 自定义显示板块
-
-
-
-
-
-
-
-
-
- -
-
-
- Claude2
-
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- https代理地址
-
-
-
- -
-
-
- socks5代理地址
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- cookie
-
-
-
- -
-
-
- 启用代理
-
-
-
- -
-
-
- http代理地址
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- xuniren
-
-
-
-
-
-
-
-
-
- -
-
-
- 提示词后缀
-
-
-
- -
-
-
- ChatGLM
-
-
-
-
-
-
-
-
-
- api地址
-
-
-
- -
-
-
- -
-
-
- 最大记忆长度
-
-
-
- -
-
-
- -
-
-
- 前p个选择
-
-
-
- -
-
-
- 温度
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 最大长度限制
-
-
-
- -
-
-
- 上下文记忆
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 直播间号
-
-
-
- -
-
-
- openai
-
-
-
-
-
-
- 2
-
-
-
-
-
- API
-
-
-
- -
-
-
- -
-
-
- API KEY
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- 虚拟身体
-
-
-
- -
-
-
- PointingHandCursor
-
-
-
- -
-
-
- 聊天类型
-
-
-
- -
-
-
- 本地问答
-
-
-
-
-
-
-
-
-
- 音频匹配
-
-
-
- -
-
-
- 文本匹配
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- -
-
-
- 音频最低相似度
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 文本最低相似度
-
-
-
- -
-
-
- -
-
-
- 音频存储路径
-
-
-
- -
-
-
- 文本问答数据路径
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 文本问答算法类型
-
-
-
- -
-
-
-
-
- 自定义json
-
-
- -
-
- 一问一答
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- Claude
-
-
-
-
-
-
-
-
-
- -
-
-
- slack_user_token
-
-
-
- -
-
-
- bot_user_id
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- PointingHandCursor
-
-
-
-
- 所有
-
-
- -
-
- 中文
-
-
- -
-
- 英文
-
-
- -
-
- 日文
-
-
-
-
- -
-
-
- 日志
-
-
-
-
-
-
-
-
-
-
-
- 问答
-
-
- -
-
- 问题
-
-
- -
-
- 回答
-
-
- -
-
- 不记录
-
-
-
-
- -
-
-
- 弹幕日志类型
-
-
-
- -
-
-
- 字幕日志路径
-
-
-
- -
-
-
- -
-
-
- 字幕日志
-
-
-
- -
-
-
- 启用
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
-
-
- 过滤
-
-
-
-
-
-
-
-
-
- 聊天保留数
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- 弹幕保留数
-
-
-
- -
-
-
- 最大单词数
-
-
-
- -
-
-
- -
-
-
- 最大字符数
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 入场保留数
-
-
-
- -
-
-
- 聊天遗忘间隔
-
-
-
- -
-
-
- 违禁词路径
-
-
-
- -
-
-
- 定时遗忘间隔
-
-
-
- -
-
-
- 弹幕遗忘间隔
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 关注遗忘间隔
-
-
-
- -
-
-
- -
-
-
- 违禁拼音路径
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 礼物保留数
-
-
-
- -
-
-
- -
-
-
- 弹幕前缀
-
-
-
- -
-
-
- -
-
-
- 弹幕后缀
-
-
-
- -
-
-
- -
-
-
- 定时保留数
-
-
-
- -
-
-
- 礼物遗忘间隔
-
-
-
- -
-
-
- -
-
-
- 入场遗忘间隔
-
-
-
- -
-
-
- 关注保留数
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- twitch
-
-
-
-
-
-
-
-
-
- -
-
-
- 语音合成
-
-
-
- -
-
-
- -
-
-
- PointingHandCursor
-
-
-
-
- 不启用
-
-
- -
-
- 复读机
-
-
- -
-
- ChatGPT
-
-
- -
-
- Claude
-
-
- -
-
- ChatGLM
-
-
- -
-
- chat_with_file
-
-
- -
-
- Chatterbot
-
-
- -
-
- text-generation-webui
-
-
- -
-
- 讯飞星火
-
-
- -
-
- Langchain_ChatGLM
-
-
-
-
- -
-
-
- -
-
-
- 哔哩哔哩
-
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- 答谢
-
-
-
-
-
-
- 关注答谢
-
-
-
- -
-
-
- 入场欢迎
-
-
-
- -
-
-
- 入场文案
-
-
-
- -
-
-
- -
-
-
- 关注文案
-
-
-
- -
-
-
- 礼物文案
-
-
-
- -
-
-
- 礼物答谢
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- -
-
-
- 最低答谢价格
-
-
-
- -
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 启用
-
-
-
-
-
-
- -
-
-
- chatgpt
-
-
-
-
-
-
-
-
-
- -
-
-
- 模型
-
-
-
- -
-
-
- 最大令牌数
-
-
-
- -
-
-
- -
-
-
- 温度
-
-
-
- -
-
-
- 前p个选择
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 频率惩罚
-
-
-
- -
-
-
- -
-
-
- 存在惩罚
-
-
-
- -
-
-
- 预设
-
-
-
- -
-
-
- -
-
-
-
-
- gpt-3.5-turbo
-
-
- -
-
- gpt-3.5-turbo-0301
-
-
- -
-
- gpt-3.5-turbo-0613
-
-
- -
-
- gpt-3.5-turbo-16k
-
-
- -
-
- gpt-3.5-turbo-16k-0613
-
-
- -
-
- gpt-4
-
-
- -
-
- gpt-4-0314
-
-
- -
-
- gpt-4-0613
-
-
- -
-
- gpt-4-32k
-
-
- -
-
- gpt-4-32k-0314
-
-
- -
-
- gpt-4-32k-0613
-
-
- -
-
- text-embedding-ada-002
-
-
- -
-
- text-davinci-003
-
-
- -
-
- text-davinci-002
-
-
- -
-
- text-curie-001
-
-
- -
-
- text-babbage-001
-
-
- -
-
- text-ada-001
-
-
- -
-
- text-moderation-latest
-
-
- -
-
- text-moderation-stable
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- audio_player
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- 智谱AI
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- Langchain_ChatGLM
-
-
-
-
-
-
-
-
-
- api地址
-
-
-
- -
-
-
- -
-
-
- 聊天类型
-
-
-
- -
-
-
- 上下文记忆
-
-
-
- -
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- -
-
-
- 知识库名称
-
-
-
- -
-
-
- 最大记忆长度
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- chat_with_file
-
-
-
-
-
-
- 6
-
-
-
-
-
- 模型
-
-
-
- -
-
-
- pdf文件路径
-
-
-
- -
-
-
- 显示成本
-
-
-
- -
-
-
- 聊天模式
-
-
-
- -
-
-
- 最大查询数据库次数
-
-
-
- -
-
-
- 问题总结提示词
-
-
-
- -
-
-
- -
-
-
- 块大小
-
-
-
- -
-
-
- -
-
-
- 链类型
-
-
-
- -
-
-
- PointingHandCursor
-
-
- 启用
-
-
-
- -
-
-
- -
-
-
-
-
- claude
-
-
- -
-
- openai_gpt
-
-
- -
-
- openai_vector_search
-
-
-
-
- -
-
-
- -
-
-
- 分隔符
-
-
-
- -
-
-
- -
-
-
- 块重叠
-
-
-
- -
-
-
-
-
- sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco
-
-
- -
-
- GanymedeNil/text2vec-large-chinese
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- text-generation-webui
-
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- max_new_tokens
-
-
-
- -
-
-
- 角色
-
-
-
- -
-
-
- api地址
-
-
-
- -
-
-
- -
-
-
- instruction_template
-
-
-
- -
-
-
- 模式
-
-
-
- -
-
-
- 你的名字
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 讯飞星火
-
-
-
-
-
-
-
-
-
- api_key
-
-
-
- -
-
-
- -
-
-
- api_secret
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- cookie
-
-
-
- -
-
-
- 类型
-
-
-
- -
-
-
- app_id
-
-
-
- -
-
-
- -
-
-
- -
-
-
- fd
-
-
-
- -
-
-
- GtToken
-
-
-
- -
-
-
- -
-
-
- 版本
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- Bard
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 文心一言
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 通义千问
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- Chatterbot
-
-
-
-
-
-
-
-
-
- -
-
-
- bot名称
-
-
-
- -
-
-
- 数据库路径
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- Edge-TTS
-
-
-
-
-
-
-
-
-
- -
-
-
- 语速增益
-
-
-
- -
-
-
- 说话人
-
-
-
- -
-
-
- 音量增益
-
-
-
- -
-
-
- -
-
-
-
- 16777215
- 100
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- VITS
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- VITS-Fast
-
-
-
-
-
-
-
-
-
- 配置文件路径
-
-
-
- -
-
-
- 语速
-
-
-
- -
-
-
- -
-
-
- 说话人
-
-
-
- -
-
-
- -
-
-
- -
-
-
- API地址
-
-
-
- -
-
-
- 语言
-
-
-
- -
-
-
- -
-
-
-
-
- 自动识别
-
-
- -
-
- 日本語
-
-
- -
-
- 简体中文
-
-
- -
-
- English
-
-
- -
-
- Mix
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- genshinvoice_top
-
-
-
-
-
-
-
-
-
- 角色
-
-
-
- -
-
-
- 音素长度
-
-
-
- -
-
-
- 格式
-
-
-
- -
-
-
- -
-
-
- 语速
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- 感情
-
-
-
- -
-
-
- 语言
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- elevenlabs
-
-
-
-
-
-
-
-
-
- -
-
-
- 说话人
-
-
-
- -
-
-
- -
-
-
- api密钥
-
-
-
- -
-
-
- 模型
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- bark-gui
-
-
-
-
-
-
-
-
-
- API地址
-
-
-
- -
-
-
- 快速生成
-
-
-
- -
-
-
- 批量数
-
-
-
- -
-
-
- 句末概率
-
-
-
- -
-
-
- 随机种子
-
-
-
- -
-
-
- 生成温度
-
-
-
- -
-
-
- 波形温度
-
-
-
- -
-
-
- 说话人
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- 启用
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- VALL-E-X
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- OpenAI TTS
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- Live2D
-
-
-
-
-
-
-
-
-
- 是
-
-
-
- -
-
-
- -
-
-
- 端口
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 模型名
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 点歌模式
-
-
-
-
-
-
-
-
-
- 取消点歌命令
-
-
-
- -
-
-
- -
-
-
- 歌曲路径
-
-
-
- -
-
-
- 是
-
-
-
- -
-
-
- -
-
-
- 点歌触发命令
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 匹配失败文案
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- 随机点歌命令
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 定时任务
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 闲时任务
-
-
-
-
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- -
-
-
- LLM模式
-
-
-
-
-
-
-
-
-
- -
-
-
- 本地音频模式
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- DDSP_SVC
-
-
-
-
-
-
-
-
-
- 启用
-
-
-
- -
-
-
- 安全前缀填充长度
-
-
-
- -
-
-
- -
-
-
- 是
-
-
-
- -
-
-
- -
-
-
- API地址
-
-
-
- -
-
-
- 配置文件路径
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 说话人ID
-
-
-
- -
-
-
- -
-
-
- 变调
-
-
-
- -
-
-
- 采样率
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- so-vits-svc
-
-
-
-
-
-
-
-
-
- 是
-
-
-
- -
-
-
- -
-
-
- 配置文件路径
-
-
-
- -
-
-
- API地址
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 说话人
-
-
-
- -
-
-
- -
-
-
- 音调
-
-
-
- -
-
-
- 输出音频格式
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- Stable Diffusion
-
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- 端口
-
-
-
- -
-
-
- -
-
-
- 高分辨率生成
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- 高分辨率缩放因子
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- 图像水平像素
-
-
-
- -
-
-
- 高分生二次传递步数
-
-
-
- -
-
-
- 去噪强度
-
-
-
- -
-
-
- LLM类型
-
-
-
- -
-
-
- 提示词前缀
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 弹幕触发前缀
-
-
-
- -
-
-
- IP地址
-
-
-
- -
-
-
- 生成图像步数
-
-
-
- -
-
-
- 随机种子
-
-
-
- -
-
-
- -
-
-
- 图像风格
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 提示词相关性
-
-
-
- -
-
-
- -
-
-
- 图像垂直像素
-
-
-
- -
-
-
- -
-
-
- 是
-
-
-
- -
-
-
- 负面提示词
-
-
-
- -
-
-
- 提示词后缀
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 动态文案
-
-
-
-
-
-
-
-
-
- 随机播放
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 文案播放间隔
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- 是
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 请求头
-
-
-
-
-
-
-
-
-
- userAgent
-
-
-
- -
-
-
- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- web字幕打印机
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 数据库
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- 按键映射
-
-
-
-
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
-
-
- 是
-
-
-
- -
-
-
- 启用
-
-
-
- -
-
-
- -
-
-
- 命令前缀
-
-
-
- -
-
-
- 类型
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
-
-
- Unity
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- font: 12pt "仿宋";
-
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'仿宋'; font-size:12pt; font-weight:400; font-style:normal;">
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'SimSun'; font-size:9pt;"><br /></p></body></html>
-
-
-
-
-
-
-
- -
-
-
- font: 75 13pt "微软雅黑";
-
-
-
- true
-
-
-
-
- 0
- 0
- 698
- 1156
-
-
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
- 编辑文案
-
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 保存文案
-
-
-
- -
-
-
-
- 0
- 500
-
-
-
-
- 16777215
- 16777215
-
-
-
- true
-
-
-
-
- 0
- 0
- 359
- 104
-
-
-
-
-
-
-
-
-
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 增加
-
-
-
- -
-
-
- min-height:40px;
-
-
-
- -
-
-
- 文案编号
-
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 删除
-
-
-
- -
-
-
-
-
-
-
-
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 暂停播放
-
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 合成音频
-
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 循环播放
-
-
-
- -
-
-
- min-height:40px;
-
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 刷新列表
-
-
-
- -
-
-
-
-
-
- 选择文案
-
-
-
- -
-
-
-
-
-
- 音频随机播放
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
-
-
- 音频播放间隔
-
-
-
- -
-
-
- min-height:40px;
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 加载
-
-
-
- -
-
-
- min-height:300px;
-
-
-
- -
-
-
- min-height:50px;
-
-
-
- -
-
-
- min-height:40px;
-
-
- 启用
-
-
-
- -
-
-
-
-
-
- 音频切换间隔
-
-
-
- -
-
-
- 自动播放
-
-
-
- -
-
-
- 启用
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- font: 75 14pt "微软雅黑";
-
-
-
- true
-
-
-
-
- 0
- 0
- 433
- 911
-
-
-
-
-
-
-
-
-
-
-
- 启用
-
-
-
- -
-
-
- -
-
-
- 连续对话
-
-
-
- -
-
-
- -
-
-
- 你的名字
-
-
-
- -
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 直接复读
-
-
-
- -
-
-
- 谷歌
-
-
-
-
-
-
- -
-
-
- 目标翻译语言
-
-
-
-
-
-
- -
-
-
- PointingHandCursor
-
-
- text-align: center;
-padding: 12px 16px;
-font: 80 10pt "微软雅黑";
-border:2px solid #ffffff;
-border-radius: 3px;
-
-
- 发送
-
-
-
- -
-
-
- -
-
-
- 沉默阈值
-
-
-
- -
-
-
- 停录按键
-
-
-
- -
-
-
- 录音按键
-
-
-
- -
-
-
- font: 12pt "仿宋";
-min-height:200px;
-
-
-
-
- -
-
-
- 音量阈值
-
-
-
- -
-
-
- -
-
-
- 录音类型
-
-
-
- -
-
-
- 聊天框
-
-
-
- -
-
-
- -
-
-
- -
-
-
- 百度
-
-
-
-
-
-
- -
-
-
- AppID
-
-
-
- -
-
-
- -
-
-
- API Key
-
-
-
- -
-
-
- Secret Key
-
-
-
- -
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- true
-
-
-
-
- 0
- 0
- 181
- 631
-
-
-
-
-
-
-
-
-
-
-
- 入场
-
-
-
-
-
-
- -
-
-
- 文案
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- 签到
-
-
-
-
-
-
- -
-
-
- 文案
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- 礼物
-
-
-
-
-
-
- -
-
-
- 文案
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- 增删改查
-
-
-
-
-
-
-
-
-
- 查询
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- 通用
-
-
-
-
-
-
-
-
-
- 启用
-
-
-
- -
-
-
- 是
-
-
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- PointingHandCursor
-
-
- border: 1px solid #dcdfe6;
-background-color: #e6a23c;
-text-align: center;
-padding: 12px 16px;
-border-radius: 4px;
-font: 75 12pt "微软雅黑";
-
-
- ④聊天页
-
-
-
- -
-
-
- PointingHandCursor
-
-
- border: 1px solid #dcdfe6;
-background-color: #e6a23c;
-text-align: center;
-padding: 12px 16px;
-border-radius: 4px;
-font: 75 12pt "微软雅黑";
-
-
- ⑤积分页
-
-
-
- -
-
-
- PointingHandCursor
-
-
- border: 1px solid #dcdfe6;
-background-color: #f56c6c;
-text-align: center;
-padding: 12px 16px;
-border-radius: 4px;
-font: 75 12pt "微软雅黑";
-
-
- 恢复出厂配置
-
-
-
-
-
-
-
-
-
- 官方仓库
-
-
-
-
- 视频教程
-
-
-
-
- 退出
-
-
-
-
- 在线文档
-
-
-
-
- 关于
-
-
-
-
- 本软件完全免费
-
-
-
-
- 官方Q群:587663288
-
-
-
-
-
-