[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-nav-zh":3,"docs-zh-models\u002Fvideo\u002Fomni-human":180},[4,26,43,105,155,172,176],{"title":5,"path":6,"stem":7,"children":8,"page":25},"快速开始","\u002Fgetting-started","1.getting-started",[9,13,17,21],{"title":10,"path":11,"stem":12},"首次调用千木 API","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F1.quick-start",{"title":14,"path":15,"stem":16},"模型选择","\u002Fgetting-started\u002Fmodel-selection","1.getting-started\u002F2.model-selection",{"title":18,"path":19,"stem":20},"限流","\u002Fgetting-started\u002Frate-limits","1.getting-started\u002F3.rate-limits",{"title":22,"path":23,"stem":24},"常见问题","\u002Fgetting-started\u002Ffaq","1.getting-started\u002F4.faq",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"产品计费","\u002Fbilling","2.billing",[31,35,39],{"title":32,"path":33,"stem":34},"计费说明","\u002Fbilling\u002Foverview","2.billing\u002F1.overview",{"title":36,"path":37,"stem":38},"在线充值","\u002Fbilling\u002Frecharge","2.billing\u002F2.recharge",{"title":40,"path":41,"stem":42},"账单、用量与导出","\u002Fbilling\u002Fusage-export","2.billing\u002F3.usage-export",{"title":44,"path":45,"stem":46,"children":47,"page":25},"Coding Plan","\u002Fcoding-plan","3.coding-plan",[48,52,56,60,67,102],{"title":49,"path":50,"stem":51},"Coding Plan 概述","\u002Fcoding-plan\u002Foverview","3.coding-plan\u002F1.overview",{"title":53,"path":54,"stem":55},"快速接入","\u002Fcoding-plan\u002Fquick-start","3.coding-plan\u002F2.quick-start",{"title":57,"path":58,"stem":59},"使用须知","\u002Fcoding-plan\u002Fusage-notes","3.coding-plan\u002F3.usage-notes",{"title":61,"path":62,"stem":63,"children":64},"个人版","\u002Fcoding-plan\u002Fpersonal","3.coding-plan\u002F4.personal\u002Findex",[65],{"title":66,"path":62,"stem":63},"价格和权益",{"title":68,"path":69,"stem":70,"children":71,"page":-1},"开发指南","\u002Fcoding-plan\u002Fguide","3.coding-plan\u002F5.guide\u002Findex",[72,74,78,82,86,90,94,98],{"title":73,"path":69,"stem":70},"端点与协议",{"title":75,"path":76,"stem":77},"Claude Code","\u002Fcoding-plan\u002Fguide\u002Fclaude-code","3.coding-plan\u002F5.guide\u002F1.claude-code",{"title":79,"path":80,"stem":81},"OpenCode","\u002Fcoding-plan\u002Fguide\u002Fopencode","3.coding-plan\u002F5.guide\u002F2.opencode",{"title":83,"path":84,"stem":85},"Cursor","\u002Fcoding-plan\u002Fguide\u002Fcursor","3.coding-plan\u002F5.guide\u002F3.cursor",{"title":87,"path":88,"stem":89},"Codex","\u002Fcoding-plan\u002Fguide\u002Fcodex","3.coding-plan\u002F5.guide\u002F4.codex",{"title":91,"path":92,"stem":93},"ZCode","\u002Fcoding-plan\u002Fguide\u002Fzcode","3.coding-plan\u002F5.guide\u002F5.zcode",{"title":95,"path":96,"stem":97},"TRAE","\u002Fcoding-plan\u002Fguide\u002Ftrae","3.coding-plan\u002F5.guide\u002F6.trae",{"title":99,"path":100,"stem":101},"CodeBuddy","\u002Fcoding-plan\u002Fguide\u002Fcodebuddy","3.coding-plan\u002F5.guide\u002F7.codebuddy",{"title":22,"path":103,"stem":104},"\u002Fcoding-plan\u002Ffaq","3.coding-plan\u002F6.faq",{"title":106,"path":107,"stem":108,"children":109,"page":25},"模型接口","\u002Fmodels","4.models",[110,143],{"title":111,"path":112,"stem":113,"children":114,"page":25},"文本生成API","\u002Fmodels\u002Fchat","4.models\u002F1.chat",[115,119,123,127,131,135,139],{"title":116,"path":117,"stem":118},"概述","\u002Fmodels\u002Fchat\u002Foverview","4.models\u002F1.chat\u002F1.overview",{"title":120,"path":121,"stem":122},"OpenAI 兼容接口","\u002Fmodels\u002Fchat\u002Fopenai","4.models\u002F1.chat\u002F2.openai",{"title":124,"path":125,"stem":126},"Anthropic 兼容","\u002Fmodels\u002Fchat\u002Fanthropic","4.models\u002F1.chat\u002F3.anthropic",{"title":128,"path":129,"stem":130},"Volcengine 兼容","\u002Fmodels\u002Fchat\u002Fvolcengine","4.models\u002F1.chat\u002F4.volcengine",{"title":132,"path":133,"stem":134},"智谱兼容","\u002Fmodels\u002Fchat\u002Fzhipu","4.models\u002F1.chat\u002F5.zhipu",{"title":136,"path":137,"stem":138},"SilvaMux 统一入口","\u002Fmodels\u002Fchat\u002Funified","4.models\u002F1.chat\u002F6.unified",{"title":140,"path":141,"stem":142},"多模态输入","\u002Fmodels\u002Fchat\u002Fmultimodal","4.models\u002F1.chat\u002F7.multimodal",{"title":144,"path":145,"stem":146,"children":147,"page":25},"图片生成API","\u002Fmodels\u002Fimages","4.models\u002F2.images",[148,151],{"title":116,"path":149,"stem":150},"\u002Fmodels\u002Fimages\u002Foverview","4.models\u002F2.images\u002F1.overview",{"title":152,"path":153,"stem":154},"图片生成接口","\u002Fmodels\u002Fimages\u002Fgeneration","4.models\u002F2.images\u002F2.generation",{"title":156,"path":157,"stem":158,"children":159,"page":25},"用量与余额API","\u002Fusage-and-balance","5.usage-and-balance",[160,164,168],{"title":161,"path":162,"stem":163},"查询余额","\u002Fusage-and-balance\u002Fbalance","5.usage-and-balance\u002F1.balance",{"title":165,"path":166,"stem":167},"查询用量","\u002Fusage-and-balance\u002Fusage","5.usage-and-balance\u002F2.usage",{"title":169,"path":170,"stem":171},"查询单次请求消耗","\u002Fusage-and-balance\u002Frequest-usage","5.usage-and-balance\u002F3.request-usage",{"title":173,"path":174,"stem":175},"错误码参考","\u002Ferrors","6.errors",{"title":177,"path":178,"stem":179},"开始使用 SilvaMux","\u002F","index",{"id":181,"title":182,"body":183,"description":875,"extension":876,"meta":877,"navigation":25,"path":878,"rawbody":879,"requiredFlags":880,"seo":881,"stem":882,"__hash__":883},"docs\u002F4.models\u002F3.video\u002F5.omni-human.md","OmniHuman 1.5",{"type":184,"value":185,"toc":872},"minimark",[186,191,195,198,201,212,216,219,232,239,840,843,868],[187,188,190],"h1",{"id":189},"即梦-omnihuman-15","即梦 OmniHuman 1.5",[192,193,194],"p",{},"OmniHuman1.5（即梦同源数字人模型），该模型可根据用户上传的单张图片+音频，生成与图片对应的视频效果。支持输入任意画幅包含人物或其他主体（宠物、动漫等）的图片，结合音频，生成高质量的视频。",[192,196,197],{},"人物的情绪、动作与音频具有强关联性，支持通过提示词（prompt）对画面、动作、运镜进行调整。同时OmniHuman1.5对动漫、宠物等形象支持较好，允许指定讲话人\u002F主体，可广泛应用于内容表达、唱歌和表演等场景。",[192,199,200],{},"相较于上一代模型，OmniHuman1.5 在运动自然度和结构稳定性提升明显，在人物\u002F主体的运动表现力和画面质量上更优。可以广泛应用于制作剧情对话、多人对话\u002F对唱、商品交互、漫剧等内容。对比其他视频通用模型，OmniHuman 数字人大模型在人物\u002F主体的剧情演绎效果上极具优势。",[192,202,203,204,211],{},"具体模型介绍细节，可参考",[205,206,210],"a",{"href":207,"rel":208},"https:\u002F\u002Fdocs.volcengine.com\u002Fdocs\u002F85621\u002F1834143?lang=zh",[209],"nofollow","火山文档","。",[213,214,215],"h2",{"id":215},"调用示例",[192,217,218],{},"SilvaMux 提供与火山相同的即梦 OmniHuman 1.5 API，您可以使用火山 SDK 或是通过自研 API 接入即梦 OmniHuman 1.5。",[192,220,221,222,226,227,231],{},"接入走火山兼容 CV 接口：",[223,224,225],"code",{},"POST \u002Fapi\u002Fark?Action=CVSubmitTask|CVProcess|CVGetResult&Version=2022-08-31","，AK\u002FSK 鉴权与签名方式见",[205,228,230],{"href":229},"\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fvideo\u002Fassets","素材管理","的火山兼容接口说明。本页下方列出的火山官方链接用于查看 OmniHuman 模型的专项输入字段；接入地址和凭据仍使用 SilvaMux。",[192,233,234,235,238],{},"以火山 Python SDK 为例，使用 ",[223,236,237],{},"pip install volcengine"," 安装示例所需 SDK 后，运行如下示例脚本：",[240,241,246],"pre",{"className":242,"code":243,"language":244,"meta":245,"style":245},"language-python shiki shiki-themes github-light github-dark","# coding:utf-8\nimport json\nimport threading\nfrom time import sleep\n\nfrom volcengine.ApiInfo import ApiInfo\nfrom volcengine.Credentials import Credentials\nfrom volcengine.base.Service import Service\nfrom volcengine.ServiceInfo import ServiceInfo\nfrom volcengine.visual.VisualService import VisualService\n\nclass SilvaMuxVisualService(VisualService):\n    def __new__(cls, *args, **kwargs):\n        return object.__new__(cls, *args, **kwargs)\n\n    def __init__(self):\n        self.service_info = SilvaMuxVisualService.get_service_info()\n        self.api_info = SilvaMuxVisualService.get_api_info()\n        super(VisualService, self).__init__(self.service_info, self.api_info)\n\n    def get_service_info():\n        service_info = ServiceInfo(\"www.silvamux.com\", # 如需使用海外版，请替换为 www.silvamux.io\n                                   {}, Credentials('', '', 'cv', 'cn-north-1'), 30, 30, 'https')\n        return service_info\n\n    def get_api_info():\n        api_info = {\n            \"CVGetResult\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVGetResult\", \"Version\": \"2022-08-31\"}, {}, {}),\n            \"CVSubmitTask\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVSubmitTask\", \"Version\": \"2022-08-31\"}, {}, {}),\n            \"CVProcess\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVProcess\", \"Version\": \"2022-08-31\"}, {}, {}),\n        }\n        return api_info\n\n\ndef get_result(req_key, task_id):\n    i = 0\n    while True:\n        i += 1\n        result_resp = visual_service.cv_get_result({\n            \"req_key\": req_key,\n            \"task_id\": task_id\n        })\n        result_status = result_resp['data']['status']\n        print(f\"  第 {i} 次查询结果，状态: {result_status}\")\n        if result_status == \"in_queue\" or result_status == \"generating\":\n            sleep(3)\n            continue\n        if result_status == \"done\":\n            if 'data' in result_resp and 'resp_data' in result_resp['data']:\n                return json.loads(result_resp['data']['resp_data'])\n            elif 'data' in result_resp and 'video_url' in result_resp['data']:\n                return result_resp['data']['video_url']\n            else:\n                print(f\"  解析失败：{result_resp}\")\n                raise Exception(\"result parse failed\")\n        raise Exception(f\"task {result_status}\")\n\nif __name__ == '__main__':\n    image_url = \"https:\u002F\u002Fportal.volccdn.com\u002Fobj\u002Fvolcfe\u002Fcloud-universal-doc\u002Fupload_7297f5f099cee6b48f5417e47ac8291b.png\"\n    audio_url = \"https:\u002F\u002Fp9-arcosite.byteimg.com\u002Fobj\u002Ftos-cn-i-goo7wpa0wc\u002F64c66c987973400491c0b487d832537c\"\n    mask_urls = []\n\n    visual_service = SilvaMuxVisualService()\n\n    # 请使用控制台生成的「Volcengine 兼容 (AK\u002FSK)」凭据以调用火山兼容 API\n    visual_service.set_ak('AKexampleReplaceWithRealAK')\n    visual_service.set_sk('SKexampleReplaceWithRealSK')\n\n    print(\"第一步：主体识别 如果确认图片中有人类主体，可以跳过该步骤\")\n    step1_resp = visual_service.cv_submit_task({\n        \"req_key\": \"jimeng_realman_avatar_picture_create_role_omni_v15\",\n        \"image_url\": image_url\n    })\n    step1_resp_task_id = step1_resp['data']['task_id']\n    print(f\"  任务ID: {step1_resp_task_id}\")\n\n    step1_result = get_result(\"jimeng_realman_avatar_picture_create_role_omni_v15\", step1_resp_task_id)\n    if step1_result['status'] != 1:\n        raise Exception(\"没有检测到主体，任务失败，请更换图片尝试\")\n\n    print(\"第二步：主体检测 如果在视频生成时不需要指定主体说话，可以跳过该步骤\")\n    step2_resp = visual_service.cv_process({\n        \"req_key\": \"jimeng_realman_avatar_object_detection\",\n        \"image_url\": image_url\n    })\n    step2_data = json.loads(step2_resp['data']['resp_data'])\n    mask_urls = step2_data['object_detection_result']['mask']['url']\n    print(f\"  遮罩列表: {mask_urls}\")\n\n    print(\"第三步：视频生成\")\n    step3_resp = visual_service.cv_submit_task({\n        \"req_key\": \"jimeng_realman_avatar_picture_omni_v15\",\n        \"image_url\": image_url,\n        \"mask_url\": mask_urls,\n        \"audio_url\": audio_url,\n    })\n    step3_resp_task_id = step3_resp['data']['task_id']\n    print(f\"  任务ID: {step3_resp_task_id}\")\n\n    step3_result = get_result(\"jimeng_realman_avatar_picture_omni_v15\", step3_resp_task_id)\n    print(f\"  结果： {step3_result}\")\n","python","",[223,247,248,256,262,268,274,281,287,293,299,305,311,316,322,328,334,339,345,351,357,363,368,374,380,386,392,397,403,409,415,421,427,433,439,444,449,455,461,467,473,479,485,491,497,503,509,515,521,527,533,539,545,551,557,563,569,575,581,586,592,598,604,610,615,621,626,632,638,644,649,655,661,667,673,679,685,691,696,702,708,714,719,725,731,737,742,747,753,759,765,770,776,782,788,794,800,806,811,817,823,828,834],{"__ignoreMap":245},[249,250,253],"span",{"class":251,"line":252},"line",1,[249,254,255],{},"# coding:utf-8\n",[249,257,259],{"class":251,"line":258},2,[249,260,261],{},"import json\n",[249,263,265],{"class":251,"line":264},3,[249,266,267],{},"import threading\n",[249,269,271],{"class":251,"line":270},4,[249,272,273],{},"from time import sleep\n",[249,275,277],{"class":251,"line":276},5,[249,278,280],{"emptyLinePlaceholder":279},true,"\n",[249,282,284],{"class":251,"line":283},6,[249,285,286],{},"from volcengine.ApiInfo import ApiInfo\n",[249,288,290],{"class":251,"line":289},7,[249,291,292],{},"from volcengine.Credentials import Credentials\n",[249,294,296],{"class":251,"line":295},8,[249,297,298],{},"from volcengine.base.Service import Service\n",[249,300,302],{"class":251,"line":301},9,[249,303,304],{},"from volcengine.ServiceInfo import ServiceInfo\n",[249,306,308],{"class":251,"line":307},10,[249,309,310],{},"from volcengine.visual.VisualService import VisualService\n",[249,312,314],{"class":251,"line":313},11,[249,315,280],{"emptyLinePlaceholder":279},[249,317,319],{"class":251,"line":318},12,[249,320,321],{},"class SilvaMuxVisualService(VisualService):\n",[249,323,325],{"class":251,"line":324},13,[249,326,327],{},"    def __new__(cls, *args, **kwargs):\n",[249,329,331],{"class":251,"line":330},14,[249,332,333],{},"        return object.__new__(cls, *args, **kwargs)\n",[249,335,337],{"class":251,"line":336},15,[249,338,280],{"emptyLinePlaceholder":279},[249,340,342],{"class":251,"line":341},16,[249,343,344],{},"    def __init__(self):\n",[249,346,348],{"class":251,"line":347},17,[249,349,350],{},"        self.service_info = SilvaMuxVisualService.get_service_info()\n",[249,352,354],{"class":251,"line":353},18,[249,355,356],{},"        self.api_info = SilvaMuxVisualService.get_api_info()\n",[249,358,360],{"class":251,"line":359},19,[249,361,362],{},"        super(VisualService, self).__init__(self.service_info, self.api_info)\n",[249,364,366],{"class":251,"line":365},20,[249,367,280],{"emptyLinePlaceholder":279},[249,369,371],{"class":251,"line":370},21,[249,372,373],{},"    def get_service_info():\n",[249,375,377],{"class":251,"line":376},22,[249,378,379],{},"        service_info = ServiceInfo(\"www.silvamux.com\", # 如需使用海外版，请替换为 www.silvamux.io\n",[249,381,383],{"class":251,"line":382},23,[249,384,385],{},"                                   {}, Credentials('', '', 'cv', 'cn-north-1'), 30, 30, 'https')\n",[249,387,389],{"class":251,"line":388},24,[249,390,391],{},"        return service_info\n",[249,393,395],{"class":251,"line":394},25,[249,396,280],{"emptyLinePlaceholder":279},[249,398,400],{"class":251,"line":399},26,[249,401,402],{},"    def get_api_info():\n",[249,404,406],{"class":251,"line":405},27,[249,407,408],{},"        api_info = {\n",[249,410,412],{"class":251,"line":411},28,[249,413,414],{},"            \"CVGetResult\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVGetResult\", \"Version\": \"2022-08-31\"}, {}, {}),\n",[249,416,418],{"class":251,"line":417},29,[249,419,420],{},"            \"CVSubmitTask\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVSubmitTask\", \"Version\": \"2022-08-31\"}, {}, {}),\n",[249,422,424],{"class":251,"line":423},30,[249,425,426],{},"            \"CVProcess\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVProcess\", \"Version\": \"2022-08-31\"}, {}, {}),\n",[249,428,430],{"class":251,"line":429},31,[249,431,432],{},"        }\n",[249,434,436],{"class":251,"line":435},32,[249,437,438],{},"        return api_info\n",[249,440,442],{"class":251,"line":441},33,[249,443,280],{"emptyLinePlaceholder":279},[249,445,447],{"class":251,"line":446},34,[249,448,280],{"emptyLinePlaceholder":279},[249,450,452],{"class":251,"line":451},35,[249,453,454],{},"def get_result(req_key, task_id):\n",[249,456,458],{"class":251,"line":457},36,[249,459,460],{},"    i = 0\n",[249,462,464],{"class":251,"line":463},37,[249,465,466],{},"    while True:\n",[249,468,470],{"class":251,"line":469},38,[249,471,472],{},"        i += 1\n",[249,474,476],{"class":251,"line":475},39,[249,477,478],{},"        result_resp = visual_service.cv_get_result({\n",[249,480,482],{"class":251,"line":481},40,[249,483,484],{},"            \"req_key\": req_key,\n",[249,486,488],{"class":251,"line":487},41,[249,489,490],{},"            \"task_id\": task_id\n",[249,492,494],{"class":251,"line":493},42,[249,495,496],{},"        })\n",[249,498,500],{"class":251,"line":499},43,[249,501,502],{},"        result_status = result_resp['data']['status']\n",[249,504,506],{"class":251,"line":505},44,[249,507,508],{},"        print(f\"  第 {i} 次查询结果，状态: {result_status}\")\n",[249,510,512],{"class":251,"line":511},45,[249,513,514],{},"        if result_status == \"in_queue\" or result_status == \"generating\":\n",[249,516,518],{"class":251,"line":517},46,[249,519,520],{},"            sleep(3)\n",[249,522,524],{"class":251,"line":523},47,[249,525,526],{},"            continue\n",[249,528,530],{"class":251,"line":529},48,[249,531,532],{},"        if result_status == \"done\":\n",[249,534,536],{"class":251,"line":535},49,[249,537,538],{},"            if 'data' in result_resp and 'resp_data' in result_resp['data']:\n",[249,540,542],{"class":251,"line":541},50,[249,543,544],{},"                return json.loads(result_resp['data']['resp_data'])\n",[249,546,548],{"class":251,"line":547},51,[249,549,550],{},"            elif 'data' in result_resp and 'video_url' in result_resp['data']:\n",[249,552,554],{"class":251,"line":553},52,[249,555,556],{},"                return result_resp['data']['video_url']\n",[249,558,560],{"class":251,"line":559},53,[249,561,562],{},"            else:\n",[249,564,566],{"class":251,"line":565},54,[249,567,568],{},"                print(f\"  解析失败：{result_resp}\")\n",[249,570,572],{"class":251,"line":571},55,[249,573,574],{},"                raise Exception(\"result parse failed\")\n",[249,576,578],{"class":251,"line":577},56,[249,579,580],{},"        raise Exception(f\"task {result_status}\")\n",[249,582,584],{"class":251,"line":583},57,[249,585,280],{"emptyLinePlaceholder":279},[249,587,589],{"class":251,"line":588},58,[249,590,591],{},"if __name__ == '__main__':\n",[249,593,595],{"class":251,"line":594},59,[249,596,597],{},"    image_url = \"https:\u002F\u002Fportal.volccdn.com\u002Fobj\u002Fvolcfe\u002Fcloud-universal-doc\u002Fupload_7297f5f099cee6b48f5417e47ac8291b.png\"\n",[249,599,601],{"class":251,"line":600},60,[249,602,603],{},"    audio_url = \"https:\u002F\u002Fp9-arcosite.byteimg.com\u002Fobj\u002Ftos-cn-i-goo7wpa0wc\u002F64c66c987973400491c0b487d832537c\"\n",[249,605,607],{"class":251,"line":606},61,[249,608,609],{},"    mask_urls = []\n",[249,611,613],{"class":251,"line":612},62,[249,614,280],{"emptyLinePlaceholder":279},[249,616,618],{"class":251,"line":617},63,[249,619,620],{},"    visual_service = SilvaMuxVisualService()\n",[249,622,624],{"class":251,"line":623},64,[249,625,280],{"emptyLinePlaceholder":279},[249,627,629],{"class":251,"line":628},65,[249,630,631],{},"    # 请使用控制台生成的「Volcengine 兼容 (AK\u002FSK)」凭据以调用火山兼容 API\n",[249,633,635],{"class":251,"line":634},66,[249,636,637],{},"    visual_service.set_ak('AKexampleReplaceWithRealAK')\n",[249,639,641],{"class":251,"line":640},67,[249,642,643],{},"    visual_service.set_sk('SKexampleReplaceWithRealSK')\n",[249,645,647],{"class":251,"line":646},68,[249,648,280],{"emptyLinePlaceholder":279},[249,650,652],{"class":251,"line":651},69,[249,653,654],{},"    print(\"第一步：主体识别 如果确认图片中有人类主体，可以跳过该步骤\")\n",[249,656,658],{"class":251,"line":657},70,[249,659,660],{},"    step1_resp = visual_service.cv_submit_task({\n",[249,662,664],{"class":251,"line":663},71,[249,665,666],{},"        \"req_key\": \"jimeng_realman_avatar_picture_create_role_omni_v15\",\n",[249,668,670],{"class":251,"line":669},72,[249,671,672],{},"        \"image_url\": image_url\n",[249,674,676],{"class":251,"line":675},73,[249,677,678],{},"    })\n",[249,680,682],{"class":251,"line":681},74,[249,683,684],{},"    step1_resp_task_id = step1_resp['data']['task_id']\n",[249,686,688],{"class":251,"line":687},75,[249,689,690],{},"    print(f\"  任务ID: {step1_resp_task_id}\")\n",[249,692,694],{"class":251,"line":693},76,[249,695,280],{"emptyLinePlaceholder":279},[249,697,699],{"class":251,"line":698},77,[249,700,701],{},"    step1_result = get_result(\"jimeng_realman_avatar_picture_create_role_omni_v15\", step1_resp_task_id)\n",[249,703,705],{"class":251,"line":704},78,[249,706,707],{},"    if step1_result['status'] != 1:\n",[249,709,711],{"class":251,"line":710},79,[249,712,713],{},"        raise Exception(\"没有检测到主体，任务失败，请更换图片尝试\")\n",[249,715,717],{"class":251,"line":716},80,[249,718,280],{"emptyLinePlaceholder":279},[249,720,722],{"class":251,"line":721},81,[249,723,724],{},"    print(\"第二步：主体检测 如果在视频生成时不需要指定主体说话，可以跳过该步骤\")\n",[249,726,728],{"class":251,"line":727},82,[249,729,730],{},"    step2_resp = visual_service.cv_process({\n",[249,732,734],{"class":251,"line":733},83,[249,735,736],{},"        \"req_key\": \"jimeng_realman_avatar_object_detection\",\n",[249,738,740],{"class":251,"line":739},84,[249,741,672],{},[249,743,745],{"class":251,"line":744},85,[249,746,678],{},[249,748,750],{"class":251,"line":749},86,[249,751,752],{},"    step2_data = json.loads(step2_resp['data']['resp_data'])\n",[249,754,756],{"class":251,"line":755},87,[249,757,758],{},"    mask_urls = step2_data['object_detection_result']['mask']['url']\n",[249,760,762],{"class":251,"line":761},88,[249,763,764],{},"    print(f\"  遮罩列表: {mask_urls}\")\n",[249,766,768],{"class":251,"line":767},89,[249,769,280],{"emptyLinePlaceholder":279},[249,771,773],{"class":251,"line":772},90,[249,774,775],{},"    print(\"第三步：视频生成\")\n",[249,777,779],{"class":251,"line":778},91,[249,780,781],{},"    step3_resp = visual_service.cv_submit_task({\n",[249,783,785],{"class":251,"line":784},92,[249,786,787],{},"        \"req_key\": \"jimeng_realman_avatar_picture_omni_v15\",\n",[249,789,791],{"class":251,"line":790},93,[249,792,793],{},"        \"image_url\": image_url,\n",[249,795,797],{"class":251,"line":796},94,[249,798,799],{},"        \"mask_url\": mask_urls,\n",[249,801,803],{"class":251,"line":802},95,[249,804,805],{},"        \"audio_url\": audio_url,\n",[249,807,809],{"class":251,"line":808},96,[249,810,678],{},[249,812,814],{"class":251,"line":813},97,[249,815,816],{},"    step3_resp_task_id = step3_resp['data']['task_id']\n",[249,818,820],{"class":251,"line":819},98,[249,821,822],{},"    print(f\"  任务ID: {step3_resp_task_id}\")\n",[249,824,826],{"class":251,"line":825},99,[249,827,280],{"emptyLinePlaceholder":279},[249,829,831],{"class":251,"line":830},100,[249,832,833],{},"    step3_result = get_result(\"jimeng_realman_avatar_picture_omni_v15\", step3_resp_task_id)\n",[249,835,837],{"class":251,"line":836},101,[249,838,839],{},"    print(f\"  结果： {step3_result}\")\n",[192,841,842],{},"具体 API 文档如下：",[844,845,846,854,861],"ul",{},[847,848,849],"li",{},[205,850,853],{"href":851,"rel":852},"https:\u002F\u002Fdocs.volcengine.com\u002Fdocs\u002F85621\u002F1828975?lang=zh",[209],"调用步骤1：主体识别",[847,855,856],{},[205,857,860],{"href":858,"rel":859},"https:\u002F\u002Fdocs.volcengine.com\u002Fdocs\u002F85621\u002F1829011?lang=zh",[209],"调用步骤2：主体检测",[847,862,863],{},[205,864,867],{"href":865,"rel":866},"https:\u002F\u002Fdocs.volcengine.com\u002Fdocs\u002F85621\u002F1829013?lang=zh",[209],"调用步骤3：视频生成",[869,870,871],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":245,"searchDepth":258,"depth":258,"links":873},[874],{"id":215,"depth":258,"text":215},"使用图片和音频生成 OmniHuman 数字人视频。","md",{},"\u002Fmodels\u002Fvideo\u002Fomni-human","---\ntitle: OmniHuman 1.5\ndescription: 使用图片和音频生成 OmniHuman 数字人视频。\nnavigation: false\n---\n\n# 即梦 OmniHuman 1.5\n\nOmniHuman1.5（即梦同源数字人模型），该模型可根据用户上传的单张图片+音频，生成与图片对应的视频效果。支持输入任意画幅包含人物或其他主体（宠物、动漫等）的图片，结合音频，生成高质量的视频。\n\n人物的情绪、动作与音频具有强关联性，支持通过提示词（prompt）对画面、动作、运镜进行调整。同时OmniHuman1.5对动漫、宠物等形象支持较好，允许指定讲话人\u002F主体，可广泛应用于内容表达、唱歌和表演等场景。\n\n相较于上一代模型，OmniHuman1.5 在运动自然度和结构稳定性提升明显，在人物\u002F主体的运动表现力和画面质量上更优。可以广泛应用于制作剧情对话、多人对话\u002F对唱、商品交互、漫剧等内容。对比其他视频通用模型，OmniHuman 数字人大模型在人物\u002F主体的剧情演绎效果上极具优势。\n\n具体模型介绍细节，可参考[火山文档](https:\u002F\u002Fdocs.volcengine.com\u002Fdocs\u002F85621\u002F1834143?lang=zh)。\n\n## 调用示例\n\nSilvaMux 提供与火山相同的即梦 OmniHuman 1.5 API，您可以使用火山 SDK 或是通过自研 API 接入即梦 OmniHuman 1.5。\n\n接入走火山兼容 CV 接口：`POST \u002Fapi\u002Fark?Action=CVSubmitTask|CVProcess|CVGetResult&Version=2022-08-31`，AK\u002FSK 鉴权与签名方式见[素材管理](\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fvideo\u002Fassets)的火山兼容接口说明。本页下方列出的火山官方链接用于查看 OmniHuman 模型的专项输入字段；接入地址和凭据仍使用 SilvaMux。\n\n以火山 Python SDK 为例，使用 `pip install volcengine` 安装示例所需 SDK 后，运行如下示例脚本：\n\n```python\n# coding:utf-8\nimport json\nimport threading\nfrom time import sleep\n\nfrom volcengine.ApiInfo import ApiInfo\nfrom volcengine.Credentials import Credentials\nfrom volcengine.base.Service import Service\nfrom volcengine.ServiceInfo import ServiceInfo\nfrom volcengine.visual.VisualService import VisualService\n\nclass SilvaMuxVisualService(VisualService):\n    def __new__(cls, *args, **kwargs):\n        return object.__new__(cls, *args, **kwargs)\n\n    def __init__(self):\n        self.service_info = SilvaMuxVisualService.get_service_info()\n        self.api_info = SilvaMuxVisualService.get_api_info()\n        super(VisualService, self).__init__(self.service_info, self.api_info)\n\n    def get_service_info():\n        service_info = ServiceInfo(\"www.silvamux.com\", # 如需使用海外版，请替换为 www.silvamux.io\n                                   {}, Credentials('', '', 'cv', 'cn-north-1'), 30, 30, 'https')\n        return service_info\n\n    def get_api_info():\n        api_info = {\n            \"CVGetResult\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVGetResult\", \"Version\": \"2022-08-31\"}, {}, {}),\n            \"CVSubmitTask\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVSubmitTask\", \"Version\": \"2022-08-31\"}, {}, {}),\n            \"CVProcess\": ApiInfo(\"POST\", \"\u002Fapi\u002Fark\", {\"Action\": \"CVProcess\", \"Version\": \"2022-08-31\"}, {}, {}),\n        }\n        return api_info\n\n\ndef get_result(req_key, task_id):\n    i = 0\n    while True:\n        i += 1\n        result_resp = visual_service.cv_get_result({\n            \"req_key\": req_key,\n            \"task_id\": task_id\n        })\n        result_status = result_resp['data']['status']\n        print(f\"  第 {i} 次查询结果，状态: {result_status}\")\n        if result_status == \"in_queue\" or result_status == \"generating\":\n            sleep(3)\n            continue\n        if result_status == \"done\":\n            if 'data' in result_resp and 'resp_data' in result_resp['data']:\n                return json.loads(result_resp['data']['resp_data'])\n            elif 'data' in result_resp and 'video_url' in result_resp['data']:\n                return result_resp['data']['video_url']\n            else:\n                print(f\"  解析失败：{result_resp}\")\n                raise Exception(\"result parse failed\")\n        raise Exception(f\"task {result_status}\")\n\nif __name__ == '__main__':\n    image_url = \"https:\u002F\u002Fportal.volccdn.com\u002Fobj\u002Fvolcfe\u002Fcloud-universal-doc\u002Fupload_7297f5f099cee6b48f5417e47ac8291b.png\"\n    audio_url = \"https:\u002F\u002Fp9-arcosite.byteimg.com\u002Fobj\u002Ftos-cn-i-goo7wpa0wc\u002F64c66c987973400491c0b487d832537c\"\n    mask_urls = []\n\n    visual_service = SilvaMuxVisualService()\n\n    # 请使用控制台生成的「Volcengine 兼容 (AK\u002FSK)」凭据以调用火山兼容 API\n    visual_service.set_ak('AKexampleReplaceWithRealAK')\n    visual_service.set_sk('SKexampleReplaceWithRealSK')\n\n    print(\"第一步：主体识别 如果确认图片中有人类主体，可以跳过该步骤\")\n    step1_resp = visual_service.cv_submit_task({\n        \"req_key\": \"jimeng_realman_avatar_picture_create_role_omni_v15\",\n        \"image_url\": image_url\n    })\n    step1_resp_task_id = step1_resp['data']['task_id']\n    print(f\"  任务ID: {step1_resp_task_id}\")\n\n    step1_result = get_result(\"jimeng_realman_avatar_picture_create_role_omni_v15\", step1_resp_task_id)\n    if step1_result['status'] != 1:\n        raise Exception(\"没有检测到主体，任务失败，请更换图片尝试\")\n\n    print(\"第二步：主体检测 如果在视频生成时不需要指定主体说话，可以跳过该步骤\")\n    step2_resp = visual_service.cv_process({\n        \"req_key\": \"jimeng_realman_avatar_object_detection\",\n        \"image_url\": image_url\n    })\n    step2_data = json.loads(step2_resp['data']['resp_data'])\n    mask_urls = step2_data['object_detection_result']['mask']['url']\n    print(f\"  遮罩列表: {mask_urls}\")\n\n    print(\"第三步：视频生成\")\n    step3_resp = visual_service.cv_submit_task({\n        \"req_key\": \"jimeng_realman_avatar_picture_omni_v15\",\n        \"image_url\": image_url,\n        \"mask_url\": mask_urls,\n        \"audio_url\": audio_url,\n    })\n    step3_resp_task_id = step3_resp['data']['task_id']\n    print(f\"  任务ID: {step3_resp_task_id}\")\n\n    step3_result = get_result(\"jimeng_realman_avatar_picture_omni_v15\", step3_resp_task_id)\n    print(f\"  结果： {step3_result}\")\n```\n\n具体 API 文档如下：\n\n- [调用步骤1：主体识别](https:\u002F\u002Fdocs.volcengine.com\u002Fdocs\u002F85621\u002F1828975?lang=zh)\n- [调用步骤2：主体检测](https:\u002F\u002Fdocs.volcengine.com\u002Fdocs\u002F85621\u002F1829011?lang=zh)\n- [调用步骤3：视频生成](https:\u002F\u002Fdocs.volcengine.com\u002Fdocs\u002F85621\u002F1829013?lang=zh)\n",[],{"title":182,"description":875},"4.models\u002F3.video\u002F5.omni-human","SO2gIIqC7bBqjLm9WJNiUWZDW3oz7X9MpZbglGhR_TQ"]