1. 推流工具下载:
    功能定制获取窗口源码请联系开发人员v:  pyaibote
    Asr服务下载    : https://pan.baidu.com/s/1phlVC76AVqB-MF-tlb7ULw?pwd=sbin
    百度网盘下载: https://pan.baidu.com/s/1GgINP6FG_pnTejO592upWg?pwd=z5ch
    工具视频教程: https://www.bilibili.com/video/BV13WrzBvE1N


      

2. Python Websocket对接示例:


# 下载websocket客户端第三方包
# pip3 install websocket-client  -i https://pypi.tuna.tsinghua.edu.cn/simple


import os, websocket,datetime,json
import queue

# 配置项
config = {
      "url" : "127.0.0.1"  # 数字人推流的主机地址
}

text_queue = queue.Queue()
player = None

def on_message(ws, message):
    timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
    print(f"[{timestamp}] Received message: {message}")


def on_error(ws, error):
    print(f"[Error] {error}")

def on_close(ws, close_status_code, close_msg):
    print("### Connection closed ###")

def on_open(ws):
    # 发送 JSON 格式的文本消息

    # message = {
    #     "Action": "SwitchImg",
    #     "Data": {
    #         "VideoName": "5.mp4",
    #         "Scale": 0.5,
    #         "IsPalyMediaAudio": False,
    #         "IsSwapColor": False,
    #         "WaitPlayEnd": False
    #     }
    # }

    message = {
        "Action": "TextCloneAudioSpeak",
        "Data": {
            "Text": "内蒙古针茅是一种多年生草本植物。它具有耐旱、耐寒的特性,多生长于草原和沙地。其根系发达,能保持水土。"
        }
    }

    # message = {
    #     "Action": "Asr",
    #     "Data": {
    #         "IP": "192.168.31.49",
    #         "Data": ""
    #     }
    # }

    # message = {
    #         "Action": "Asr",
    #         "Data": {
    #             "Token": "PyAibote",
    #             "IP": "192.168.31.49",
    #             "Data": ""
    #         }
    # }

    # message = {
    #     "Action": "TextCloneAudioSpeakLocal",
    #         "Data": {
    #             "Token": "Mimi",
    #             "Text": "内蒙古针茅是一种多年生草本植物。它具有耐旱、耐寒的特性,多生长于草原和沙地。其根系发达,能保持水土。"
    #         }
    # }


    # message = {
    #     "Action": "QuestionLocal",
    #         "Data": {
    #             "Token": "Mimi",
    #             "Prompt": "吃饭了嘛"
    #         }
    # }


    # message = {
    #     "Action": "InitNewMetahumanLocal",
    #         "Data": {
    #             "Token": "Mimi",
    #             "ModelFolderName": "model",
    #             "Scale": 0.5,
    #             "IsPalyMediaAudio": False,
    #             "EnableRandomParam": False,
    #             "PushStreamUrl": "live/streamMimi"
    #         }
    # }

    # message = {
    #     "Action": "CloseDriver",
    #     "Data": {
    #             "Token": "Mimi"
    #         }
    #     }

    # message = {
    #   "Action": "SwitchImgLocal",
    #   "Data": {
    #             "Token": "PyAibote",
    #           "VideoName": "666.mp4",
    #           "Scale": 0.5,
    #           "IsPalyMediaAudio": False,
    #           "IsSwapColor": False,
    #           "WaitPlayEnd": False,
    #        }
    #   }

    # message = {
    #     "Action": "InitNewMetahumanLocal",
    #         "Data": {
    #             "Token": "Riven",
    #             "ModelFolderName": "model",
    #             "Scale": 0.5,
    #             "IsPalyMediaAudio": False,
    #             "EnableRandomParam": False,
    #             "PushStreamUrl": "live/streamRiven"
    #         }
    # }


    # message = {
    #         "Action": "Authentication",
    #         "Data": {
    #             "Token": "PyAibote",
    #         }
    # }

    # message = {
    #     "Action": "InitNewMetahumanLocal",
    #         "Data": {
    #             "Token": "Mark",
    #             "ModelFolderName": "model",
    #             "Scale": 0.5,
    #             "IsPalyMediaAudio": False,
    #             "EnableRandomParam": False,
    #             "PushStreamUrl": "live/streamMark"
    #         }
    # }

    ws.send(json.dumps(message))  # 必须转为字符串发送
    print("### Connection opened ###")

os.environ["PATH"] = os.environ["PATH"] + ";" + "H:/aibote/MyModel/WindowsDriver.exe"
ws_url = f"ws://{config['url']}:8765"

ws = websocket.WebSocketApp(ws_url,
                            on_open=on_open,
                            on_message=on_message,
                            on_error=on_error,
                            on_close=on_close)

# 运行 WebSocket 客户端
ws.run_forever()