模型自定义接入-简易接入

需要掌握 python 开发能力

首先需要将python环境打包到同一个目录,比如 _aienv ,然后可以通过 python run.py ./config.json 的方式运行模型。

模型运行之后,通过标准输入输出的方式运行模型,通过标准输入传递参数,通过标准输出返回结果。

import json
import base64
import shutil
import sys
import time
import os

# 解析输入配置文件
config = json.loads(open(sys.argv[1], 'r').read())

def cacheRandom(ext):
    cacheRoot = os.path.abspath('_cache')
    if not os.path.exists(cacheRoot):
        os.makedirs(cacheRoot)
    return os.path.join(cacheRoot, str(time.time()) + '.' + ext)

def printResult(key, value):
    global config
    print('AigcPanelRunResult', {key: value})
    print(f'AigcPanelRunResult[{config["id"]}][' + base64.b64encode(json.dumps({key: value}).encode()).decode() + ']')

# 公共输出
## 检测是否支持 Cuda 输出给前端
printResult('UseCuda', True)

########### 语音合成 ###########
## config = { "id": "SoundTts_999", "mode": "local", "modelConfig": { "type": "soundTts", "param": {}, "text": "你好" }, "setting": {} }
if config['modelConfig']['type'] == 'soundTts':
    print('正在合成', 'config=', config)
    time.sleep(30)
    resultPath = cacheRandom('wav')
    shutil.copy('./example/nihao.wav', resultPath)
    print('合成完成', resultPath)
    ## 语音合成输出结果
    printResult('url', resultPath)
########### 语音合成 ###########

########### 语音克隆 ###########
## config = { "id": "SoundClone_999", "mode": "local", "modelConfig": { "type": "soundClone", "param": {}, "text": "你好", "promptAudio": "/path/to/audio/xxxxx.wav", "promptText": "参考音频提示文字" }, "setting": {} }
if config['modelConfig']['type'] == 'soundClone':
    print('正在克隆', 'config=', config)
    time.sleep(3)
    resultPath = cacheRandom('wav')
    shutil.copy('./example/nihao.wav', resultPath)
    print('克隆完成', resultPath)
    ## 语音克隆输出结果
    printResult('url', resultPath)
########### 语音克隆 ###########

########### 视频合成 ###########
## config = { "id": "VideoGen_999", "mode": "local", "modelConfig": { "type": "videoGen", "param": {}, "video": "/path/to/video/xxxxx.mp4", "audio": "/path/to/audio/xxxxx.wav" }, "setting": {} }
if config['modelConfig']['type'] == 'videoGen':
    print('正在生成', 'config=', config)
    time.sleep(3)
    resultPath = cacheRandom('mp4')
    shutil.copy('./example/short.mp4', resultPath)
    print('生成完成', resultPath)
    ## 视频合成输出结果
    printResult('url', resultPath)
########### 视频合成 ###########

config.json 文件示例

{
    "name": "server-xxx",          // 模型名称
    "version": "0.1.0",            // 模型版本
    "title": "语音模型",            // 模型标题
    "description": "模型描述",      // 模型描述
    "deviceDescription":"设备描述",
    "platformName": "win",         // 支持系统,win, osx, linux
    "platformArch": "x86",         // 支持架构,x86, arm64
    "serverRequire": ">=0.5.0",    // 对 AigcPanel 版本的要求,如 >=0.5.0
    "entry": "__EasyServer__",     // 固定值,不需要修改
    "easyServer": {
        // python 运行入口
        // Windows      ".\\_aienv\\python.ext"
        // MacOS/Linux  "./_aienv/bin/python"
        "entry": "./_aienv/bin/python",
        "entryArgs": [
            "run.py",
            "${CONFIG}"
        ],
        // 环境变量
        "envs": [
            "FOO=BAR"
        ]
    },
    "functions": [
        "videoGen",                // 支持视频生成
        "soundTTS",                // 支持语音合成
        "soundClone"               // 支持语音克隆
    ],
    "settings": []
}

测试导入

完成两个文件的开发之后,在软件中尝试选择模型文件夹中的config.json导入。


更新时间 2025-03-28 09:57:01
 
语言
QQ
微信客服
微信群
客服