Skip to content

Mosael v1.4.0

Choose a tag to compare

@Alndaly Alndaly released this 18 Sep 17:04

视频译配:一条工作流从原片到译配成片

  • 新增官方工作流「视频译配 · 字幕与配音」:逐句转写 → 逐句翻译 → 按原时间码铺译文字幕 → 逐条配音并变速压回原段落长度 → 导出。
  • 逐句翻译,不是整篇翻译。配音要对得上画面,每一句就必须知道自己是第几秒到第几秒,而那个时间码只存在于原始段落里。整篇丢给翻译再切回句子,切点不可能和原来一致(译文的句数本来就和原文不一样),于是每句都往后错一点,越到后面错得越多。
  • 靠变速塞回原长度,不是靠裁剪。同一句话译成另一种语言长度天然对不上;裁掉尾巴等于把话说一半,留空则对不上口型。变速改的是片段自己的倍速(渲染时 atempo),无损、可撤销、事后还能在检查器里逐条微调。
  • 工作流新增「生成字幕」和「字幕配音」两种节点,画布上可以单独使用。

一个任务只响一次

  • 一次译配此前会弹十几条"完成":每句配音、导出后顺手排的预览代理,都成了独立的顶层任务,各自弹一条,还会发系统通知。现在任务执行时建出来的任务都归到它名下,任务中心只报这一次;逐句的合成在任务详情里看得到,取消字幕配音也会一并停掉它们。
  • 预览代理成功时不再提示,失败才说。
  • 做完只由任务中心说一次。配音面板、字幕配音不再各自再弹一条。
  • 每种任务叫什么、要不要提示、做完刷新哪些数据、点"前往"去哪一页,都改由后端统一声明。此前前端几张表对不上,有些任务显示成笼统的"任务"。

修复:工作流的语音节点只剩一个引擎

  • 「引擎」下拉里除了「克隆音色」什么都没有,音色跟着也是空的。原因是「这个引擎现在能不能用」只长在克隆那一条上,其余引擎压根没回答过这个问题,而只列可用引擎的那个下拉按它过滤。现在每个引擎都说得出:不要 Key 的(Edge)随时能用,要 Key 的看你配没配那条连接。

插件节点的下拉终于有东西可选

  • 插件节点(画布上「插件」那一组)的「用哪个连接」「用哪个工具」此前在前端按节点类型查表,而插件节点的类型是装了插件之后才有的——那张表永远覆盖不到它,下拉里一个选项都没有。现在选项从哪来由后端随节点声明一起发下来,发布账号、可调用工作流、对话连接与模型同理。
  • 模型名这类字段可以在下拉之外手填(新模型上线往往早于目录更新),这一条现在也由声明说了算。
  • 「调用工作流」的清单里不再列出它自己(自调一定成环)。

英文界面里不再冒出中文

  • 从模板建的工作流:画布上那一排节点名此前永远是中文,现在跟着界面语言走(图建好之后就是你的了,随时能改名)。官网上可下载的模板文件也分中英两份。
  • 跑失败时那句话:失败原因此前是写死的中文,现在按你界面的语言显示;历史任务也跟着变,因为任务记的是「哪一条原因 + 哪几个数据」,而不是当时那句话。
  • 模板卡片的名字、介绍、步骤、前置条件此前在应用、官网、后端各写一份,现在只有一份。

插件可以自己处理多语言

  • 清单里任何给人看的文字都能写成 {"zh": "…", "en": "…"}(此前就支持),现在按主语言匹配:写 en-US 也认得出是英文;还能用 default_locale 声明你的原文是哪种语言,挑不到时先退到它。
  • 工具跑出来的文字(摘要、失败原因)由插件自己定语言:每次调用都会告诉它读的人在用哪种语言(进程插件读请求体里的 locale 或 MOSAEL_LOCALE,MCP·http 读 Accept-Language)。

工作流节点的下拉不再是英文代号

  • 「原声」下拉里此前摆着 duck / mute / keep / separate,中文界面里也是这样。现在每一项都有中英文名字,值仍是英文的(存进配置、执行时认的是它)。HTTP 方法这类术语照原样显示。

含插件节点的工作流,确认卡按最高一档开

  • 插件节点跑的是第三方的代码、发第三方的请求,但它的类型是运行时才知道的,此前不在「会伸到应用外面」那张表里——一张含插件节点的图只按「可能花钱」开卡。现在默认按最高一档,卡上也会点名;折叠进子图同样躲不掉。

