Files
fspecii 8433349af5 Add AI Enhance toggle for better genre accuracy
When enabled, uses the LLM to enrich genre/style tags into detailed
music descriptions and generate proper BPM, key, and time signature
metadata (CoT features). Fixes genre tags like "pop, rock" producing
ballad-like output by matching Gradio UI default behavior.

- Add enhance toggle in Style of Music card header
- Gate CoT metas/caption/language by enhance OR thinking flag
- Remove unsupported --lm-backend/--lm-model from Python fallback
- Add i18n translations (en/zh/ja/ko) with tooltip
2026-02-10 13:24:36 +02:00

2398 lines
88 KiB
TypeScript
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.
export type Language = 'en' | 'zh' | 'ja' | 'ko';
export const translations = {
en: {
// Navigation
create: 'Create',
library: 'Library',
search: 'Search',
training: 'Training',
news: 'News',
// Theme
lightMode: 'Light Mode',
darkMode: 'Dark Mode',
// Auth
signIn: 'Sign In',
signOut: 'Sign Out',
settings: 'Settings',
// Username Modal
welcomeTitle: 'Welcome to ACE-Step UI',
welcomeSubtitle: 'Enter your name to get started creating AI music',
yourName: 'Your Name',
enterYourName: 'Enter your name',
getStarted: 'Get Started',
gettingStarted: 'Getting Started...',
yourMusicYourWay: 'Your music, your way. Create unlimited AI music for free.',
usernameMinLength: 'Username must be at least 2 characters',
usernameInvalidChars: 'Username can only contain letters, numbers, underscores, and dashes',
failedToSetUsername: 'Failed to set username',
// Toasts
songNotAvailable: 'This song is no longer available.',
unableToPlay: 'Unable to play this song.',
generationTimedOut: 'Generation timed out',
generationFailed: 'Generation failed. Please try again.',
playlistCreated: 'Playlist created successfully!',
failedToCreatePlaylist: 'Failed to create playlist',
songAddedToPlaylist: 'Song added to playlist',
failedToAddSong: 'Failed to add song to playlist',
songDeleted: 'Song deleted successfully',
failedToDeleteSong: 'Failed to delete song',
// Sidebar
aceStepUI: 'ACE-Step UI',
collapseSidebar: 'Collapse Sidebar',
expandSidebar: 'Expand Sidebar',
// Common
cancel: 'Cancel',
save: 'Save',
delete: 'Delete',
edit: 'Edit',
share: 'Share',
download: 'Download',
play: 'Play',
pause: 'Pause',
normalSpeed: 'Normal',
next: 'Next',
previous: 'Previous',
// Placeholders
searchPlaceholder: 'Search...',
// Settings
language: 'Language',
english: 'English',
chinese: 'Chinese',
japaneseLanguage: 'Japanese',
koreanLanguage: 'Korean',
appearance: 'Appearance',
profile: 'Profile',
viewProfile: 'View Profile',
editProfile: 'Edit Profile',
account: 'Account',
username: 'Username',
memberSince: 'Member since',
about: 'About',
version: 'Version',
localAIMusicGenerator: 'Local AI Music Generator',
poweredBy: 'Powered by ACE-Step 1.5. Open source and free to use.',
createdBy: 'Created by Ambsd',
localizedBy: 'Localization & Training by bdsqlsz',
follow: 'Follow',
done: 'Done',
light: 'Light',
dark: 'Dark',
// Mobile
createSong: 'Create Song',
viewList: 'View List',
// CreatePanel - Modes
simple: 'Simple',
custom: 'Custom',
// CreatePanel - Sections
audio: 'AUDIO',
lyrics: 'LYRICS',
styleOfMusic: 'STYLE OF MUSIC',
title: 'Title',
musicParameters: 'Music Parameters',
advancedSettings: 'Advanced Settings',
// CreatePanel - LoRA
loraPath: 'LoRA Path',
loraPathPlaceholder: 'Enter LoRA model path...',
browseFiles: 'Browse files',
loraLoaded: 'LoRA Loaded',
loraUnloaded: 'LoRA Unloaded',
loraLoad: 'Load',
loraUnload: 'Unload',
loraScale: 'LoRA Scale',
loraScaleDescription: 'Adjust the influence strength of the LoRA model',
// CreatePanel - Audio
reference: 'Reference',
cover: 'Cover',
fromLibrary: 'From library',
upload: 'Upload',
// CreatePanel - Lyrics
lyricsPlaceholder: 'Your lyrics here...',
leaveLyricsEmpty: 'Leave empty for instrumental or toggle below',
vocal: 'Vocal',
instrumental: 'Instrumental',
vocalLanguage: 'Vocal Language',
autoInstrumental: 'Auto / Instrumental',
vocalArabic: 'Arabic',
vocalAzerbaijani: 'Azerbaijani',
vocalBulgarian: 'Bulgarian',
vocalBengali: 'Bengali',
vocalCatalan: 'Catalan',
vocalCzech: 'Czech',
vocalDanish: 'Danish',
vocalGerman: 'German',
vocalGreek: 'Greek',
vocalEnglish: 'English',
vocalSpanish: 'Spanish',
vocalPersian: 'Persian',
vocalFinnish: 'Finnish',
vocalFrench: 'French',
vocalHebrew: 'Hebrew',
vocalHindi: 'Hindi',
vocalCroatian: 'Croatian',
vocalHaitianCreole: 'Haitian Creole',
vocalHungarian: 'Hungarian',
vocalIndonesian: 'Indonesian',
vocalIcelandic: 'Icelandic',
vocalItalian: 'Italian',
vocalJapanese: 'Japanese',
vocalKorean: 'Korean',
vocalLatin: 'Latin',
vocalLithuanian: 'Lithuanian',
vocalMalay: 'Malay',
vocalNepali: 'Nepali',
vocalDutch: 'Dutch',
vocalNorwegian: 'Norwegian',
vocalPunjabi: 'Punjabi',
vocalPolish: 'Polish',
vocalPortuguese: 'Portuguese',
vocalRomanian: 'Romanian',
vocalRussian: 'Russian',
vocalSanskrit: 'Sanskrit',
vocalSlovak: 'Slovak',
vocalSerbian: 'Serbian',
vocalSwedish: 'Swedish',
vocalSwahili: 'Swahili',
vocalTamil: 'Tamil',
vocalTelugu: 'Telugu',
vocalThai: 'Thai',
vocalTagalog: 'Tagalog',
vocalTurkish: 'Turkish',
vocalUkrainian: 'Ukrainian',
vocalUrdu: 'Urdu',
vocalVietnamese: 'Vietnamese',
vocalCantonese: 'Cantonese',
vocalChineseMandarin: 'Chinese (Mandarin)',
// CreatePanel - Style
stylePlaceholder: 'e.g. upbeat pop rock, emotional ballad, 90s hip hop',
genreMoodInstruments: 'Genre, mood, instruments, vibe',
refreshGenres: 'Refresh genre suggestions',
mainGenre: 'Main Genre',
subGenre: 'Sub Genre',
nameSong: 'Name your song',
// CreatePanel - Parameters
bpm: 'BPM',
auto: 'Auto',
duration: 'Duration',
seconds: 's',
keyScale: 'Key & Scale',
timeSignature: 'Time Signature',
// CreatePanel - Advanced
randomSeed: 'Random Seed',
thinking: 'Thinking',
audioFormat: 'Audio Format',
inferenceSteps: 'Inference Steps',
guidanceScale: 'Guidance Scale',
inferMethod: 'Inference Method',
shift: 'Shift',
timestepShiftForBase: 'Timestep shift for base models (not effective for turbo)',
expertControls: 'EXPERT CONTROLS',
lmParameters: 'LM Parameters',
controlLyricGeneration: 'Control lyric generation + creativity',
transform: 'TRANSFORM',
controlSourceAudio: 'Control how much the model follows the source audio',
audioCodes: 'Audio Codes',
optionalAudioCodes: 'Optional audio codes payload',
taskType: 'Task Type',
textToMusic: 'Text → Music',
audioCoverStrength: 'Audio Cover Strength',
repaintingStart: 'Repainting Start',
repaintingEnd: 'Repainting End',
instruction: 'Instruction',
lmTemperature: 'LM Temperature',
higherMoreRandom: 'Higher = more random (0-2)',
lmCfgScale: 'LM CFG Scale',
noCfgScale: '1.0 = no CFG (1-3)',
topK: 'Top-K',
topP: 'Top-P',
lmNegativePrompt: 'LM Negative Prompt',
noUserInput: 'NO USER INPUT',
thingsToAvoid: 'Things to avoid...',
useWhenCfgScaleGreater: 'Use when LM CFG Scale > 1.0',
lmTopK: 'LM Top-K',
lmTopP: 'LM Top-P',
// Guidance section
guidance: 'GUIDANCE',
advancedCfgScheduling: 'Advanced CFG scheduling controls.',
cfgIntervalStart: 'CFG Interval Start',
cfgIntervalEnd: 'CFG Interval End',
customTimesteps: 'Custom Timesteps',
timestepsPlaceholder: 'e.g. 1,3,5,7',
scoreScale: 'Score Scale',
lmBatchChunkSize: 'LM Batch Chunk Size',
trackName: 'Track Name',
optionalTrackName: 'Optional track name',
completeTrackClasses: 'Complete Track Classes',
trackClassesPlaceholder: 'class-a, class-b',
useAdg: 'Use ADG',
allowLmBatch: 'Allow LM Batch',
useCotMetas: 'Use CoT Metas',
useCotCaption: 'Use CoT Caption',
useCotLanguage: 'Use CoT Language',
autogen: 'Autogen',
constrainedDecodingDebug: 'Constrained Decoding Debug',
formatCaption: 'Format Caption',
getScores: 'Get Scores',
getLrcLyrics: 'Get LRC (Lyrics)',
batchSize: 'Batch Size (Variations)',
variations: 'Variations',
bulkGenerate: 'Bulk Generate',
job: 'job',
jobs: 'jobs',
queueMultipleJobs: 'Queue multiple independent generation jobs with same settings',
numberOfVariations: 'Number of song variations to generate',
moreStepsBetterQuality: 'More steps = better quality, slower (8 recommended for turbo)',
howCloselyFollowPrompt: 'How closely to follow the prompt',
seed: 'Seed',
randomSeedRecommended: 'Randomized every run (recommended)',
fixedSeedReproducible: 'Fixed seed for reproducible results',
enterFixedSeed: 'Enter fixed seed',
enhance: 'AI Enhance',
enhanceHint: 'better genre accuracy, slightly slower',
enhanceTooltip: 'Uses the AI language model to enrich your genre/style tags into a detailed music description and generate proper BPM, key, and time signature. Improves genre accuracy but adds 10-20s to generation time. No extra VRAM needed.',
thinkingCot: 'Thinking (CoT)',
mp3Smaller: 'MP3 (smaller)',
flacLossless: 'FLAC (lossless)',
odeDeterministic: 'ODE (deterministic)',
sdeStochastic: 'SDE (stochastic)',
min: 'min',
// CreatePanel - Drag & Drop
dropToUseAudio: 'Drop to use audio',
dropToUpload: 'Drop to upload',
usingAsReference: 'Using as Reference',
usingAsCover: 'Using as Cover',
uploadingAsReference: 'Uploading as Reference',
uploadingAsCover: 'Uploading as Cover',
// CreatePanel - Vocal Gender
vocalGender: 'Vocal Gender',
male: 'Male',
female: 'Female',
// CreatePanel - LM Backend & Model
lmBackendLabel: 'LM Backend',
lmBackendPt: 'PT (~1.6 GB VRAM)',
lmBackendVllm: 'VLLM (~9.2 GB VRAM)',
lmBackendHint: 'PT uses less VRAM, VLLM may be faster on powerful GPUs',
lmModelLabel: 'LM Model',
lmModel06B: '0.6B (Lightest, ~0.5 GB VRAM)',
lmModel17B: '1.7B (Balanced, ~1.5 GB VRAM)',
lmModel4B: '4B (Best quality, ~4 GB VRAM)',
lmModelHint: 'Controls the LLM used for lyrics/style enhancement. Auto-downloads if not present.',
// CreatePanel - Transcription
transcribing: 'Transcribing...',
transcribingWithWhisper: 'Transcribing with Whisper…',
// CreatePanel - Library Tabs
uploaded: 'Uploaded',
createdTab: 'Created',
useTrack: 'Use',
noCreatedSongsYet: 'No created songs yet',
generateSongsToReuse: 'Generate songs to reuse them as cover or reference',
// CreatePanel - Actions
generate: 'Generate',
generating: 'Generating...',
createButton: 'Create',
formatLyrics: 'Format Lyrics',
formatting: 'Formatting...',
clearAll: 'Clear All',
// Simple Mode
describeYourSong: 'DESCRIBE YOUR SONG',
songDescriptionPlaceholder: 'A happy pop song about summer adventures with friends...',
quickSettings: 'QUICK SETTINGS',
key: 'Key',
time: 'Time',
// CreatePanel - Errors
loginToGenerate: 'Please login to generate music',
uploadFailed: 'Upload failed',
formatFailed: 'Format failed',
formatFailedDetail: 'Format failed. Make sure the LLM is initialized.',
formatFailedLlmUnavailable: 'Format failed. The LLM may not be available.',
deleteSongConfirm: 'Are you sure you want to delete "{title}"? This action cannot be undone.',
profileUpdateFailed: 'Failed to update profile',
ffmpegLoadFailed: 'Failed to load video encoder. Please refresh and try again.',
videoRenderFailed: 'Video rendering failed. Please try again.',
// SongList / Filters
searchYourSongs: 'Search your songs...',
filters: 'Filters',
refineBy: 'REFINE BY',
liked: 'Liked',
public: 'Public',
private: 'Private',
generatingStatus: 'Generating',
selectSongToView: 'Select a song to view details',
noSongsMatchFilters: 'No songs match your filters.',
clearFilters: 'Clear filters',
// RightSidebar - Song Details
songDetails: 'Song Details',
created: 'Created',
styleTags: 'STYLE & TAGS',
lyricsSection: 'LYRICS',
copyLyrics: 'Copy',
// Languages
japanese: 'Japanese',
spanish: 'Spanish',
german: 'German',
french: 'French',
portuguese: 'Portuguese',
russian: 'Russian',
italian: 'Italian',
dutch: 'Dutch',
polish: 'Polish',
turkish: 'Turkish',
vietnamese: 'Vietnamese',
czech: 'Czech',
persian: 'Persian',
arabic: 'Arabic',
korean: 'Korean',
thai: 'Thai',
hindi: 'Hindi',
indonesian: 'Indonesian',
ukrainian: 'Ukrainian',
hungarian: 'Hungarian',
swedish: 'Swedish',
romanian: 'Romanian',
greek: 'Greek',
// Task Types
audio2audio: 'Audio → Audio',
coverTask: 'Cover',
repaintTask: 'Repaint',
// Search Page
searchSongsPlaceholder: 'Search for songs, playlists, creators, or genres',
songsMatching: 'Songs matching',
featuredSongs: 'Featured Songs',
noSongsFound: 'No songs found matching',
creatorsMatching: 'Creators matching',
featuredCreators: 'Featured Creators',
noCreatorsFound: 'No creators found matching',
noCreatorsYet: 'No creators yet. Be the first to share your music!',
playlistsMatching: 'Playlists matching',
featuredPlaylists: 'Featured Playlists',
noPlaylistsFound: 'No playlists found matching',
noPlaylistsYet: 'No public playlists yet. Create one and share your favorites!',
genres: 'Genres',
songs: 'songs',
// Library View
yourLibrary: 'Your Library',
newPlaylist: 'New Playlist',
likedSongs: 'Liked Songs',
playlists: 'Playlists',
playlist: 'Playlist',
byYou: 'By You',
// User Profile
back: 'Back',
loadingProfile: 'Loading profile...',
userNotFound: 'User not found',
goBack: 'Go Back',
likes: 'Likes',
plays: 'Plays',
recent: 'Recent',
top: 'Top',
noPublicSongsYet: 'No public songs yet',
seeMore: 'See More',
joined: 'Joined',
supportingSince: 'Supporting since',
avatarImage: 'Avatar Image',
uploadAvatar: 'Upload Avatar',
avatarFormats: 'JPG, PNG, WebP, GIF • Max 5MB',
bannerImage: 'Banner Image',
clickToUploadBanner: 'Click to upload banner',
bannerFormats: 'Recommended: 1500x500px • JPG, PNG, WebP, GIF • Max 5MB',
bio: 'Bio',
bioPlaceholder: 'Tell us about yourself...',
uploadingAvatar: 'Uploading Avatar...',
uploadingBanner: 'Uploading Banner...',
saving: 'Saving...',
saveChanges: 'Save Changes',
// Playlist Modals
createPlaylist: 'Create Playlist',
playlistName: 'Name',
playlistNamePlaceholder: 'My Awesome Playlist',
playlistDescription: 'Description',
descriptionPlaceholder: 'Vibes for coding...',
addToPlaylist: 'Add to Playlist',
createNewPlaylist: 'Create New Playlist',
noExistingPlaylists: 'No existing playlists.',
// Edit Profile Modal (Settings)
usernameLabel: 'Username',
usernamePlaceholder: 'username',
usernameMinLengthError: 'Username must be at least 2 characters',
usernameTakenError: 'Username is already taken',
usernameUpdateFailedError: 'Failed to update username',
usernameRequirements: 'Letters, numbers, underscores, and hyphens only',
// Song Details (RightSidebar)
more: 'more',
copy: 'Copy',
copied: 'Copied!',
copyAllTags: 'Copy all tags',
// Song Dropdown Menu
createVideo: 'Create Video',
editAudio: 'Edit Audio',
extractStems: 'Extract Stems',
reusePrompt: 'Reuse Prompt',
deleteSong: 'Delete Song',
useAsReference: 'Use as Reference',
coverSong: 'Cover Song',
confirmDeleteTitle: 'Delete Song',
confirmDeleteManyTitle: 'Delete Songs',
deleteSongsConfirm: 'Delete {count} songs? This action cannot be undone.',
songsDeletedSuccess: 'Songs deleted successfully',
songsDeletedPartial: 'Deleted {succeeded}/{total} songs',
deleteUploadConfirm: 'Delete this upload? This action cannot be undone.',
cannotBeUndone: 'This action cannot be undone.',
// Player
nowPlaying: 'Now Playing',
selectSongToPlay: 'Select a song to play',
downloadAudio: 'Download Audio',
openInEditor: 'Open in Editor',
anonymous: 'Anonymous',
// PlaylistDetail
loadingPlaylist: 'Loading playlist...',
playlistNotFound: 'Playlist not found',
deletePlaylistConfirm: 'Are you sure you want to delete this playlist?',
artist: 'Artist',
deletePlaylist: 'Delete Playlist',
dateAdded: 'Date Added',
justNow: 'Just now',
unknown: 'Unknown',
// SongProfile
loadingSong: 'Loading song...',
songNotFound: 'Song not found',
similar: 'Similar',
by: 'By',
// ShareModal
shareSong: 'Share Song',
shareOnX: 'Share on X',
shareOnFacebook: 'Share on Facebook',
shareOnWhatsApp: 'Share on WhatsApp',
shareOnTelegram: 'Share on Telegram',
shareOnReddit: 'Share on Reddit',
shareOnLinkedIn: 'Share on LinkedIn',
shareViaEmail: 'Share via Email',
copyLink: 'Copy Link',
emailSubject: 'Check out this AI song',
emailBody: 'Hey!\n\nI created this AI-generated song and thought you\'d love it:\n\n"{title}" by {creator}\n{style}\n\nListen here: {url}\n\nMade with ACE-Step UI - free and open source local AI music generation!',
// Reference Modal
referenceModalTitle: 'Reference',
coverModalTitle: 'Cover',
referenceModalDescription: 'Create songs inspired by a reference track',
coverModalDescription: 'Transform an existing track into a new version',
uploadAudio: 'Upload audio',
uploadingAudio: 'Uploading...',
audioFormats: 'MP3, WAV, FLAC',
mine: 'Mine',
loadingTracks: 'Loading tracks...',
noTracksYet: 'No tracks yet',
uploadAudioFilesAsReferences: 'Upload audio files to use them as references',
// Training Module
loraTraining: 'LoRA Training',
trainingDescription: 'Build datasets from your audio files and train custom LoRA adapters',
datasetBuilder: 'Dataset Builder',
trainLora: 'Train LoRA',
quickStart: 'Quick Start',
chooseOneOption: 'Choose one: Load existing dataset OR Scan new directory',
loadExistingDataset: 'Load Existing Dataset',
loadDataset: 'Load',
scanNewDirectory: 'Scan New Directory',
scanDataset: 'Scan',
datasetSettings: 'Dataset Settings',
datasetName: 'Dataset Name',
customActivationTag: 'Custom Activation Tag',
allInstrumental: 'All Instrumental',
tagPosition: 'Tag Position',
tagPrepend: 'Prepend (tag, caption)',
tagAppend: 'Append (caption, tag)',
tagReplace: 'Replace caption',
genreRatio: 'Genre Ratio',
genreRatioHint: '0% = all Caption, 100% = all Genre',
autoLabelWithAI: 'Auto-Label with AI',
autoLabelDescription: 'Generate metadata for audio files: Caption, BPM, Key, Time Signature',
skipMetas: 'Skip BPM/Key/Time Signature',
onlyUnlabeled: 'Only Unlabeled',
autoLabelAll: 'Auto-Label All',
filename: 'Filename',
labeled: 'Labeled',
saveDataset: 'Save Dataset',
preprocessToTensors: 'Preprocess to Tensors',
preprocessDescription: 'Converts dataset to pre-computed tensors for fast training (requires model loaded)',
preprocess: 'Preprocess',
preprocessedDataset: 'Preprocessed Dataset',
loraSettings: 'LoRA Settings',
loraRank: 'LoRA Rank',
loraAlpha: 'LoRA Alpha',
dropout: 'Dropout',
trainingParameters: 'Training Parameters',
learningRate: 'Learning Rate',
maxEpochs: 'Max Epochs',
gradientAccumulation: 'Gradient Accumulation',
saveEvery: 'Save Every',
epochs: 'epochs',
outputDirectory: 'Output Directory',
useFP8: 'Use FP8 Quantization',
fp8Description: 'Reduces VRAM usage',
startTraining: 'Start Training',
stopTraining: 'Stop Training',
trainingProgress: 'Training Progress',
trainingLog: 'Training Log',
trainingStatus: 'Training Status',
tensorboardView: 'TensorBoard View',
showTensorboard: 'Show TensorBoard',
hideTensorboard: 'Hide TensorBoard',
openInNewTab: 'Open in New Tab',
// Training Status Messages
scanning: 'Scanning...',
autoLabeling: 'Auto-labeling...',
savingDataset: 'Saving...',
preprocessing: 'Preprocessing...',
loadingDataset: 'Loading...',
startingTraining: 'Starting...',
error: 'Error',
datasetInfo: 'Dataset: {name}, Samples: {samples}, Labeled: {labeled}',
trainingStep: 'Step {step} - Loss: {loss}',
editSample: 'Edit Sample',
caption: 'Caption',
genre: 'Genre',
promptOverride: 'Prompt Override',
musicDescription: 'Music description...',
overrideGlobalRatio: 'Override global ratio for this sample',
editableUsedForTraining: 'editable, used for training',
useGlobalRatio: 'Use Global Ratio',
thisSample: 'this sample',
},
zh: {
// Navigation
create: '创作',
library: '音乐库',
search: '搜索',
training: '训练',
news: '新闻',
// Theme
lightMode: '浅色模式',
darkMode: '深色模式',
// Auth
signIn: '登录',
signOut: '退出',
settings: '设置',
// Username Modal
welcomeTitle: '欢迎使用 ACE-Step UI',
welcomeSubtitle: '输入您的名字开始创作 AI 音乐',
yourName: '您的名字',
enterYourName: '请输入您的名字',
getStarted: '开始使用',
gettingStarted: '正在启动...',
yourMusicYourWay: '您的音乐,您的方式。免费创作无限 AI 音乐。',
usernameMinLength: '用户名至少需要 2 个字符',
usernameInvalidChars: '用户名只能包含字母、数字、下划线和破折号',
failedToSetUsername: '设置用户名失败',
// Toasts
songNotAvailable: '该歌曲已不可用。',
unableToPlay: '无法播放该歌曲。',
generationTimedOut: '生成超时',
generationFailed: '生成失败,请重试。',
playlistCreated: '歌单创建成功!',
failedToCreatePlaylist: '创建歌单失败',
songAddedToPlaylist: '已添加到歌单',
failedToAddSong: '添加歌曲失败',
songDeleted: '歌曲删除成功',
failedToDeleteSong: '删除歌曲失败',
// Sidebar
aceStepUI: 'ACE-Step UI',
collapseSidebar: '收起侧边栏',
expandSidebar: '展开侧边栏',
// Common
cancel: '取消',
save: '保存',
delete: '删除',
edit: '编辑',
share: '分享',
download: '下载',
play: '播放',
pause: '暂停',
normalSpeed: '正常',
next: '下一首',
previous: '上一首',
// Placeholders
searchPlaceholder: '搜索...',
// Settings
language: '语言',
english: 'English',
chinese: '简体中文',
japaneseLanguage: '日本語',
koreanLanguage: '한국어',
appearance: '外观',
profile: '个人资料',
viewProfile: '查看个人资料',
editProfile: '编辑资料',
account: '账户',
username: '用户名',
memberSince: '加入时间',
about: '关于',
version: '版本',
localAIMusicGenerator: '本地 AI 音乐生成器',
poweredBy: '由 ACE-Step 1.5 驱动。开源免费使用。',
createdBy: '开发者 Ambsd',
localizedBy: '本地化翻译 & 训练 青龙圣者',
follow: '关注',
done: '完成',
light: '浅色',
dark: '深色',
// Mobile
createSong: '创作歌曲',
viewList: '查看列表',
// CreatePanel - Modes
simple: '简单',
custom: '自定义',
// CreatePanel - Sections
audio: '音频',
lyrics: '歌词',
styleOfMusic: '音乐风格',
title: '标题',
musicParameters: '音乐参数',
advancedSettings: '高级设置',
// CreatePanel - LoRA
loraPath: 'LoRA 路径',
loraPathPlaceholder: '输入 LoRA 模型路径...',
browseFiles: '浏览文件',
loraLoaded: 'LoRA 已加载',
loraUnloaded: 'LoRA 未加载',
loraLoad: '加载',
loraUnload: '卸载',
loraScale: 'LoRA 强度',
loraScaleDescription: '调整 LoRA 模型的影响强度',
// CreatePanel - Audio
reference: '参考',
cover: '翻唱',
fromLibrary: '从库中选择',
upload: '上传',
// CreatePanel - Lyrics
lyricsPlaceholder: '在此输入歌词...',
leaveLyricsEmpty: '留空表示纯音乐,或使用下方开关',
vocal: '人声',
instrumental: '纯音乐',
vocalLanguage: '人声语言',
autoInstrumental: '自动 / 纯音乐',
vocalArabic: '阿拉伯语',
vocalAzerbaijani: '阿塞拜疆语',
vocalBulgarian: '保加利亚语',
vocalBengali: '孟加拉语',
vocalCatalan: '加泰罗尼亚语',
vocalCzech: '捷克语',
vocalDanish: '丹麦语',
vocalGerman: '德语',
vocalGreek: '希腊语',
vocalEnglish: '英语',
vocalSpanish: '西班牙语',
vocalPersian: '波斯语',
vocalFinnish: '芬兰语',
vocalFrench: '法语',
vocalHebrew: '希伯来语',
vocalHindi: '印地语',
vocalCroatian: '克罗地亚语',
vocalHaitianCreole: '海地克里奥尔语',
vocalHungarian: '匈牙利语',
vocalIndonesian: '印尼语',
vocalIcelandic: '冰岛语',
vocalItalian: '意大利语',
vocalJapanese: '日语',
vocalKorean: '韩语',
vocalLatin: '拉丁语',
vocalLithuanian: '立陶宛语',
vocalMalay: '马来语',
vocalNepali: '尼泊尔语',
vocalDutch: '荷兰语',
vocalNorwegian: '挪威语',
vocalPunjabi: '旁遮普语',
vocalPolish: '波兰语',
vocalPortuguese: '葡萄牙语',
vocalRomanian: '罗马尼亚语',
vocalRussian: '俄语',
vocalSanskrit: '梵语',
vocalSlovak: '斯洛伐克语',
vocalSerbian: '塞尔维亚语',
vocalSwedish: '瑞典语',
vocalSwahili: '斯瓦希里语',
vocalTamil: '泰米尔语',
vocalTelugu: '泰卢固语',
vocalThai: '泰语',
vocalTagalog: '他加禄语',
vocalTurkish: '土耳其语',
vocalUkrainian: '乌克兰语',
vocalUrdu: '乌尔都语',
vocalVietnamese: '越南语',
vocalCantonese: '粤语',
vocalChineseMandarin: '中文(普通话)',
// CreatePanel - Style
stylePlaceholder: '例如:欢快流行摇滚、抒情民谣、90年代嘻哈',
genreMoodInstruments: '曲风、情绪、乐器、氛围',
refreshGenres: '刷新风格建议',
mainGenre: '大类风格',
subGenre: '小类风格',
nameSong: '为歌曲命名',
// CreatePanel - Parameters
bpm: '曲速*(BPM)',
auto: '自动',
duration: '时长',
seconds: '秒',
keyScale: '调式',
timeSignature: '拍号',
// CreatePanel - Advanced
randomSeed: '随机种子',
thinking: '思考模式',
audioFormat: '音频格式',
inferenceSteps: '推理步数',
guidanceScale: '引导强度(cfg)',
inferMethod: '推理方法',
shift: '偏移(shift)',
timestepShiftForBase: '基础模型的时间步偏移(turbo 模式无效)',
expertControls: '专家控制',
lmParameters: 'LM 参数',
controlLyricGeneration: '控制歌词生成和创造力',
transform: '音频转换',
controlSourceAudio: '控制模型遵循源音频的程度',
audioCodes: '音频编码',
optionalAudioCodes: '可选的音频编码载荷',
taskType: '任务类型',
textToMusic: '文本 → 音乐',
audioCoverStrength: '音频翻唱强度',
repaintingStart: '重绘开始',
repaintingEnd: '重绘结束',
instruction: '指令',
lmTemperature: 'LM 温度',
higherMoreRandom: '值越高越随机(0-2',
lmCfgScale: 'LM CFG 强度',
noCfgScale: '1.0 = 无 CFG1-3',
topK: 'Top-K',
topP: 'Top-P',
lmNegativePrompt: 'LM 负面提示词',
noUserInput: '无用户输入',
thingsToAvoid: '要避免的内容...',
useWhenCfgScaleGreater: '当 LM CFG 强度 > 1.0 时使用',
lmTopK: 'LM Top-K',
lmTopP: 'LM Top-P',
// Guidance section
guidance: '引导控制(guidance)',
advancedCfgScheduling: '高级 CFG 调度控制。',
cfgIntervalStart: 'CFG 区间开始',
cfgIntervalEnd: 'CFG 区间结束',
customTimesteps: '自定义时间步',
timestepsPlaceholder: '例如:1,3,5,7',
scoreScale: '分数缩放',
lmBatchChunkSize: 'LM 批次块大小',
trackName: '音轨名称',
optionalTrackName: '可选的音轨名称',
completeTrackClasses: '完整音轨类别',
trackClassesPlaceholder: '类别-a, 类别-b',
useAdg: '使用 ADG',
allowLmBatch: '允许 LM 批处理',
useCotMetas: '使用 CoT 元数据',
useCotCaption: '使用 CoT 字幕',
useCotLanguage: '使用 CoT 语言',
autogen: '自动生成',
constrainedDecodingDebug: '约束解码调试',
formatCaption: '格式化字幕',
getScores: '获取分数',
getLrcLyrics: '获取 LRC(歌词)',
batchSize: '批量大小(变体数)',
variations: '变体',
bulkGenerate: '批量生成',
job: '任务',
jobs: '任务',
queueMultipleJobs: '使用相同设置排队多个独立生成任务',
numberOfVariations: '要生成的歌曲变体数量',
moreStepsBetterQuality: '步数越多质量越好,速度越慢(turbo 推荐 8)',
howCloselyFollowPrompt: '多严格遵循提示词',
seed: '种子',
randomSeedRecommended: '每次运行随机(推荐)',
fixedSeedReproducible: '固定种子以获得可重现结果',
enterFixedSeed: '输入固定种子',
enhance: 'AI 增强',
enhanceHint: '更准确的风格,稍慢',
enhanceTooltip: '使用AI语言模型将风格标签丰富为详细的音乐描述,并生成准确的BPM、调性和拍号。提高风格准确度,但增加10-20秒生成时间。无需额外显存。',
thinkingCot: '思考模式(CoT',
mp3Smaller: 'MP3(较小)',
flacLossless: 'FLAC(无损)',
odeDeterministic: 'ODE(确定性)',
sdeStochastic: 'SDE(随机性)',
min: '分钟',
// CreatePanel - Drag & Drop
dropToUseAudio: '拖放以使用音频',
dropToUpload: '拖放以上传',
usingAsReference: '用作参考',
usingAsCover: '用作翻唱',
uploadingAsReference: '上传为参考',
uploadingAsCover: '上传为翻唱',
// CreatePanel - Vocal Gender
vocalGender: '人声性别',
male: '男声',
female: '女声',
// CreatePanel - LM Backend & Model
lmBackendLabel: 'LM 后端',
lmBackendPt: 'PT~1.6 GB 显存)',
lmBackendVllm: 'VLLM~9.2 GB 显存)',
lmBackendHint: 'PT 显存占用更少,VLLM 在高性能 GPU 上可能更快',
lmModelLabel: 'LM 模型',
lmModel06B: '0.6B(最轻量,~0.5 GB 显存)',
lmModel17B: '1.7B(均衡,~1.5 GB 显存)',
lmModel4B: '4B(最佳质量,~4 GB 显存)',
lmModelHint: '控制用于歌词/风格增强的 LLM。如不存在将自动下载。',
// CreatePanel - Transcription
transcribing: '转录中...',
transcribingWithWhisper: '正在使用 Whisper 转录…',
// CreatePanel - Library Tabs
uploaded: '已上传',
createdTab: '已创建',
useTrack: '使用',
noCreatedSongsYet: '暂无已创建歌曲',
generateSongsToReuse: '生成歌曲后可作为翻唱或参考使用',
// CreatePanel - Actions
generate: '生成',
generating: '生成中...',
createButton: '创建',
formatLyrics: '格式化歌词',
formatting: '格式化中...',
clearAll: '清空全部',
// Simple Mode
describeYourSong: '描述你的歌曲',
songDescriptionPlaceholder: '一首关于夏日和朋友冒险的快乐流行歌曲...',
quickSettings: '快速设置',
key: '调式',
time: '拍号',
// CreatePanel - Errors
loginToGenerate: '请登录以生成音乐',
uploadFailed: '上传失败',
formatFailed: '格式化失败',
formatFailedDetail: '格式化失败。请确保 LLM 已初始化。',
formatFailedLlmUnavailable: '格式化失败。LLM 可能不可用。',
deleteSongConfirm: '确定要删除"{title}"吗?此操作无法撤销。',
profileUpdateFailed: '更新个人资料失败',
ffmpegLoadFailed: '加载视频编码器失败。请刷新后重试。',
videoRenderFailed: '视频渲染失败。请重试。',
// SongList / Filters
searchYourSongs: '搜索你的歌曲...',
filters: '筛选',
refineBy: '筛选条件',
liked: '已喜欢',
public: '公开',
private: '私密',
generatingStatus: '生成中',
selectSongToView: '选择一首歌曲查看详情',
noSongsMatchFilters: '没有歌曲符合你的筛选条件。',
clearFilters: '清除筛选',
// RightSidebar - Song Details
songDetails: '歌曲详情',
created: '创建于',
styleTags: '风格与标签',
lyricsSection: '歌词',
copyLyrics: '复制',
// Languages
japanese: '日语',
spanish: '西班牙语',
german: '德语',
french: '法语',
portuguese: '葡萄牙语',
russian: '俄语',
italian: '意大利语',
dutch: '荷兰语',
polish: '波兰语',
turkish: '土耳其语',
vietnamese: '越南语',
czech: '捷克语',
persian: '波斯语',
arabic: '阿拉伯语',
korean: '韩语',
thai: '泰语',
hindi: '印地语',
indonesian: '印尼语',
ukrainian: '乌克兰语',
hungarian: '匈牙利语',
swedish: '瑞典语',
romanian: '罗马尼亚语',
greek: '希腊语',
// Task Types
audio2audio: '音频 → 音频',
coverTask: '翻唱',
repaintTask: '重绘',
// Search Page
searchSongsPlaceholder: '搜索歌曲、播放列表、创作者或风格',
songsMatching: '匹配的歌曲',
featuredSongs: '精选歌曲',
noSongsFound: '未找到匹配的歌曲',
creatorsMatching: '匹配的创作者',
featuredCreators: '精选创作者',
noCreatorsFound: '未找到匹配的创作者',
noCreatorsYet: '暂无创作者。成为第一个分享音乐的人!',
playlistsMatching: '匹配的播放列表',
featuredPlaylists: '精选播放列表',
noPlaylistsFound: '未找到匹配的播放列表',
noPlaylistsYet: '暂无公开播放列表。创建一个并分享你的最爱!',
genres: '风格',
songs: '首歌曲',
// Library View
yourLibrary: '我的音乐库',
newPlaylist: '新建播放列表',
likedSongs: '喜欢的歌曲',
playlists: '播放列表',
playlist: '播放列表',
byYou: '由你创建',
// User Profile
back: '返回',
loadingProfile: '加载中...',
userNotFound: '用户不存在',
goBack: '返回',
likes: '喜欢',
plays: '播放',
recent: '最新',
top: '热门',
noPublicSongsYet: '暂无公开歌曲',
seeMore: '查看更多',
joined: '加入于',
supportingSince: '支持者自',
avatarImage: '头像',
uploadAvatar: '上传头像',
avatarFormats: 'JPG、PNG、WebP、GIF • 最大 5MB',
bannerImage: '横幅图片',
clickToUploadBanner: '点击上传横幅',
bannerFormats: '推荐尺寸:1500x500px • JPG、PNG、WebP、GIF • 最大 5MB',
bio: '个人简介',
bioPlaceholder: '介绍一下你自己...',
uploadingAvatar: '上传头像中...',
uploadingBanner: '上传横幅中...',
saving: '保存中...',
saveChanges: '保存更改',
// Playlist Modals
createPlaylist: '创建播放列表',
playlistName: '名称',
playlistNamePlaceholder: '我的超棒播放列表',
playlistDescription: '描述',
descriptionPlaceholder: '编程时的氛围音乐...',
addToPlaylist: '添加到播放列表',
createNewPlaylist: '创建新播放列表',
noExistingPlaylists: '暂无播放列表。',
// Edit Profile Modal (Settings)
usernameLabel: '用户名',
usernamePlaceholder: '用户名',
usernameMinLengthError: '用户名至少需要 2 个字符',
usernameTakenError: '用户名已被占用',
usernameUpdateFailedError: '更新用户名失败',
usernameRequirements: '仅允许字母、数字、下划线和短横线',
// Song Details (RightSidebar)
more: '更多',
copy: '复制',
copied: '已复制!',
copyAllTags: '复制所有标签',
// Song Dropdown Menu
createVideo: '创建视频',
editAudio: '编辑音频',
extractStems: '提取音轨',
reusePrompt: '重用提示词',
deleteSong: '删除歌曲',
useAsReference: '用作参考',
coverSong: '翻唱歌曲',
confirmDeleteTitle: '删除歌曲',
confirmDeleteManyTitle: '删除歌曲',
deleteSongsConfirm: '确定要删除 {count} 首歌曲吗?此操作无法撤销。',
songsDeletedSuccess: '歌曲删除成功',
songsDeletedPartial: '已删除 {succeeded}/{total} 首歌曲',
deleteUploadConfirm: '确定要删除此上传文件吗?此操作无法撤销。',
cannotBeUndone: '此操作无法撤销。',
// Player
nowPlaying: '正在播放',
selectSongToPlay: '选择一首歌曲播放',
downloadAudio: '下载音频',
openInEditor: '在编辑器中打开',
anonymous: '匿名用户',
// PlaylistDetail
loadingPlaylist: '加载播放列表中...',
playlistNotFound: '播放列表未找到',
deletePlaylistConfirm: '确定要删除这个播放列表吗?',
artist: '艺术家',
deletePlaylist: '删除播放列表',
dateAdded: '添加日期',
justNow: '刚刚',
unknown: '未知',
// SongProfile
loadingSong: '加载歌曲中...',
songNotFound: '歌曲未找到',
similar: '相似',
by: '由',
// ShareModal
shareSong: '分享歌曲',
shareOnX: '分享到 X',
shareOnFacebook: '分享到 Facebook',
shareOnWhatsApp: '分享到 WhatsApp',
shareOnTelegram: '分享到 Telegram',
shareOnReddit: '分享到 Reddit',
shareOnLinkedIn: '分享到 LinkedIn',
shareViaEmail: '通过邮件分享',
copyLink: '复制链接',
emailSubject: '来听听这首AI歌曲',
emailBody: '嘿!\n\n我创作了这首AI生成的歌曲,觉得你会喜欢:\n\n《{title}》- {creator}\n{style}\n\n点击收听:{url}\n\n使用 ACE-Step UI 制作 - 免费开源的本地AI音乐生成工具!',
// Reference Modal
referenceModalTitle: '参考音频',
coverModalTitle: '翻唱音频',
referenceModalDescription: '基于参考音轨创作歌曲',
coverModalDescription: '将现有音轨转换为新版本',
uploadAudio: '上传音频',
uploadingAudio: '上传中...',
audioFormats: 'MP3、WAV、FLAC',
mine: '我的',
loadingTracks: '加载中...',
noTracksYet: '暂无音轨',
uploadAudioFilesAsReferences: '上传音频文件作为参考',
// Training Module
loraTraining: 'LoRA 训练',
trainingDescription: '从音频文件构建数据集并训练自定义 LoRA 适配器',
datasetBuilder: '数据集构建器',
trainLora: '训练 LoRA',
quickStart: '快速开始',
chooseOneOption: '选择一项:加载现有数据集 或 扫描新目录',
loadExistingDataset: '加载现有数据集',
loadDataset: '加载',
scanNewDirectory: '扫描新目录',
scanDataset: '扫描',
datasetSettings: '数据集设置',
datasetName: '数据集名称',
customActivationTag: '自定义激活标签',
allInstrumental: '全部纯音乐',
tagPosition: '标签位置',
tagPrepend: '前置(标签,描述)',
tagAppend: '后置(描述,标签)',
tagReplace: '替换描述',
genreRatio: '风格比例',
genreRatioHint: '0% = 全部描述,100% = 全部风格',
autoLabelWithAI: 'AI 自动标注',
autoLabelDescription: '为音频文件生成元数据:描述、BPM、调式、拍号',
skipMetas: '跳过 BPM/调式/拍号',
onlyUnlabeled: '仅未标注',
autoLabelAll: '自动标注全部',
filename: '文件名',
labeled: '已标注',
saveDataset: '保存数据集',
preprocessToTensors: '预处理为张量',
preprocessDescription: '将数据集转换为预计算张量以加速训练(需要加载模型)',
preprocess: '预处理',
preprocessedDataset: '预处理数据集',
loraSettings: 'LoRA 设置',
loraRank: 'LoRA Rank',
loraAlpha: 'LoRA Alpha',
dropout: 'Dropout',
trainingParameters: '训练参数',
learningRate: '学习率',
maxEpochs: '最大轮数',
gradientAccumulation: '梯度累积',
saveEvery: '保存间隔',
epochs: '轮',
outputDirectory: '输出目录',
useFP8: '使用 FP8 量化',
fp8Description: '减少显存占用',
startTraining: '开始训练',
stopTraining: '停止训练',
trainingProgress: '训练进度',
trainingLog: '训练日志',
trainingStatus: '训练状态',
tensorboardView: 'TensorBoard 视图',
showTensorboard: '显示 TensorBoard',
hideTensorboard: '隐藏 TensorBoard',
openInNewTab: '在新标签页打开',
// Training Status Messages
scanning: '扫描中...',
autoLabeling: '自动标注中...',
savingDataset: '保存中...',
preprocessing: '预处理中...',
loadingDataset: '加载中...',
startingTraining: '启动中...',
error: '错误',
datasetInfo: '数据集:{name},样本数:{samples},已标注:{labeled}',
trainingStep: '步骤 {step} - 损失:{loss}',
editSample: '编辑样本',
caption: '描述',
genre: '风格',
promptOverride: '提示词覆盖',
musicDescription: '音乐描述...',
overrideGlobalRatio: '覆盖此样本的全局比例',
editableUsedForTraining: '可编辑,用于训练',
useGlobalRatio: '使用全局比例',
thisSample: '此样本',
},
ja: {
// Navigation
create: '作成',
library: 'ライブラリ',
search: '検索',
training: 'トレーニング',
news: 'ニュース',
// Theme
lightMode: 'ライトモード',
darkMode: 'ダークモード',
// Auth
signIn: 'サインイン',
signOut: 'サインアウト',
settings: '設定',
// Username Modal
welcomeTitle: 'ACE-Step UIへようこそ',
welcomeSubtitle: 'AI音楽作成を始めるために名前を入力してください',
yourName: 'お名前',
enterYourName: '名前を入力',
getStarted: '始める',
gettingStarted: '開始中...',
yourMusicYourWay: 'あなたの音楽、あなたのスタイルで。無料で無制限にAI音楽を作成。',
usernameMinLength: 'ユーザー名は2文字以上である必要があります',
usernameInvalidChars: 'ユーザー名は文字、数字、アンダースコア、ハイフンのみ使用できます',
failedToSetUsername: 'ユーザー名の設定に失敗しました',
// Toasts
songNotAvailable: 'この曲は利用できません。',
unableToPlay: 'この曲を再生できません。',
generationTimedOut: '生成がタイムアウトしました',
generationFailed: '生成に失敗しました。もう一度お試しください。',
playlistCreated: 'プレイリストを作成しました!',
failedToCreatePlaylist: 'プレイリストの作成に失敗しました',
songAddedToPlaylist: 'プレイリストに追加しました',
failedToAddSong: '曲の追加に失敗しました',
songDeleted: '曲を削除しました',
failedToDeleteSong: '曲の削除に失敗しました',
// Sidebar
aceStepUI: 'ACE-Step UI',
collapseSidebar: 'サイドバーを折りたたむ',
expandSidebar: 'サイドバーを展開',
// Common
cancel: 'キャンセル',
save: '保存',
delete: '削除',
edit: '編集',
share: '共有',
download: 'ダウンロード',
play: '再生',
pause: '一時停止',
normalSpeed: '通常',
next: '次へ',
previous: '前へ',
// Placeholders
searchPlaceholder: '検索...',
// Settings
language: '言語',
english: 'English',
chinese: '简体中文',
japaneseLanguage: '日本語',
koreanLanguage: '한국어',
appearance: '外観',
profile: 'プロフィール',
viewProfile: 'プロフィールを表示',
editProfile: 'プロフィールを編集',
account: 'アカウント',
username: 'ユーザー名',
memberSince: '登録日',
about: 'について',
version: 'バージョン',
localAIMusicGenerator: 'ローカルAI音楽ジェネレーター',
poweredBy: 'ACE-Step 1.5を搭載。オープンソースで無料で使用できます。',
createdBy: '開発者 Ambsd',
localizedBy: 'ローカライゼーション&二次開発 bdsqlsz',
follow: 'フォロー',
done: '完了',
light: 'ライト',
dark: 'ダーク',
// Mobile
createSong: '曲を作成',
viewList: 'リストを表示',
// CreatePanel - Modes
simple: 'シンプル',
custom: 'カスタム',
// CreatePanel - Sections
audio: 'オーディオ',
lyrics: '歌詞',
styleOfMusic: '音楽スタイル',
title: 'タイトル',
musicParameters: '音楽パラメータ',
advancedSettings: '詳細設定',
// CreatePanel - LoRA
loraPath: 'LoRA パス',
loraPathPlaceholder: 'LoRA モデルパスを入力...',
browseFiles: 'ファイルを参照',
loraLoaded: 'LoRA 読み込み済み',
loraUnloaded: 'LoRA 未読み込み',
loraLoad: '読み込む',
loraUnload: 'アンロード',
loraScale: 'LoRA スケール',
loraScaleDescription: 'LoRA モデルの影響強度を調整',
// CreatePanel - Audio
reference: '参照',
cover: 'カバー',
fromLibrary: 'ライブラリから',
upload: 'アップロード',
// CreatePanel - Lyrics
lyricsPlaceholder: 'ここに歌詞を入力...',
leaveLyricsEmpty: 'インストゥルメンタルの場合は空のままにするか、下のトグルを使用',
vocal: 'ボーカル',
instrumental: 'インストゥルメンタル',
vocalLanguage: 'ボーカル言語',
autoInstrumental: '自動 / インストゥルメンタル',
vocalArabic: 'アラビア語',
vocalAzerbaijani: 'アゼルバイジャン語',
vocalBulgarian: 'ブルガリア語',
vocalBengali: 'ベンガル語',
vocalCatalan: 'カタルーニャ語',
vocalCzech: 'チェコ語',
vocalDanish: 'デンマーク語',
vocalGerman: 'ドイツ語',
vocalGreek: 'ギリシャ語',
vocalEnglish: '英語',
vocalSpanish: 'スペイン語',
vocalPersian: 'ペルシャ語',
vocalFinnish: 'フィンランド語',
vocalFrench: 'フランス語',
vocalHebrew: 'ヘブライ語',
vocalHindi: 'ヒンディー語',
vocalCroatian: 'クロアチア語',
vocalHaitianCreole: 'ハイチ・クレオール語',
vocalHungarian: 'ハンガリー語',
vocalIndonesian: 'インドネシア語',
vocalIcelandic: 'アイスランド語',
vocalItalian: 'イタリア語',
vocalJapanese: '日本語',
vocalKorean: '韓国語',
vocalLatin: 'ラテン語',
vocalLithuanian: 'リトアニア語',
vocalMalay: 'マレー語',
vocalNepali: 'ネパール語',
vocalDutch: 'オランダ語',
vocalNorwegian: 'ノルウェー語',
vocalPunjabi: 'パンジャーブ語',
vocalPolish: 'ポーランド語',
vocalPortuguese: 'ポルトガル語',
vocalRomanian: 'ルーマニア語',
vocalRussian: 'ロシア語',
vocalSanskrit: 'サンスクリット語',
vocalSlovak: 'スロバキア語',
vocalSerbian: 'セルビア語',
vocalSwedish: 'スウェーデン語',
vocalSwahili: 'スワヒリ語',
vocalTamil: 'タミル語',
vocalTelugu: 'テルグ語',
vocalThai: 'タイ語',
vocalTagalog: 'タガログ語',
vocalTurkish: 'トルコ語',
vocalUkrainian: 'ウクライナ語',
vocalUrdu: 'ウルドゥー語',
vocalVietnamese: 'ベトナム語',
vocalCantonese: '広東語',
vocalChineseMandarin: '中国語(標準語)',
// CreatePanel - Style
stylePlaceholder: '例:アップビートなポップロック、エモーショナルなバラード、90年代ヒップホップ',
genreMoodInstruments: 'ジャンル、ムード、楽器、雰囲気',
refreshGenres: 'ジャンル提案を更新',
mainGenre: 'メインジャンル',
subGenre: 'サブジャンル',
nameSong: '曲名を付ける',
// CreatePanel - Parameters
bpm: 'BPM',
auto: '自動',
duration: '長さ',
seconds: '秒',
keyScale: 'キーとスケール',
timeSignature: '拍子',
// CreatePanel - Advanced
randomSeed: 'ランダムシード',
thinking: '思考',
audioFormat: 'オーディオ形式',
inferenceSteps: '推論ステップ',
guidanceScale: 'ガイダンススケール',
inferMethod: '推論方法',
shift: 'シフト',
timestepShiftForBase: 'ベースモデルのタイムステップシフト(turboでは無効)',
expertControls: 'エキスパートコントロール',
lmParameters: 'LMパラメータ',
controlLyricGeneration: '歌詞生成と創造性を制御',
transform: '変換',
controlSourceAudio: 'モデルがソースオーディオに従う程度を制御',
audioCodes: 'オーディオコード',
optionalAudioCodes: 'オプションのオーディオコードペイロード',
taskType: 'タスクタイプ',
textToMusic: 'テキスト → 音楽',
audioCoverStrength: 'オーディオカバー強度',
repaintingStart: 'リペイント開始',
repaintingEnd: 'リペイント終了',
instruction: '指示',
lmTemperature: 'LM温度',
higherMoreRandom: '高いほどランダム(0-2',
lmCfgScale: 'LM CFGスケール',
noCfgScale: '1.0 = CFGなし(1-3',
topK: 'Top-K',
topP: 'Top-P',
lmNegativePrompt: 'LMネガティブプロンプト',
noUserInput: 'ユーザー入力なし',
thingsToAvoid: '避けるべきこと...',
useWhenCfgScaleGreater: 'LM CFGスケール > 1.0の場合に使用',
lmTopK: 'LM Top-K',
lmTopP: 'LM Top-P',
// Guidance section
guidance: 'ガイダンス',
advancedCfgScheduling: '高度なCFGスケジューリング制御。',
cfgIntervalStart: 'CFG間隔開始',
cfgIntervalEnd: 'CFG間隔終了',
customTimesteps: 'カスタムタイムステップ',
timestepsPlaceholder: '例:1,3,5,7',
scoreScale: 'スコアスケール',
lmBatchChunkSize: 'LMバッチチャンクサイズ',
trackName: 'トラック名',
optionalTrackName: 'オプションのトラック名',
completeTrackClasses: '完全なトラッククラス',
trackClassesPlaceholder: 'クラス-a、クラス-b',
useAdg: 'ADGを使用',
allowLmBatch: 'LMバッチを許可',
useCotMetas: 'CoTメタを使用',
useCotCaption: 'CoTキャプションを使用',
useCotLanguage: 'CoT言語を使用',
autogen: '自動生成',
constrainedDecodingDebug: '制約付きデコーディングデバッグ',
formatCaption: 'キャプションをフォーマット',
getScores: 'スコアを取得',
getLrcLyrics: 'LRC(歌詞)を取得',
batchSize: 'バッチサイズ(バリエーション)',
variations: 'バリエーション',
bulkGenerate: '一括生成',
job: 'ジョブ',
jobs: 'ジョブ',
queueMultipleJobs: '同じ設定で複数の独立した生成ジョブをキューに追加',
numberOfVariations: '生成する曲のバリエーション数',
moreStepsBetterQuality: 'ステップが多いほど品質が高く、遅くなります(turboには8を推奨)',
howCloselyFollowPrompt: 'プロンプトにどれだけ忠実に従うか',
seed: 'シード',
randomSeedRecommended: '毎回ランダム化(推奨)',
fixedSeedReproducible: '再現可能な結果のための固定シード',
enterFixedSeed: '固定シードを入力',
enhance: 'AI エンハンス',
enhanceHint: 'ジャンル精度向上、やや遅い',
enhanceTooltip: 'AIがジャンル/スタイルタグを詳細な音楽説明に変換し、適切なBPM、キー、拍子を生成します。ジャンルの精度が向上しますが、生成に10-20秒追加されます。追加VRAMは不要です。',
thinkingCot: '思考(CoT',
mp3Smaller: 'MP3(小さい)',
flacLossless: 'FLAC(ロスレス)',
odeDeterministic: 'ODE(決定論的)',
sdeStochastic: 'SDE(確率的)',
min: '分',
// CreatePanel - Drag & Drop
dropToUseAudio: 'ドロップしてオーディオを使用',
dropToUpload: 'ドロップしてアップロード',
usingAsReference: '参照として使用',
usingAsCover: 'カバーとして使用',
uploadingAsReference: '参照としてアップロード',
uploadingAsCover: 'カバーとしてアップロード',
// CreatePanel - Vocal Gender
vocalGender: 'ボーカルの性別',
male: '男性',
female: '女性',
// CreatePanel - LM Backend & Model
lmBackendLabel: 'LMバックエンド',
lmBackendPt: 'PT(〜1.6 GB VRAM',
lmBackendVllm: 'VLLM(〜9.2 GB VRAM',
lmBackendHint: 'PTはVRAMが少なく、VLLMは高性能GPUで高速',
lmModelLabel: 'LMモデル',
lmModel06B: '0.6B(最軽量、〜0.5 GB VRAM',
lmModel17B: '1.7B(バランス、〜1.5 GB VRAM',
lmModel4B: '4B(最高品質、〜4 GB VRAM',
lmModelHint: '歌詞/スタイル強化に使用するLLMを制御。未インストールの場合自動ダウンロード。',
// CreatePanel - Transcription
transcribing: '文字起こし中...',
transcribingWithWhisper: 'Whisperで文字起こし中…',
// CreatePanel - Library Tabs
uploaded: 'アップロード済み',
createdTab: '作成済み',
useTrack: '使用',
noCreatedSongsYet: '作成した曲がまだありません',
generateSongsToReuse: '曲を生成してカバーや参照として再利用',
// CreatePanel - Actions
generate: '生成',
generating: '生成中...',
createButton: '作成',
formatLyrics: '歌詞をフォーマット',
formatting: 'フォーマット中...',
clearAll: 'すべてクリア',
// Simple Mode
describeYourSong: '曲を説明',
songDescriptionPlaceholder: '友達との夏の冒険についての明るいポップソング...',
quickSettings: 'クイック設定',
key: 'キー',
time: '拍子',
// CreatePanel - Errors
loginToGenerate: '音楽を生成するにはログインしてください',
uploadFailed: 'アップロードに失敗しました',
formatFailed: 'フォーマットに失敗しました',
formatFailedDetail: 'フォーマットに失敗しました。LLMが初期化されていることを確認してください。',
formatFailedLlmUnavailable: 'フォーマットに失敗しました。LLMが利用できない可能性があります。',
deleteSongConfirm: '「{title}」を削除しますか?この操作は元に戻せません。',
profileUpdateFailed: 'プロフィールの更新に失敗しました',
ffmpegLoadFailed: 'ビデオエンコーダーの読み込みに失敗しました。更新してもう一度お試しください。',
videoRenderFailed: 'ビデオレンダリングに失敗しました。もう一度お試しください。',
// SongList / Filters
searchYourSongs: '曲を検索...',
filters: 'フィルター',
refineBy: '絞り込み',
liked: 'いいね',
public: '公開',
private: '非公開',
generatingStatus: '生成中',
selectSongToView: '詳細を表示する曲を選択',
noSongsMatchFilters: 'フィルターに一致する曲がありません。',
clearFilters: 'フィルターをクリア',
// RightSidebar - Song Details
songDetails: '曲の詳細',
created: '作成日',
styleTags: 'スタイルとタグ',
lyricsSection: '歌詞',
copyLyrics: 'コピー',
// Languages
japanese: '日本語',
spanish: 'スペイン語',
german: 'ドイツ語',
french: 'フランス語',
portuguese: 'ポルトガル語',
russian: 'ロシア語',
italian: 'イタリア語',
dutch: 'オランダ語',
polish: 'ポーランド語',
turkish: 'トルコ語',
vietnamese: 'ベトナム語',
czech: 'チェコ語',
persian: 'ペルシャ語',
arabic: 'アラビア語',
korean: '韓国語',
thai: 'タイ語',
hindi: 'ヒンディー語',
indonesian: 'インドネシア語',
ukrainian: 'ウクライナ語',
hungarian: 'ハンガリー語',
swedish: 'スウェーデン語',
romanian: 'ルーマニア語',
greek: 'ギリシャ語',
// Task Types
audio2audio: 'オーディオ → オーディオ',
coverTask: 'カバー',
repaintTask: 'リペイント',
// Search Page
searchSongsPlaceholder: '曲、プレイリスト、クリエイター、スタイルを検索',
songsMatching: '一致する曲',
featuredSongs: '注目の曲',
noSongsFound: '一致する曲が見つかりません',
creatorsMatching: '一致するクリエイター',
featuredCreators: '注目のクリエイター',
noCreatorsFound: '一致するクリエイターが見つかりません',
noCreatorsYet: 'まだクリエイターがいません。最初に音楽を共有しましょう!',
playlistsMatching: '一致するプレイリスト',
featuredPlaylists: '注目のプレイリスト',
noPlaylistsFound: '一致するプレイリストが見つかりません',
noPlaylistsYet: '公開プレイリストがまだありません。作成してお気に入りを共有しましょう!',
genres: 'ジャンル',
songs: '曲',
// Library View
yourLibrary: 'マイライブラリ',
newPlaylist: '新しいプレイリスト',
likedSongs: 'いいねした曲',
playlists: 'プレイリスト',
playlist: 'プレイリスト',
byYou: 'あなたが作成',
// User Profile
back: '戻る',
loadingProfile: '読み込み中...',
userNotFound: 'ユーザーが見つかりません',
goBack: '戻る',
likes: 'いいね',
plays: '再生回数',
recent: '最新',
top: '人気',
noPublicSongsYet: '公開曲がまだありません',
seeMore: 'もっと見る',
joined: '参加日',
supportingSince: 'サポート開始',
avatarImage: 'アバター画像',
uploadAvatar: 'アバターをアップロード',
avatarFormats: 'JPG、PNG、WebP、GIF • 最大5MB',
bannerImage: 'バナー画像',
clickToUploadBanner: 'クリックしてバナーをアップロード',
bannerFormats: '推奨サイズ:1500x500px • JPG、PNG、WebP、GIF • 最大5MB',
bio: '自己紹介',
bioPlaceholder: '自己紹介を書いてください...',
uploadingAvatar: 'アバターをアップロード中...',
uploadingBanner: 'バナーをアップロード中...',
saving: '保存中...',
saveChanges: '変更を保存',
// Playlist Modals
createPlaylist: 'プレイリストを作成',
playlistName: '名前',
playlistNamePlaceholder: '私の素晴らしいプレイリスト',
playlistDescription: '説明',
descriptionPlaceholder: 'コーディング時の雰囲気...',
addToPlaylist: 'プレイリストに追加',
createNewPlaylist: '新しいプレイリストを作成',
noExistingPlaylists: 'プレイリストがまだありません。',
// Edit Profile Modal (Settings)
usernameLabel: 'ユーザー名',
usernamePlaceholder: 'ユーザー名',
usernameMinLengthError: 'ユーザー名は2文字以上である必要があります',
usernameTakenError: 'このユーザー名は既に使用されています',
usernameUpdateFailedError: 'ユーザー名の更新に失敗しました',
usernameRequirements: '文字、数字、アンダースコア、ハイフンのみ使用可能',
// Song Details (RightSidebar)
more: 'もっと',
copy: 'コピー',
copied: 'コピーしました!',
copyAllTags: 'すべてのタグをコピー',
// Song Dropdown Menu
createVideo: 'ビデオを作成',
editAudio: 'オーディオを編集',
extractStems: 'ステムを抽出',
reusePrompt: 'プロンプトを再利用',
deleteSong: '曲を削除',
useAsReference: '参照として使用',
coverSong: 'カバーソング',
confirmDeleteTitle: '曲を削除',
confirmDeleteManyTitle: '曲を削除',
deleteSongsConfirm: '{count}曲を削除しますか?この操作は元に戻せません。',
songsDeletedSuccess: '曲を削除しました',
songsDeletedPartial: '{succeeded}/{total}曲を削除しました',
deleteUploadConfirm: 'このアップロードを削除しますか?この操作は元に戻せません。',
cannotBeUndone: 'この操作は元に戻せません。',
// Player
nowPlaying: '再生中',
selectSongToPlay: '曲を選択して再生',
downloadAudio: 'オーディオをダウンロード',
openInEditor: 'エディターで開く',
anonymous: '匿名ユーザー',
// PlaylistDetail
loadingPlaylist: 'プレイリストを読み込み中...',
playlistNotFound: 'プレイリストが見つかりません',
deletePlaylistConfirm: 'このプレイリストを削除してもよろしいですか?',
artist: 'アーティスト',
deletePlaylist: 'プレイリストを削除',
dateAdded: '追加日',
justNow: 'たった今',
unknown: '不明',
// SongProfile
loadingSong: '曲を読み込み中...',
songNotFound: '曲が見つかりません',
similar: '類似',
by: '作成者',
// ShareModal
shareSong: '曲を共有',
shareOnX: 'Xで共有',
shareOnFacebook: 'Facebookで共有',
shareOnWhatsApp: 'WhatsAppで共有',
shareOnTelegram: 'Telegramで共有',
shareOnReddit: 'Redditで共有',
shareOnLinkedIn: 'LinkedInで共有',
shareViaEmail: 'メールで共有',
copyLink: 'リンクをコピー',
emailSubject: 'このAI曲をチェックしてください',
emailBody: 'こんにちは!\n\n私がこのAI生成の曲を作りました。気に入ってもらえると思います:\n\n「{title}」by {creator}\n{style}\n\nここで聴いてください:{url}\n\nACE-Step UIで作成 - 無料でオープンソースのローカルAI音楽生成!',
// Reference Modal
referenceModalTitle: 'リファレンス',
coverModalTitle: 'カバー',
referenceModalDescription: 'リファレンストラックに触発された曲を作成',
coverModalDescription: '既存のトラックを新しいバージョンに変換',
uploadAudio: 'オーディオをアップロード',
uploadingAudio: 'アップロード中...',
audioFormats: 'MP3、WAV、FLAC',
mine: 'マイトラック',
loadingTracks: '読み込み中...',
noTracksYet: 'トラックがまだありません',
uploadAudioFilesAsReferences: 'リファレンスとして使用するオーディオファイルをアップロード',
// Training Module
loraTraining: 'LoRAトレーニング',
trainingDescription: 'オーディオファイルからデータセットを構築し、カスタムLoRAアダプターをトレーニング',
datasetBuilder: 'データセットビルダー',
trainLora: 'LoRAをトレーニング',
quickStart: 'クイックスタート',
chooseOneOption: '選択:既存のデータセットを読み込む または 新しいディレクトリをスキャン',
loadExistingDataset: '既存のデータセットを読み込む',
loadDataset: '読み込む',
scanNewDirectory: '新しいディレクトリをスキャン',
scanDataset: 'スキャン',
datasetSettings: 'データセット設定',
datasetName: 'データセット名',
customActivationTag: 'カスタム活性化タグ',
allInstrumental: '全てインストゥルメンタル',
tagPosition: 'タグの位置',
tagPrepend: '前置(タグ、キャプション)',
tagAppend: '後置(キャプション、タグ)',
tagReplace: 'キャプションを置換',
genreRatio: 'ジャンル比率',
genreRatioHint: '0% = 全てキャプション、100% = 全てジャンル',
autoLabelWithAI: 'AIで自動ラベル付け',
autoLabelDescription: 'オーディオファイルのメタデータを生成:キャプション、BPM、キー、拍子',
skipMetas: 'BPM/キー/拍子をスキップ',
onlyUnlabeled: 'ラベルなしのみ',
autoLabelAll: '全て自動ラベル付け',
filename: 'ファイル名',
labeled: 'ラベル付き',
saveDataset: 'データセットを保存',
preprocessToTensors: 'テンソルに前処理',
preprocessDescription: 'データセットを事前計算されたテンソルに変換して高速トレーニング(モデルのロードが必要)',
preprocess: '前処理',
preprocessedDataset: '前処理済みデータセット',
loraSettings: 'LoRA設定',
loraRank: 'LoRAランク',
loraAlpha: 'LoRA Alpha',
dropout: 'ドロップアウト',
trainingParameters: 'トレーニングパラメータ',
learningRate: '学習率',
maxEpochs: '最大エポック数',
gradientAccumulation: '勾配累積',
saveEvery: '保存間隔',
epochs: 'エポック',
outputDirectory: '出力ディレクトリ',
useFP8: 'FP8量子化を使用',
fp8Description: 'VRAMを削減',
startTraining: 'トレーニング開始',
stopTraining: 'トレーニング停止',
trainingProgress: 'トレーニング進行状況',
trainingLog: 'トレーニングログ',
trainingStatus: 'トレーニングステータス',
tensorboardView: 'TensorBoardビュー',
showTensorboard: 'TensorBoardを表示',
hideTensorboard: 'TensorBoardを非表示',
openInNewTab: '新しいタブで開く',
// Training Status Messages
scanning: 'スキャン中...',
autoLabeling: '自動ラベル付け中...',
savingDataset: '保存中...',
preprocessing: '前処理中...',
loadingDataset: '読み込み中...',
startingTraining: '開始中...',
error: 'エラー',
datasetInfo: 'データセット: {name}、サンプル数: {samples}、ラベル付き: {labeled}',
trainingStep: 'ステップ {step} - 損失: {loss}',
editSample: 'サンプルを編集',
caption: 'キャプション',
genre: 'ジャンル',
promptOverride: 'プロンプト上書き',
musicDescription: '音楽の説明...',
overrideGlobalRatio: 'このサンプルのグローバル比率を上書き',
editableUsedForTraining: '編集可能、トレーニングに使用',
useGlobalRatio: 'グローバル比率を使用',
thisSample: 'このサンプル',
},
ko: {
// Navigation
create: '생성',
library: '라이브러리',
search: '검색',
training: '훈련',
news: '뉴스',
// Theme
lightMode: '라이트 모드',
darkMode: '다크 모드',
// Auth
signIn: '로그인',
signOut: '로그아웃',
settings: '설정',
// Username Modal
welcomeTitle: 'ACE-Step UI에 오신 것을 환영합니다',
welcomeSubtitle: 'AI 음악 제작을 시작하려면 이름을 입력하세요',
yourName: '이름',
enterYourName: '이름 입력',
getStarted: '시작하기',
gettingStarted: '시작 중...',
yourMusicYourWay: '당신의 음악, 당신만의 방식으로. 무료로 무제한 AI 음악 제작.',
usernameMinLength: '사용자 이름은 최소 2자 이상이어야 합니다',
usernameInvalidChars: '사용자 이름은 문자, 숫자, 밑줄, 하이픈만 사용할 수 있습니다',
failedToSetUsername: '사용자 이름 설정에 실패했습니다',
// Toasts
songNotAvailable: '이 곡은 더 이상 사용할 수 없습니다.',
unableToPlay: '이 곡을 재생할 수 없습니다.',
generationTimedOut: '생성 시간 초과',
generationFailed: '생성에 실패했습니다. 다시 시도해주세요.',
playlistCreated: '재생목록이 생성되었습니다!',
failedToCreatePlaylist: '재생목록 생성에 실패했습니다',
songAddedToPlaylist: '재생목록에 추가되었습니다',
failedToAddSong: '곡 추가에 실패했습니다',
songDeleted: '곡이 삭제되었습니다',
failedToDeleteSong: '곡 삭제에 실패했습니다',
// Sidebar
aceStepUI: 'ACE-Step UI',
collapseSidebar: '사이드바 접기',
expandSidebar: '사이드바 펼치기',
// Common
cancel: '취소',
save: '저장',
delete: '삭제',
edit: '편집',
share: '공유',
download: '다운로드',
play: '재생',
pause: '일시정지',
normalSpeed: '보통',
next: '다음',
previous: '이전',
// Placeholders
searchPlaceholder: '검색...',
// Settings
language: '언어',
english: 'English',
chinese: '简体中文',
japaneseLanguage: '日本語',
koreanLanguage: '한국어',
appearance: '외관',
profile: '프로필',
viewProfile: '프로필 보기',
editProfile: '프로필 편집',
account: '계정',
username: '사용자 이름',
memberSince: '가입일',
about: '정보',
version: '버전',
localAIMusicGenerator: '로컬 AI 음악 생성기',
poweredBy: 'ACE-Step 1.5 기반. 오픈 소스이며 무료로 사용 가능합니다.',
createdBy: '개발자 Ambsd',
localizedBy: '현지화 및 2차 개발 bdsqlsz',
follow: '팔로우',
done: '완료',
light: '라이트',
dark: '다크',
// Mobile
createSong: '곡 만들기',
viewList: '목록 보기',
// CreatePanel - Modes
simple: '간단',
custom: '사용자 정의',
// CreatePanel - Sections
audio: '오디오',
lyrics: '가사',
styleOfMusic: '음악 스타일',
title: '제목',
musicParameters: '음악 매개변수',
advancedSettings: '고급 설정',
// CreatePanel - LoRA
loraPath: 'LoRA 경로',
loraPathPlaceholder: 'LoRA 모델 경로 입력...',
browseFiles: '파일 찾아보기',
loraLoaded: 'LoRA 로드됨',
loraUnloaded: 'LoRA 언로드됨',
loraLoad: '로드',
loraUnload: '언로드',
loraScale: 'LoRA 강도',
loraScaleDescription: 'LoRA 모델의 영향 강도 조절',
// CreatePanel - Audio
reference: '참조',
cover: '커버',
fromLibrary: '라이브러리에서',
upload: '업로드',
// CreatePanel - Lyrics
lyricsPlaceholder: '여기에 가사를 입력하세요...',
leaveLyricsEmpty: '연주곡의 경우 비워두거나 아래 토글 사용',
vocal: '보컬',
instrumental: '연주곡',
vocalLanguage: '보컬 언어',
autoInstrumental: '자동 / 연주곡',
vocalArabic: '아랍어',
vocalAzerbaijani: '아제르바이잔어',
vocalBulgarian: '불가리아어',
vocalBengali: '벵골어',
vocalCatalan: '카탈루냐어',
vocalCzech: '체코어',
vocalDanish: '덴마크어',
vocalGerman: '독일어',
vocalGreek: '그리스어',
vocalEnglish: '영어',
vocalSpanish: '스페인어',
vocalPersian: '페르시아어',
vocalFinnish: '핀란드어',
vocalFrench: '프랑스어',
vocalHebrew: '히브리어',
vocalHindi: '힌디어',
vocalCroatian: '크로아티아어',
vocalHaitianCreole: '아이티 크레올어',
vocalHungarian: '헝가리어',
vocalIndonesian: '인도네시아어',
vocalIcelandic: '아이슬란드어',
vocalItalian: '이탈리아어',
vocalJapanese: '일본어',
vocalKorean: '한국어',
vocalLatin: '라틴어',
vocalLithuanian: '리투아니아어',
vocalMalay: '말레이어',
vocalNepali: '네팔어',
vocalDutch: '네덜란드어',
vocalNorwegian: '노르웨이어',
vocalPunjabi: '펀자브어',
vocalPolish: '폴란드어',
vocalPortuguese: '포르투갈어',
vocalRomanian: '루마니아어',
vocalRussian: '러시아어',
vocalSanskrit: '산스크리트어',
vocalSlovak: '슬로바키아어',
vocalSerbian: '세르비아어',
vocalSwedish: '스웨덴어',
vocalSwahili: '스와힐리어',
vocalTamil: '타밀어',
vocalTelugu: '텔루구어',
vocalThai: '태국어',
vocalTagalog: '타갈로그어',
vocalTurkish: '터키어',
vocalUkrainian: '우크라이나어',
vocalUrdu: '우르두어',
vocalVietnamese: '베트남어',
vocalCantonese: '광둥어',
vocalChineseMandarin: '중국어(표준어)',
// CreatePanel - Style
stylePlaceholder: '예: 경쾌한 팝 록, 감성적인 발라드, 90년대 힙합',
genreMoodInstruments: '장르, 분위기, 악기, 느낌',
refreshGenres: '장르 제안 새로고침',
mainGenre: '주요 장르',
subGenre: '하위 장르',
nameSong: '곡 이름 짓기',
// CreatePanel - Parameters
bpm: 'BPM',
auto: '자동',
duration: '길이',
seconds: '초',
keyScale: '키와 스케일',
timeSignature: '박자',
// CreatePanel - Advanced
randomSeed: '랜덤 시드',
thinking: '생각',
audioFormat: '오디오 형식',
inferenceSteps: '추론 단계',
guidanceScale: '가이던스 스케일',
inferMethod: '추론 방법',
shift: '시프트',
timestepShiftForBase: '베이스 모델의 타임스텝 시프트 (turbo에서는 무효)',
expertControls: '전문가 제어',
lmParameters: 'LM 매개변수',
controlLyricGeneration: '가사 생성과 창의성 제어',
transform: '변환',
controlSourceAudio: '모델이 소스 오디오를 따르는 정도를 제어',
audioCodes: '오디오 코드',
optionalAudioCodes: '선택적 오디오 코드 페이로드',
taskType: '작업 유형',
textToMusic: '텍스트 → 음악',
audioCoverStrength: '오디오 커버 강도',
repaintingStart: '리페인팅 시작',
repaintingEnd: '리페인팅 종료',
instruction: '지시',
lmTemperature: 'LM 온도',
higherMoreRandom: '높을수록 랜덤 (0-2)',
lmCfgScale: 'LM CFG 스케일',
noCfgScale: '1.0 = CFG 없음 (1-3)',
topK: 'Top-K',
topP: 'Top-P',
lmNegativePrompt: 'LM 네거티브 프롬프트',
noUserInput: '사용자 입력 없음',
thingsToAvoid: '피해야 할 것들...',
useWhenCfgScaleGreater: 'LM CFG 스케일 > 1.0일 때 사용',
lmTopK: 'LM Top-K',
lmTopP: 'LM Top-P',
// Guidance section
guidance: '가이던스',
advancedCfgScheduling: '고급 CFG 스케줄링 제어.',
cfgIntervalStart: 'CFG 간격 시작',
cfgIntervalEnd: 'CFG 간격 종료',
customTimesteps: '사용자 정의 타임스텝',
timestepsPlaceholder: '예: 1,3,5,7',
scoreScale: '스코어 스케일',
lmBatchChunkSize: 'LM 배치 청크 크기',
trackName: '트랙 이름',
optionalTrackName: '선택적 트랙 이름',
completeTrackClasses: '완전한 트랙 클래스',
trackClassesPlaceholder: '클래스-a, 클래스-b',
useAdg: 'ADG 사용',
allowLmBatch: 'LM 배치 허용',
useCotMetas: 'CoT 메타 사용',
useCotCaption: 'CoT 캡션 사용',
useCotLanguage: 'CoT 언어 사용',
autogen: '자동 생성',
constrainedDecodingDebug: '제약 디코딩 디버그',
formatCaption: '캡션 포맷',
getScores: '점수 가져오기',
getLrcLyrics: 'LRC(가사) 가져오기',
batchSize: '배치 크기 (변형)',
variations: '변형',
bulkGenerate: '대량 생성',
job: '작업',
jobs: '작업',
queueMultipleJobs: '동일한 설정으로 여러 독립 생성 작업 대기열에 추가',
numberOfVariations: '생성할 곡 변형 수',
moreStepsBetterQuality: '단계가 많을수록 품질이 높고 느립니다 (turbo는 8 권장)',
howCloselyFollowPrompt: '프롬프트를 얼마나 엄격히 따를지',
seed: '시드',
randomSeedRecommended: '매 실행마다 무작위 (권장)',
fixedSeedReproducible: '재현 가능한 결과를 위한 고정 시드',
enterFixedSeed: '고정 시드 입력',
enhance: 'AI 향상',
enhanceHint: '더 정확한 장르, 약간 느림',
enhanceTooltip: 'AI 언어 모델을 사용하여 장르/스타일 태그를 상세한 음악 설명으로 변환하고 적절한 BPM, 키, 박자를 생성합니다. 장르 정확도가 향상되지만 생성 시간이 10-20초 추가됩니다. 추가 VRAM이 필요하지 않습니다.',
thinkingCot: '생각 (CoT)',
mp3Smaller: 'MP3 (작음)',
flacLossless: 'FLAC (무손실)',
odeDeterministic: 'ODE (결정론적)',
sdeStochastic: 'SDE (확률적)',
min: '분',
// CreatePanel - Drag & Drop
dropToUseAudio: '드롭하여 오디오 사용',
dropToUpload: '드롭하여 업로드',
usingAsReference: '참조로 사용',
usingAsCover: '커버로 사용',
uploadingAsReference: '참조로 업로드',
uploadingAsCover: '커버로 업로드',
// CreatePanel - Vocal Gender
vocalGender: '보컬 성별',
male: '남성',
female: '여성',
// CreatePanel - LM Backend & Model
lmBackendLabel: 'LM 백엔드',
lmBackendPt: 'PT (~1.6 GB VRAM)',
lmBackendVllm: 'VLLM (~9.2 GB VRAM)',
lmBackendHint: 'PT는 VRAM이 적고, VLLM은 고성능 GPU에서 더 빠름',
lmModelLabel: 'LM 모델',
lmModel06B: '0.6B (가장 가벼움, ~0.5 GB VRAM)',
lmModel17B: '1.7B (균형, ~1.5 GB VRAM)',
lmModel4B: '4B (최고 품질, ~4 GB VRAM)',
lmModelHint: '가사/스타일 향상에 사용되는 LLM을 제어. 없으면 자동 다운로드.',
// CreatePanel - Transcription
transcribing: '전사 중...',
transcribingWithWhisper: 'Whisper로 전사 중…',
// CreatePanel - Library Tabs
uploaded: '업로드됨',
createdTab: '생성됨',
useTrack: '사용',
noCreatedSongsYet: '생성된 곡이 아직 없습니다',
generateSongsToReuse: '곡을 생성하여 커버나 참조로 재사용',
// CreatePanel - Actions
generate: '생성',
generating: '생성 중...',
createButton: '만들기',
formatLyrics: '가사 포맷',
formatting: '포맷 중...',
clearAll: '모두 지우기',
// Simple Mode
describeYourSong: '곡 설명',
songDescriptionPlaceholder: '친구들과 여름 모험에 대한 밝은 팝송...',
quickSettings: '빠른 설정',
key: '키',
time: '박자',
// CreatePanel - Errors
loginToGenerate: '음악을 생성하려면 로그인하세요',
uploadFailed: '업로드 실패',
formatFailed: '포맷 실패',
formatFailedDetail: '포맷 실패. LLM이 초기화되었는지 확인하세요.',
formatFailedLlmUnavailable: '포맷 실패. LLM을 사용할 수 없을 수 있습니다.',
deleteSongConfirm: '「{title}」을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
profileUpdateFailed: '프로필 업데이트에 실패했습니다',
ffmpegLoadFailed: '비디오 인코더 로드에 실패했습니다. 새로고침 후 다시 시도하세요.',
videoRenderFailed: '비디오 렌더링에 실패했습니다. 다시 시도하세요.',
// SongList / Filters
searchYourSongs: '곡 검색...',
filters: '필터',
refineBy: '세분화',
liked: '좋아요',
public: '공개',
private: '비공개',
generatingStatus: '생성 중',
selectSongToView: '세부 정보를 볼 곡 선택',
noSongsMatchFilters: '필터와 일치하는 곡이 없습니다.',
clearFilters: '필터 지우기',
// RightSidebar - Song Details
songDetails: '곡 상세정보',
created: '생성일',
styleTags: '스타일 및 태그',
lyricsSection: '가사',
copyLyrics: '복사',
// Languages
japanese: '일본어',
spanish: '스페인어',
german: '독일어',
french: '프랑스어',
portuguese: '포르투갈어',
russian: '러시아어',
italian: '이탈리아어',
dutch: '네덜란드어',
polish: '폴란드어',
turkish: '터키어',
vietnamese: '베트남어',
czech: '체코어',
persian: '페르시아어',
arabic: '아랍어',
korean: '한국어',
thai: '태국어',
hindi: '힌디어',
indonesian: '인도네시아어',
ukrainian: '우크라이나어',
hungarian: '헝가리어',
swedish: '스웨덴어',
romanian: '루마니아어',
greek: '그리스어',
// Task Types
audio2audio: '오디오 → 오디오',
coverTask: '커버',
repaintTask: '리페인트',
// Search Page
searchSongsPlaceholder: '곡, 재생목록, 제작자 또는 스타일 검색',
songsMatching: '일치하는 곡',
featuredSongs: '추천 곡',
noSongsFound: '일치하는 곡을 찾을 수 없습니다',
creatorsMatching: '일치하는 제작자',
featuredCreators: '추천 제작자',
noCreatorsFound: '일치하는 제작자를 찾을 수 없습니다',
noCreatorsYet: '아직 제작자가 없습니다. 음악을 공유하는 첫 번째 사람이 되세요!',
playlistsMatching: '일치하는 재생목록',
featuredPlaylists: '추천 재생목록',
noPlaylistsFound: '일치하는 재생목록을 찾을 수 없습니다',
noPlaylistsYet: '공개 재생목록이 아직 없습니다. 만들고 즐겨찾기를 공유하세요!',
genres: '장르',
songs: '곡',
// Library View
yourLibrary: '내 라이브러리',
newPlaylist: '새 재생목록',
likedSongs: '좋아하는 곡',
playlists: '재생목록',
playlist: '재생목록',
byYou: '내가 만든',
// User Profile
back: '뒤로',
loadingProfile: '로딩 중...',
userNotFound: '사용자를 찾을 수 없습니다',
goBack: '뒤로 가기',
likes: '좋아요',
plays: '재생 수',
recent: '최신',
top: '인기',
noPublicSongsYet: '공개 곡이 아직 없습니다',
seeMore: '더 보기',
joined: '가입일',
supportingSince: '후원 시작일',
avatarImage: '아바타 이미지',
uploadAvatar: '아바타 업로드',
avatarFormats: 'JPG, PNG, WebP, GIF • 최대 5MB',
bannerImage: '배너 이미지',
clickToUploadBanner: '클릭하여 배너 업로드',
bannerFormats: '권장 크기: 1500x500px • JPG, PNG, WebP, GIF • 최대 5MB',
bio: '자기소개',
bioPlaceholder: '자신에 대해 소개하세요...',
uploadingAvatar: '아바타 업로드 중...',
uploadingBanner: '배너 업로드 중...',
saving: '저장 중...',
saveChanges: '변경 사항 저장',
// Playlist Modals
createPlaylist: '재생목록 만들기',
playlistName: '이름',
playlistNamePlaceholder: '내 멋진 재생목록',
playlistDescription: '설명',
descriptionPlaceholder: '코딩할 때 듣는 음악...',
addToPlaylist: '재생목록에 추가',
createNewPlaylist: '새 재생목록 만들기',
noExistingPlaylists: '재생목록이 아직 없습니다.',
// Edit Profile Modal (Settings)
usernameLabel: '사용자 이름',
usernamePlaceholder: '사용자 이름',
usernameMinLengthError: '사용자 이름은 최소 2자 이상이어야 합니다',
usernameTakenError: '이 사용자 이름은 이미 사용 중입니다',
usernameUpdateFailedError: '사용자 이름 업데이트에 실패했습니다',
usernameRequirements: '문자, 숫자, 밑줄, 하이픈만 허용됨',
// Song Details (RightSidebar)
more: '더보기',
copy: '복사',
copied: '복사됨!',
copyAllTags: '모든 태그 복사',
// Song Dropdown Menu
createVideo: '비디오 만들기',
editAudio: '오디오 편집',
extractStems: '스템 추출',
reusePrompt: '프롬프트 재사용',
deleteSong: '곡 삭제',
useAsReference: '참조로 사용',
coverSong: '커버 곡',
confirmDeleteTitle: '곡 삭제',
confirmDeleteManyTitle: '곡 삭제',
deleteSongsConfirm: '{count}곡을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
songsDeletedSuccess: '곡이 삭제되었습니다',
songsDeletedPartial: '{succeeded}/{total}곡 삭제됨',
deleteUploadConfirm: '이 업로드를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
cannotBeUndone: '이 작업은 되돌릴 수 없습니다.',
// Player
nowPlaying: '재생 중',
selectSongToPlay: '재생할 곡을 선택하세요',
downloadAudio: '오디오 다운로드',
openInEditor: '편집기에서 열기',
anonymous: '익명 사용자',
// PlaylistDetail
loadingPlaylist: '재생목록 로딩 중...',
playlistNotFound: '재생목록을 찾을 수 없습니다',
deletePlaylistConfirm: '이 재생목록을 삭제하시겠습니까?',
artist: '아티스트',
deletePlaylist: '재생목록 삭제',
dateAdded: '추가일',
justNow: '방금',
unknown: '알 수 없음',
// SongProfile
loadingSong: '곡 로딩 중...',
songNotFound: '곡을 찾을 수 없습니다',
similar: '유사',
by: '제작자',
// ShareModal
shareSong: '곡 공유',
shareOnX: 'X에서 공유',
shareOnFacebook: 'Facebook에서 공유',
shareOnWhatsApp: 'WhatsApp에서 공유',
shareOnTelegram: 'Telegram에서 공유',
shareOnReddit: 'Reddit에서 공유',
shareOnLinkedIn: 'LinkedIn에서 공유',
shareViaEmail: '이메일로 공유',
copyLink: '링크 복사',
emailSubject: '이 AI 곡을 들어보세요',
emailBody: '안녕하세요!\n\n제가 만든 이 AI 생성 곡을 들어보세요. 마음에 드실 거예요:\n\n"{title}" - {creator}\n{style}\n\n여기서 들으세요: {url}\n\nACE-Step UI로 제작 - 무료 오픈 소스 로컬 AI 음악 생성!',
// Reference Modal
referenceModalTitle: '참조 음악',
coverModalTitle: '커버 음악',
referenceModalDescription: '참조 트랙에서 영감을 받은 곡 만들기',
coverModalDescription: '기존 트랙을 새로운 버전으로 변환',
uploadAudio: '오디오 업로드',
uploadingAudio: '업로드 중...',
audioFormats: 'MP3, WAV, FLAC',
mine: '내 트랙',
loadingTracks: '로딩 중...',
noTracksYet: '트랙이 없습니다',
uploadAudioFilesAsReferences: '참조로 사용할 오디오 파일 업로드',
// Training Module
loraTraining: 'LoRA 훈련',
trainingDescription: '오디오 파일에서 데이터셋을 구축하고 커스텀 LoRA 어댑터를 훈련',
datasetBuilder: '데이터셋 빌더',
trainLora: 'LoRA 훈련',
quickStart: '빠른 시작',
chooseOneOption: '선택: 기존 데이터셋 로드 또는 새 디렉토리 스캔',
loadExistingDataset: '기존 데이터셋 로드',
loadDataset: '로드',
scanNewDirectory: '새 디렉토리 스캔',
scanDataset: '스캔',
datasetSettings: '데이터셋 설정',
datasetName: '데이터셋 이름',
customActivationTag: '커스텀 활성화 태그',
allInstrumental: '모두 인스트루멘탈',
tagPosition: '태그 위치',
tagPrepend: '앞에 추가 (태그, 캡션)',
tagAppend: '뒤에 추가 (캡션, 태그)',
tagReplace: '캡션 대체',
genreRatio: '장르 비율',
genreRatioHint: '0% = 모두 캡션, 100% = 모두 장르',
autoLabelWithAI: 'AI로 자동 라벨링',
autoLabelDescription: '오디오 파일의 메타데이터 생성: 캡션, BPM, 키, 박자',
skipMetas: 'BPM/키/박자 건너뛰기',
onlyUnlabeled: '라벨 없는 것만',
autoLabelAll: '모두 자동 라벨링',
filename: '파일명',
labeled: '라벨됨',
saveDataset: '데이터셋 저장',
preprocessToTensors: '텐서로 전처리',
preprocessDescription: '빠른 훈련을 위해 데이터셋을 사전 계산된 텐서로 변환 (모델 로드 필요)',
preprocess: '전처리',
preprocessedDataset: '전처리된 데이터셋',
loraSettings: 'LoRA 설정',
loraRank: 'LoRA 랭크',
loraAlpha: 'LoRA Alpha',
dropout: '드롭아웃',
trainingParameters: '훈련 파라미터',
learningRate: '학습률',
maxEpochs: '최대 에포크',
gradientAccumulation: '그래디언트 누적',
saveEvery: '저장 간격',
epochs: '에포크',
outputDirectory: '출력 디렉토리',
useFP8: 'FP8 양자화 사용',
fp8Description: 'VRAM 사용량 감소',
startTraining: '훈련 시작',
stopTraining: '훈련 중지',
trainingProgress: '훈련 진행',
trainingLog: '훈련 로그',
// Training Status Messages
scanning: '스캔 중...',
autoLabeling: '자동 라벨링 중...',
savingDataset: '저장 중...',
preprocessing: '전처리 중...',
loadingDataset: '로드 중...',
startingTraining: '시작 중...',
error: '오류',
datasetInfo: '데이터셋: {name}, 샘플: {samples}, 라벨됨: {labeled}',
trainingStep: '스텝 {step} - 손실: {loss}',
editSample: '샘플 편집',
caption: '캡션',
genre: '장르',
promptOverride: '프롬프트 재정의',
musicDescription: '음악 설명...',
overrideGlobalRatio: '이 샘플의 글로벌 비율 재정의',
editableUsedForTraining: '편집 가능, 훈련에 사용',
useGlobalRatio: '글로벌 비율 사용',
thisSample: '이 샘플',
}
};
export type TranslationKey = keyof typeof translations.en;