跳转至

Electron 配音工作区

历史背景: 本页面撰写于 Electron 和 Tauri 应用共存时期。文中提到的 Tauri 辅助工具、页面、测试和回归结果描述了那段迁移期;Tauri 外壳此后已被移除,共享代码现在位于 electron/src/shared/。现有 Tauri 安装:请参阅迁移指南。

空闲工作区包含原声/配音演示对比,配有紧凑的播放器控件。同步播放头可在不启动两个视频的情况下对齐位置。演示挂载期间,示例转录编辑按语言保留;它们不会重新生成预录音频。在配音卡片上编辑会将示例视频导入正常的上传/转录和编辑工作流。

从克隆侧边栏或命令搜索中打开 Dub。上传或拖放音频/视频,或显式提交视频 URL;转录开始前完成准备工作。编辑器显示源文本、可编辑的翻译文本,以及每个片段的语音/时序控件。翻译使用所选的设置 > 模型 > 翻译提供程序。选择目标语言、翻译、审阅文本,然后生成。完成的音轨可通过系统保存对话框预览和导出。

导入卡片可以在摄取前清除粘贴的 URL 及其附带的 Cookie。已加载的源显示为一行文件:名称(悬停显示全名)、时长和大小,以及一个 文件操作 菜单,包含更改文件、使用链接和移除视频(音频源则显示移除音频)。准备期间,主面板会预览文件并显示当前阶段。说话语言(默认为自动)和说话人数量直接显示在其下方,导入 .srt 作为次要操作。移除会返回导入卡片(带有文件和 URL 选项),丢弃转录和编辑历史,同时保留制作设置。它在运行被中断或失败后仍然可用,并且在会丢弃转录编辑或片段时请求确认。

片段行以紧凑的源文本/译文对形式呈现:说话人、语音、适配状态、选中状态和时间戳保持可见,而行操作在悬停或键盘聚焦时显示。内嵌的极细分隔线保持了阅读节奏;源文本和元数据在行处于活动状态前保持暗色,而译文保持视觉主导地位。点击译文会将仅该行变为一个展开的编辑器。高级语音和时序控件仍折叠在说话人标题后面,该标题还可将台词移动到另一说话人或 新说话人;选择栏中的 设置说话人... 对多行执行相同操作。跟随原说话人语音的台词会采用新说话人的语音,而为该行单独选择的语音保持不变。请参阅多说话人指南。当工作区还打开本地控件时,受限或缩放的窗口会自动使用主导航栏,以便转录保持可用宽度;展开它仍然是显式的临时覆盖操作。

当选择了多个目标语言时,转录上方的进度选项卡可一键切换当前语言,同时为“全部翻译”和“生成”保留每个目标语言。持久化的提供程序错误页面会被丢弃,并恢复为带有可重试错误状态的源对话。恢复的错误仍附加到受影响的语言上,在切换目标时保留其警告徽章和问题导航停止点。

转录工具栏统计已标记的片段,并提供上一个问题/下一个问题控件。它们按转录顺序循环遍历紧凑适配和过长的行、翻译错误或 Fast 回退、生成的音频溢出,以及 QC 验证标记。每次跳转都会选中并滚动到该行,包括长转录中可见部分之外的行。键盘焦点保持在控件上,以便 Enter 或空格键可以继续审阅。翻译错误徽章和导航使用当前语言已保存的失败记录,因此成功翻译为另一种语言并不会隐藏它们。粘贴的替换内容和对已保存翻译的编辑会清除该语言的错误,同时保留其他语言中的失败记录。计数跟随编辑和当前转录变化;零表示没有记录的标记,而不是未生成的语音已被验证。当任务正在运行或等待恢复时,导航被禁用。

长项目的转录行采用虚拟化渲染,因此只挂载可见的编辑器。转录工具栏和波形时间线保持在滚动容器上方。用鼠标或键盘选择时间线提示点,会显示其对应的转录行,而不会将时间线移出视野;在编辑长项目时,时序控件仍然可用。展开的行、调整大小后的内联通知和已关闭的错误保留其正确的虚拟化位置。

配音窗格在其控件旁边有一个项目选项卡,列出已保存的配音项目,最新的排在前面。选择项目并确认后会在原地打开(如果配音正在运行则等待);项目工作区仍然是保存、重命名和删除项目的地方。

