|
|
@ -88,17 +88,22 @@ def load_db_config(db_path):
|
|
|
|
config_dict = {row["key"]: row["value"] for row in cursor.fetchall()}
|
|
|
|
config_dict = {row["key"]: row["value"] for row in cursor.fetchall()}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def set_enable_status(db_path):
|
|
|
|
def set_status(db_path, status_code: int):
|
|
|
|
# 连接数据库
|
|
|
|
"""
|
|
|
|
|
|
|
|
更新数据库中 livetlking_enable_status 的状态值
|
|
|
|
|
|
|
|
0 未启动(前端写入)
|
|
|
|
|
|
|
|
1 启动成功
|
|
|
|
|
|
|
|
2 启动中
|
|
|
|
|
|
|
|
3 启动失败
|
|
|
|
|
|
|
|
"""
|
|
|
|
conn = sqlite3.connect(db_path, check_same_thread=False)
|
|
|
|
conn = sqlite3.connect(db_path, check_same_thread=False)
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
# 把 enable_status 对应的 value 字段改为 '1'
|
|
|
|
|
|
|
|
conn.execute(
|
|
|
|
conn.execute(
|
|
|
|
"UPDATE live_config SET value = '1' WHERE key = 'livetlking_enable_status';"
|
|
|
|
"UPDATE live_config SET value = ? WHERE key = 'livetlking_enable_status';",
|
|
|
|
|
|
|
|
(str(status_code),)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
conn.commit()
|
|
|
|
conn.commit()
|
|
|
|
print("livetlking_enable_status 对应的 value 字段改为 '1'")
|
|
|
|
print(f"livetlking_enable_status 已更新为 {status_code}")
|
|
|
|
finally:
|
|
|
|
finally:
|
|
|
|
conn.close()
|
|
|
|
conn.close()
|
|
|
|
|
|
|
|
|
|
|
@ -383,6 +388,9 @@ if __name__ == '__main__':
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
db_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'live_chat.db')
|
|
|
|
db_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'live_chat.db')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 启动流程一开始:写入 1(启动中)
|
|
|
|
|
|
|
|
set_status(db_path, 1)
|
|
|
|
|
|
|
|
|
|
|
|
load_db_config(db_path)
|
|
|
|
load_db_config(db_path)
|
|
|
|
|
|
|
|
|
|
|
|
mp.set_start_method('spawn')
|
|
|
|
mp.set_start_method('spawn')
|
|
|
@ -406,17 +414,20 @@ if __name__ == '__main__':
|
|
|
|
|
|
|
|
|
|
|
|
parser.add_argument('--customvideo_config', type=str, default='', help="custom action json")
|
|
|
|
parser.add_argument('--customvideo_config', type=str, default='', help="custom action json")
|
|
|
|
|
|
|
|
|
|
|
|
parser.add_argument('--tts', type=str, default='gpt-sovits', help="tts service type") #xtts gpt-sovits cosyvoice
|
|
|
|
parser.add_argument('--tts', type=str, default='gpt-sovits',
|
|
|
|
|
|
|
|
help="tts service type") # xtts gpt-sovits cosyvoice
|
|
|
|
parser.add_argument('--REF_FILE', type=str, default="input/gentle_girl.wav")
|
|
|
|
parser.add_argument('--REF_FILE', type=str, default="input/gentle_girl.wav")
|
|
|
|
parser.add_argument('--REF_TEXT', type=str, default="刚进直播间的宝子们,左上角先点个关注,点亮咱们家的粉丝灯牌!我是你们的主播陈婉婉,今天给大家准备了超级重磅的福利")
|
|
|
|
parser.add_argument('--REF_TEXT', type=str,
|
|
|
|
|
|
|
|
default="刚进直播间的宝子们,左上角先点个关注,点亮咱们家的粉丝灯牌!我是你们的主播陈婉婉,今天给大家准备了超级重磅的福利")
|
|
|
|
parser.add_argument('--TTS_SERVER', type=str, default='http://127.0.0.1:9880') # http://localhost:9000
|
|
|
|
parser.add_argument('--TTS_SERVER', type=str, default='http://127.0.0.1:9880') # http://localhost:9000
|
|
|
|
# parser.add_argument('--CHARACTER', type=str, default='test')
|
|
|
|
# parser.add_argument('--CHARACTER', type=str, default='test')
|
|
|
|
# parser.add_argument('--EMOTION', type=str, default='default')
|
|
|
|
# parser.add_argument('--EMOTION', type=str, default='default')
|
|
|
|
|
|
|
|
|
|
|
|
parser.add_argument('--model', type=str, default='wav2lip') # musetalk wav2lip ultralight
|
|
|
|
parser.add_argument('--model', type=str, default='wav2lip') # musetalk wav2lip ultralight
|
|
|
|
|
|
|
|
|
|
|
|
parser.add_argument('--transport', type=str, default='webrtc') #webrtc rtcpush virtualcam
|
|
|
|
parser.add_argument('--transport', type=str, default='webrtc') # webrtc rtcpush virtualcam
|
|
|
|
parser.add_argument('--push_url', type=str, default='http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream') #rtmp://localhost/live/livestream
|
|
|
|
parser.add_argument('--push_url', type=str,
|
|
|
|
|
|
|
|
default='http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream') # rtmp://localhost/live/livestream
|
|
|
|
|
|
|
|
|
|
|
|
parser.add_argument('--max_session', type=int, default=1) # multi session count
|
|
|
|
parser.add_argument('--max_session', type=int, default=1) # multi session count
|
|
|
|
parser.add_argument('--listenport', type=int, default=8010, help="web listen port")
|
|
|
|
parser.add_argument('--listenport', type=int, default=8010, help="web listen port")
|
|
|
@ -467,7 +478,8 @@ if __name__ == '__main__':
|
|
|
|
# model = load_model(opt)
|
|
|
|
# model = load_model(opt)
|
|
|
|
# avatar = load_avatar(opt)
|
|
|
|
# avatar = load_avatar(opt)
|
|
|
|
if opt.model == 'wav2lip':
|
|
|
|
if opt.model == 'wav2lip':
|
|
|
|
from lipreal import LipReal,load_model,load_avatar,warm_up
|
|
|
|
from lipreal import LipReal, load_model, load_avatar, warm_up
|
|
|
|
|
|
|
|
|
|
|
|
logger.info(opt)
|
|
|
|
logger.info(opt)
|
|
|
|
model = load_model("./models/wav2lip384.pth")
|
|
|
|
model = load_model("./models/wav2lip384.pth")
|
|
|
|
avatar = load_avatar(opt.avatar_id)
|
|
|
|
avatar = load_avatar(opt.avatar_id)
|
|
|
@ -510,15 +522,17 @@ if __name__ == '__main__':
|
|
|
|
for route in list(appasync.router.routes()):
|
|
|
|
for route in list(appasync.router.routes()):
|
|
|
|
cors.add(route)
|
|
|
|
cors.add(route)
|
|
|
|
|
|
|
|
|
|
|
|
pagename='webrtcapi.html'
|
|
|
|
pagename = 'webrtcapi.html'
|
|
|
|
if opt.transport=='rtmp':
|
|
|
|
if opt.transport == 'rtmp':
|
|
|
|
pagename='echoapi.html'
|
|
|
|
pagename = 'echoapi.html'
|
|
|
|
elif opt.transport=='rtcpush':
|
|
|
|
elif opt.transport == 'rtcpush':
|
|
|
|
pagename='rtcpushapi.html'
|
|
|
|
pagename = 'rtcpushapi.html'
|
|
|
|
logger.info('start http server; http://<serverip>:'+str(opt.listenport)+'/'+pagename)
|
|
|
|
logger.info('start http server; http://<serverip>:' + str(opt.listenport) + '/' + pagename)
|
|
|
|
logger.info('如果使用webrtc,推荐访问webrtc集成前端: http://<serverip>:'+str(opt.listenport)+'/dashboard.html')
|
|
|
|
logger.info(
|
|
|
|
# 服务开启,将数据库中enable_status 对应的 value 字段改为 '1'
|
|
|
|
'如果使用webrtc,推荐访问webrtc集成前端: http://<serverip>:' + str(opt.listenport) + '/dashboard.html')
|
|
|
|
set_enable_status(db_path)
|
|
|
|
|
|
|
|
|
|
|
|
# 服务已开启, 服务状态改为 '2'
|
|
|
|
|
|
|
|
set_status(db_path, 2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def run_server(runner):
|
|
|
|
def run_server(runner):
|
|
|
@ -538,7 +552,8 @@ if __name__ == '__main__':
|
|
|
|
|
|
|
|
|
|
|
|
run_server(web.AppRunner(appasync))
|
|
|
|
run_server(web.AppRunner(appasync))
|
|
|
|
except Exception:
|
|
|
|
except Exception:
|
|
|
|
import traceback
|
|
|
|
logger.exception("启动失败")
|
|
|
|
|
|
|
|
|
|
|
|
traceback.print_exc() # 打印完整的错误堆栈
|
|
|
|
# 服务启动失败, 服务状态改为 '3'
|
|
|
|
|
|
|
|
set_status(db_path, 3)
|
|
|
|
input("发生异常,按回车键退出…") # 等待用户按回车再退出
|
|
|
|
input("发生异常,按回车键退出…") # 等待用户按回车再退出
|