译配选「分离原声」不再整段静音

  • 选了 separate(丢人声、留背景音)时,原片那一段此前在成片里没声音,画面也可能丢。现在画面留在原处、原片自己的声音关掉,背景音对齐放到一条音频轨上。和剪辑台的「分离音频」是同一个操作,可以撤销。
  • 「原声怎么办」(压低 / 静音 / 保持 / 只去掉人声)此前只有工作流能选;剪辑台的字幕配音和智能体配音现在也能选,确认卡上会写明原声会怎样。

字幕配音也能在对话里让智能体做

  • 让智能体「把这条时间线的字幕配上音」,它会开一张确认卡再动手。
  • 卡上写清这一步影响几条字幕、会不会压回原长度、原声动不动 —— 它是花钱的动作,而「整条字幕轨」可能是 3 条也可能是 300 条。条数由执行时的同一个函数数出来,卡上说的和待会儿真做的不会分叉。

3D 场景卡片有了缩略图

  • 从场景数据直出的俯视平面:每个物体按自己的颜色画它压在地面那块,圆柱和球画成椭圆,相机的运镜画成一条虚线。
  • 没走截图那条路 —— 截图会停在「上次保存那一刻」和数据脱节,而且列表页给每张卡起一个 WebGL 上下文,五张卡就是五个。

目录认不出的模型,参数可以自己写下来

  • 内置那张表只装我们查证过的模型。手填的别名(gpt-image-2-client 就是 gpt-image-2)、经另一条中转配的同一个模型,此前在生成界面上一个参数都没有,而你没有任何地方可以说明白。现在可以给这条连接写一份参数组,在模型行上按能力(image / video)分别指过去。
  • 不按模型名跨供应商猜。实测同一个 qwen-image-edit:阿里自家只收一张参考图、没有尺寸;经 evolink 则收 14 张还能选尺寸 —— 猜过去的参数会被端点当场拒掉。所以要么目录认得,要么你在这里说。
  • 写一份参数组是「参数按什么来」那一格底下的一个动作,就地换掉同一个对话框的主体;保存后新建的那份已经选中。此前是「管理参数组」链接 → 参数组库弹窗 → 编辑器弹窗三层叠着,而且建完还得回来再选一次。
  • 表单由后端的字段描述驱动:勾出哪几个旋钮、每个旋钮有哪几档、一开始停在哪一档、这个端点的硬限制和请求形状上的怪脾气,四组各自说得出自己管什么。保存时只校验形状,校验不了「这个端点真的支持吗」—— 那一条只有端点自己知道,界面上照直说。

认不出参数时不再沉默

  • 一个模型「真的没有参数」和「我们不认识它」是两回事,而此前界面把两者显示成同一个样子:什么都不摆。
  • 现在每条通道说得出自己会发哪几项(请求是我们自己构造的,这一点不需要查证),于是认不出模型时界面会说:这条通道发得出 size · num_images,但没人验证过这个模型收哪些取值 —— 指一个「和它一样」的模型就都有了。
  • 同时拆掉了界面凭空造值那条路:没有可选值时不再自己编出 1024x1024、5 秒 这种清单。编出来的值发出去会被端点拒掉,而用户以为那是我们查证过的。

分离人声与背景音

  • 译配要替换的是说话声,而原片里说话声和背景音乐混在同一条轨上 —— 整轨静音会把音乐一起带走。现在可以把一段音频或视频拆成人声和背景音两份新素材,原素材一个字节不动。
  • 入口在素材库(音频、视频素材的菜单)、剪辑台片段右键、工作流的「人声分离」节点,也可以让智能体做(确认卡)。同一个能力,一份实现。
  • 配音节点的「原声怎么办」多了「分离」一档:装了分离引擎就只静音人声、保住背景音乐,没装就退回整轨静音,不让一条本来能跑完的流程失败。官方译配模板用的就是这一档。
  • 引擎在本机跑(Demucs),装在自己的独立环境里 —— 和转写共用一个环境时两边的 torch 版本会打架。装是设置里显式的一步:几个 GB、几分钟到几十分钟,不该藏在第一次点「分离」后面。一段长素材在 CPU 上要跑十几分钟,所以分离总是排成任务,有进度、能取消、失败说得出原因。

