一、什么是「飞影数字人」?

飞影数字人(HiFly Avatar)是一款基于 AI 的 SaaS 工具。你只要输入一段文字,系统就能自动合成一段「真人出镜 + 语音朗读」的视频。 • 无需拍摄、无需剪辑、无需真人出镜 • 支持上传自己的数字人模板,或用平台提供的公版模特 • 声音市场 300+ 免费音色可选,也支持克隆自己的声音。

二、核心概念速览

参数 是否必填 说明
text 口播文案。不填则视频里人物保持静默,适合后期自行加字幕/旁白。
video_url 数字人视频模板。可用平台公版,也可上传自己录制的 15–60 秒人物说话片段。
hifly_id 飞影会员 ID。在个人中心 → API 密钥 里查看。不填=免费模式(有水印、限 30 秒)。
hifly_agent_token 与 hifly_id 配套的安全令牌。会员必填,免费模式忽略。
speaker_id ❌/✅ 声音 ID。当 text 有内容时必填,否则合成失败。免费声音在 https://hifly.cc 声音市场可试听并复制 ID。

三、免费 vs 会员差异

功能 免费账户 会员
水印
单次时长上限 30 秒 300 秒
并发任务 1 条 5 条
可商用
克隆自己声音 是(需额外开通)

四、3 步生成你的第一条数字人口播

Step 1 准备素材

  1. 写一段 50–100 字的口播文案(text)。
  2. 选一条数字人模板: • 公版模特:登录 https://hifly.cc → 模板库 → 复制 video_url • 自定义模板:上传 1080p、15–60 秒、正面说话视频,系统 5 分钟完成训练并给出 video_url

Step 2 选声音

进入「声音市场」,试听并复制喜欢的 speaker_id(免费商用声音会在名称旁标注「Free」)。

Step 3 插入url地址

把video_url和speaker_id输入到工作流中

Step 4 运行工作流

点击运行工作流,等待口播视频的生成

在飞影数字人作品管理处可以看到生成的口播视频

五、进阶玩法

  1. 多语言口播 把 text 换成英文/日文,再选对应 speaker_id(如 en_male_adam_001)。
  2. 批量生产 用 Python 循环调用接口,一次性生成 100 条短视频。
  3. 口播 + 字幕 导出视频后,用剪映/CapCut 自动识别字幕,10 分钟完成二次包装。
  4. 克隆自己的声音 会员可上传 30 分钟干净干声,训练后获得专属 speaker_id,口播即本人声音。

六、代码解析

1.查询生成状态

循环执行查询,获取hifly_id下生成的视频列表,查看当前生成视频的job_id

2.循环代码执行


// 在这里,您可以通过 ‘params’  获取节点中的输入变量,并通过 'ret' 输出结果
// 'params' 和 'ret' 已经被正确地注入到环境中
// 下面是一个示例,获取节点输入中参数名为‘input’的值:
// const input = params.input; 
// 下面是一个示例,输出一个包含多种数据类型的 'ret' 对象:
// const ret = { "name": ‘小明’, "hobbies": [“看书”, “旅游”] };

async function main({ params }: Args): Promise<Output> {
    await new Promise<void>(resolve => setTimeout(resolve, 1000 * 3));

    return {
        output: 0
    };
}

3.节点执行环境中的数据处理代码,主要作用是从输入数组中提取第一个非空字符串

async function main({ params }: Args): Promise<Output> {
    return {
        output: filterFirstNonEmpty(params.input)
    };
}
  • 异步函数,接收参数对象 { params }
  • 返回包含 output 字段的对象
  • 调用核心过滤函数处理输入数据
function filterFirstNonEmpty(data) {
    // 输入验证 - 确保是数组
    if (!Array.isArray(data)) {
        throw new Error("Input data.output must be an array.");
    }

    // 查找第一个非空元素
    const firstNonEmpty = data.find(item => item.trim() !== "");

    // 返回结果或默认值
    return firstNonEmpty || "";
}

主要功能
从字符串数组中提取第一个非空的有效内容

处理逻辑:

  • ✅ 遍历数组,按顺序检查每个元素
  • ✅ 跳过空字符串和纯空格字符串
  • ✅ 返回遇到的第一个有效字符串
  • ✅ 如果全部为空,返回空字符串作为降级方案

七、工作流预览图

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