时间线波形峰值和起始点由后端计算一次,并作为小型 JSON 数据载荷缓存;Chromium 从不解码完整的人声分离 WAV 来绘制时间线。视频预览以原子方式写入,带有 MP4 fast-start 元数据,并且对每个生成的音轨修订版本都是不可变的。渲染器在后台预热当前目标语言,在切换音轨时复用一个 Vidstack 播放器,在原声/配音切换时保留播放头和播放状态,并在后续播放中使用字节范围。基于扩展名的原生 MIME 提示会立即为常见的 MP4、WebM、Ogg、MOV 和 MKV 源选择 Vidstack 的原生提供程序;URL 导入使用后端规范化的 MP4 类型,即使其显示名称没有扩展名。媒体端点还响应仅元数据的 HEAD 请求,包括后端重启之后,无需读取源主体或启动预览复用器。本地 NLLB 批次根据可用加速器内存进行扩展,同时将批次乘以波束数作为上限。

后端仍负责分离、ASR、说话人克隆、翻译、TTS、拟合、混音和导出。当人声被分离后,每行从检测到的语音处开始,并在其最后一个发出的声音之后结束(#3419):一行之前的叹息、呼吸、脚步声或沙沙声不再设定其起点,尾随的呼吸和静音会从其槽位中被修剪掉。耳语行保持基于能量的起点。若未分离人声,则保留转写时间戳。Electron 复用 Tauri 的说话人绑定和分段生成辅助函数。流关闭时没有终止事件即为失败,而非成功。取消会中止 HTTP 流并请求后端任务/作业取消。编辑、目标语言、轨道元数据和任务 ID 在重新加载后仍保存在本地。一次生成只有在其完成后才会发布其轨道:取消它,或在它运行时导入或重新转写字幕,会保留先前的轨道(后者会要求新的生成)。新的分段语音只有在轨道发布后才会连同其指纹一起进入分段预览和部分再生成背后的缓存;新轨道开始时没有先前轨道的 QC 标记,而在取消到达时完成的配音会报告为已完成。转写期间导入的字幕或发布的配音会替换其转写结果,导入的提示保留其所匹配的语音引用:每次转写都将其引用写入自己的文件夹。

被打断的准备/生成提供"恢复"(Resume),它会读取现有任务并重放其流;生成绝不会仅仅因为 UI 重新加载就被重新提交。被打断的转写提供明确的"重试"(Retry),针对已准备好的媒体执行,无需重新上传或准备源文件。ASR 从头重启,因为其后端流是请求作用域的,而非可重放的任务。批量语言运行和高级 QC 控件保留在 electron/PARITY.md 中。

验证:node electron/tests/dub-smoke.mjs 针对开发渲染器运行。该测试模拟后端作业,绝不上传或生成用户媒体。可选地设置 VOICESTUDIO_TEST_VIDEO 为本地 MP4 测试夹具以验证原生视频传输。这些检查确立的是 UI 接线,而非一次完整的、真实模型支撑的配音运行。node electron/tests/native-translation-agent-smoke.mjs <agent> 单独启动带有隔离数据的打包应用,并验证检测到的 CLI 能为真实的时间预算分段返回完整、有序的翻译,而无需后端或源检出。Codex、Claude Code 和 OpenCode 在当前 Windows 主机上通过;Pi 仍在安装了它的主机上保持门控。uv run python scripts/smoke_dub_url_captions.py 单独验证实时公共下载器,而不加载语音模型或接触应用数据。当前冒烟测试下载了一个浏览器安全的 MP4 和一条原始语言字幕轨道,然后解析出 165 条可用提示。

断开的准备或生成流保留其现有任务以供"恢复"或"取消"。编辑和新作业在该任务完成或取消被确认之前保持禁用;重新连接绝不会创建替代生成。后端中已经不存在的任务计为已取消。如果后端无法确认取消,Change 文件会明确放弃不可达的本地恢复记录,从而使工作区不会永久阻塞。

设置侧边栏将源、目标语言和翻译引擎、时间调整、制作覆盖和导出选项分组为稳定的区块。翻译质量及其选项保持可见;其他高级控件在请求时打开。在媒体加载之前,主工作区呈现三个实际步骤——上传并转写、翻译、生成——并隐藏非活动的生成操作。

导入 .srt 会在源准备后替换当前的分段文本和时间。后端仅在其时间与新提示重叠时保留语音引用。格式错误、重叠或时长受限的提示数量在侧边栏中保持可见。失败的导入保留当前的编辑。生成的轨道按钮在成功替换后清除,以避免将较旧的音频呈现为新字幕的输出。SRT/VTT 字幕中的 Ruby 读音指南在 Dub 和 Stories 中被排除在口语文本之外:<ruby>read<rt>reed</rt></ruby> 仅说 "read"。嵌套的注释容器和后备括号也被排除;未更改的 Dub 字幕导出保留原始 ruby 标记。未闭合的注释在封闭的 ruby 或提示边界处结束,因此它不能隐藏下一条提示。

URL 导入仅在点击 Ingest 后运行;它使用后端现有的 yt-dlp 管道。URL 导入(此处和语音画廊中)仅接受 http:// 和 https:// 链接,并拒绝指向本机或本地网络的地址,包括重定向到它们的链接。直播流和即将到来的首映在录制可用之前无法导入。语音画廊片段会在此计算机上下载音频轨道并裁剪片段。要从您自己网络上的媒体服务器导入,请为后端设置 OMNIVOICE_ALLOW_PRIVATE_URL_IMPORTS=1(例如在 ~/.config/omnivoice/env 中)并重启。上传仅接受常见的音频和视频文件类型;将播放列表或清单重命名为视频会被拒绝。URL 登录选项下提供显式 cookies.txt 选择;可选的字幕下载可用。

翻译质量使用现有后端的 Fast、Autofit 和 Cinematic 模式。该选择在工作草稿和已保存项目中持久保留(translateQuality),包括旧项目的导入。新媒体保留用户的质量选择。如果后端报告未配置 LLM,UI 选择 Fast 并显示内联解释,附有 LLM 设置的链接。它不会静默声称 Cinematic 或 Autofit 已完成。浏览器夹具覆盖此回退和重新加载持久性;真实的 LLM 支撑的质量通过仍未验证。

区域方言是提示指令,因此只有 LLM 支撑的翻译才能对其起作用。神经机器翻译引擎每种语言只有一个代码——NLLB 的 por_Latn 是葡萄牙语,没有欧洲变体可供选择——因此要求它提供葡萄牙语(葡萄牙)时,返回的是其训练所偏向的内容。后端报告方言是否已应用;未应用时,工作区在翻译器旁边显示内联解释,附有 LLM 设置的链接。该选择绝不会被静默丢弃。该通知描述的是最近一次翻译,因此切换到 LLM 支撑的引擎并再次翻译会清除它。

葡萄牙语(巴西)和葡萄牙语(葡萄牙)是单独的目标选项;两者都以该方言写入葡萄牙语轨道,而普通葡萄牙语目标表示巴西葡萄牙语。NLLB、Argos 和 Google 写入巴西葡萄牙语,因此巴西请求视为已应用,而欧洲请求会显示注明引擎所写变体的提示(响应中的 dialect_used)。参见 支持的语言。

使用 Agent 翻译会检测已安装的 Codex、Claude Code、OpenCode 和 Pi CLI。配音将 Agent 与当前使用的 Google、Argos、NLLB 或 API 引擎作为独立的翻译选项;Fast、Autofit 和 Cinematic 仍然是引擎翻译的质量选项。所选 Agent 将完整的排序对话、术语表、方言和每片段语音预算作为不可信数据接收,返回严格保留 ID 的翻译,并且永远不会获得仓库或文件系统的写入权限。Google、Argos、NLLB 和已配置的 API 翻译器仍可通过普通的 Translate All 操作使用。每个翻译入口点都会遵循所选翻译器。Agent 翻译使用相同的可审阅片段字段,并在生成期间复用有界的实测语音循环,仅重写时机失配后再重新渲染。时机适配的来源信息按目标语言存储,因此每条翻译轨道在语言切换和草稿重新加载后都保持该行为。取消配音也会终止本地 Agent 进程树。

导出选项在现有侧边栏中展开。用户可以选择包含的视频轨道和默认轨道、背景混音、烧录字幕、双布局和卡拉 OK(与双布局同时使用时禁用)。音频支持 WAV 或 MP3,并可选择比特率;SRT/VTT/ASS sidecar 文件以及按语言分轨/分段的 ZIP 使用现有后端。每次下载都是明确操作,并面向所选语言。导出错误会保留所有选项以供重试。原生保存过滤器与编码后的文件格式匹配。浏览器测试夹具验证 MP3/SRT 下载、查询选项和失败导出重试;单元测试涵盖视频/包参数。真实渲染导出、批量预设和原生保存对话框仍未验证或未完成。

时机选项现在与 Tauri 一致:Concise、Smart Fit、Stretch Video 和 Lip sync。语音匹配提供逐行参考,或每个说话者一个一致的参考。这些选择会在进行中的草稿和项目中持久保存,并发送到生成过程;现有默认值仍为 Strict slot 和 Per line。中断的生成会保留其已提交的时机策略。完成的输出会将该策略与当前控件分开保留,因此更改下一次渲染的设置不会改变现有音频的导出能力。Stretch Video 输出会禁用不兼容的字幕烧录,并引导用户改用 sidecar 导出。浏览器测试夹具验证持久化设置、请求值和导出保护;在真实多说话者渲染中的实际时机和语音一致性仍未验证。

ASR 重试的浏览器测试覆盖包括流中断、零自动请求的重载以及成功的显式重试。取消仅在后端确认后才释放恢复。真实的 ASR 中途断连仍未验证。

口语语言和说话人数提示可在折叠的侧边栏部分中使用。自动检测仍是默认设置。显式语言提示会同时传递给本地上传和 URL 摄取;说话人数(1–20)会到达转录环节,并在重试、草稿和项目中持久保存。浏览器检查覆盖选择、重载和重试;单元测试检查文件和 URL 请求体。这些是对现有后端的提示,并不保证说话人分离(diarization)的准确性。

Cookie 导出是为单次导入而显式选择的,限制为 1 MB,并且仅通过 HTTPS 或本地桌面传输发送。选择会在提交时清除;内容绝不会进入持久化的配音会话。Tauri 和 Electron 共享大小和传输验证的常量/辅助函数。浏览器测试夹具验证超大文件拒绝、请求内容以及 localStorage 中不存在这些内容;Tauri cookie 测试仍然通过。未执行任何真实经过身份验证的网站下载。

URL 高级选项包括通过现有 yt-dlp 管线下载可用的字幕。当返回可用提示(cues)时,Electron 会选择最接近的源语言轨道,规范化其时机,并直接在编辑器中打开。缺失或格式错误的轨道会回退到正常 ASR 路径,无需用户再次决定。下载器会跳过自动翻译。真实字幕下载由上述隔离的公共 URL 冒烟测试验证。经过身份验证的网站仍需要用户自有的 cookie 导出才能被原生接受。

下载的 WebVTT NOTE 注释将作为完整块被排除。以 NOTE、NOTEBOOK 或 WEBVTT 开头的口述提示行仍视为对话;滚动字幕时机仍可用于现有转录文本清理。

生产环境覆盖项公开步骤、引导、速度和全局语音方向,与现有的 Tauri 生成请求一致。默认值保持为 16 / 2 / 1,无方向。这些值在草稿和项目中持久保存;Reset 仅清除这些覆盖项。浏览器检查验证重载后生成的精确值,包括零引导。特定引擎的可听效果仍未验证。

已保存的 Smart Fit 覆盖值现在可在项目导入和草稿恢复后保留,并且仅在选择了 Smart Fit 时才会到达生成环节。其他时机策略会省略这些参数。单元测试涵盖往返保留和请求路由;速度限制现在有一个面板(见下文)。

Smart Fit 速度限制(#2896)。 选择 Smart Fit 后,时机部分会显示两个滑块:最快速度(audio_rate_cap,1.0 到 2.0,默认 1.5)和最慢速度(min_audio_rate,0.5 到 1.0,默认 0.85;1.0 会阻止短句被放慢以填满其槽位)。两者都作为 fit_options 发送,由 API 验证(超出范围的值返回 422),随草稿和项目保存,并且在移动之前不会改动默认值。更改其中一个会重新混音已渲染的行,而不会重新合成它们。

后端在合成前验证 fit_options:max_audio_only_rate、audio_rate_cap 和 video_slow_cap 必须为有限值且至少为 1;gap_guard_s 必须为有限值且非负。无效的覆盖值返回 HTTP 422。省略或 null 值保留服务器默认值;零值间隙保护与 allow_video_retime: false 仍作为显式覆盖。

真实导出验证:tests/test_smart_fit_export.py 在显式提供由应用托管的 FFmpeg/ffprobe 后全部 43 项测试均通过。其中 7 个集成用例通过重定时和后端导出端点渲染合成视频/音频,然后探测输出时长与拟合后的字幕边界。这证明了这些后端导出路径在真实编解码器下可用;但并未证明一次完整的 Electron 上传 → ASR → 多说话人合成运行。在提供编解码器路径之前,更广泛的目标导出套件通过了 73 项测试(当时跳过了 7 项)。

导出格式、比特率、音轨选择、背景混音和字幕选项现在会持久化到工作草稿和已保存项目中。旧版 Tauri 导出偏好会填充面板,而不仅仅是作为未使用的数据保留。浏览器检查验证重载后格式/比特率/背景/双布局的恢复;项目测试验证旧版禁用的音轨和背景偏好。

每个片段现在在其现有语音展开面板中提供音量(0–2)、可选速度和方向备注。空速度跟随全局速度。片段增益与共享的 TTS 指纹输入分开、单独传递到生成环节,与 Tauri 一致;静音片段保留零值。浏览器检查覆盖编辑、重载和请求值;这些 UI 测试装置并未验证后端实际可听的混音效果。

片段行支持插入、删除、光标感知的拆分以及与任一相邻片段合并。合并/拆分使用 Tauri 的共享归属记账机制,因此说话人、语音、方向、增益和目标语言在跨边界移动词句后仍能保留。撤消和重做保留最近 50 个编辑状态,并在新源文本、字幕文件、翻译或项目成为编辑基线时重置。工具栏和 Cmd/Ctrl 快捷键提供相同操作;在其他任何字段(术语表、翻译备注、片段开始/结束)中按 Cmd/Ctrl+Z 仍保持该字段自身的撤消。单元测试和浏览器回归测试覆盖完整的插入/删除/合并/拆分/撤消/重做序列以及合并到拆分的归属变化。

编辑器在片段行上方包含一个比例时序轨道。片段块可选择其对应行、拖拽移动、提供边缘手柄以调整大小,并支持键盘微调或删除。时序变更使用 Tauri 的共享钳制与速度重算辅助函数。轨道中以显式警告高亮相邻重叠;准备阶段上报的媒体时长定义其比例。浏览器覆盖验证时间线渲染、键盘时序编辑和重叠质量检查(QC)。

片段复选框现在提供统一的批量编辑界面,而不会改变当前活动的时间线片段。单个操作可将已保存的语音、逐片段目标语言重置/覆盖或删除应用到所选内容,并记录为一个撤消步骤。全选和清除可在生成空闲时保持大型转录文本易于管理。

配音使用更宽的响应式辅助侧边栏(最大 32rem)和更宽的转录工作区。媒体准备完成后,上传表单变为紧凑的源行;源、目标和选角保持可见的三步流程。自动选角匹配为默认选项,因此其覆盖项默认折叠。语音标签自动换行,无需横向滚动。片段行仅在原文与可编辑文本不同时才显示原文,从而在翻译后保留源文本对照,而不会重复展示每个未修改的转录行。

当工作区宽度低于 40rem 时,配音将控件堆叠在编辑器上方,控件高度限制为可用高度的 40%。两个区域均保持独立滚动。

全局速度/质量更改会保留显式的配音制作步骤,包括从项目恢复的设置。未设置的步骤继续遵循后端当前预设。

NLLB 可解析显式的 FLORES 语言/文字代码、无歧义的 ISO-639-3 代码以及常见短别名,包括繁体中文。不支持的或文字/书写系统存在歧义的源语言、目标语言或逐片段语言会在模型加载前被拒绝,而不是静默翻译为英语。

语音完整性与时序

失败、为空或不可读的语音片段会在新音轨替换先前输出之前停止生成。部分重新生成会修复缺失或损坏的片段缓存,包括请求的变更行列表之外的缺失片段;它不会用静音替代并报告完成。自动说话人引用在选择共享回退时会排除过大的片段,因此短句可复用其所属说话人的可用参考。

新的片段缓存在所有时序模式下都保留完整的生成语音。Strict Slot 会移除边缘静音,并以保持音高的速度调整将完整片段适配到其原始开始/结束时间。过长或过短的翻译仍可能听起来不自然地快或慢;请缩短或扩充翻译以获得自然语速。旧版被裁剪的缓存需要重新生成一次,因为拟合无法恢复被丢弃的词句。显式的旧版 Trim 和 Off 选项保留各自的裁剪和重叠行为。

Concise 和 Smart Fit 会在无法解决的溢出时停止,而不是发布被截断的词句。重试前请缩短翻译、选择 Strict Slot 或允许 Stretch Video。镜头切割分段在可用时使用邻近的带时间戳词边界,并跳过无法安全归属的语音内部切割。这会改善短语时序;但并不承诺音素级口型同步,也不会自动纠正不准确的源转录文本。

镜像源表达

更多 → 镜像源表达会根据原始说话者说出每行台词的方式,将简短的表达提示词写入没有方向内容的片段的 Direction 字段。它绝不会改动你手动输入的方向,并且整个过程是一个撤消步骤。

对于每个片段,它会测量分离后的人声(当不存在人声时则为混音)的响度、语速、音高、音高变化,以及该句中有多少内容是有声的。然后将每一句与同一说话者惯常的表达方式进行比较,只有明显的偏离才会产生与手动输入的方向词同属一个分类体系的词语。接近该说话者常态的句子不会得到任何标注。

对照说话者常态的测量结果 词语
更响且更快,音高可比较时也更高 urgent
整体更响、更高或更有活力 energetic
整体更轻、更低或更平 calm
响亮得多且更慢 announcing
大部分无声且更轻 whispered(不再添加其他内容)
明显更快/更慢 quick / slow

系统从不推断情感;请你自己在 Direction 字段中添加。

至少有 3 条可测量句子的说话者会获得一个个人基线,包括音高。否则,句子会与所有测量句子合并后的结果进行比较;只有当整个文件只有一个已知说话者时,在合并情况下才会使用音高。少于 3 条可测量句子不会产生任何建议。分析在本地运行,无需下载模型。超过一分钟的句子只测量其第一分钟。

同样的分析可通过 POST /dub/prosody-mirror/{job_id} 使用。它只读取任务,从不修改任务。当各片段合计覆盖时长超过轨道长度的两倍再加一分钟时(通常是有重复或重叠的片段),请求会被拒绝。

保留对话以外的声音

保留背景的预览和音频/视频导出会在对话区间之外保留原始立体声,包括观众反应、音乐和环境声。在这些区间内部,它们将配音语音混合到分离后的背景之上,并在对话边界内使用 10 ms 的过渡。每种生成的语言都会存储其源区间;较旧的轨道使用其已保存的项目区间。重定时(Retimed)模式还会对该背景进行重定时以跟随视频。普通的 Strict Slot 和 Concise 模式则保留原始背景时间线。

需要原始媒体和完整的分离背景。缺失或失败的背景混音会停止导出,而不是静默地只导出语音。明确的仅语音导出仍然可用。保留的背景层会在本地缓存,并在源文件、对话区间或该语言的重定时计划发生变化时重建。分离仍可能影响与对话重叠的声音;无法保证从单个混合录音中做到精确隔离。正确的对话边界很重要。

自定义翻译风格

选择 Translate with agent,然后在翻译控件旁边填写 Translation style prompt。描述语气、受众、正式程度、幽默、习语处理方式,以及对话应有多大的改编自由度。例如:“面向年轻成人受众的口语化孟加拉语。保留笑话,自然地改编习语,保持人名和数字不变,避免生硬的直译措辞。”

这段可选的提示文本会随项目保存,并在重新打开后恢复。它适用于每个选定的目标语言以及后续的 agent 时间重写,可使用本地 CLI agent 或已配置的 LLM。含义、时间、术语表和结构化输出的要求仍然生效。清空该字段即可恢复默认风格;更改提示文本不会重新翻译已有片段,除非你运行翻译。该字段最多可接受 5,000 个字符,并在工作运行期间被锁定。

翻译活动页脚

翻译和时间重写使用与 Repair Agent 相同的页脚区域。它会在 Logs 中实时显示 CLI stdout/stderr;Translations 会在已验证的翻译输出旁边显示原文。详细信息在翻译期间及之后保持展开;状态、语言、已用时间和 Cancel 操作保持可见。每种语言的输出都会保持可用,直到被关闭、应用重新加载,或在另一个项目中开始翻译为止。日志限制为每次运行最新的 250,000 个字符,并且不会保存到项目文件中。

计数器统计的是已验证的返回片段,而非估算的进度。CLI 可能会一边流式输出日志,一边暂不提供其翻译 JSON,直到完成;API 支持的翻译目前只返回一个响应,因此其计数会在该响应到达时更新。不会显示虚构的百分比。错误保持可见,并可在同一项目中使用 Retry 重试失败的翻译工作。API 重试会在可用时使用失败的片段;不完整的 CLI 响应则需要重试该语言。Cancel 会停止当前翻译,并阻止迟到的结果被应用。

长时间线与重复的 ASR 上下文

时间线按片段的实际时长绘制。使用时间线上方的 Zoom in/out 和 Fit all 来检查长录音中的短句;缩放后的视图可水平滚动。极小的概览条不会被意外拖动或调整大小。点击重叠警告即可缩放到第一个受影响的片段。嵌套重叠也包含在检测中;同时说话的说话者不会被自动错开。

转录后,重复的块上下文只有在同一说话者的匹配时间戳上至少有三个匹配词构成实质性前缀时才会被移除。该上下文之外的新词会保留。过时的片段边界只有在这些词时间戳能证明语音不连续时,才会与其自身的词时间戳对齐。仅仅编辑源文本并不会让已有的翻译/渲染自动变得正确:更改过的行必须重新翻译并重新生成。修复较早的转录稿时,请保留之前的项目。

视频水印导出和视觉上下文关键帧通过应用共享的 media-tool 解析器解析 FFmpeg,包括其捆绑的二进制文件。它们不需要单独安装系统 FFmpeg。

无法读取的源文件

如果准备阶段提示媒体文件已损坏或不完整,说明 VoiceStudio 无法读取其容器头,或者 FFmpeg 拒绝了输入数据。请检查原始文件是否能在媒体播放器中正常播放出声音。文件可能具有预期的大小,但其开头在下载或复制中断后可能填满了零。请等待传输完成,确保存储驱动器有足够的可用空间,然后重新下载或复制一份新文件后再上传。重复上传同一个损坏的文件无法恢复其缺失的文件头。

没有音轨的文件、空文件、不支持的文件类型或损坏的文件,会在文件行上以备注形式显示(例如“没有音轨——请选择带有声音的视频或音频文件”),而不会显示失败横幅:可通过“更换文件”选择另一个文件。真正的失败会保留横幅,其中包含“打开文档”和“复制诊断信息”。

上传还会检查数据驱动器是否有足够空间存放源文件副本。如果复制过程中驱动器空间被占满,VoiceStudio 会移除不完整的任务文件,并要求你先在“设置 → 存储”中释放空间,然后再重试。

包含片段的配音提供 创建 Story 功能,它会将说话人和台词带入 Stories 编辑器:每个说话人对应一个角色,每个片段对应一行台词,每个角色保留其已保存的 Cast 语音。auto-clone 语音会按说话人名称与已保存的配置进行匹配;designed-voice 预设、已删除的配置和未匹配的 auto-clone 语音会回退到 Cast 默认值,而不是使用会悬空的引用。合并的行会按照其归属记账记录拆分回对应的说话人,因此跨越两个说话人的合并会变成两行,而不是以错误语音显示的一行;而同一说话人内部的合并则保持为一行。配音本身不会被修改。加载会替换当前的 Stories 脚本、角色表、待导入内容和之前的渲染输出,并在有内容需要替换时先询问;该功能在已保存的配置加载完成之前不可用,在 Stories 或 Audiobook 渲染运行期间也不可用。

上传任务 ID 会在写入前预留,因此重复上传无法替换或删除已有的源文件。磁盘预检会检查源文件副本的大小;较小的录音无需固定预留 1 GiB 空间。失败或取消的音频提取会移除其不完整的 WAV 文件。任务目录之外的用户原始文件保持不变。

提取过程仅在 FFmpeg 成功后才发布每个 WAV 文件,从而在后续导入验证失败或空间不足时保留已完成的音频。

取消上传会等待其复制工作线程停止后,再关闭输入流并清除预留的任务,因此同一上传可以安全地重试。

在源文件的“文件操作”菜单中选择 使用链接 即可用 URL 替换该文件。取消 会关闭 URL 表单而不更改源文件;更改源文件也会关闭该表单。URL 导入会等待任何待处理的取消操作完成。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 om/VoiceStudio