降噪

  • 音频、视频素材可以降噪,产出一份新素材,原素材不动;视频保留画面,只换声音。入口在素材库、剪辑台片段右键、工作流的「降噪」节点,也可以让智能体做(确认卡)。
  • 内置引擎不用装任何东西,去掉空调、风扇、电流声这类持续的底噪,音乐不受影响。它先量出这段音频的噪声有多大再下手 —— 写死一个阈值的话,噪声比它响就一点都降不动(实测 −31 dB 的白噪声原样留着),比它轻就把说话声当噪声削掉。三档强度实测把停顿里的噪声压低约 6 / 12 / 20 dB,说话段响度不变。
  • 以说话为主的录音可以选两个开源语音模型:DeepFilterNet(效果最好,键盘、碗碟、嘈杂人声这类一阵一阵的噪声实测压低约 34 dB,说话声失真最小;在「设置 → 本机引擎 → 降噪」下载一次,约 30 MB,按固定 SHA-256 校验,对不上就不装)和 RNNoise(随应用带着,不用装,轻量些)。它们用的是官方发布的独立程序和 ffmpeg 自带的滤镜,不需要 torch —— DeepFilterNet 的 Python 包和新版 torchaudio 不兼容,实测装不上。
  • 这两个语音模型都会把音乐当成噪声去掉,所以默认从不选它们;对话框、设置页和确认卡上都会标出「会去掉音乐」。
  • 只想要人声、其余全部不要,用「分离人声与背景音」取人声那一份 —— 那不算降噪,不在降噪的选项里。
  • 顺带修正:人声分离取声音时先降成了 16 kHz 单声道(借的是转写那条路),拆出来的背景音再进成片时音质已经没了。分离和降噪现在都保留原采样率和声道。

三套官方工作流

  • 从主题到完整视频:口播对上画面了。 此前每镜的口播接在上一段口播后面,而口播长短不一 —— 第 n 段落在前 n−1 段口播时长之和上,越往后和画面错得越多。现在放在这一镜画面实际开始的那一秒;比镜头长时加速塞进去(最多 1.5 倍,再快就听不清),分镜提示词也按语速给每镜口播定了字数上限。
  • 口播与访谈智能整理:先降噪。 底噪同时拖累转写(整理方案是照着逐字稿切的)和成片。用内置降噪,不用装、不动背景音乐;降噪只换声音,按逐字稿切的每一刀仍落在原处。
  • 视频译配:说清原声怎么处理的。 选了「拆掉人声、保留背景音乐」却没装人声分离引擎时,流程会退回整轨静音 —— 背景音乐也跟着没了。现在完成通知和输出里会写明实际做了什么,以及装好引擎后重跑可以保住音乐。模板简介里「原声只做闪避」、「翻译不需要对话模型」这两句过时的说法一并改正。
  • 从主题到完整视频:各镜同时生成,并给口播配上字幕。 视频生成是整条流程最慢的一步,此前逐镜排队;现在最多 3 镜同时生成(画面和口播一起),再按镜头顺序接上时间线。字幕跟着口播实际落下的起止;整片没有口播时不出字幕、也不让流程失败。
  • 「遍历循环」可以设同时跑几项(1–4),结果仍按原顺序;不写输出时每项结果带着它自己那一项。「生成字幕」可以按字段路径从任意对象列表取起止和文本,并可在没有可用段落时跳过。
  • 修复:挂在条件分支上的节点,另有一条数据连线时会在分支不成立时照跑。 数据连线只该决定取值。整片生成里没有口播的那一镜会因此拿着空素材去接口播,整条流程失败 —— 上一版口播对齐的改动正好踩中。
  • 语音节点只有一格音色。 「语音合成」「字幕配音」此前把音色存成两个字段、按引擎显示其一,两个字段一前一后 —— 换引擎时音色那一格上下跳,看起来像两个音色框。现在是「引擎 → 音色」两格,音色清单跟着引擎变(克隆 → 配音库,其余 → 那个引擎的音色);火山音色的资源号由后端自己查。节点字段的现查清单改由后端声明来源(options_from),编辑器不再为某个节点写特例。已添加的旧工作流需要在语音节点上重选一次音色。
  • 「把素材接到时间线」节点可以指定放在第几秒,也可以给一个最长时长(太长就加速塞进去);「字幕配音」节点多输出原声的实际处理方式。

东西放在找它的人会去找的地方

  • 设置页按用途重新分组:个人与工作区 · AI 供应商(只放云端连接)· 智能体 · 本机引擎(转写 / 配音与音色 / 人声分离 / 安装源)· 连接与系统。人声分离不再挂在「转写模型」下面;pip 镜像有了自己的一页 —— 它被转写、克隆、分离三处共用,此前却只出现在声音克隆的表单里;出站代理和失败重试合成「网络」一页。
  • AI Studio 多了「音频」:念一段文字、做一期播客都在这里,产物进素材库,下方列出最近几条可以就地试听。此前它们挤在剪辑台的配音栏里,而产物根本不碰时间线。
  • 剪辑台的「配音」页只管这条时间线:给字幕配音的表单搬到这里(原来藏在字幕页的一个弹层里),范围跟着时间线上的选中走;字幕页每一条旁边的配音按钮变成「选中它、切过来」。选引擎、选声音在两处是同一套控件 —— 此前各写一份,一边能换克隆引擎、调语速,另一边不能。
  • ⌘K 能跳到所有页面:命令面板原先自己抄了一份页面清单,漏了笔记、3D 场景、画板和管理控制台。现在侧栏和命令面板读同一份声明。
  • 开放注册和邀请码在管理控制台里;「最后一个管理员不能收回」的说明回到成员列表下面,开关为什么是灰的有了解释。

