mirror of
https://github.com/linyqh/NarratoAI.git
synced 2026-06-29 18:52:07 +00:00
- 新增竖屏/横屏字幕安全区预览背景图,支持切换预览比例 - 将项目版本从0.8.1升级至0.8.2 - 扩展字体搜索候选列表,新增SourceHanSerifSC-SemiBold.otf和LXGWWenKaiScreen.ttf两款字体 - 修改默认字幕字体为SourceHanSansCN-Regular.otf,替换原Microsoft YaHei默认值 - 新增内置字体检测逻辑,检测到resource/fonts目录有有效字体时跳过下载 - 更新中英文多语言文案,优化字幕位置提示文本 - 重构字幕设置面板,合并位置控制到预览区域并精简标签页 - 调整字体大小滑块范围从20-100扩展至20-160,新增数值边界校验
707 lines
50 KiB
JSON
707 lines
50 KiB
JSON
{
|
||
"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..."
|
||
}
|
||
}
|