4cfad5ae0f
- 全新ui - 全面优化websocket逻辑,提高数字人和ui连接的稳定性及资源开销 - 全面优化唤醒逻辑,提供稳定的普通唤醒模式和前置词唤醒模式 - 优化拾音质量,支持多声道麦克风拾音 - 优化自动播放服务器的对接机制,提供稳定和兼容旧版ue工程的对接模式 - 数字人接口输出机器人表情,以适应新fay ui及单片机的数字人表情输出 - 使用更高级的音频时长计算方式,可以更精准控制音频播放完成后的逻辑 - 修复点击关闭按钮会导致程序退出的bug - 修复没有麦克风的设备开启麦克风会出错的问题 - 为服务器主机地址提供配置项,以方便服务器部署
85 lines
2.3 KiB
Python
85 lines
2.3 KiB
Python
#入口文件main
|
|
import os
|
|
os.environ['PATH'] += os.pathsep + os.path.join(os.getcwd(), "test", "ovr_lipsync", "ffmpeg", "bin")
|
|
import sys
|
|
import time
|
|
import re
|
|
from utils import config_util
|
|
from asr import ali_nls
|
|
from core import wsa_server
|
|
from gui import flask_server
|
|
from gui.window import MainWindow
|
|
from core import content_db
|
|
|
|
|
|
#载入配置
|
|
config_util.load_config()
|
|
|
|
#是否为普通模式(桌面模式)
|
|
if config_util.start_mode == 'common':
|
|
from PyQt5 import QtGui
|
|
from PyQt5.QtWidgets import QApplication
|
|
|
|
#音频清理
|
|
def __clear_samples():
|
|
if not os.path.exists("./samples"):
|
|
os.mkdir("./samples")
|
|
for file_name in os.listdir('./samples'):
|
|
if file_name.startswith('sample-'):
|
|
os.remove('./samples/' + file_name)
|
|
|
|
#日志文件清理
|
|
def __clear_logs():
|
|
if not os.path.exists("./logs"):
|
|
os.mkdir("./logs")
|
|
for file_name in os.listdir('./logs'):
|
|
if file_name.endswith('.log'):
|
|
os.remove('./logs/' + file_name)
|
|
#ip替换
|
|
def replace_ip_in_file(file_path, new_ip):
|
|
with open(file_path, "r", encoding="utf-8") as file:
|
|
content = file.read()
|
|
content = re.sub(r"127\.0\.0\.1", new_ip, content)
|
|
content = re.sub(r"localhost", new_ip, content)
|
|
with open(file_path, "w", encoding="utf-8") as file:
|
|
file.write(content)
|
|
|
|
if __name__ == '__main__':
|
|
__clear_samples()
|
|
__clear_logs()
|
|
|
|
#init_db
|
|
contentdb = content_db.new_instance()
|
|
contentdb.init_db()
|
|
|
|
#ip替换
|
|
if config_util.fay_url != "127.0.0.1":
|
|
replace_ip_in_file("gui/static/js/index.js", config_util.fay_url)
|
|
|
|
#启动数字人接口服务
|
|
ws_server = wsa_server.new_instance(port=10002)
|
|
ws_server.start_server()
|
|
|
|
#启动UI数据接口服务
|
|
web_ws_server = wsa_server.new_web_instance(port=10003)
|
|
web_ws_server.start_server()
|
|
|
|
#启动阿里云asr
|
|
if config_util.ASR_mode == "ali":
|
|
ali_nls.start()
|
|
|
|
#启动http服务器
|
|
flask_server.start()
|
|
|
|
#普通模式下启动窗口
|
|
if config_util.start_mode == 'common':
|
|
app = QApplication(sys.argv)
|
|
app.setWindowIcon(QtGui.QIcon('icon.png'))
|
|
win = MainWindow()
|
|
time.sleep(1)
|
|
win.show()
|
|
app.exit(app.exec_())
|
|
else:
|
|
while True:
|
|
time.sleep(1)
|