NarratoAI/webui/i18n/en.json
viccy 99fcd45704 feat(subtitle, ui): 新增字幕安全区预览,优化字体与字幕配置
- 新增竖屏/横屏字幕安全区预览背景图,支持切换预览比例
- 将项目版本从0.8.1升级至0.8.2
- 扩展字体搜索候选列表,新增SourceHanSerifSC-SemiBold.otf和LXGWWenKaiScreen.ttf两款字体
- 修改默认字幕字体为SourceHanSansCN-Regular.otf,替换原Microsoft YaHei默认值
- 新增内置字体检测逻辑,检测到resource/fonts目录有有效字体时跳过下载
- 更新中英文多语言文案,优化字幕位置提示文本
- 重构字幕设置面板,合并位置控制到预览区域并精简标签页
- 调整字体大小滑块范围从20-100扩展至20-160,新增数值边界校验
2026-06-10 12:05:05 +08:00

707 lines
50 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"Language": "English",
"Translation": {
"Video Script Configuration": "**Video Script Configuration**",
"Video Script Generate": "Generate Video Script",
"Video Subject": "Video Subject (Given a keyword, :red[AI auto-generates] video script)",
"Script Language": "Language of the generated video script (Usually, AI automatically outputs according to the language of the input subject)",
"Script Files": "Script Files",
"Generate Video Script and Keywords": "Click to use AI to generate **Video Script** and **Video Keywords** based on the **subject**",
"Auto Detect": "Auto Detect",
"Auto Generate": "Frame Analysis",
"Video Script": "Video Script",
"Edit Video Script": "View/Edit Video Script",
"Video script row count": "{count} script rows",
"Video script table help": "Edit the full script JSON as a table. You can add or delete rows; saving will validate and write the script file again.",
"Raw JSON Preview": "Raw JSON Preview",
"Script Column ID": "ID",
"Script Column Video ID": "Video",
"Script Column Video Name": "Video Name",
"Script Column Timestamp": "Timestamp",
"Script Column Picture": "Picture",
"Script Column Narration": "Narration",
"Script Column OST": "Mark",
"Generation Settings": "Generation Settings",
"Save Script": "Save Script",
"Crop Video": "Crop Video",
"Video File": "Video File",
"Plot Description": "Plot Description (:blue[Can be obtained from https://www.tvmao.com/])",
"Generate Video Keywords": "Click to use AI to generate **Video Keywords** based on the **script**",
"Please Enter the Video Subject": "Please enter the video script first",
"Generating Video Script and Keywords": "AI is generating the video script and keywords...",
"Generating Video Keywords": "AI is generating the video keywords...",
"Video Keywords": "Video Keywords (:blue[Long videos work better in conjunction with plot descriptions.])",
"Video Settings": "**Video Settings**",
"Video Concat Mode": "Video Concatenation Mode",
"Random": "Random Concatenation (Recommended)",
"Sequential": "Sequential Concatenation",
"Video Ratio": "Video Ratio",
"Portrait": "Portrait 9:16 (TikTok Video)",
"Landscape": "Landscape 16:9 (Xigua Video)",
"Clip Duration": "Maximum Clip Duration (Seconds) (**Not the total length of the video**, refers to the length of each **composite segment**)",
"Number of Videos Generated Simultaneously": "Number of Videos Generated Simultaneously",
"Audio Settings": "**Audio Settings**",
"Speech Synthesis": "Speech Synthesis Voice (:red[**Keep consistent with the script language**. Note: V2 version performs better, but requires an API KEY; SoulVoice provides high-quality Chinese voices])",
"Speech Region": "Service Region (:red[Required, [Click to Get](https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices)])",
"Speech Key": "API Key (:red[Required, either Key 1 or Key 2 is acceptable [Click to Get](https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices)])",
"Speech Volume": "Speech Volume (1.0 represents 100%)",
"Speech Rate": "Speech Rate (1.0 represents 1x speed)",
"Male": "Male",
"Female": "Female",
"Background Music": "Background Music",
"No Background Music": "No Background Music",
"Random Background Music": "Random Background Music",
"Custom Background Music": "Custom Background Music",
"Custom Background Music File": "Please enter the file path of the custom background music",
"Background Music Source": "Background Music Source",
"Background Music Source Help": "Choose background music from the resource directory, upload a new file, or disable background music.",
"Upload Background Music": "Upload Background Music",
"Background Music Path Help": "Choose the background music used for video synthesis.",
"No Background Music Resources Found": "No background music resources found. Please upload a background music file.",
"Preview Background Music Help": "Play the selected background music.",
"Upload Background Music File": "Upload Background Music File",
"Upload Background Music Help": "Upload an audio file to use as background music.",
"Background Music uploaded": "Background music uploaded: {path}",
"Background Music Volume": "Background Music Volume (0.2 represents 20%, background sound should not be too loud)",
"Subtitle Settings": "**Subtitle Settings**",
"Enable Subtitles": "Enable Subtitles (If unchecked, the following settings will not take effect)",
"Enable Subtitle Mask": "Enable Subtitle Mask",
"Enable Subtitle Mask Help": "Before burning in new subtitles, cover the original subtitle area with a soft blurred mask.",
"Set Subtitle Mask": "Set Subtitle Mask",
"Subtitle Mask Summary": "Landscape {landscape_x}%/{landscape_y}% · {landscape_width}%×{landscape_height}%; portrait {portrait_x}%/{portrait_y}% · {portrait_width}%×{portrait_height}%",
"Subtitle Mask Settings": "Subtitle Mask Settings",
"Subtitle Mask Settings Caption": "Save landscape and portrait mask regions as frame percentages. The mask is applied before new subtitles are burned in.",
"Landscape Subtitle Mask": "Landscape Mask",
"Portrait Subtitle Mask": "Portrait Mask",
"Landscape Subtitle Position": "Landscape Subtitle Position",
"Portrait Subtitle Position": "Portrait Subtitle Position",
"Save Subtitle Mask Settings": "Save Subtitle Mask Settings",
"Subtitle Mask Left": "Left Position",
"Subtitle Mask Left Help": "Mask distance from the left edge as a frame percentage.",
"Subtitle Mask Top": "Top Position",
"Subtitle Mask Top Help": "Mask distance from the top edge as a frame percentage.",
"Subtitle Mask Width": "Mask Width",
"Subtitle Mask Width Help": "Width of the covered mask region as a frame percentage.",
"Subtitle Mask Height": "Mask Height",
"Subtitle Mask Height Help": "Height of the covered mask region as a frame percentage.",
"Subtitle Mask Blur Radius": "Blur Radius",
"Subtitle Mask Blur Radius Help": "Blur strength for the mask background and edge.",
"Subtitle Mask Opacity": "Mask Strength",
"Subtitle Mask Opacity Help": "Mask blend strength. Higher values cover source subtitles more strongly.",
"Subtitle Burn Position": "Subtitle Position",
"Subtitle Burn Position Help": "New subtitle distance from the top edge as a frame percentage. The safe-area preview updates in real time.",
"Subtitle Mask Preview": "Source Subtitle Mask Preview",
"Subtitle Mask Preview Caption": "Upload a source video for preview, or use the currently selected source video. Uploaded files here are only used for mask preview.",
"Upload Subtitle Mask Preview Video": "Upload Preview Source Video",
"Upload Subtitle Mask Preview Video Help": "Only used for previewing the mask in this dialog. It will not replace the source video used for generation.",
"Using Subtitle Mask Preview Video": "Preview video: {file}",
"Change Subtitle Mask Preview Video": "Change Video",
"Subtitle Mask Preview Empty": "Upload a preview video, or select a source video above first.",
"Subtitle Mask Preview Timeline": "Preview Timeline (seconds)",
"Subtitle Mask Preview Timeline Help": "Drag to a frame where the source subtitles appear, then fine-tune the mask region.",
"Subtitle Mask Preview Frame Caption": "{time} · {orientation} · red outline is the mask, blue line is the subtitle position",
"Subtitle Mask Preview Failed": "Unable to read this video preview. Please try another video file.",
"Enable Auto Transcription": "Enable Auto Transcription",
"Enable Auto Transcription Help": "After the final video is merged, transcribe the whole video into subtitles and burn them into the output.",
"Font": "Subtitle Font",
"Position": "Subtitle Position",
"Top": "Top",
"Center": "Center",
"Bottom": "Bottom (Recommended)",
"Custom": "Custom Position (70, represents 70% from the top)",
"Font Size": "Subtitle Size",
"Font Color": "Subtitle Color",
"Stroke Color": "Stroke Color",
"Stroke Width": "Stroke Width",
"Subtitle Preview Orientation": "Preview Ratio",
"Portrait Safe Area": "Portrait Safe Area",
"Landscape Safe Area": "Landscape Safe Area",
"Subtitle Preview Sample Text": "Preview",
"Generate Video": "Generate Video",
"Video Script and Subject Cannot Both Be Empty": "Video Subject and Video Script cannot both be empty",
"Generating Video": "Generating video, please wait...",
"Start Generating Video": "Start Generating Video",
"Video Generation Completed": "Video Generation Completed",
"Video Generation Failed": "Video Generation Failed",
"You can download the generated video from the following links": "You can download the generated video from the following links",
"Basic Settings": "**Basic Settings** (:blue[Click to expand])",
"Language": "Interface Language",
"Pexels API Key": "Pexels API Key ([Click to Get](https://www.pexels.com/api/)) :red[Recommended]",
"Pixabay API Key": "Pixabay API Key ([Click to Get](https://pixabay.com/api/docs/#api_search_videos)) :red[Optional, if Pexels is unavailable, then choose Pixabay]",
"LLM Provider": "LLM Provider",
"API Key": "API Key (:red[Required, must be applied from the LLM provider's backend])",
"Base Url": "Base Url (Optional)",
"Account ID": "Account ID (Obtained from the URL of the Cloudflare dashboard)",
"Model Name": "Model Name (:blue[Confirm the authorized model name from the LLM provider's backend])",
"Please Enter the LLM API Key": "Please enter the **LLM API Key**",
"Please Enter the Pexels API Key": "Please enter the **Pexels API Key**",
"Please Enter the Pixabay API Key": "Please enter the **Pixabay API Key**",
"Get Help": "One-stop AI video commentary + automated editing tool\uD83C\uDF89\uD83C\uDF89\uD83C\uDF89\n\nFor any questions or suggestions, you can join the **community channel** for help or discussion: https://github.com/linyqh/NarratoAI/wiki",
"Video Source": "Video Source",
"TikTok": "TikTok (Support is coming soon)",
"Bilibili": "Bilibili (Support is coming soon)",
"Xiaohongshu": "Xiaohongshu (Support is coming soon)",
"Local file": "Local file",
"Play Voice": "Play Synthesized Voice",
"Voice Example": "This is a sample text for testing voice synthesis",
"Synthesizing Voice": "Synthesizing voice, please wait...",
"TTS Provider": "TTS Provider",
"Hide Log": "Hide Log",
"Select from resource directory": "Select from resource directory",
"Select a video from resource videos directory": "Select a video from the ./resource/videos directory",
"Upload a new video file up to 2GB": "Upload a new video file, up to 2GB",
"Upload new video files up to 2GB each": "Upload one or more video files, up to 2GB each",
"Select Video": "Select Video",
"Choose a video file": "Choose a video file",
"Upload Video": "Upload Video",
"No video files found in resource videos directory": "No video files found in the ./resource/videos directory",
"Upload Local Files": "Upload Local Files",
"File Uploaded Successfully": "File Uploaded Successfully",
"Selected videos for processing": "Selected {count} video(s): {files}",
"Frame Interval (seconds)": "Frame Interval (seconds)",
"Generate Video Script": "Generate Video Script",
"Video Theme": "Video Theme",
"Generation Prompt": "Custom Prompt",
"Video LLM Provider": "Video Analysis Model",
"timestamp": "Timestamp",
"Picture description": "Picture Description",
"Narration": "Narration",
"Rebuild": "Regenerate",
"Load Video Script": "Load Video Script",
"Speech Pitch": "Speech Pitch",
"Please Select Script File": "Please Select Script File",
"Check Format": "Check Format",
"Script Loaded Successfully": "Script Loaded Successfully",
"Script loaded successfully": "Script loaded successfully",
"Script format check passed": "Script format check passed",
"Script format check failed": "Script format check failed",
"Failed to Load Script": "Failed to Load Script",
"Failed to load script": "Failed to load script",
"Failed to Save Script": "Failed to Save Script",
"Failed to save script": "Failed to save script",
"Script saved successfully": "Script saved successfully",
"Video Quality": "Video Quality",
"Custom prompt for LLM, leave empty to use default prompt": "Custom prompt for LLM. Leave empty to use the default prompt.",
"Proxy Settings": "Proxy Settings",
"HTTP_PROXY": "HTTP Proxy",
"HTTPs_PROXY": "HTTPS Proxy",
"Vision Model Settings": "Vision Model Settings",
"Vision Model Provider": "API Protocol",
"Vision API Key": "Vision API Key",
"Vision Base URL": "Vision Base URL",
"Vision Model Name": "Vision Model Name",
"Text Generation Model Settings": "Text Generation Model Settings",
"LLM Model Name": "LLM Model Name",
"LLM Model API Key": "LLM Model API Key",
"Text Model Provider": "API Protocol",
"Text API Key": "Text API Key",
"Text Base URL": "Text Base URL",
"Text Model Name": "Text Model Name",
"Top P": "Top P",
"Top K": "Top K",
"Max Output Tokens": "Max Output Tokens",
"Max Output Tokens Help": "Maximum generated output length. 0 uses the provider default.",
"Thinking Level": "Thinking Level",
"Thinking Level Help": "Controls reasoning effort. Auto sends no extra thinking parameter; low/medium/high tries reasoning_effort.",
"Thinking Level Auto": "Auto",
"Thinking Level Off": "Off",
"Thinking Level Low": "Low",
"Thinking Level Medium": "Medium",
"Thinking Level High": "High",
"Skip the first few seconds": "Skip the first few seconds",
"Difference threshold": "Difference Threshold",
"Vision processing batch size": "Vision Processing Batch Size",
"Test Connection": "Test Connection",
"Testing connection...": "Testing connection...",
"gemini model is available": "Gemini model is available",
"gemini model is not available": "Gemini model is not available",
"Unsupported provider": "Unsupported provider",
"0: Keep the audio only, 1: Keep the original sound only, 2: Keep the original sound and audio": "0: Keep the narration only, 1: Keep the original sound only, 2: Keep both original sound and narration",
"Text model is not available": "Text model is not available",
"Text model is available": "Text model is available",
"Upload Script": "Upload Script",
"Upload Script File": "Upload Script File",
"Script Uploaded Successfully": "Script Uploaded Successfully",
"Invalid JSON format": "Invalid JSON format",
"Upload failed": "Upload failed",
"Enable Proxy": "Enable Proxy",
"QwenVL model is available": "QwenVL model is available",
"QwenVL model is not available": "QwenVL model is not available",
"QwenVL model returned invalid response": "QwenVL model returned an invalid response",
"System settings": "System Settings",
"Clear Cache": "Clear Cache",
"Cache cleared": "Cache cleared",
"storage directory does not exist": "Storage directory does not exist",
"Failed to clear cache": "Failed to clear cache",
"Clear frames": "Clear frames",
"Clear clip videos": "Clear clip videos",
"Clear tasks": "Clear tasks",
"Directory cleared": "Directory cleared",
"Directory does not exist": "Directory does not exist",
"Failed to clear directory": "Failed to clear directory",
"FFmpeg Engine Detection": "FFmpeg Engine Detection",
"FFmpeg Engine": "FFmpeg Engine",
"FFmpeg Engine Help": "Choose the ffmpeg executable this app should prefer; the packaged runtime and local PATH are discovered automatically",
"No FFmpeg engines found": "No FFmpeg engines found",
"Custom FFmpeg Path": "Custom FFmpeg Path",
"Custom FFmpeg Path Help": "Paste an absolute path to an ffmpeg executable if the target engine is not listed",
"Current FFmpeg Engine": "Current FFmpeg Engine",
"Save FFmpeg Engine": "Save Engine",
"Test Selected FFmpeg": "Test Selected FFmpeg",
"Testing FFmpeg engine": "Testing FFmpeg engine...",
"FFmpeg engine saved": "FFmpeg engine saved",
"Selected FFmpeg path is invalid": "Selected FFmpeg path is invalid",
"FFmpeg detection details": "FFmpeg detection details",
"FFmpeg source Configured": "Configured",
"FFmpeg source NarratoAI packaged runtime": "NarratoAI packaged runtime",
"FFmpeg source Integrated runtime": "Integrated runtime",
"FFmpeg source System PATH": "System PATH",
"FFmpeg source Homebrew": "Homebrew",
"FFmpeg source Python environment": "Python environment",
"FFmpeg source Python executable folder": "Python executable folder",
"FFmpeg source IMAGEIO_FFMPEG_EXE": "IMAGEIO_FFMPEG_EXE",
"FFmpeg source imageio-ffmpeg": "imageio-ffmpeg",
"FFmpeg source System": "System",
"Version": "Version",
"Path": "Path",
"Available": "Available",
"Unavailable": "Unavailable",
"Hardware Acceleration": "Hardware Acceleration",
"Subtitle Burn-in": "Subtitle Burn-in",
"FFmpeg engine passed all checks": "FFmpeg engine passed all checks: basic execution, hardware acceleration and subtitle burn-in are available",
"FFmpeg engine works but hardware acceleration is unavailable": "FFmpeg and subtitle burn-in work, but hardware acceleration is unavailable; software encoding will be used",
"FFmpeg engine check failed": "FFmpeg engine check failed",
"Hardware acceleration detail": "Hardware acceleration detail",
"Subtitle burn-in detail": "Subtitle burn-in detail",
"Type": "Type",
"Encoder": "Encoder",
"Message": "Message",
"Method": "Method",
"Supported Hardware Methods": "Supported hardware methods",
"Subtitle Filters": "Subtitle filters",
"FFmpeg errors": "FFmpeg errors",
"Raw FFmpeg report": "Raw FFmpeg report",
"Subtitle Preview": "Subtitle Preview",
"One-Click Transcribe": "One-Click Transcribe",
"Transcribing...": "Transcribing...",
"Transcription Complete!": "Transcription Complete!",
"Transcription Failed. Please try again.": "Transcription failed. Please try again.",
"API rate limit exceeded. Please wait about an hour and try again.": "API rate limit exceeded. Please wait about an hour and try again.",
"Resources exhausted. Please try again later.": "Resources exhausted. Please try again later.",
"Transcription Failed": "Transcription Failed",
"Short Generate": "Short Drama Mix",
"Generate Short Video Script": "Generate Short Video Script",
"Adjust the volume of the original audio": "Adjust the volume of the original audio",
"Original Volume": "Original Volume",
"Frame Interval (seconds) (More keyframes consume more tokens)": "Frame Interval (seconds) (More keyframes consume more tokens)",
"Batch Size": "Batch Size",
"Batch Size (More keyframes consume more tokens)": "Batch Size (smaller batches consume more tokens)",
"Short Drama Summary": "Short Drama Summary",
"Film TV Narration": "Film/TV Narration",
"Video Type": "Creation Type",
"Select/Upload Script": "Custom Script",
"原生Gemini模型连接成功": "Native Gemini model connection succeeded",
"原生Gemini模型连接失败": "Native Gemini model connection failed",
"OpenAI兼容Gemini代理连接成功": "OpenAI-compatible Gemini proxy connection succeeded",
"OpenAI兼容Gemini代理连接失败": "OpenAI-compatible Gemini proxy connection failed",
"Connection failed": "Connection failed",
"自定义片段": "Custom Clips",
"设置需要生成的短视频片段数量": "Set the number of short video clips to generate",
"上传字幕文件": "Upload SRT",
"清除已上传字幕": "Clear Uploaded Subtitle",
"无法读取字幕文件,请检查文件编码(支持 UTF-8、UTF-16、GBK、GB2312": "Unable to read the subtitle file. Please check the file encoding. Supported encodings: UTF-8, UTF-16, GBK, GB2312.",
"字幕文件内容似乎为空,请检查文件": "The subtitle file appears to be empty. Please check the file.",
"字幕上传成功": "Subtitle uploaded successfully",
"短剧名称": "Short Drama Name",
"影视名称": "Film/TV Title",
"解说语言": "Narration Language",
"自定义解说语言": "Custom Narration Language",
"例如:意大利语(意大利)": "For example: Italian (Italy)",
"请输入自定义解说语言": "Please enter a custom narration language",
"简体中文(中国)": "Simplified Chinese (China)",
"英语(美国)": "English (United States)",
"日语(日本)": "Japanese (Japan)",
"韩语(韩国)": "Korean (South Korea)",
"法语(法国)": "French (France)",
"德语(德国)": "German (Germany)",
"西班牙语(西班牙)": "Spanish (Spain)",
"葡萄牙语(巴西)": "Portuguese (Brazil)",
"俄语(俄罗斯)": "Russian (Russia)",
"自定义": "Custom",
"短剧类型": "Short Drama Type",
"自定义短剧类型": "Custom Short Drama Type",
"影视类型": "Film/TV Type",
"自定义影视类型": "Custom Film/TV Type",
"原片占比": "Original Footage Ratio",
"例如:豪门虐恋": "For example: billionaire angst romance",
"例如:悬疑犯罪": "For example: suspense crime",
"请输入自定义短剧类型": "Please enter a custom short drama type",
"请输入自定义影视类型": "Please enter a custom film/TV type",
"逆袭/复仇": "Counterattack / Revenge",
"霸总/甜宠": "CEO Romance / Sweet Romance",
"家庭伦理": "Family Ethics",
"古装/权谋": "Costume / Power Struggle",
"悬疑/犯罪": "Suspense / Crime",
"都市情感": "Urban Romance",
"年代/乡村": "Period / Rural",
"剧情/情感": "Drama / Emotion",
"动作/冒险": "Action / Adventure",
"喜剧/轻松": "Comedy / Light",
"科幻/奇幻": "Sci-Fi / Fantasy",
"历史/战争": "History / War",
"恐怖/惊悚": "Horror / Thriller",
"生成解说文案": "Generate Narration Copy",
"生成剪辑脚本": "Generate Editing Script",
"短剧解说文案": "Short Drama Narration Copy",
"影视解说文案": "Film/TV Narration Copy",
"Narration Copy Help": "Generate the narration copy first, review or rewrite it here, then generate the editing script to match footage and timestamps.",
"Narration copy generated successfully": "Narration copy generated. Please review and edit it.",
"生成短剧解说脚本": "Generate Short Drama Narration Script",
"请输入视频脚本": "Please enter the video script",
"TTS engine does not support precise subtitles": "⚠️ {engine} does not support precise subtitle generation",
"Manual subtitle editing recommendation": "💡 We recommend adding subtitles manually in a professional editor such as CapCut or Premiere Pro.",
"Disabled subtitles help": "This TTS engine does not support subtitle generation. Please use another TTS engine.",
"Tencent Cloud TTS": "Tencent Cloud TTS",
"Tongyi Qwen3 TTS": "Tongyi Qwen3 TTS",
"IndexTTS Voice Clone": "IndexTTS-1.5 Voice Clone",
"Doubao TTS": "Doubao TTS",
"Edge TTS features": "Completely free, but service stability can vary and voice cloning is not supported.",
"Edge TTS use case": "Testing and lightweight use",
"Azure Speech Services features": "Includes a free quota, then pay-as-you-go billing. An overseas credit card may be required.",
"Azure Speech Services use case": "Enterprise use cases that need a stable service",
"Tencent Cloud TTS features": "Includes a free quota, good voice quality, multiple voices, and fast access in mainland China.",
"Tencent Cloud TTS use case": "Personal and enterprise users who need stable Chinese speech synthesis",
"Tongyi Qwen3 TTS features": "Alibaba Cloud Tongyi Qwen speech synthesis with high-quality voices and multiple voice options.",
"High-quality Chinese speech synthesis use case": "Users who need high-quality Chinese speech synthesis",
"IndexTTS features": "A locally or privately deployed IndexTTS-1.5 voice-cloning engine. Choose a resource audio file or upload a reference audio file, then synthesize narration in that voice.",
"IndexTTS use case": "Best for fixed narrator voices, character dubbing, or generating multiple videos with the same voice. Start the IndexTTS-1.5 API service before use. Deployment package: https://pan.quark.cn/s/0767c9bcefd5",
"IndexTTS download link": "Download link: https://pan.quark.cn/s/0767c9bcefd5",
"IndexTTS2 features": "A locally or privately deployed IndexTTS-2 voice-cloning engine with emotion control and fuller generation parameters.",
"IndexTTS2 use case": "Best for fixed voices, emotional narration, and local speech synthesis workflows that need finer sampling controls. Start the IndexTTS-2 API service before use.",
"OmniVoice features": "A locally or privately deployed OmniVoice-Pack multilingual TTS engine with automatic voice generation, voice design, and reference-audio cloning.",
"OmniVoice use case": "Best for local controllable multilingual narration, voice design, or reference-audio cloning. Start the OmniVoice-Pack API service before use.",
"Doubao TTS features": "Volcengine Doubao speech synthesis with multiple voices and emotions, plus fast access in mainland China.",
"Local Deployment": "Local Deployment",
"Cloud Service": "Cloud Service",
"Select TTS Engine": "Select TTS Engine",
"Select TTS Engine Help": "Choose the text-to-speech engine you want to use.",
"TTS Engine Details": "{engine} Details",
"Features": "Features",
"Use Case": "Use Case",
"Registration URL": "Registration URL",
"Voice Selection": "Voice Selection",
"Select Edge TTS Voice": "Select an Edge TTS voice",
"Edge TTS Voice Description": "Edge TTS Voice Notes",
"Loaded voice count": "Loaded {count} voices",
"Female Voice": "Female voice",
"Male Voice": "Male voice",
"Voice Volume": "Voice Volume",
"Voice Volume Help Percent": "Adjust voice volume (0-100)",
"Voice Rate": "Voice Rate",
"Voice Rate Help 0.5-2.0": "Adjust voice speed (0.5-2.0x)",
"Voice Pitch": "Voice Pitch",
"Voice Pitch Help Percent": "Adjust voice pitch (-50% to +50%)",
"Service Region": "Service Region",
"Service Region Placeholder": "e.g. eastus",
"Azure Service Region Help": "Azure Speech Services region, such as eastus, westus2, or eastasia.",
"Azure Speech Key Help": "Azure Speech Services API key",
"Voice Name": "Voice Name",
"Azure Voice Name Help": "Enter an Azure Speech Services voice name. You can use the official voice name directly, such as zh-CN-YunzeNeural.",
"Common Voice Reference": "Common Voice Reference",
"Chinese Voices": "Chinese Voices",
"English Voices": "English Voices",
"Multilingual": "multilingual",
"Azure Voices Docs Notice": "For more voices, see the [Azure Speech Services documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/language-support).",
"Quick Select": "Quick Select",
"Chinese Female Voice": "Chinese Female Voice",
"Chinese Male Voice": "Chinese Male Voice",
"English Female Voice": "English Female Voice",
"Voice name valid": "Voice name is valid: {voice}",
"Voice name format may be invalid": "Voice name format may be incorrect: {voice}",
"Azure voice name format notice": "Azure voice names usually follow this format: [language]-[region]-[name]Neural",
"Azure Speech Services configured": "Azure Speech Services is configured",
"Please configure service region": "Please configure the service region",
"Please configure API Key": "Please configure the API Key",
"Task failed": "Task failed",
"Script file cannot be empty": "Script file cannot be empty",
"Video file cannot be empty": "Video file cannot be empty",
"Export to Jianying Draft": "📤 Export to Jianying Draft",
"Please configure Jianying draft folder in basic settings": "Please configure the Jianying draft folder in Basic Settings",
"Jianying draft folder does not exist": "Jianying draft folder does not exist: {path}",
"Jianying export dialog title": "Confirm draft name",
"Jianying export dialog description": "Confirm the Jianying draft name before exporting. Once complete, you can open it from the Jianying draft folder.",
"Jianying export destination": "Save location",
"Jianying draft name": "Draft name",
"Please enter Jianying draft name": "Please enter the Jianying draft name",
"Confirm Export": "Confirm Export",
"Please enter draft name": "Please enter a draft name",
"Failed to build parameters": "Failed to build parameters",
"Exporting to Jianying draft...": "Exporting to Jianying draft, please wait...",
"Jianying draft exported successfully": "✅ Successfully exported to Jianying draft: {name}",
"Draft saved to": "📁 Draft saved to: {path}",
"Failed to export Jianying draft": "❌ Failed to export Jianying draft",
"Cancel": "Cancel",
"LLM initialization failed": "⚠️ LLM initialization failed: {error}\n\nPlease check whether the configuration file and dependencies are installed correctly.",
"Jianying Draft Settings": "Jianying Draft Settings",
"Jianying Draft Folder Path": "Jianying Draft Folder Path",
"Jianying Draft Folder Path Help": "Jianying draft folder path, for example: C:\\Users\\Username\\Documents\\JianyingPro Drafts",
"Custom API endpoint help": "OpenAI-compatible endpoint URL. Use a full /v1 URL for third-party or self-hosted gateways; leave empty for the official OpenAI API.",
"Recommended API endpoint": "Recommended endpoint",
"OpenAI compatible gateway help": "{model_type} uses an OpenAI-compatible API, so a complete endpoint URL is required.",
"Vision model": "Vision model",
"Text model": "Text model",
"Model Name Input Help": "Enter the full model name.\n\nCommon examples:",
"OpenAI compatible providers help": "The vendor is not limited here; OpenAI, DeepSeek, OpenRouter, SiliconFlow, or a self-hosted gateway all work as long as the endpoint is OpenAI-compatible.",
"OpenAI compatible protocol": "OpenAI-compatible",
"OpenAI compatible protocol help": "This does not require the official OpenAI model; any service that supports the OpenAI Chat Completions compatible API can be used.",
"Provider API Key Help": "API key for the model service.\n\nCommon places to get one:",
"Please fill OpenAI compatible gateway": "Please fill in the OpenAI-compatible gateway URL above, for example: {example}",
"Please enter API key": "Please enter the API key first",
"Please enter model name": "Please enter the model name first",
"Connection test error": "An error occurred while testing the connection",
"Vision model config saved": "Vision model configuration saved (OpenAI compatible)",
"Text model config saved": "Text generation model configuration saved (OpenAI compatible)",
"Failed to save config": "Failed to save configuration",
"Custom Position (% from top)": "Custom Position (% from top)",
"Please enter a value between 0 and 100": "Please enter a value between 0 and 100",
"Please enter a valid number": "Please enter a valid number",
"None": "None",
"Uploaded subtitle": "Uploaded subtitle: {file}",
"Encoding": "Encoding",
"Size": "Size",
"Characters": "characters",
"Ali Bailian Fun-ASR Subtitle Transcription": "Subtitle Processing",
"Subtitle Processing Method": "Subtitle Processing Method",
"Fun-ASR Backend": "Fun-ASR Backend",
"Local FunASR-Pack API": "FunASR (Local)",
"Local FireRedASR API": "FireRedASR2 (Local)",
"Ali Bailian Online Fun-ASR": "FunASR (Online)",
"Local Fun-ASR upload caption": "The current video above will be converted to SRT subtitles through the locally running FunASR-Pack API.",
"Local FireRed-ASR upload caption": "The current video above will be converted to SRT subtitles through the locally running FireRedASR2-AED-Pack API.",
"Fun-ASR upload caption": "The current video above will be uploaded to temporary Ali Bailian storage and converted to SRT subtitles with fun-asr.",
"Auto Transcription Local Caption": "After the final video is merged, it will be converted to SRT subtitles through the locally running FunASR-Pack API.",
"Auto Transcription FireRed Caption": "After the final video is merged, it will be converted to SRT subtitles through the locally running FireRedASR2-AED-Pack API.",
"Auto Transcription Online Caption": "After the final video is merged, it will be uploaded to temporary Ali Bailian storage and converted to SRT subtitles with fun-asr.",
"Local FunASR-Pack API URL": "Local FunASR-Pack API URL",
"Local FunASR-Pack API URL Help": "For example, http://127.0.0.1:7860. A full /asr endpoint URL is also supported.",
"Local FireRedASR API URL": "Local ASR API URL",
"Local FireRedASR API URL Help": "For example, http://127.0.0.1:7867. A full /asr endpoint URL is also supported.",
"Fun-ASR Hotword": "Hotword",
"Fun-ASR Hotword Help": "Optional hotwords passed to the local FunASR-Pack API.",
"Enable speaker diarization": "Enable speaker diarization",
"Enable speaker diarization Help": "Requires the local FunASR-Pack service to enable and load the spk model.",
"API Key URL": "API Key URL",
"Ali Bailian API Key": "Ali Bailian API Key",
"Ali Bailian API Key Help": "Enter your Ali Bailian API Key. After saving, it will be written to the local config.toml file.",
"Upload media to transcribe": "Upload audio/video to transcribe",
"Using selected video for subtitle transcription": "Using current video for subtitle transcription: {file}",
"Using selected videos for subtitle transcription": "Using {count} current videos for subtitle transcription: {files}",
"Please select or upload a video first": "Please select or upload a video file above first",
"Selected video file does not exist": "The selected video file does not exist. Please select or upload it again",
"Selected video files do not exist": "These selected video files do not exist. Please select or upload them again: {files}",
"Transcribe subtitles": "Transcribe Subtitles",
"Calibrate subtitles": "Calibrate Subtitles",
"Please enter Ali Bailian API Key": "Please enter the Ali Bailian API Key first",
"Please enter local FunASR-Pack API URL": "Please enter the local FunASR-Pack API URL first",
"Please enter local FireRedASR API URL": "Please enter the local ASR API URL first",
"Please upload media to transcribe": "Please upload the audio or video file to transcribe first",
"Transcribing with local FunASR-Pack...": "Transcribing subtitles with local FunASR-Pack, please wait...",
"Transcribing with local FireRedASR...": "Transcribing subtitles with local ASR, please wait...",
"Transcribing with Fun-ASR...": "Transcribing subtitles with Ali Bailian Fun-ASR, please wait...",
"Fun-ASR failed without subtitle file": "Fun-ASR transcription failed: no subtitle file was generated",
"Subtitle transcription succeeded": "Subtitle transcription succeeded: {file}",
"Subtitle transcription succeeded for multiple files": "Subtitle transcription succeeded for {count} files: {files}",
"Calibrating subtitles...": "Calibrating subtitles with the LLM, please wait...",
"Subtitle calibration succeeded": "Subtitle calibration succeeded: {file}",
"Subtitle calibration succeeded for multiple files": "Subtitle calibration succeeded for {count} files: {files}",
"Subtitle calibration failed": "Subtitle calibration failed",
"Transcribed subtitles storage hint": "Previously transcribed subtitles are saved in {path}; drag a file from that folder to upload",
"Tavily Search Settings": "Tavily Web Search",
"Tavily API Key": "Tavily API Key",
"Tavily API Key Help": "Used for web search before plot analysis. When Web Search is enabled, the app searches plot, character, and background context by title, then combines it with subtitles.",
"Tavily config saved": "Tavily configuration saved",
"联网搜索": "Web Search",
"Enable Web Search Help": "When enabled, plot analysis searches the web with Tavily by title before combining those results with subtitles.",
"Please configure Tavily API Key in Basic Settings": "Please configure the Tavily API Key in Basic Settings first",
"Please enter short drama name before web search": "Please enter the short drama name before enabling web search",
"Please enter film/tv title before web search": "Please enter the film/TV title before enabling web search",
"Searching short drama with Tavily...": "Searching short drama context with Tavily...",
"Tavily search failed": "Tavily search failed",
"剧情理解": "Plot Analysis",
"剧情理解结果": "Plot Analysis Result",
"Analyzing plot...": "Analyzing plot...",
"Plot analysis completed": "Plot analysis completed",
"Please generate or upload subtitles first": "Please transcribe or upload subtitles first",
"Please transcribe or upload subtitles first": "Please transcribe or upload subtitles first",
"Fun-ASR transcription failed": "Fun-ASR transcription failed",
"Validating script format...": "Validating script format...",
"Script format validation failed": "Script format validation failed",
"Error Message": "Error Message",
"Details": "Details",
"Correct script format example": "Correct script format example",
"Script format validation error": "An error occurred during script format validation",
"Script validated and saved successfully": "✅ Script format validated and saved successfully!",
"Tencent Secret ID Help": "Enter your Tencent Cloud Secret ID",
"Tencent Secret Key Help": "Enter your Tencent Cloud Secret Key",
"Tencent Service Region Help": "Select the Tencent Cloud TTS service region",
"Custom Voice": "Custom Voice",
"Select Tencent TTS Voice": "Select a Tencent Cloud TTS voice",
"Tencent Cloud TTS Voice Description": "Tencent Cloud TTS Voice Notes",
"Female Voices": "Female Voices",
"Male Voices": "Male Voices",
"Tencent More Voices Notice": "See the official Tencent Cloud documentation for more voices.",
"Qwen DashScope API Key Help": "Tongyi Qwen DashScope API Key",
"TTS Model Name": "TTS Model Name",
"Qwen TTS Model Help": "Qwen TTS model name, for example qwen3-tts-flash",
"Select Qwen3 TTS Voice": "Select a Qwen3 TTS voice",
"API URL": "API URL",
"IndexTTS API URL Help": "IndexTTS-1.5 API service URL",
"IndexTTS2 API URL Help": "IndexTTS-2 API service URL. You can enter the service root or the full /tts endpoint.",
"OmniVoice API URL Help": "OmniVoice-Pack API service URL. You can enter the service root or the full /tts endpoint.",
"OmniVoice Language Code": "Synthesis Language",
"OmniVoice Language Code Help": "The language parameter sent to OmniVoice-Pack, such as zh or en.",
"OmniVoice Generation Mode": "Generation Mode",
"OmniVoice Generation Mode Help": "Automatic voice needs no extra fields; voice design uses an instruction; reference-audio cloning needs reference audio and matching text.",
"OmniVoice Mode Auto": "Automatic Voice",
"OmniVoice Mode Voice Design": "Voice Design",
"OmniVoice Mode Voice Clone": "Reference Audio Clone",
"OmniVoice Instruct": "Voice Instruction",
"OmniVoice Instruct Help": "Describe the desired voice, such as gender, pitch, accent, or style.",
"OmniVoice Instruct Placeholder": "e.g. female, low pitch, british accent",
"OmniVoice Reference Text": "Reference Audio Text",
"OmniVoice Reference Text Help": "The exact transcript of the reference audio. Required when the deployed service has ASR disabled.",
"OmniVoice Reference Text Placeholder": "Enter the text spoken in the reference audio",
"OmniVoice Num Step Help": "Diffusion generation steps. Higher values usually improve quality but slow generation.",
"OmniVoice Guidance Scale Help": "Controls how strongly text conditions guide generation.",
"OmniVoice Duration": "Target Duration (seconds)",
"OmniVoice Duration Help": "0 lets the model decide the duration automatically.",
"OmniVoice Denoise": "Enable Denoise",
"OmniVoice Denoise Help": "Ask OmniVoice-Pack to denoise the generated output.",
"OmniVoice Postprocess Output": "Postprocess Output",
"OmniVoice Postprocess Output Help": "Enable OmniVoice-Pack output post-processing.",
"OmniVoice Preprocess Prompt": "Preprocess Text",
"OmniVoice Preprocess Prompt Help": "Enable OmniVoice-Pack text preprocessing.",
"Reference Audio Source": "Reference Audio Source",
"Reference Audio Source Help": "Choose a reference audio from the resource directory or upload a new one.",
"Select from Resource Directory": "Select from Resource Directory",
"Upload Reference Audio": "Upload Reference Audio",
"Reference Audio Path": "Reference Audio",
"Reference Audio Path Help": "Choose the reference audio for voice cloning (WAV/MP3, 3-10 seconds recommended)",
"No Reference Audio Resources Found": "No reference audio resources found. Please upload a reference audio file.",
"Preview Reference Audio": "Preview",
"Preview Reference Audio Help": "Play the selected reference audio.",
"Upload Reference Audio File": "Upload Reference Audio File",
"Upload Reference Audio Help": "Upload a clear audio clip for voice cloning",
"Audio uploaded": "Audio uploaded: {path}",
"Inference Mode": "Inference Mode",
"Standard Inference": "Standard Inference",
"Fast Inference": "Fast Inference",
"Inference Mode Help": "Standard inference has higher quality but is slower. Fast inference is faster with slightly lower quality.",
"Advanced Parameters": "Advanced Parameters",
"Sampling Temperature": "Sampling Temperature",
"Sampling Temperature Help": "Controls randomness. Higher values are more random; lower values are more deterministic.",
"Top P Help": "Probability threshold for nucleus sampling. Smaller values make results more deterministic.",
"Top K Help": "The k value for top-k sampling. 0 disables top-k.",
"Num Beams": "Num Beams",
"Num Beams Help": "Number of beams for beam search. Higher values may improve quality but slow generation.",
"Repetition Penalty": "Repetition Penalty",
"Repetition Penalty Help": "Higher values reduce repetition, but overly high values may sound unnatural.",
"Enable Sampling": "Enable Sampling",
"Enable Sampling Help": "Enable sampling for more natural speech.",
"IndexTTS Usage Instructions Title": "IndexTTS-1.5 Usage Instructions",
"IndexTTS Usage Instructions": "**Zero-shot voice cloning**\n\n1. **Prepare reference audio**: upload or specify a clear audio file (3-10 seconds recommended)\n2. **Set API URL**: make sure the IndexTTS-1.5 service is running\n3. **Start synthesis**: the system will use the reference voice to synthesize new speech\n\n**Notes**:\n- Reference audio quality directly affects synthesis quality\n- Use clean audio without background noise when possible\n- Keep text length within a reasonable range\n- The first synthesis may take longer",
"IndexTTS2 Emotion Parameters": "Emotion Parameters",
"Emotion Mode": "Emotion Mode",
"Emotion Mode Help": "Choose the emotion control source for IndexTTS-2.",
"Emotion Mode Speaker": "Same as speaker reference",
"Emotion Mode Audio": "Use emotion reference audio",
"Emotion Mode Vector": "Use emotion vector",
"Emotion Mode Text": "Use emotion text",
"Emotion Alpha": "Emotion Alpha",
"Emotion Alpha Help": "Controls how strongly the emotion condition affects generation. 0 is weak, 1 is strong.",
"Emotion Reference Audio Path": "Emotion Reference Audio Path",
"Emotion Reference Audio Path Help": "Local emotion reference audio path used when emotion_mode=audio.",
"Emotion Text": "Emotion Text",
"Emotion Text Help": "Emotion description used when emotion_mode=text, such as happy, nervous, or aggrieved.",
"Emotion Text Placeholder": "e.g. calm, nervous, happy",
"Use Random Emotion": "Use Random Emotion",
"Use Random Emotion Help": "Let IndexTTS-2 use random emotion sampling during generation.",
"Emotion Happy": "Happy",
"Emotion Angry": "Angry",
"Emotion Sad": "Sad",
"Emotion Afraid": "Afraid",
"Emotion Disgusted": "Disgusted",
"Emotion Melancholic": "Melancholic",
"Emotion Surprised": "Surprised",
"Emotion Calm": "Calm",
"Max Text Tokens Per Segment": "Max Text Tokens Per Segment",
"Max Text Tokens Per Segment Help": "Maximum text tokens per segment for IndexTTS-2 inference.",
"Max Mel Tokens": "Max Mel Tokens",
"Max Mel Tokens Help": "Controls the maximum mel tokens generated in one request. Higher values can produce longer audio.",
"IndexTTS2 Usage Instructions Title": "IndexTTS-2 Usage Instructions",
"IndexTTS2 Usage Instructions": "**IndexTTS-2 voice cloning**\n\n1. **Choose a voice**: reuse IndexTTS-1.5 resource audio or upload a reference audio file\n2. **Set API URL**: for example http://192.168.3.6:7863/tts, or enter the service root\n3. **Tune emotion**: speaker is the default; switch to audio, vector, or text when needed\n4. **Tune generation**: temperature, top_p, top_k, num_beams, repetition_penalty, and max_mel_tokens are sent directly to the IndexTTS-2 API\n\n**Notes**:\n- Reference audio quality directly affects cloning quality\n- The first request may load the model and take longer\n- CPU deployments are much slower than GPU deployments",
"OmniVoice Usage Instructions Title": "OmniVoice Usage Instructions",
"OmniVoice Usage Instructions": "**OmniVoice-Pack speech synthesis**\n\n1. **Automatic voice**: set the API URL and language, then synthesize directly.\n2. **Voice design**: fill instruct with the desired gender, pitch, accent, or style.\n3. **Reference-audio clone**: upload or choose reference audio and fill its matching transcript.\n\n**Notes**:\n- The default service URL is http://127.0.0.1:7866/tts\n- Reference-audio cloning requires reference text when the service has no ASR model loaded\n- OmniVoice returns WAV audio, and NarratoAI estimates subtitle segment timing from the audio duration",
"Volcengine Access Key Help": "Volcengine Access Key",
"Volcengine Secret Key Help": "Volcengine Secret Key",
"Doubao AppID Help": "Doubao TTS application AppID",
"Doubao Token Help": "Doubao TTS application Token",
"Cluster": "Cluster",
"Doubao Cluster Help": "Business cluster. Standard voices use volcano_tts.",
"Select Doubao TTS Voice": "Select a Doubao TTS voice",
"Voice Rate Help 0.2-3.0": "Adjust voice speed (0.2-3.0)",
"Voice Volume Help 0.1-2.0": "Adjust voice volume (0.1-2.0)",
"Voice Pitch Help 0.5-1.5": "Adjust voice pitch (0.5-1.5)",
"Sentence Silence Duration": "Sentence-end Silence Duration (seconds)",
"Sentence Silence Duration Help": "Adjust sentence-end silence duration (0.0-2.0 seconds)",
"Doubao TTS API Key Application Process": "Doubao TTS API Key Application Process",
"Application Steps": "Application Steps",
"Doubao TTS Step 1": "1. Open [https://console.volcengine.com/iam/keymanage](https://console.volcengine.com/iam/keymanage)",
"Doubao TTS Step 2": "2. Create a new Access Key and Secret Key",
"Doubao TTS Step 3": "3. Open [https://www.volcengine.com/product/voice-tech](https://www.volcengine.com/product/voice-tech)",
"Doubao TTS Step 4": "4. Click Start Now",
"Doubao TTS Step 5": "5. In the left API Service Center, find Speech Synthesis under Audio Generation (note: Speech Synthesis, not the speech synthesis large model)",
"Doubao TTS Step 6": "6. Scroll to the bottom to get the APPID and Access Token",
"Doubao TTS Fill Credentials Notice": "Fill the Access Key, Secret Key, AppID, and Token above.",
"Doubao TTS configured": "Doubao TTS is configured",
"Please configure missing fields": "Please configure: {fields}",
"Preview Voice Synthesis": "Preview Voice Synthesis",
"Voice Preview Sample": "Thanks for using NarratoAI. If you have any questions or suggestions, please join the community for help and discussion.",
"Please configure voice settings first": "Please configure voice settings first",
"Voice synthesis successful": "Voice synthesis successful!",
"Voice synthesis failed": "Voice synthesis failed. Please check your configuration.",
"SoulVoice pitch not supported": "SoulVoice does not support pitch adjustment",
"Progress": "Progress",
"Generating script...": "Generating script...",
"Please select video file first": "Please select a video file first",
"Extracting keyframes...": "Extracting keyframes...",
"Script generation completed": "Script generation completed",
"Script generation completed!": "Script generation completed!",
"Video script generated successfully": "✅ Video script generated successfully!",
"Generation error": "❌ An error occurred during generation",
"Please upload subtitle file first": "Please upload a subtitle file first",
"Video": "Video",
"Subtitle": "Subtitle",
"Preparing script generation": "Preparing script generation",
"Script generation failed check logs": "Script generation failed. Please check the logs.",
"Parsing subtitles...": "Parsing subtitles...",
"Analyzing subtitles with model...": "Waiting for the model to analyze subtitles...",
"Subtitle file does not exist": "Subtitle file does not exist",
"Subtitle file is empty or unreadable": "Subtitle file is empty or unreadable",
"Generating narration copy...": "Generating narration copy...",
"Generated narration copy is empty": "The generated narration copy is empty",
"Please generate and review narration copy first": "Please generate and review the narration copy first",
"Matching narration copy to footage...": "Matching narration copy to footage and timestamps...",
"Waiting for model stream...": "Waiting for model stream...",
"Streaming unavailable fallback waiting...": "Streaming is unavailable for this request. Waiting for the full response...",
"LLM stream window title": "Model reasoning / output stream",
"Model reasoning stream": "[Model reasoning]",
"Model output preview": "[Model output preview]",
"Repairing narration script...": "Repairing narration script...",
"Generated narration JSON parse failed": "The generated narration format is invalid and could not be parsed as JSON",
"Generated narration missing items field": "The generated narration is missing the required 'items' field",
"Generated narration validation failed": "The generated narration script failed validation",
"Preparing output...": "Preparing output..."
}
}