智能体问你的时候会等着

  • 岔路口上智能体用选择卡把选项摊开时,这一轮现在停在那儿等你挑,你的答案作为工具结果回到它提问的那个位置 —— 不再是问完自己接着跑、等你选完再靠一条「我选好了…」把它叫醒。
  • 等待有上限;到点还没答不算失败,它会按自己的判断继续,而你之后作答,答案仍然会送到。
  • 顺带修掉那条「我没写过却出现在输入框上方队列里」的消息:它是选择卡的回执,此前撞上智能体正忙就排进了队列。

修复

  • 官方译配模板翻译到第一句就整条失败。工作流的翻译节点一句一次调用、且不重试,同一个 429 在批量翻译里会退避重试、在这里当场失败。新增整轨一次翻完的「批量翻译」节点(并发、共用一条会重试的连接、顺序不变),模板里的循环拿掉;模板改用你自己配的 AI 引擎 —— 实测免费的 Google 端点对这台机器的出口 IP(直连与代理)都是整段封禁。翻译节点也补上了选连接、选模型两格。
  • 译配完原声还在。闪避把原声压到约 −10 dB,那是给「旁白盖在环境音上」的档位;译配是另一种语言的说话声替换说话声,压低的结果是观众同时听见两个人说话。配音节点新增「原声怎么办」:压低 / 静音 / 保留 / 分离。
  • 配音压不住原声,成片里两个人同时说话。设闪避时只挑音频轨,而原片整段在视频轨上、音频轨是空的 —— 标记落在一条没有片段的空轨上。再往下一层,基底视频轨的声音根本没有闪避通路。实测原声在成片里的增益 0.996(−0.03 dB),修后 0.304(−10.35 dB)。
  • 生成成功了,生成历史里却看不见它。没点名会话时现开一条却不设归属,而列表按「我的或共享的」过滤 —— NULL 谁都看不见,包括创建它的人。图不丢,丢的是那条带着提示词、参数和花费的记录。五个入口里四个中招。
  • 导出写的那个文件是中转,不是成品,成功/失败/取消三种结局都没清掉,攒在 ~/.mosael/exports 里。
  • 客户端说「我不知道这是什么」时,一切图片被当成了视频。application/octet-stream 恰恰是命令行、扩展、机器人上传时最常发的那一个,而 iPhone 照片默认就是 HEIC。
  • 智能体轨迹面板会偶尔整轮空白:流重置排在工作线程第二行,而 POST 在线程起来后就返回,界面在那个窗口里连上就拿到 done=true。
  • 上下文占用条从来就不动 —— 消息那一项恒为 0。
  • 笔记编辑器:代码块里写 Markdown 会把自己拆掉、表格里的竖线让那一格裂成两格、粘进来的 Markdown 不认、占位符压在代码块上;代码块的间距、配色和语言选择器重做。
  • 画板:每次自动保存都白重建一次画布;离开视野的视频卸掉 <video>。
  • 链接导入:失败时说得出是哪一条、为什么;已经挑了登录身份的人不再被劝去挑一个。
  • 浏览器节点「等待超时」现在说清等的什么、等了多久、当时停在哪一页,并带上那一刻的页面。
  • 磨玻璃开启后页面级表面的分隔线随背景漂移,紫色背景上只剩 1.01 对比度。
  • 发布构建的第一次 codesign 撞上包刚铺完就整个红掉,且每次都停在同一个二进制上,看着像那个文件坏了。
  • 智能体正忙时打的字排在输入框上方,那一条却和输入框不一样宽;窗口一窄(分屏、侧栏)更明显。
  • 确认卡右上角的权限徽标被长摘要挤成一列竖排 —— 而那两个字是你点「允许」之前唯一会看的东西。
  • 停用一条连接之后,那一行右侧的图标比别的行错开一格。
  • 展开连接时「正在加载模型」是一条贴边的文字,现在是三条占位行。
  • 模型设置弹窗此前四段平级、同一件事说两遍;双能力模型的「生成」组头也说了两遍。

安装:macOS(Apple Silicon)下载 .dmg,已完成 Developer ID 签名与 Apple 公证;Windows x64 下载 .exe。