{"agent-demo":{"description":"Fully Hosted","title":"Voice Chat"},"desktop-browser-required":{"title":"Please use a PC browser for the full experience","description":"Some features are not available on mobile devices yet."},"mascot":{"close":"Close assistant","fallback-answer":"I can't help with that right now. Try asking another way.","guide-target-unavailable":"I couldn't find that control on this page. Please try again once the page finishes loading.","hide-temporarily":"Hide assistant until refresh","model-card-open":"Open {title}","model-card-pause":"Pause {title}","model-card-play":"Play {title}","model-cards-load-failed":"Couldn't load these voices.","model-cards-loading":"Loading voices","model-cards-retry":"Retry","model-cards-unavailable":"These voices are no longer available.","refund-confirm-accept":"Confirm","refund-confirm-cancel":"Not now","refund-confirm-description":"Refund {amount} and cancel your Personal team subscription?","refund-confirm-title":"Refund","send":"Send question","thinking":"Thinking","ticket-link":"Submit a ticket","user-data-consent-accept":"Accept","user-data-consent-cancel":"Cancel","user-data-consent-description":"By clicking \"Accept,\" I consent to the recording and sharing of my data with Fish Audio and third parties as described in the <privacyPolicy>Privacy Policy</privacyPolicy>.","user-data-consent-title":"Data access consent","trigger-label":"Ask Agent","voice-input-connecting":"Connecting...","panel":{"title":"Fish Assistant","subtitle":"Powered by <agent>Fish Agent</agent>","tagline":"Discover the capabilities of Fish Audio, powered by <agent>Fish Agent</agent>","placeholder":"Ask anything","input-label":"Message","new-chat":"New chat","history":"History","recent":"Recent","view-all":"View all","search-chats":"Search chats","no-chats":"No chats found","history-failed":"Couldn't load chats","delete-chat":"Delete chat","show-more":"Show more","today":"Today","previous-7-days":"Previous 7 days","older":"Older","dock":"Dock to side","pop-out":"Pop out","resize":"Resize panel","contact-support":"Contact support","contact-support-message":"I need to contact support.","send-feedback":"Send feedback","rating":"Rating","good":"Good","bad":"Bad","feedback-placeholder":"What happened?","include-chat":"Include this chat","send":"Send","cancel":"Cancel","feedback-sent":"Thanks for the feedback","feedback-failed":"Couldn't send feedback","copy":"Copy","copied":"Copied","stop":"Stop","stopped":"Stopped","current-page":"Current page","add-page":"Add page","remove-page":"Stop sharing {page}","case-opened":"Case {key} opened","view":"View","new-session":"New session","show-page":"Show page","show-me":"Show me","next":"Next","guide-step":"{current} of {total}","end-guide":"End guide","settings":"Settings","manual":"Manual","manual-description":"Get guidance and take action yourself","auto":"Auto","auto-description":"Let the assistant take action for you","call":"Start voice call","end-call":"End call","guide-auto":"Clicking for you","question-progress":"Question {current} of {total}","skip":"Skip","own-words":"Describe in your own words…"}},"versionUpdateBanner":{"title":"A new version of Fish Audio is ready!","description":"Refresh to update this page.","dismiss":"Dismiss","reload":"Reload"},"buildersContestBanner":{"text":"Fish Audio Builders Contest - join our Discord for info and rewards","dismissAriaLabel":"Dismiss Fish Audio Builders Contest banner"},"arenaInvitePopup":{"title":"You're invited to Fish Audio Arena","body":"Help vet our new voice models before they launch. Each task takes 1–2 minutes, stop any time, and valid judgments turn into membership time.","enter":"Enter Arena","later":"Maybe later"},"droplineDownloadPopup":{"title":"Try Dropline Preview on your Mac","free":"Free during the Preview","heroTitle":"Voice dictation for your Mac","heroBody":"Press a key and talk. Clean, ready-to-send text appears in any app.","body":"Hold a key, speak, and clean text is typed in any app, on Mac and Windows.","requirements":"macOS 15.4 or later · Apple silicon","download":"Download for Mac","learnMore":"Learn more","windows":{"title":"Try Dropline Preview on Windows","heroTitle":"Voice dictation for your PC","heroBody":"Hold Ctrl + Win and talk. Clean, ready-to-send text appears in any app.","requirements":"Windows 10 or 11 · x64 or ARM64 · Beta","download":"Download for Windows"},"steps":{"title":"Now install Dropline","again":"Didn't start? <again>Download again</again>","done":"Done","mac":{"unzip":"In your Downloads folder, double-click the Dropline zip.","unzipChrome":"Open the Dropline zip from Chrome's downloads at the top right. If Chrome first says <b>Suspicious download blocked</b>, click it, then <b>Download suspicious file</b>.","unzipSafari":"Open your Downloads folder. Safari has already unzipped the download.","open":"Double-click <b>Install Dropline</b> in your Downloads folder. If macOS asks, click <b>Open</b>.","install":"Click <b>Install</b>, and enter your Mac's password if asked. Dropline opens by itself."},"windows":{"open":"Open <b>Dropline-…-setup.exe</b> from your browser's downloads.","openChrome":"Open <b>Dropline-…-setup.exe</b> from Chrome's downloads at the top right. If Chrome first says <b>Suspicious download blocked</b>, click it, then <b>Download suspicious file</b>.","openEdge":"Open <b>Dropline-…-setup.exe</b> from Edge's downloads at the top right. If Edge warns first, click <b>…</b> → <b>Keep</b> → <b>Show more</b> → <b>Keep anyway</b>.","smartScreen":"If <b>Windows protected your PC</b> appears, click <b>More info</b> (publisher: Hanabi AI Inc.) → <b>Run anyway</b>.","install":"Click <b>Install</b>. Dropline opens by itself."}}},"openInApp":{"button":"Open in the App","dismiss":"Dismiss"},"annonation":{"audio":"Audio","cannot_tell":"Can't tell","count":"Count","single_audio_description":"Adjust the content in the text box above until the generated audio is closest to the original text of normal human reading.","skip":"Skip","submit":"Submit","title":"Evaluate the given audios","which_is_better":"Which is better?"},"annotate":{"a_is_better":"Audio A is better","a_is_better_than_b":"Audio A is better","a_is_much_better":"Audio A is much better","annotationCount":{"consensus_rejected":"Consensus Rejected","marked_as_bad":"Marked as Bad","marked_as_by_sample":"Marked as Bad Sample","pending_consensus":"Pending Consensus","rejected_by_admin":"Rejected by Admin","success":"Success","total":"Total"},"articulate_clearly":"This pronunciation is clearer","audio-quality":{"background-noise":"Background noise (like wind, traffic, etc.)","echo-reverberation":"Echo/reverberation","high-quality":"High quality","multiple-speakers":"Multiple speakers talking at the same time","not-speaking":"The speaker is not speaking (like singing, silence, etc.)","other":"Other","prompt":"Please choice the issues you found in the audio quality, if it's high quality, please select 'High quality'."},"b_is_better":"Audio B is better","b_is_better_than_a":"Audio B is better","b_is_much_better":"Audio B is much better","basicTags":"Basic Tags","cant_tell":"Cannot Tell","choice":"Select","evaluate":"Evaluate","feedback":{"BAD_SAMPLE":"Bad sample","MULTI_SPEAKER":"Multiple speakers","NSFW":"NSFW","SOUND_EFFECT":"Sound effect"},"fetching":"Fetching next one...","inspect":{"link_title":"Check Self Annotation List"},"language":"Language","next":"Submit and next one","no_noise":"This has less noise","no_samples_found":"No Sample found, please update language or tags to fetch more samples","normalize":{"description":"This sample needs to normalize the numbers in the text. Please refer to the rules in the number normalization.","title":"Sample annotation hint"},"nsfwTags":"NSFW Tags","originalText":"Original Text","overall_better":"This has a better overall feel","pleaseInputTranscription":"Please input transcription...","previous":"Previous","quickActions":{"break":"Pause","breakDesc":"Short pause (within 1 second) during speech","breath":"Breath","breathDesc":"Obvious breathing sound during speech","cough":"Cough","coughDesc":"Coughing during speech","eh":"eh","en":"en","fillerWord":"Filler word","laugh":"Laugh","laughDesc":"Laughter during speech","lipSmacking":"Lip Smacking","lipSmackingDesc":"Lip smacking sound during speech","longBreak":"Long Pause","longBreakDesc":"Long pause (over 1 second) during speech","sigh":"Sigh","sighDesc":"Sighing sound during speech","um":"um"},"quickTags":"Quick Tags","refresh":"Refresh","requirement":"This meets the requirements better","segment":"Segment Annotation","selectLanguage":"Select Language","submit":"Submit","submitError":"Submit failed","submitSuccess":"Submit successfully","tags":"Tags","title":"Annotate","video_annotation":"Video Annotation","video":{"annotation_modified":"Modified","annotation_text":"Annotation Text","collapse_all":"Collapse All","current_segment":"Current Segment","download_video":"Download Video","expand_all":"Expand All","no_segments":"No Segment Information","original_text":"Original Text","play_segment":"Play Segment","segment_duration":"Segment Duration","segments":"Video Segments","title":"Video Annotation","video_path":"Video Path"},"which_is_better":"Which is better?","yourOutput":"Your Output"},"api-price-limits":{"asr_price":"ASR Price","concurrency":"Concurrency","concurrent_requests":"Concurrent Requests","concurrency_guide_badge":"Raise your concurrency","concurrency_guide_contact_cta":"Contact Sales","concurrency_guide_description":"Your team's total API credit top-ups determine concurrency: $100+ unlocks 15 concurrent requests, and $1000+ unlocks 50. For larger production traffic, contact sales for custom concurrency and volume pricing.","concurrency_guide_pricing_cta":"View Pricing","concurrency_guide_step_contact":"Need more? Contact sales","concurrency_guide_step_recharge_high":"Top up $1000+ -> 50 concurrent requests","concurrency_guide_step_spend":"Top up $100+ -> 15 concurrent requests","concurrency_guide_title":"Need more throughput?","concurrency_tooltip":"5 concurrent requests by default. Top up $100+ to unlock 15; top up $1000+ to unlock 50. Custom options available for higher usage.","copied_title":"Copied to clipboard","cumulative_api_top_ups":"Cumulative API top-ups: {amount}","default_tier":"Default","drama3_launch_price":"Launch price until {date} · then {price}","audio_hour":"audio hour","generation":"generation","hour":"hour","max_concurrency_unlocked":"Maximum concurrency tier unlocked","million_bytes":"million UTF-8 bytes","million_output_tokens":"million output tokens","model_name":"Model Name","model_type":"Model Type","need_enterprise_pricing":"Need enterprise pricing?","pricing":"Pricing","product_tts":"Text to speech","product_chat":"Chat","product_asr":"Speech to text","product_realtime_asr":"Realtime speech to text","product_voice_design":"Voice design","request_count":"{count} requests","shared_across_all_keys":"Shared across all keys","top_up":"Top up","top_up_in_advance":"Top up in advance to unlock the next tier immediately.","top_up_to_unlock":"Top up {amount} to unlock {count} concurrent requests","tts_price":"TTS Price"},"audio-converter":{"add_more":"Add More","clear_all":"Clear All","click_to_browse":"or click to browse","convert_all_to":"Convert all to","convert_file":"Convert {count} file","convert_files":"Convert {count} files","convert_more":"Convert More","converted_file":"{count} file converted","converted_files":"{count} files converted","download_all":"Download All","drag_and_drop":"Drag & drop audio files","drop":"Drop your files here","features":{"batch":{"description":"Convert multiple audio files at once. Upload a batch and download them all in your preferred format.","title":"Batch Conversion"},"cloud":{"description":"No software installation needed. Convert files directly in your browser with our cloud-based service.","title":"Cloud-Based"},"defaultFormat":"Audio Converter","fast":{"description":"Lightning-fast conversion powered by optimized cloud infrastructure. Get your files in seconds.","title":"Fast Processing"},"formats":{"description":"Support for all popular audio formats including MP3, WAV, FLAC, OGG, M4A, AAC, and more.","title":"Wide Format Support"},"quality":{"description":"Maintain audio fidelity during conversion with high-quality encoding and minimal loss.","title":"Quality Preservation"},"secure":{"description":"Your files are processed securely and never stored on our servers. Convert with confidence.","title":"Private & Secure"},"subtitle":"Professional Audio Converter with simplicity and speed","title":"{format} Features"},"file":"{count} file","files":"{count} files","form-error":{"file_type":"Please upload valid audio or video files only","total_size":"Total size of all files should be less than 1GB"},"formatGrid":{"conversion":"{inputFormat} to {outputFormat}","otherFormats":"Other Formats","popularConversions":"Popular Conversions","subtitle":"Convert between any audio format with a single click","title":"Related Conversions"},"introduction":{"defaultFormat":"Audio Converter","description":"Transform your audio files between any format with ease. Whether you need to convert MP3 to WAV for editing, compress large files, or ensure compatibility across devices, our free converter handles it all with professional-grade quality.","title":"Convert Audio Files Effortlessly"},"processing":"Processing","select":"Select Files","topBar":{"subtitle":"Convert audio files from {inputFormat} to {outputFormat} quickly and easily","subtitleDefault":"Convert audio files online quickly and easily for free","title":"{inputFormat} to {outputFormat}","titleDefault":"Audio Converter"}},"audio-separation":{"upload_title":"Upload audio","upload_max_size":"Max 32MB per file","duration_loading":"Reading audio duration…","audio_load_error":"Could not read this audio file. Please try another file.","play":"Play","pause":"Pause","seek":"Seek audio","retry":"Try again","search_history":"Search Stem Splitter history","history_load_error":"Could not load history. Please try again.","result_unavailable":"This result is unavailable. Please try again.","audio_credit_info":"Estimated credit usage: {credits}","estimated_duration":"Estimated duration","pricing_label":"{credits} credits / minute, billed per second","audio_separation":"Stem Splitter","default_prompt":"Default: Vocals","demo":{"audio_samples":"samples","back_to_samples":"Back to Samples","play_track":"Click a track to play","playing":"Playing: {track}","poweredBy":"Powered by Fish Audio Separation and <link>SAM Audio</link>","samples":{"0":"Steady Country Yearning","1":"Glowing Night Drive","2":"Pop Rose Memories","3":"German Bouncy Bop","4":"Jazzy Easy Street","keys-wind":{"0":"Rustic Folk Melody","1":"Classic String Quartet","2":"Epic Orchestral Piano","3":"Digital Synth Rhythm","4":"Serene Woodwind Medley"},"main":{"0":"Steady Country Yearning","1":"Glowing Night Drive","2":"Pop Rose Memories","3":"German Bouncy Bop","4":"Jazzy Easy Street"},"piano-strings":{"0":"Serene String Melancholy","1":"Breezy Village Waltz","2":"Stately Evening Ballroom","3":"Ethereal Dreamscape Echoes","4":"Grand Orchestral Ending"}},"separated_tracks":"Separated Tracks","title":"Try {isolationType} Now","tracks":{"bass":"Bass","drums":"Drums","guitar":"Guitar","original":"Original","vocals":"Vocals"},"view_separated_tracks":"View Separated Tracks"},"features":{"accurate":{"description":"Advanced AI models trained on millions of audio samples for precise source separation","title":"High Accuracy"},"fast":{"description":"Process your audio files in seconds with our optimized cloud infrastructure","title":"Fast Processing"},"flexible":{"description":"Isolate vocals, drums, bass, guitar, piano, and more from any audio track","title":"Multiple Sources"},"quality":{"description":"Maintain audio fidelity with studio-grade output quality","title":"Studio Quality"},"sam":{"description":"Use natural language prompts to isolate any sound with <link>SAM Audio</link>","title":"Prompt-Based Separation"},"subtitle":"Separate any audio into its component sources with precision","subtitleType":{"bass":"Ispolate bass from any audio track with precision","default":"Separate any audio into its component sources with precision","drums":"Isolate drums from any audio track with precision","guitar":"Isolate guitar from any audio track with precision","keys":"Isolate keys from any audio track with precision","percussion":"Isolate percussion from any audio track with precision","piano":"Isolate piano from any audio track with precision","strings":"Isolate strings from any audio track with precision","vocals":"Isolate vocals from any audio track with precision","wind":"Isolate wind instruments from any audio track with precision"},"title":"{isolationType} Features","versatile":{"description":"Support for MP3, WAV, FLAC, M4A, and more audio formats","title":"Format Support"}},"form-error":{"audio_length":"Audio duration should be under 90s (free) or 210s (premium)","audio_required":"Please Upload an Audio File","audio_size":"File size should be less than 32MB","file_type":"Please upload a valid audio or video file","video_has_audio":"Video must contain audio track"},"introduction":{"description":"Unlock the power of AI-driven {isolationType} technology. Extract vocals, instruments, and individual audio sources from any track with unprecedented clarity. Perfect for music producers, content creators, and audio professionals.","title":"{isolationType} Like Never Before","tryFree":"Try It Free","viewHistory":"View History"},"isolate_for":"Isolate for","isolated":"Isolated","isolation-types-full":{"bass":"Bass Isolation","drums":"Drums Isolation","guitar":"Guitar Isolation","keys":"Keys Isolation","percussion":"Percussion Isolation","piano":"Piano Isolation","strings":"Strings Isolation","vocals":"Vocal Isolation","wind":"Wind Instrument Isolation"},"isolation-types-verb":{"bass":"Isolate Bass","drums":"Isolate Drums","guitar":"Isolate Guitar","keys":"Isolate Keys","percussion":"Isolate Percussion","piano":"Isolate Piano","strings":"Isolate Strings","vocals":"Isolate Vocals","wind":"Isolate Wind Instruments"},"isolation-types":{"bass":"Bass","drums":"Drums","guitar":"Guitar","keys":"Keyboards","original":"Original","percussion":"Percussion","piano":"Piano","sam_audio":"SAM Audio","strings":"Bowed Strings","vocals":"Vocals","wind":"Wind Instruments"},"library":{"subtitle":"Explore all available audio isolation types","title":"Audio Separation Types"},"loginToSeparateAudio":"Please log in to separate your audio","processing":"Processing","separating":"Separating","prompt":"Prompt","residual":"Residual","separate":"Separate Audio","separate_audio":"Separate Audio","topBar":{"subtitle":"Audio separation powered by advanced AI models to isolate vocals and instruments from any audio track","subtitleTrack":"Audio separation powered by advanced AI models to isolate {isolationType} from any audio track","title":"Stem Splitter"},"upload":"Upload","upload_description":"Drag and drop an audio file here, or click to upload","uploaded":"Uploaded:","usecases":{"content-creation":{"button":"Start Creating","description":"Extract clean vocals or background music for your videos, podcasts, and social media content. Perfect for creators who need professional audio.","title":"Content Creation"},"remixing":{"button":"Start Remixing","description":"Extract individual stems for remixing and sampling. Get clean isolated tracks of drums, bass, vocals, and more.","title":"Music Remixing"},"subtitle":"Transform your audio workflow with AI-powered {isolationType}","title":"{isolationType} Use Cases","transcription":{"button":"Try It Now","description":"Isolate speech from background noise for cleaner transcriptions. Ideal for podcasts, interviews, and video content.","title":"Clean Audio for Transcription"}},"tab_separate":"Separate","tab_history":"History","history_results":"Generation History","no_history":"No Stem Splitter tasks yet.","state_pending":"Queued","state_processing":"Processing...","state_finished":"Finished","state_failed":"Stem splitting failed","state_legacy_unavailable":"Legacy result unavailable","loginToViewHistory":"Please log in to view your history.","cancel":"Cancel","delete":"Delete","delete_confirm_title":"Are you sure you want to delete this task?","delete_confirm_description":"Delete this task and all of its separated audio files? This action cannot be undone.","delete_success":"Task deleted successfully","delete_error":"Failed to delete task","processing_notice":"Processing... You can wait here or check back shortly.","replace_file":"Replace File","submission_failed":"Couldn't submit this audio. Your file and settings have been kept. Try again."},"audio-translation":{"demo":{"authenticationRequired":"Authentication Required","loginToContinueDemo":"Please log in or sign up to translate more audio.","output":"Output","title":"Try Audio Translation Now"},"features":{"context":{"description":"AI understands context and idioms for more accurate translated transcripts","title":"Context-Aware"},"fast":{"description":"Get translated transcripts in seconds with our optimized infrastructure","title":"Fast Processing"},"multilingual":{"description":"Support for 50+ language pairs with native-level translation quality","title":"Multilingual"},"privacy":{"description":"Your audio files are processed securely and never stored","title":"Privacy First"},"seamless":{"description":"Transcribe and translate audio into text in your target language","title":"Seamless Translation"},"subtitle":"Convert audio to translated text in any language","title":"Audio Translation Features","voicePreservation":{"description":"Preserve speaker identification and timestamps in translated output","title":"Speaker Detection"}},"langGrid":{"otherLanguages":"Other Languages","popularTranslations":"Popular Translations","subtitle":"Translate audio between any language with a single click","title":"Related Translations"},"langs":{"auto":"Auto","cantonese":"Cantonese","english":"English","japanese":"Japanese","korean":"Korean","mandarin":"Mandarin"},"topBar":{"subtitle":"Transcribe and translate audio from {from} to {to} quickly and accurately","subtitleDefault":"Transcribe and translate audio into text in any language","title":"{from} to {to}","titleDefault":"Audio Translation"},"usecases":{"globalContent":{"button":"Learn More","description":"Make educational content, lectures, and tutorials accessible worldwide. Generate translated transcripts for e-learning platforms and online courses.","title":"Educational Content"},"podcastTranslation":{"button":"Start Translating","description":"Transcribe and translate business meetings with international teams. Get accurate minutes and action items in any language.","title":"Meeting Transcription"},"subtitle":"Transform audio content into translated text for global reach","title":"Audio Translation Use Cases","videoDubbing":{"button":"Try It Now","description":"Generate translated scripts for video dubbing and subtitle creation. Perfect for YouTube, films, and marketing content.","title":"Video Dubbing"}}},"billing-history":{"actions":"Actions","agent_billing_developers_hint":"Balance and top-ups are shared with your API credit. See detailed billing records in the <link>developers dashboard</link>.","agent_trial_balance":"Trial balance: {remaining} of {total} left","agent_charge_days":"{count, plural, one {# day} other {# days}}","agent_charge_free":"Trial","agent_charge_trial_part":"{amount} from trial","agent_charge_kind_agent_minutes":"Agent minutes","agent_charge_kind_cold_transfer":"Cold transfer","agent_charge_kind_number_rental":"Phone number rental","agent_charge_kind_phone_surcharge":"Phone surcharge","agent_charge_kind_warm_transfer":"Warm transfer","agent_charge_minutes":"{count} min","agent_charge_type":"Type","agent_charge_usage":"Usage","agent_charges":"Agent charges","amount":"Amount","billing_history":"Billing History","billing_id":"Billing ID","copied_title":"Copied to clipboard","created":"Created","export_scope_notice":"Only the newest {count} records were exported. Older records require a server-side export.","next":"Next","no_agent_charges":"No agent charges yet","no_billing_history":"No billing history","previous":"Previous","source":"Source","view_invoice":"View Invoice","window_limited":"Showing only the records available in the current history window.","agent_charge_kind_llm_surcharge":"Premium model","agent_charge_kind_llm_tokens":"LLM tokens","agent_charge_kind_simulation_runs":"Simulation test","agent_charge_replies":"{count, plural, one {# agent reply} other {# agent replies}}","agent_charge_participant_agent":"Agent","agent_charge_participant_simulated_user":"Simulated user","agent_charge_participant_judge":"Judge","agent_charge_tokens":"{count} tokens","agent_charge_token_input":"Input","agent_charge_token_cache_read":"Cache read","agent_charge_token_cache_write_5m":"Cache write (5 min)","agent_charge_token_cache_write_1h":"Cache write (1 hour)","agent_charge_token_output":"Output","agent_charge_token_rate":"{rate} USD / 1M tokens","credit_sources":{"paid_top_up":"Paid API top-up","admin_grant":"Admin grant / adjustment","credit_link_grant":"Credit-link grant","credit_link_rollback":"Credit-link grant reversal","membership_grant":"Membership subscription grant","membership_top_up_grant":"Membership top-up grant","welcome_grant":"Welcome credit"}},"blog":{"back-to-blog":"BLOG","blog-label":"Blog","clear-filter":"Clear filter","cta-description":"Start generating the highest quality audio today.","cta-login":"Log in","cta-login-prompt":"Already have an account?","cta-signup":"Sign up for free","cta-title":"Create voices that feel real","faq-title":"Frequently Asked Questions","filter-all":"All","go-to-homepage":"Go to homepage","no-posts":"No posts yet","no-posts-description":"We're working on new content. Check back soon for updates.","no-posts-for-tag":"No posts found with tag \"{tag}\"","on-this-page":"On this page","read-article":"READ ARTICLE","read-more-from-author":"Read more from {name}","recent-blogs":"Recent Articles","recommended-posts":"Recommended posts","share-article":"Share this article","view-all":"View all","filter-recommended":"Recommended"},"closure":{"danger-title":"Close account","danger-section-title":"Close Account","danger-description":"Permanently close your Fish Audio account. Your profile will be anonymized, and you’ll no longer be able to access this account.","keep-account-question":"Want to stop paying but keep your account?","keep-account-link":"Cancel your subscription instead","settings-keep-account":"Want to stop paying but keep your account? <link>Cancel your subscription</link> instead.","danger-button":"Close account","page-title":"Close account","back":"Back","preview":{"title":"Before you close your account","blockers-title":"Resolve these first","continue":"Continue","already-pending":"Your account already has a pending closure request.","load-failed":"We couldn't load your account status. Please try again.","retry":"Retry","window-notice":"Closure takes effect after {days} days. Until then, you can cancel it anytime by signing back in and recovering your account."},"blockers":{"negative_api_balance":{"title":"Outstanding API balance","description":"Your API credit balance is negative. Settle the outstanding amount before closing your account."},"past_due_subscription":{"title":"Past-due subscription","description":"A subscription payment is past due. Settle it before closing your account."},"open_stripe_invoice":{"title":"Open invoice","description":"You have an open invoice that hasn't been paid yet."},"unpaid_auto_charge_invoice":{"title":"Unpaid auto-charge invoice","description":"An automatic charge is still unpaid. Settle it before closing your account."},"withdrawal_in_flight":{"title":"Withdrawal in progress","description":"A wallet withdrawal is still being processed. Wait for it to complete before closing your account."},"team_ownership":{"title":"You own teams with other members","description":"Transfer ownership or remove the other members before closing your account.","detail":"{count, plural, one {# team needs} other {# teams need}} a new owner."},"team_owner_invariant":{"title":"A team would be left without an owner","description":"Closing your account would leave a team without any owner. Transfer ownership first, then try again."},"team_step_failed":{"title":"Team cleanup didn't finish","description":"We couldn't finish detaching your teams. Contact support to complete your account closure."},"wallet_balance":{"title":"Remaining wallet balance","description":"Your wallet still has a balance. Withdraw it first, or choose to forfeit it below.","personal-entry":"Personal wallet: {amount}","team-entry":"Team wallet ({team}): {amount}","forfeit-label":"I understand my remaining wallet balance will be permanently forfeited."},"enterprise_contract":{"title":"Active enterprise contract","description":"Your account is covered by an enterprise contract. Contact support to close it."},"enterprise_invoice_unsettled":{"title":"Unsettled enterprise invoices","description":"There are unsettled enterprise invoices on your account. Contact support to resolve them."},"resolve-billing":"Go to billing","resolve-wallet":"Go to wallet","resolve-team":"Go to team settings","resolve-support":"Contact support"},"impacts":{"title":"What happens when you close your account","subscription":{"title":"Subscription","description":"Your subscription will be canceled. Any remaining paid time is forfeited and will not be refunded.","period-end":"Your current billing period ends on {date}.","ends-soon":"Your current billing period ends on {date} — inside the closure window, so your remaining paid time will be lost almost immediately.","soon":"soon"},"credits":{"title":"Prepaid credits","description":"Your remaining {count} prepaid credits will be permanently voided."},"api-keys":{"title":"API keys","description":"{count, plural, =0 {API access will be suspended immediately.} one {# API key will be suspended immediately.} other {# API keys will be suspended immediately.}}"},"pvc":{"title":"Professional voice clones","description":"{count, plural, one {# in-progress professional voice clone job} other {# in-progress professional voice clone jobs}} will be released."},"public-voices":{"title":"Published voices","description":"{count, plural, one {# public or unlisted voice} other {# public or unlisted voices}} you published will stay available under an anonymous profile. Delete them before closing if you don't want them to remain."},"recent-topups":{"title":"Recent top-ups","description":"You made large top-ups recently. These amounts will not be refunded:"}},"verify":{"title":"Verify it's you","subtitle":"We sent a 6-digit code to {email}. Enter it below to continue.","no-code":"Didn't receive the code?","resend":"Resend code","continue":"Continue"},"confirm":{"title":"Confirm account closure","warning":"This schedules your account for closure. After {days} days it will be permanently closed and cannot be recovered. You will be signed out on all other devices.","email-label":"Type your email to confirm","reason-label":"Why are you leaving? (optional)","reason-placeholder":"Tell us what we could have done better","submit":"Close my account","success":"Your account is scheduled for closure."},"errors":{"blocked":"Your account can't be closed yet. Resolve the items listed first.","too-many-attempts":"Too many incorrect codes. We're sending you a new code.","otp-send-failed":"Failed to send the verification code. Please try again.","email-mismatch":"The email you typed doesn't match your account email.","otp-invalid":"That code is incorrect. Please check it and try again.","otp-expired":"That code has expired. Request a new one below.","otp-used":"That code has already been used. Request a new one below.","generic":"Something went wrong. Please try again."},"pending-title":"Your account is scheduled to close","pending-description":"Your account will be permanently closed on {date}. After that it can no longer be accessed or recovered.","pending-description-no-date":"Your account is scheduled to be permanently closed.","pending-effect-subscription":"Your subscription will not renew.","pending-effect-api-keys":"Your API keys are suspended immediately.","pending-effect-data":"Your profile will be anonymized and your private content will no longer be accessible.","pending-effect-voices":"Public and unlisted voices you published stay available under an anonymous profile. To remove them, recover your account and delete them first.","finalizing-notice":"Closure is in progress. Your account can no longer be recovered.","recover-button":"Recover my account","logout-button":"Log out","recover-confirm-title":"Recover your account?","recover-confirm-description":"This cancels the scheduled closure and restores access to your account.","recover-confirm-cancel":"Cancel","recover-confirm-action":"Recover account","recover-success":"Your account has been recovered.","recover-error":"Could not recover your account. Please try again.","blocked-banner-title":"Your account closure could not be completed","blocked-banner-unknown-reason":"An account issue we can't display here — contact support for details.","blocked-banner-support":"Contact support","blocked-banner-dismiss":"Dismiss","admin-close-account":"Close account","admin-warning":"Closing schedules this account for permanent closure (pseudo-delete): profile anonymized, sessions revoked, API keys suspended immediately. Published voices remain available under an anonymous author.","admin-reason-label":"Reason","admin-reason-placeholder":"Why is this account being closed?","admin-reason-required":"A reason is required.","admin-immediate-label":"Close immediately","admin-immediate-description":"Finalize the closure now instead of waiting for the grace period.","admin-override-label":"Override blockers","admin-override-description":"Skips all safety checks and forfeits any remaining wallet balance. Outstanding money movement is written off. This cannot be undone — use only when support has explicitly cleared it.","admin-blocked-title":"Closure blocked","admin-blocked-hint":"Resolve these blockers or enable \"Override blockers\" to force the closure.","admin-close-success":"Account closure requested.","admin-close-error":"Failed to close the account. Please try again.","admin-confirm":"Confirm close"},"cms":{"actions":"Actions","cancel":"Cancel","cms":"CMS","confirm_delete":"Delete","content":"Content","content_id":"ID","create_button":"Create Mdx","create_title":"Create Mdx","created_at":"Created At","delete_button":"Delete Mdx","delete_mdx_description":"Are you sure you want to delete Mdx?","delete_mdx_title":"Delete Mdx","language":"Language","modify_button":"Modify Mdx","modify_title":"Modify Mdx","submit":"Submit","updated_at":"Updated At"},"credit-link":{"buttons":{"claim":"Claim reward","goToApp":"Go to app","returnHome":"Return home","tryAgain":"Try again"},"claimedBanner":{"and":" and ","api":"${amount} API credits","description":"You just received {rewardPart}. Enjoy creating with Fish Audio!","package":"{amount} package credits","title":"Reward claimed","membership":"{amount} {unit} {plan} membership"},"emptyStates":{"loadError":{"description":"Something went wrong while retrieving this credit link. Please refresh or try again later.","title":"Unable to load link"},"notFound":{"description":"This credit link no longer exists or has been removed. Please contact the sender for a new link.","title":"Link unavailable"}},"footer":{"signIn":"Sign in to claim this reward.","signInMonthly":"Sign in to claim this reward. The same user can redeem once per calendar month."},"heading":{"api":"${amount} API credits","base":"Claim","package":"{amount} package credits","separator":" + ","membership":"{amount} {unit} {plan} membership"},"messages":{"success":"Reward added to your account."},"status":{"active":"Active","deleted":"Deleted","exhausted":"Fully claimed","expired":"Expired","unknown":"Unavailable"},"statusMessage":{"active":"Sign in and click Claim to add these credits to your account instantly.","deleted":"This link has been disabled.","exhausted":"All rewards available through this link have been claimed.","expired":"This link has expired and can no longer be used.","unknown":"This link is currently unavailable."},"whitelist-not-eligible":"Sorry, your account is not eligible to claim from this link.","membershipUnits":{"day":"day","dayPlural":"days","week":"week","weekPlural":"weeks","month":"month","monthPlural":"months","year":"year","yearPlural":"years"},"planLabels":{"lite":"Lite","plus":"Plus","pro":"Pro","max":"Max"}},"dashboard":{"title-tagline":"Best AI Text To Speech & Free Voice Cloning","actionCards":{"cloneVoice":{"description":"Create a digital copy of your voice with our advanced AI technology","title":"Clone Your Own Voice"},"fantasyRoleplay":{"description":"Create immersive audio experiences and bring characters to life","title":"Fantasy Role Play"},"generateSpeech":{"description":"Convert any text to natural-sounding speech in seconds","title":"Generate Speech"}},"breadcrumb":{"delete":"Delete","rename":"Rename"},"home":{"ask_anything":"Say anything","creativePrompt":{"generationCredits":"{count} credits","allVoice":"All Voice","autoTag":"Auto Tag","credits":"50 credits","downloadResult":"Download generated audio","generate":"Generate","generating":"Generating","generatingAudio":"Generating...","downloadSoundEffectResult":"Download generated sound effect","imageCount":"1","imageMoreOptions":"More options","imageMoreOptionsCompact":"More","imageGenerateCompact":"Gen.","imageModel":"Sora","imagePlaceholder":"Describe your image or reference by using @","imagePromptLabel":"Image prompt","imageReferenceFilename":"FilenameFilena..","videoReferenceFilename":"Filename..","imageRefs":"Image refs","imageResolution":"1K","imageRatio":"9:16","lipSyncAvatar":"Avatar","lipSyncPlaceholder":"Describe your video, and use @ to reference image, video, or audio...","lipSyncPromptLabel":"Lip sync prompt","lipSyncSamples":{"passionate":"Passionate & Energetic Articulation","subdued":"Subdued & Calm Delivery","whisper":"Whisper & Muffled Lip Motion"},"lipSyncSpeech":"Speech","lipSyncSpeechFilename":"Filename..","imageSampleValues":{"claymation":"A detailed 3D claymation render with soft studio lighting, hand-crafted texture, and playful rounded shapes.","cyberpunk":"Photorealistic portrait of a handsome East Asian man in his early 20s, K-pop idol look, pale smooth skin, delicate features, dark almond eyes, full lips, fluffy layered black hair with wispy curtain bangs covering his eyebrows. He wears an oversized black cotton crew-neck t-shirt with elbow-length sleeves, sitting behind a light oak wooden desk, both hands resting flat on the desk. In front of him a champagne-silver large-diaphragm condenser micr","fantasy":"Dark fantasy concept art with cinematic rim light, ancient stone architecture, mist, and intricate costume details."},"imageSamples":{"claymation":"3D Claymation / Render","cyberpunk":"Cyberpunk Neon Aesthetic","fantasy":"Dark Fantasy Concept Art"},"loadingProgress":"60%","model":"Fish audio S2 Pro","moreOption":"More option","moreToolsMenu":{"storyStudio":"Audiobooks","voiceChanger":"Voice changer"},"playResult":"Play generated audio","playSoundEffectResult":"Play generated sound effect","playVideoResult":"Play generated video","placeholder":"Type your text with audio tags like [laughing] to turn into expressive speech...","sampleValues":{"ad":"[excited] Meet the faster way to turn ideas into broadcast-ready voiceover, right from your browser.","joke":"[laughing] I told my microphone it had great range, and now it will not stop amplifying the compliment.","story":"[narration] At sunrise, the harbor woke one light at a time, and every boat seemed ready to tell a secret."},"samples":{"ad":"Record an ad","joke":"Tell a joke","story":"Narrate a story"},"soundEffectFreeCredits":"Free for a limited time","soundEffectGenerateError":"Failed to generate sound effect. Please try again.","soundEffectPaidCredits":"50 credits","soundEffectPlaceholder":"Describe the sound effect you want to generate...","soundEffectSampleValues":{"atmosphere":"A cinematic underwater ambience with muffled bubbles, distant current movement, and soft low-frequency resonance.","forest":"Dense forest birds and wind with layered leaves, distant calls, and a natural outdoor stereo field.","underwater":"Underwater muffled atmosphere with gentle pressure, filtered movement, and slow drifting textures."},"soundEffectSamples":{"atmosphere":"Underwater Muffled Atmosphere","forest":"Dense Forest Birds & Wind","underwater":"Underwater Muffled Atmosphere"},"soundEffectTimeout":"The sound effect is still generating. View it in Sound effect history.","title":"What do you want to create today?","tools":{"audioSeparation":"Stem Splitter","image":"Image","lipSync":"Lip sync","moreTools":"More tools","soundEffect":"Sound effect","textToSpeech":"Text to speech","video":"Video","voiceClone":"Voice Clone","voiceDesign":"Voice Design"},"toolsLabel":"Creative tools","videoAudio":"On","videoDuration":"4s","videoEndFrame":"End frame","videoNegativePrompt":"Neg Prompt","videoPlaceholder":"Describe framing, background, lighting, style, and body movement (optional)...","videoPromptLabel":"Video prompt","videoStartFrame":"Start frame","viewInImageVideo":"View in Image & video","viewInSoundEffect":"View in sound effect","viewInTts":"View in TTS","voiceMenuTitle":"Voice","voice":"Selene","quickSamples":{"textToSpeech":{"story":"Narrate a story","joke":"Tell a joke","ad":"Record an ad"},"voiceDesign":{"storyteller":"Warm storyteller","host":"Energetic host","meditation":"Calm meditation guide"},"soundEffect":{"rain":"Rain on window","door":"Sci-fi door","crowd":"Crowd cheer"},"image":{"portrait":"Cinematic portrait","product":"Product shot","illustration":"Dreamy illustration"},"video":{"ocean":"Ocean flyover","city":"Neon city walk","bloom":"Time-lapse bloom"}},"quickSampleValues":{"textToSpeech":{"story":"Once upon a time, in a town where it always rained, a girl found an umbrella that could speak. [whispers] \"Take me to the sea,\" it said. [pause] And that was the beginning of everything.","joke":"Why don't scientists trust atoms? [pause] Because they make up everything! [laughs] I know, I know — classic. But you smiled, didn't you?","ad":"[excited] Meet the new Fish Audio S2 Pro — your voice, any language, in seconds. Try it free today and hear the difference. [warm] Fish Audio. Say it your way."},"voiceDesign":{"storyteller":"A warm, low-pitched female voice , slow-paced and slightly husky, like reading bedtime stories by a fireplace. Gentle, trustworthy, with soft breathiness.","host":"A bright, fast-paced male voice , high energy with rising intonation, like a game-show host hyping up the crowd. Crisp articulation, always smiling.","meditation":"A soft, airy, gender-neutral voice, very slow tempo with long pauses, almost whispering. Soothing and steady, like a guided-meditation narrator at midnight."},"soundEffect":{"rain":"Gentle rain tapping on a glass window, occasional distant thunder, cozy indoor ambience, loopable, 30 seconds.","door":"Heavy spaceship airlock door opening: hydraulic hiss, metallic clunk, deep servo hum, with a subtle sci-fi energy shimmer at the end.","crowd":"Stadium crowd erupting into cheers and applause after a goal, whistles and drums in the background, big open-air reverb, energetic."},"image":{"portrait":"Close-up portrait of a silver-haired woman in neon rain, cyberpunk city bokeh background, cinematic lighting, shallow depth of field, film grain, 35mm.","product":"Minimalist product photo of a matte-black smart speaker on a stone pedestal, soft studio lighting, beige background, subtle shadow, high-end commercial style.","illustration":"A whale swimming through clouds above a tiny coastal town at sunset, soft pastel palette, children's-book illustration style, gentle texture, wide shot."},"video":{"ocean":"Drone shot flying low over turquoise ocean waves at golden hour, camera slowly rising to reveal a volcanic island ahead, cinematic color grading, smooth motion.","city":"First-person walk through a rainy neon-lit alley in Tokyo at night, reflections on wet pavement, steam rising from food stalls, slow steady camera, moody atmosphere.","bloom":"Macro time-lapse of a white peony blooming, dew drops on petals, dark background, soft rim light, ultra-detailed, 4K nature-documentary style."},"lipSync":{"subdued":"Speak calmly with a relaxed expression, subtle lip movements, and gentle, natural head movements.","whisper":"Whisper softly with small, restrained lip movements, a relaxed face, and minimal head movement.","passionate":"Speak with passion and energy, clear articulation, expressive facial movements, and lively, natural gestures."}}},"actions":{"download":"Download","more":"More"},"features":{"agent":{"description":"Build and embed real-time AI voice customer service into your website","title":"Voice Agents"},"audio_separation":{"description":"Separate vocals, drums, bass and other stems from any audio","title":"Stem Splitter"},"image_video":{"description":"Generate and sync visuals, videos, and lips with AI","title":"Image & Video"},"sound_effects":{"description":"Generate unique sound effects from text descriptions","title":"Sound Effects"},"tts":{"description":"Convert any text to natural-sounding speech in seconds","title":"Text to Speech"},"voice_cloning":{"description":"Create a digital copy of any voice with our advanced AI","title":"Create Voice"}},"seedance_banner":{"title":"SEEDANCE <version>2.5</version> is now live","description":"30-second videos. Audio references. More control.","cta":"Try now","aria_label":"Try Seedance 2.5 video generation","contest":{"title":"Halloween Creation Contest","date":"OCT 29 – NOV 4","description":"Create. Share. Win.","cta":"Subscription plans + credits","aria_label":"Join the Halloween Creation Contest on Discord"},"mcp":{"title":"Fish Audio MCP: Major Upgrade","description":"Now with image and video generation.","cta":"Connect now","aria_label":"Open the Fish Audio MCP server setup guide"},"heygen_video":{"title":"HeyGen Video is now live","description":"Looks expensive. Isn't.","cta":"Try now","aria_label":"Try HeyGen Video generation"},"aurora_v2":{"title":"Creatify Aurora V2 is now live","description":"Your photo. Your voice. A full minute.","cta":"Make it talk","aria_label":"Try Creatify Aurora V2 talking avatar generation"}},"projects":{"title":"Projects","empty_title":"Start your audio creation journey","empty_description":"Audiobooks combines text, voices, and sound effects on a multi-track timeline.","create_action":"Create a new project","edited_today":"Edited Today {time}","edited_yesterday":"Edited Yesterday {time}","edited_on":"Edited {date}","voices_count":"{count} voices","no_voices":"No voices yet"},"history":{"empty_description":"No history yet","delete_dialog":{"title":"Delete voice","description":"This action cannot be undone. Please proceed with caution.","cancel":"Cancel","confirm":"Delete"}},"voices":{"empty_description":"No voices yet"},"recent":{"banner":{"coming_now":"is coming now","description":"30s videos. Frame level editing. Highest Detail","try_now":"Try now"},"title":"Recent"},"sections":{"features":"Features","blog":"Latest Blog","my_voices":"My Voices","studios":"Agentic Creative Studio"},"studios":{"audio":{"description":"Create immersive audio experiences and bring characters to life","title":"Audio Studio"},"video":{"description":"Build and edit videos with AI-powered audio","title":"Video Studio"}},"try_it":"Try it","view_all":"View All"},"join_discord":"Join Discord to claim more credits","title":"Dashboard","feedback":{"button":"Feedback","cancel":"Cancel","captureScreenshot":"Capture screenshot","capturing":"Capturing...","placeholder":"Tell us what's on your mind...","removeScreenshot":"Remove","submit":"Submit","success":"Thank you for your feedback!","title":"Send Feedback"},"support":"Support"},"primitives":{"close":"Close","dismiss-notification":"Dismiss notification","notifications":"Notifications","select-no-matches":"No matches","select-options":"Options","select-search":"Search"},"data-table":{"empty_data":"No data available","page_number":"Page","rows_per_page":"Rows per page"},"date-picker":{"last14":"Last 14 days","last30":"Last 30 days","last90":"Last 90 days","last7":"Last 7 days","allTime":"All time","lastMonth":"Last Month","lastWeek":"Last Week","pick_a_date":"Pick a date","thisMonth":"This Month","thisWeek":"This Week","today":"Today","yesterday":"Yesterday"},"multiSelect":{"removeChip":"Remove {label}"},"developers":{"apiSelfhost":{"heading":"Use our API. Or self-host the model","hosted":{"bullet1":"WebSocket streaming, REST, Python + TypeScript SDKs","bullet2":"$15 / 1M UTF-8 bytes — no commit","bullet3":"Inline direction syntax in every call","bullet4":"Same model that ships open-weight","cta":"Get an API key","description":"Cloud API, pay-as-you-go, $15 per million characters. The fastest path to production for teams that don't need to operate the model themselves.","title":"Hosted API · Any team"},"selfHost":{"bullet1":"WebSocket streaming, REST, Python + TypeScript SDKs","bullet2":"$10k/month","bullet3":"Effective floor: $120–150K/year","bullet4":"Direct access to our research team","cta":"Talk to sales","description":"Our open-source models — fish-speech, S1, S2 — ship as open weights with a paid commercial license. Deploy to your VPC, data center, sovereign cloud, or air-gapped environment. A premium engagement for high-volume teams needing data residency, fine-tuning, or regulated deployment.","title":"Self-host the model."},"subcopy":"Cloud API for any team building today. Self-host as a premium Enterprise engagement when production demands it."},"cta":{"getApiKey":"Get API key","headline":"Get to production this weekend","readDocs":"Read the docs","subcopy":"S2.1 Pro Free is free to call. No card required."},"faq":{"a1":"Bearer token via the Authorization: Bearer $FISH_API_KEY header. Generate keys in the dashboard, scope them per project, rotate from the API.","a2":"Sub-second time-to-first-audio over WebSocket streaming on the hosted API. Self-hosted deployments run lower. Exact figures depend on region, model, and payload — see <docs>the docs</docs> for current benchmarks.","a3":"Yes — WebSocket streaming for both TTS and ASR, designed for agent-style bidirectional interaction. Examples in <docs>the streaming guide</docs>.","a4":"Yes — on the Enterprise tier. Our open-source models (fish-speech, S1, S2) ship as open weights with a paid commercial license. Deploy to your VPC, on-prem, sovereign cloud, or air-gapped environment. Self-host is a premium engagement with a one-time platform setup ($10–30K), $10K/mo minimum, and a 12-month commitment — effective floor $120–150K/year. <sales>Talk to sales</sales> about Enterprise.","a5":"Inline bracket syntax — write [warm], [near-whisper], or any of 15,000+ supported tags directly in the text you send. No separate parameter, no list to pick from. Direction travels with the text in every API call.","a6":"Yes. Instant Voice Clone (IVC) from a 30-second sample. Professional Voice Clone (PVC) for studio-grade replicas. Consent attestation is part of the API call.","a7":"Yes, with a paid service. Our <terms>Terms of Use</terms> license commercial use to users of Paid Services; other use is limited to personal, non-commercial projects. Cloned voices require consent verification. Audio watermarking is built into the cloning pipeline.","a8":"We publish a head-to-head breakdown at <vs>fish.audio/vs</vs>. Most production migrations take under a week — same shape of API, similar SDK ergonomics. Talk to us if you need integration support.","heading1":"Frequently asked","heading2":"questions","q1":"How does authentication work?","q2":"What latency should I expect?","q3":"Do you support streaming?","q4":"Can I self-host the model?","q5":"How does voice direction work?","q6":"Can I clone custom voices via API?","q7":"Is the audio safe for commercial use?","q8":"Migrating from ElevenLabs, Cartesia, or Rime?"},"features":{"body1":"Our open-source models — fish-speech, S1, and S2 — ship as open weights with a paid commercial license. Self-host in your VPC, on-prem, sovereign cloud, or air-gapped environment when production demands it. Self-host is an Enterprise-tier engagement — see below.","body2":"[warm], [near-whisper], [reassuring] — direction travels with the text itself. No separate parameter, no list to pick from, no schema migration when the tag set grows.","body3":"Listeners can't reliably distinguish S2.1 Pro from human in blind evaluation. 581 head-to-head comparisons. Methodology and raw audio published.","body4":"Same model behind HeyGen, Pictoria, Dubbing AI, and Plaud. Pay-as-you-go from your first call. No \"contact us\" for production rates.","button1":"Read the licensing terms","button2":"Browse the direction library","button3":"Read the research","button4":"See full pricing","card1":"Open weights. Paid commercial license.","card2":"15,000+ direction tags. Inline in any call.","card3":"Audio Turing Test: 0.515.","card4":"$15 per million characters. From your first call.","heading":"Built for the real-time stack."},"hero":{"getApiKey":"Get API key","headline1":"Production-grade voice AI.","headline2":"Priced like a startup.","headline3":"Open like a community.","readDocs":"Read the docs","subcopy":"Ship lifelike speech, voice cloning, and transcription with one API. Official Python and TypeScript SDKs. Sub-second latency. Pay-as-you-go pricing from your first call.","s21FreeBadge":"S2.1 Pro is now free for developers"},"heroDemo":{"caption":"S2.1 Pro running live. Pick a voice, type a line, hear it back. The same model behind HeyGen, Retell, and Sanas in production — no signup, no sales call, no demo environment.","code":"Code","tryIt":"Try it","fallbackNote":"Live generation isn't available right now, so you're hearing a saved sample of this voice.","unavailableNote":"Live generation isn't available right now. Get a free API key to generate your own."},"logoWall":{"categories":{"education":"Education & Learning","interactiveSocial":"Interactive & Social","videoVoiceover":"Video Voiceover, \nDubbing & Music","voiceAgents":"Voice Agents & \nConversational AI"},"heading":"Trusted by teams building voice in production"},"pricing":{"button":"See full pricing","headline1":"Pricing that","headline2":"doesn't punish growth","subline":"Pay-as-you-go from day one. No seat fees. No annual commits. No \"contact us\" for production rates.","freeTerms":"S2.1 Pro Free is free through November 30, 2026, with no SLA, and requests may be used to improve model quality. <link>Read the details</link>","table":{"asr":"ASR","asrPrice":"$0.36 / hour","model":"Model","modelName":"Model name","pricing":"Pricing","tts":"TTS","ttsPrice":"$15 / 1M UTF-8 bytes","ttsFreePrice":"Free for developers"}},"quickstart":{"curlCardTitle":"CURL · TEXT TO SPEECH","headline1":"From signup to first audio in","headline2":"minutes.","pills":{"python":"Python SDK","rest":"REST","typescript":"TypeScript SDK","websocket":"WebSocket streaming"},"pythonCardTitle":"PYTHON SDK","subcopy":"No sales call required. Get an API key, install the SDK, and ship."},"resources":{"card1":{"body":"Head-to-head breakdowns by capability, price, and contract terms. Same-shape API; most production migrations finish in under a week.","cta":"See the comparison","title":"Coming from ElevenLabs, Cartesia, or Rime?"},"card2":{"body":"Audio Turing Test results, blind-evaluation methodology, and the open-weights license. The proofs behind every claim on this page.","cta":"Read the research","title":"The benchmarks, methodology, and raw audio"}},"useCases":{"card1":{"body":"Lip-syncable, emotion-aware TTS for AI avatar products. Inline direction tags drive performance, not just words.","pill":"# Avatar video","title":"Voice that holds up on camera"},"card2":{"body":"Sub-second turn-taking over WebSocket. Streaming TTS and ASR in one stack. Interruption-aware.","pill":"# Voice agent","title":"Real-time conversational AI"},"card3":{"body":"Notes-to-audio, prep tools, AI companions. Per-character pricing that scales with usage, not seats.","pill":"# Audio content & companions","title":"Dynamic spoken content."},"card4":{"body":"IVC from 30 seconds of audio. PVC for studio-grade replicas. Or browse the voice library and ship without cloning.","pill":"# Character apps","title":"Clone in 30 seconds. Or skip cloning entirely."},"heading":"What teams ship on Fish."},"signupCta":{"title":"Get a free API key"}},"error":{"copied":"Copied!","copy-details":"Copy Error Details","error-message":"Message","error-reference":"Error Reference","go-home":"Go Home","message":"An unexpected error occurred. Please try refreshing the page or contact support if the problem persists.","support-message":"Include the error details when contacting","title":"Something went wrong","try-again":"Try Again","unknown-error":"Unknown error"},"event":{"valentine":{"aigc-disclaimer":"AI-generated content is derived from users' public data. We do not claim copyright ownership. This content is for personal use only.","be-my-valentine":"Be my valentine","build-my-own":"Build my own","characters":"Characters","create-your-message":"Create your message","customize-character-and-message":"Customize character and message","edit-and-recreate":"Edit & Recreate","english":"English","enter-a-name":"Enter a name","enter-text-here":"Type your love letter here.","featured-characters":"Featured Characters","featured-characters-description":"All content generated by this model is user-generated and may not be accurate or reliable.","generate":"Generate","generate-with-random-character":"Generate with random character","generating":"Generating...","generating-love-letter":"Generating your love letter...","inspiration":"Inspiration","japanese":"Japanese","let":"Let","make-a-new-one":"Make a new one","metadata":{"description":"Create personalized AI voice love letters for Valentine's Day. Choose from thousands of voices and express your feelings in a unique way.","keywords":["AI Love Letter","Valentine's Day Voice Message","AI Voice Message","Fish Audio","Voice Generator","Text to Speech","Valentine's Day 2024","Digital Love Letter","AI Valentine","Romantic Message Generator"],"title":"Create AI Voice Love Letters - Fish Audio Valentine's Event"},"no-characters-found":"No characters found","now_is_on_live":"now is on live","random-character":"Random Character","result-metadata":{"description":"This love letter could not be found. Create your own AI-generated love letter with Fish Audio's Valentine's event.","description-short":"Listen to {character}'s love letter to {name}. Create your own romantic message with Fish Audio's Valentine's event.","description-with-text":"Listen to {character}'s love letter to {name}: {text}\nCreate your own romantic message with Fish Audio's Valentine's event.","image-alt":"{character}'s Avatar","not-found":"Love Letter Not Found - Fish Audio Valentine's Event","random-character":"Random Character","seo-keywords":["{character} Love Letter","{character} Voice Message","AI Love Letter","Valentine's Day Message","AI Voice Message","Fish Audio","Voice Over","AI Voice","Voice Generator","Text to Speech","Valentine's Day 2024","Romantic AI Message","Digital Love Letter","AI Valentine","Voice Love Letter"],"share-hashtags":["FishAudio","AIVoice","Valentine","ValentinesDay2024","LoveLetter"],"site-name":"Fish Audio Valentine's Event","title":"{character}'s Love Letter to {name} - Fish Audio Valentine's Event"},"search-characters":"Browse Public Content or Your Characters","select":"Select","selected-now":"Selected now","tips-1":"1. Type your name","tips-2":"2. Generate a love letter or write your own","to":"TO:","to-name":"To {name}","try-now":"Try now","voice-modal-to-explore":"Explore more than 10,000 voices"}},"forgot-password":{"continue":"Continue","dont_receive_code":"Didn't receive the code?","email_label":"Email","go_to_login":"Go to login","password_label":"New Password","password_mismatch":"Passwords do not match","password2_label":"Confirm Password","resend_otp":"Resend OTP","send_otp":"Send","submit_forgot_password":"Reset Password","subtitle_email":"Enter your email address and we'll send you an one-time password to reset your password.","subtitle_otp":"Check your email, we will send you a code to complete the verification","subtitle_password":"Enter your email address and we'll send you an one-time password to reset your password.","title_email":"Forgot Password","title_email_change":"Change Password","title_otp":"Verification Code","title_password":"New Password"},"m":{"bookmark":"Bookmark","by_author":"by {author}","cancel":"Cancel","clone":{"description":"Confirm whether to clone the model, this will create a private model that cannot be changed","title":"Clone Model"},"common":{"cancel":"Cancel","confirm":"Confirm"},"description":"Description","discover_more_tag_voices":"Discover More {tags} Voices","dislike":"Dislike","edit":"Edit","edit_details":"Edit Details","edit_model":"Edit Model","edit_sample":"Edit Sample","edit_samples":"Edit Samples","generate_sample_template":"Generate Sample","generating_sample":"Generating","new_sample":"New Sample","explore-related-models":"Explore Related Models","new-picks":"New Picks","faq":{"variant_0":{"q1":{"answer":"Simply type your text in the demo above, select {modelTitle}, and click generate. You can download the audio or use it in our <playground>advanced playground</playground> for more controls.","question":"How do I use {modelTitle} voice generator?"},"q10":{"answer":"{modelTitle} is a strong choice for {tags} content. You can preview the voice using the samples above or generate a test clip with your own text. You can also <cloning>create your own custom voice</cloning> if you need something unique.","question":"What are some good {tags} voices?"},"q2":{"answer":"Yes! You can try {modelTitle} for free. Create an account to get monthly free generations and access advanced features.","question":"Is {modelTitle} voice free to use?"},"q3":{"answer":"Use {modelTitle} for YouTube videos, TikTok content, audiobooks, podcasts, video games, animations, and any project needing professional voiceovers.","question":"What can I create with {modelTitle} AI voice?"},"q4":{"answer":"Yes, with our paid plans you get full commercial use rights. Free users can use voices for personal projects.","question":"Can I use {modelTitle} voice commercially?"},"q5":{"answer":"{modelTitle} generates ultra-realistic speech with natural emotion and tone. Listen to the samples above to hear the quality. Over {taskCount} creators trust this voice.","question":"How realistic is {modelTitle} voice?"},"q6":{"answer":"Based on voice characteristics and user feedback, {modelTitle} performs well for {tags} content. The voice supports various production contexts including video narration, podcast episodes, audiobook chapters, and short-form social content. Results may vary depending on your specific script and delivery requirements.","question":"What types of content is {modelTitle} suited for?"},"q7":{"answer":"{modelTitle} has been used in {taskCount} generations and received {likeCount} likes from users. These metrics reflect actual usage data from our platform. You can listen to the samples above to evaluate whether the voice meets your requirements before generating.","question":"What is the usage history for {modelTitle}?"},"q8":{"answer":"All voices on this platform use the same underlying TTS engine with voice-specific training data. {modelTitle} has its own vocal characteristics including pitch range, speaking pace, and tonal qualities. The technical output quality is consistent across all voices. Differences between voices are primarily in timbre and style rather than technical capability.","question":"How does {modelTitle} compare to other voices on this platform?"},"q9":{"answer":"Voice selection depends on your specific requirements. We recommend generating test samples with 2-3 voices before committing to production use. Listen to the provided samples on each voice page to assess fit for your genre or style requirements, and use the <playground>advanced playground</playground> to test with your own scripts.","question":"How should I evaluate different voice options?"},"title":"Frequently Asked Questions about {modelTitle}"},"variant_1":{"q1":{"answer":"{modelTitle} works with multiple languages automatically. The AI detects your text language and generates natural-sounding speech.","question":"What languages does {modelTitle} support?"},"q10":{"answer":"{modelTitle} is a strong choice for {tags} content. You can preview the voice using the samples above or generate a test clip with your own text. You can also <cloning>create your own custom voice</cloning> if you need something unique.","question":"What are some good {tags} voices?"},"q2":{"answer":"Audio generation is instant - typically completed in just a few seconds, even for longer texts.","question":"How long does it take to generate {modelTitle} voice?"},"q3":{"answer":"Download your {modelTitle} voiceovers in MP3, WAV, and other popular formats for maximum compatibility.","question":"What audio formats can I download?"},"q4":{"answer":"Yes! Our <playground>advanced playground</playground> lets you fine-tune speed, pitch, emotion, and other parameters to get the perfect sound.","question":"Can I adjust the voice speed and pitch?"},"q5":{"answer":"Free users can generate shorter clips, while paid plans support extended text lengths for audiobooks, long-form content, and more.","question":"How many characters can I generate at once?"},"q6":{"answer":"Based on voice characteristics and user feedback, {modelTitle} performs well for {tags} content. The voice supports various production contexts including video narration, podcast episodes, audiobook chapters, and short-form social content. Results may vary depending on your specific script and delivery requirements.","question":"What types of content is {modelTitle} suited for?"},"q7":{"answer":"{modelTitle} has been used in {taskCount} generations and received {likeCount} likes from users. These metrics reflect actual usage data from our platform. You can listen to the samples above to evaluate whether the voice meets your requirements before generating.","question":"What is the usage history for {modelTitle}?"},"q8":{"answer":"All voices on this platform use the same underlying TTS engine with voice-specific training data. {modelTitle} has its own vocal characteristics including pitch range, speaking pace, and tonal qualities. The technical output quality is consistent across all voices. Differences between voices are primarily in timbre and style rather than technical capability.","question":"How does {modelTitle} compare to other voices on this platform?"},"q9":{"answer":"Voice selection depends on your specific requirements. We recommend generating test samples with 2-3 voices before committing to production use. Listen to the provided samples on each voice page to assess fit for your genre or style requirements, and use the <playground>advanced playground</playground> to test with your own scripts.","question":"How should I evaluate different voice options?"},"title":"Technical Details for {modelTitle} Voice"},"variant_2":{"q1":{"answer":"{modelTitle} offers exceptional quality with {likeCount} user endorsements. Compare the samples above - you'll hear the difference in emotion and naturalness.","question":"Why choose {modelTitle} over other AI voices?"},"q10":{"answer":"{modelTitle} is a strong choice for {tags} content. You can preview the voice using the samples above or generate a test clip with your own text. You can also <cloning>create your own custom voice</cloning> if you need something unique.","question":"What are some good {tags} voices?"},"q2":{"answer":"No! Everything works in your browser. Just type, generate, and download - no installation required.","question":"Do I need any special equipment or software?"},"q3":{"answer":"Free users get generous monthly quotas. Upgrade for unlimited generations and priority access to new features.","question":"Can I create unlimited voiceovers with {modelTitle}?"},"q4":{"answer":"Yes. Your generated audio and scripts are private. We follow strict data protection standards.","question":"Is my content private and secure?"},"q5":{"answer":"Each voice has distinct characteristics, tone, and style. {modelTitle} has been used in {taskCount}+ projects, proving its versatility and quality.","question":"What makes {modelTitle} voice unique?"},"q6":{"answer":"Based on voice characteristics and user feedback, {modelTitle} performs well for {tags} content. The voice supports various production contexts including video narration, podcast episodes, audiobook chapters, and short-form social content. Results may vary depending on your specific script and delivery requirements.","question":"What types of content is {modelTitle} suited for?"},"q7":{"answer":"{modelTitle} has been used in {taskCount} generations and received {likeCount} likes from users. These metrics reflect actual usage data from our platform. You can listen to the samples above to evaluate whether the voice meets your requirements before generating.","question":"What is the usage history for {modelTitle}?"},"q8":{"answer":"All voices on this platform use the same underlying TTS engine with voice-specific training data. {modelTitle} has its own vocal characteristics including pitch range, speaking pace, and tonal qualities. The technical output quality is consistent across all voices. Differences between voices are primarily in timbre and style rather than technical capability.","question":"How does {modelTitle} compare to other voices on this platform?"},"q9":{"answer":"Voice selection depends on your specific requirements. We recommend generating test samples with 2-3 voices before committing to production use. Listen to the provided samples on each voice page to assess fit for your genre or style requirements, and use the <playground>advanced playground</playground> to test with your own scripts.","question":"How should I evaluate different voice options?"},"title":"Why Choose {modelTitle} Voice?"}},"hero_variants":{"variant_0":{"subtitle":"Create ultra-realistic {modelTitle} voice from any text in seconds. Get started for free - no credit card required. Perfect for content creators, video producers, and storytellers. Used by {taskCount}+ creators.","title":"Try {modelTitle} AI voice generator for free"},"variant_1":{"subtitle":"Type any text and hear it speak in {modelTitle}'s authentic voice. Ultra-realistic AI voice for videos, audiobooks, podcasts, and social media. Professional quality in seconds.","title":"Generate realistic {modelTitle} voice from any text"},"variant_2":{"subtitle":"Join {likeCount}+ content creators using {modelTitle}'s voice for YouTube, TikTok, and professional projects. Generate unlimited voiceovers with studio-quality results.","title":"Create content with {modelTitle} AI voice technology"},"variant_3":{"subtitle":"Transform any text into {modelTitle}'s voice instantly. Natural emotion, authentic tone, professional results. No recording equipment needed - just type and generate.","title":"Create studio quality {modelTitle} voice in seconds"},"variant_4":{"subtitle":"Create professional voiceovers, audiobooks, and video narration with {modelTitle}'s AI voice. Try free demo below - upgrade for unlimited generations. Liked by {likeCount} creators.","title":"Professional {modelTitle} AI voice for content creation"},"variant_5":{"subtitle":"Hear {modelTitle} speak anything you type with our advanced AI voice technology. Perfect for content creation, entertainment, and professional projects. Instant results guaranteed.","title":"Experience the most realistic {modelTitle} AI voice"}},"how_to_use":{"cta":{"primary":"Open Advanced Playground","secondary":"View Features & Pricing","subtitle":"Join thousands of creators using AI voices for videos, podcasts, and more","title":"Ready to create professional content with {modelTitle}?","trust1":"Free tier available","trust2":"No credit card needed","trust3":"Join {count}+ satisfied users"},"step1":{"cta":"Try the demo above","description":"Type or paste any text you want {modelTitle} to speak","feature1":"Start free with generous character limits","feature2":"Works in multiple languages automatically","title":"Enter Your Script"},"step2":{"description":"Click generate to hear {modelTitle}'s voice bring your text to life","feature1":"Studio-quality results in seconds","feature2":"100% free to try • No credit card required","social_proof":"{count}+ creators have used this voice","title":"Generate Audio"},"step3":{"cta":"Use Voice","description":"Click 'Use Voice' button to unlock powerful features:","feature1":"Extended text length for longer projects","feature2":"Fine-tune speed, pitch, and emotion","feature3":"Download in multiple formats (MP3, WAV)","feature4":"Save to library & unlock commercial use rights","title":"Open Advanced Playground"},"subtitle":"Create professional voiceovers in 3 simple steps","title":"How to Use {modelTitle} Voice Generator"},"like":"Like","likes":"Likes","mark_count":"Mark Count","model_page_variants_with_tags":{"variant_0":{"meta_description":"Generate realistic {modelTitle} voice with AI text to speech. Used by {taskCount}+ creators. Free to try.","meta_title":"{modelTitle} AI Voice Generator | Fish Audio","subtitle":"Generate {modelTitle} voice trusted by {taskCount}+ creators. Create {tags} speech with AI text to speech.","title":"{modelTitle} AI Voice Generator by Fish Audio"},"variant_1":{"meta_description":"Generate realistic {modelTitle} voice with AI text to speech. Used by {taskCount}+ creators. Free to try.","meta_title":"{modelTitle} AI Voice Generator | Fish Audio","subtitle":"Generate {modelTitle} voice trusted by {taskCount}+ creators. Create {tags} speech with AI text to speech.","title":"Free {modelTitle} AI Voice Generator by Fish Audio"},"variant_2":{"meta_description":"Generate realistic {modelTitle} voice with AI text to speech. Used by {taskCount}+ creators. Free to try.","meta_title":"{modelTitle} AI Voice Generator | Fish Audio","subtitle":"Generate {modelTitle} voice trusted by {taskCount}+ creators. Create {tags} speech with AI text to speech.","title":"{modelTitle} AI Voice Generator by Fish Audio"},"variant_3":{"meta_description":"Generate realistic {modelTitle} voice with AI text to speech. Used by {taskCount}+ creators. Free to try.","meta_title":"{modelTitle} AI Voice Generator | Fish Audio","subtitle":"Generate {modelTitle} voice, used {taskCount} times with {likeCount} likes. Create {tags} speech with AI text to speech.","title":"Free {modelTitle} AI Voice Generator by Fish Audio"},"variant_4":{"meta_description":"Generate realistic {modelTitle} voice with AI text to speech. Used by {taskCount}+ creators. Free to try.","meta_title":"{modelTitle} AI Voice Generator | Fish Audio","subtitle":"Generate {modelTitle} voice, used {taskCount} times with {likeCount} likes. Create {tags} speech with AI text to speech.","title":"{modelTitle} AI Voice Generator by Fish Audio"},"variant_5":{"meta_description":"Generate realistic {modelTitle} voice with AI text to speech. Used by {taskCount}+ creators. Free to try.","meta_title":"{modelTitle} AI Voice Generator | Fish Audio","subtitle":"Generate {modelTitle} voice, used {taskCount} times with {likeCount} likes. Create {tags} speech with AI text to speech.","title":"Free {modelTitle} AI Voice Generator by Fish Audio"}},"model_updated":"Model updated successfully","no_audio_sample_tips":"There's no audio samples yet","other_tag_voices":"Other {tag} Voices","pitch":"Pitch","samples":"Samples","samples_saved":"Samples saved successfully","save":"Save","saved_by":"Saved by","seo":{"link_suffix":"AI Voice Generator","page_description":"Create professional voiceovers with {modelTitle} AI voice. Free text-to-speech with studio-quality results.","page_title":"Fish Audio - {modelTitle} Voice Generator","related_models_heading":"Related Voice Models"},"share":"Share","shared_count":"Shared Count","shares":"Shares","showcase":{"explore_more":"Explore More Samples","related_model":"Related: {modelTitle}","sample_number":"Sample {number}","subtitle":"Listen to sample generations showcasing voice quality and versatility","title":"Samples - {modelTitle}","sample_transcriptions":"Sample Transcriptions"},"task_count":"Task Count","total_likes":"Total Likes","total_saved":"Total Saved","total_share":"Total Share","total_use":"Total Use","unlike":"Unlike","use_voice":"Use Voice","release_voice":"Release voice","release_voice_modal":{"title":"Release Voice","description":"Once published, the model cannot be taken offline until the notice period expires. Also, you cannot change settings of:","training_materials":"Voice training materials and configuration","voice_owner":"Voice owner","billing_and_notice_period":"Billing method and notice period","visibility":"Visibility (private / unlisted / public)","platform_availability":"Platform / API availability","notice_extension":"Once published, the notice period can only be extended, not shortened.","notice_period":"Notice Period","one_year":"1 year","two_years":"2 years","three_years":"3 years","minimum":"Minimum","recommended":"Recommended","maximum_stability":"Maximum stability","confirmation":"I confirm that I have the rights and consent to release this voice. I understand and agree that once released, any delisting request will take effect only after the selected notice period expires, which may only be extended and cannot be shortened.","confirm":"Release Voice","close":"Close","releasing":"Releasing…","release_success":"Voice released successfully.","release_already_completed":"This voice has already been released.","errors":{"feature_unavailable":"Voice release is currently unavailable.","job_unavailable":"The PVC job or its linked voice could not be found. Refresh and try again.","not_ready":"This voice is not ready to be released yet.","invalid_model":"The PVC job and voice data do not match. Refresh and try again.","invalid_input":"Choose a valid visibility and notice period.","state_conflict":"The release state changed. Refresh and check the latest status before trying again.","unknown":"The voice could not be released. Your selections have been kept; try again.","other_team":"Switch to the team that owns this voice to release it."},"earn_title":"Earn from your voice","earn_revenue_share":"Get a share of what other creators pay to use your voice, added to your team wallet.","earn_verified":"Get the verified seal and appear first among Professional voices.","visibility_title":"Visibility","payouts":"Payouts","payouts_note":"Earnings are added to your team wallet. To withdraw, the team owner connects Stripe in Team settings → Wallet — you can do this any time after releasing.","open_team_wallet":"Open team wallet"},"release_status_modal":{"edit_release":"Edit Release","title":"Release status","released":"Released","retiring":"Retiring","notice_period_ends":"Notice period ends","retire_voice":"Retire voice","retire_confirmation":"I understand that this voice remains available for existing Platform/API use until <strong>{date}</strong>.","extend_notice_period":"Extend notice period","close":"Close","retiring_voice":"Retiring voice…","extending_notice_period":"Extending notice period…","retire_success":"Voice retirement requested.","extend_success":"Notice period extended.","errors":{"expired":"The notice period has expired and can no longer be extended.","unavailable":"Release management is currently unavailable.","state_changed":"The release status changed. Refresh and try again.","job_unavailable":"The PVC job or its linked voice could not be found. Refresh and try again.","unknown":"The release status could not be updated. Try again."}},"uses":"Uses","view_more_tag_voices":"View More","general_content":"general content","voice_library":"Voice Library","keywords":{"ai_voice":"AI Voice","text_to_speech":"Text to Speech","voice_generator":"Voice Generator","voice_over":"Voice Over"},"content_policy":{"title":"Content restrictions","description":"Requests that use this voice for anything you describe here are blocked before generation.","label":"What this voice must not be used for","placeholder":"e.g. Content related to gambling, cryptocurrency or other investment products. No ads or sponsored reads.","hint":"Write it in your own words. Every request that uses this voice is checked against the whole description.","mode_label":"Strictness","standard":"Standard","strict":"Strict","standard_des":"Blocks content that clearly matches (90% confidence).","strict_des":"Also blocks likely matches (70% confidence). Some borderline text may be blocked.","apply_note":"Changes apply right away."}},"model":{"state":{"created":"Queued","failed":"Failed","trained":"Succeeded","training":"In Progress"}},"my-collections":{"my-collections":{"cancel":"Cancel","confirm":"Confirm","delete_confirm_description":"Are you sure you want to cancel this collection?","delete_confirm_title":"Cancel Collection","delete_success":"Cancel collection successfully","no_collection_tips":"No Collections","title":"My Collections","delete":"Delete","delete_failed":"Failed to delete","default_voices":{"empty":"No default voices available","load_failed":"Failed to load default voices","loading":"Loading default voices...","descriptions":{"selene":"A meditative female voice.","adrian":"A steady and reliable narrator.","sarah":"An engaged speaker.","ethan":"A curious explainer.","laura":"A confident female narrator.","jordan":"A motivational speaker.","hannah":"A conversion specialist."}}}},"my-conversions":{"cancel":"Cancel","completed_tasks":"Completed Tasks","conversions":"Generation History","copied_title":"Copied to clipboard","create_new":"Create New","createAt":"Create At","delete":"Delete","delete-confirm-tips":"You will lose conversions handle with care!","delete-confirm":{"cancel":"Cancel","confirm":"Confirm","title":"Are you sure you want to delete {count} selected conversions?"},"delete-error":"Failed to delete conversion","delete-success":"Delete conversion successfully","delete-partial":"Deleted {deleted} conversions, then stopped after an error. {remaining} remain selected.","delete-success-count":"Deleted {count} conversions","delete_success":"Deleted successfully","download_json":"Download JSON","download_txt":"Download TXT","finished":"Finished","generation_failed":"Failed","in_process":"In Progress","MMM D":"MMM D","model_deleted_tips":"The voice has been deleted","no_conversion_tips":"No conversion voices yet","no_conversions_yet":"No conversions yet","no_model_tips":"Random Voice","open":"Open","pending":"Pending","pending_tasks":"Pending Tasks","play":"Play","regenerate":"Regenerate","retry":"Retry","load-error":"Failed to load generation history.","search":"Search voices...","search_placeholder":"Search generations...","search-min-length":"Enter at least {count} characters to search.","select":"Select","select_all":"Select All","select_conversion_type":"Select Conversion Type","selected":"Selected","sound_effect_creativity":"Creativity: {creativity}","sound_effect_duration":"Duration: {duration}s","sound_effect_generation":"Sound Effect Generation","speech_to_text":"Speech to Text","sound_effect_guidance":"Guidance: {guidance}","sound_effect_parameters":"Parameters","sound_effect_refinement":"Refinement: {refinement}","sound_effect_steps":"Steps: {steps}","status":"Status","status_all":"All Status","status_finished":"Finished","status_pending":"Pending","succeeded":"Succeeded","text":"Text","text_to_speech":"Text to Speech","title":"Generation History","train":"Generate New Voice","type":"Type","un_select":"Unselect","voice_conversion":"Voice Conversion","voice_model":"Voice Model","legacy_unavailable":"Legacy result unavailable","audio_separation":"Stem Splitter","audio_separation_parameters":"Parameters","audio_separation_type":"Isolation: {type}","audio_separation_file":"File: {file}"},"my-models":{"filter_visibility":"Visibility","clear_visibility_filter":"Clear visibility filter","audio_samples":"Audio Samples","create-at":"Create At","delete":"Delete","dmca_badge":"DMCA","dmca_unavailable":"Unavailable due to DMCA takedown","delete-confirm":{"cancel":"Cancel","confirm":"Confirm","description":"This voice and its public page will no longer be available. Previously generated audio will not be deleted.","title":"Are you sure to delete the voice?"},"delete-error":"Failed to delete voice","delete-success":"Delete voice successfully","edit":"Edit","filter_all":"All","loading_sequence_0":"Creating your voice model from the demo...","loading_sequence_1":"You can modify model information afterwards by clicking \"edit model\"","loading_sequence_2":"Enhancing the voice model...","loading_sequence_3":"Almost ready...","my-models":"My Voices","no_trained_voices_yet":"No trained voices yet","play":"Play","search":"Search voices...","status":"Status","audio_clips":"Audio Clips","train":"Build New Voice","use":"Use","use_voice":"Use Voice","view":"View Model","voice_clone_demo_title":"Voice Clone Demo","voice_model_save_failed":"Failed to save your voice model. Please try again.","voice_model_saved_success":"Your voice model has been saved successfully!","pvc_delete_disabled":"This voice was created via Professional Voice Clone and cannot be deleted here.","professional_voice_drafts":"Professional Voice Draft","draft_voice":"Draft Voice","available":"Available","pvc-state-draft":"Draft","pvc-state-awaiting-verification":"Awaiting verification","pvc-state-verifying":"Verifying","pvc-state-merging":"Merging","pvc-state-training":"Training","pvc-state-verification-failed":"Verification failed","resume":"Resume","verify-now":"Verify now","view-progress":"View progress","view-details":"View details","pvc-state-ready":"Training complete","continue":"Continue","release":"Release"},"no-samples-found":"No samples found","not-found":{"go-home":"Go Home","message":"The page you are looking for may be misplaced, have disappeared, or simply not exist.","title":"Oops! This page doesn't exist."},"project":{"a_is_better":"Audio A is better","a_is_better_than_b":"Audio A is better","a_is_much_better":"Audio A is much better","actions":"Actions","active":"Active","add_annotators":"Add Annotators","add_annotators_dialog_title":"Add Annotators","add_annotators_success":"Add Annotators Success","all":"All","all_users":"All Users","annotates":"Annotates","annotates_list":"Annotates List","annotates_task_list":"Annotation Task List","annotation_hint":"Annotation Hint Text CMS ID","annotation_status":{"consensus_completed":"Consensus Completed","consensus_rejected":"Consensus Rejected","marked_bad":"Marked Bad","pending_consensus":"Pending Consensus","rejected_by_admin":"Rejected by Admin","success":"Success","unannotated":"Unannotated"},"annotation_type":"Annotation Type","annotation_users":"Annotation Users","annotations":"Annotations","annotations_count":"Mark completed quantity","annotations_details":"Annotations Details","annotator":"Annotator","audio":"Audio","audio_a":"Audio A","audio_b":"Audio B","audio_better":"Audio {one} Better","audio_candidate":"Audio Candidate","b_is_better":"Audio B is better","b_is_better_than_a":"Audio B is better","b_is_much_better":"Audio B is much better","batch_size":"Batch Size","batch_size_help":"The number of samples to import in each batch","batch_size_placeholder":"Please enter the batch size","cancel":"Cancel","cannot_tell":"Cannot Tell","cant_tell":"Cannot Tell","choice":"Choice","confirm":"Confirm","confirm_delete":"Delete","confirm_delete_annotators":"Are you sure you want to delete the selected annotators?","consensus_algorithm":"Consensus Algorithm","consensus_award_price":"Consensus Award Price","consensus_completed":"Consensus Completed","consensus_rejected":"Labelled (Consensus Failure)","consensus_required_count":"Consensus Required Count","consensus_result":"Consensus Result","content":"Content","create_button":"Create","create_title":"Create project","created_at":"Created At","delete_annotators":"Delete Annotators","delete_annotators_confirm":"Are you sure you want to delete the selected annotators?","delete_annotators_failed":"Delete Annotators Failed","delete_annotators_success":"Delete Annotators Success","delete_button":"Delete","delete_project_description":"After deleting the project, all data in the project will be deleted. Please be careful.","delete_project_title":"Delete Project","disable":"Disable","download_audio":"Download Audio","download_audio_failed":"Download audio failed","dummy":"Dummy (1 Annotation)","email":"Email","enable":"Enable","expected":"As Expected","export_to_csv":"Export to CSV","failed_annotations_count":"Failed Annotations Count","failed_annotations_count_tooltip":"Failed annotations count","feedback":"Feedback","filter":"Filter","filter_help":"The filter to import the samples","filter_placeholder":"Please enter the filter","id":"ID","import":"Import Dataset","import_data":"Import Data","import_dataset_url":"Import Dataset URL","import_dataset_url_help":"The URL of the dataset to import","import_dataset_url_placeholder":"Please enter the dataset URL","inactive":"Inactive","inspect_count":"Inspect Count","inspect_users":"Inspect Users","inspection_status":{"approved":"Approved","pending":"Pending","rejected":"Rejected"},"inspection_task_list":"Inspection Tasks","inspection_task":{"annotation_status":"Status","condtion":{"annotation_status":"Status","language":"Language","size":"Size","tags":"Tag"},"language":"Language","size":"Size","tags":"Tag"},"inspection":{"breadcrumb":{"inspection_tasks":"Inspection Tasks"},"list":{"annotation_statuses":"Annotation Statuses","annotators":"Annotators","cancel":"Cancel","conditions":"Conditions","create":"Create","create_samples_task":"Create Sampling Task","created_at":"Created At","date_range":"Date Range","deduplication":"Deduplicate Annotation","deduplication_description":"If annotation is in other inspection tasks, it will be excluded","delete":"Delete","description":"Description","enter":"Enter","insepectors_avatar":"Inspector Avatar","language_options":{"en":"English","ja":"Japanese","zh":"Chinese"},"languages":"Languages","select_annotators":"Select Annotators","select_date_range":"Select Date Range","select_languages":"Select Languages","select_statuses":"Select Statuses","size":"Sample Size","size_required":"Sample size must be greater than 0","status_options":{"consensus_rejected":"Consensus Rejected","marked_bad":"Marked Bad","pending_consensus":"Pending Consensus","rejected_by_admin":"Rejected by Admin","success":"Success"},"title":"Title","title_required":"Title cannot be empty","view_report":"View Report"},"report":{"all":"All","approve_rate":"Approve Rate","approved_count":"Approved Count","approved_items":"Approved Items","condition":"Condition","consensus_rejected":"Consensus Rejected","created_at":"Created At","filter_by_status":"Filter by Status","mark_all_rejected_as_unannotated":"Mark All Rejected as Unannotated","marked_bad":"Marked Bad","pending_count":"Pending Count","pending_items":"Pending Items","reject_rate":"Reject Rate","rejected_by_admin":"Rejected by Admin","rejected_count":"Rejected Count","rejected_items":"Rejected Items","success":"Success","title":"Title","total_annotations":"Total Annotations","total_annotations_count":"Total Annotations Count","total_samples":"Total Samples","user":"Annotator"},"sampling":{"approve":"Approve","audio":"Audio","audio_url":"Audio URL","candidate":"Candidate","decision":"Decision","feedback":"Feedback","id":"ID","item_not_found":"Inspection Item Not Found","item_not_found_description":"There are no more items to inspect in this task. You can view the inspection report or return to the inspection tasks list.","modified_content":"Modified Content","original_content":"Original Content","other_annotation":"Other Annotation","preference":"Preference","reference":"Reference","reject":"Reject","remark":"Remark","remark_placeholder":"Please enter the remark","return_to_list":"Return to List","sample_id":"Sample ID","segments":"Segments","should_normalize":"Should Normalize","status":"Status","submit_error":"Error submitting inspection item","submit_success":"Inspection item submitted successfully","text":"Text","view_report":"View Report"}},"local_user_addition_warning":"Only admin can search members","local_user_addition_warning_description":"You're adding members without verifying their email, please check the result after submitting.","majority":"Majority","marked":"Marked","marked_bad":"Marked Bad","member":"Member","members":"Extra Members","modify_button":"Modify","modify_title":"Modify project","name":"Name","no_result":"No related users found","normalized_audio":"Normalized Audio","normalized_text":"Normalized Text","number":"No","owner":"Owner","pending":"Pending","pending_consensus":"Pending Consensus","preference":"Preference","project_detail":"Project Details","project_owner":"Project Owner","project_type":"Project Type","reannotate":"Reannotate","reannotate_error":"Reannotate Error","reannotate_success":"Reannotate Success","reference":"Reference","reject":"Reject","reject_annotation_error":"Reject Annotation Error","reject_annotation_success":"Reject Annotation Success","reset_user_annotations_count":"Reset Count","reset_user_annotations_count_success":"Reset user annotations count success","result":"Result","results":"Results","review_failed":"Submit review failed","role":"Role","sample_id":"Sample ID","sample_retrieval_interval":"Sample Retrieval Interval","samples_imported":"Samples imported successfully","samples":{"task":{"annotation_statuses":"Annotation Statuses","annotators":"Annotators","cancel":"Cancel","conditions":"Conditions","create":"Create","create_samples_task":"Create Sampling Task","created_at":"Created At","date_range":"Date Range","delete":"Delete","description":"Description","enter":"Enter","insepectors_avatar":"Inspector Avatar","language_options":{"en":"English","ja":"Japanese","zh":"Chinese"},"languages":"Languages","select_annotators":"Select Annotators","select_date_range":"Select Date Range","select_languages":"Select Languages","select_statuses":"Select Statuses","size":"Sample Size","size_required":"Sample size must be greater than 0","status_options":{"consensus_rejected":"Consensus Rejected","marked_bad":"Marked Bad","pending_consensus":"Pending Consensus","rejected_by_admin":"Rejected by Admin","success":"Success"},"title":"Title","title_required":"Title cannot be empty","view_report":"View Report"}},"sampleStatus":{"consensus_completed":"Consensus Completed","pending_consensus":"Pending Consensus","unannotated":"Unannotated"},"search":"Search","search_user":"Search User","segment":"Segment Annotation","selectAnnotator":"Select Annotator","selectLanguage":"Select Language","selectStatus":"Select Status","standard_deviation":"Standard Deviation","status":"Status","success":"Labelled (Consensus Achieved)","text":"Text","total_annotations":"Total Annotations","total_samples":"Total Samples","unannotated":"Unannotated","unexpected":"Unexpected","updated_at":"Updated At","user_id":"User ID","users_joined":"Users Joined","video":"Video Annotation","video_annotation":"Video Annotation","video_sentiment":"Video Sentiment","which_is_better":"Which is better?"},"sam-audio":{"features":{"accurate":{"description":"Advanced AI models trained on millions of audio samples for precise source separation with high fidelity","title":"High Accuracy"},"fastProcessing":{"description":"Process your audio files in seconds with our optimized cloud infrastructure","title":"Fast Processing"},"flexible":{"description":"Isolate any sound you can describe - vocals, instruments, effects, speech, and more","title":"Flexible Isolation"},"formats":{"description":"Support for MP3, WAV, FLAC, M4A, and more popular audio formats","title":"Format Support"},"quality":{"description":"Maintain audio fidelity with studio-grade output quality for professional results","title":"Studio Quality"},"subtitle":"Isolate any sound using natural language prompts","textBased":{"description":"Describe sounds naturally using text prompts like 'remove background music' or 'isolate the vocals'","title":"Prompt-Based Separation"},"title":"SAM Audio Features"},"introduction":{"description":"SAM Audio enables you to isolate any sound through natural language descriptions. Simply describe what you want to extract - vocals, instruments, speech, or any sound - and get clean, high-quality results instantly.","title":"Isolate Any Sound with Natural Language","tryFree":"Try It Free"},"topBar":{"badge":"AI-Powered Audio Separation","sign_up":"Get Started Free","subtitle":"Isolate any sound from audio using natural language prompts. Describe what you want to extract and get clean, high-quality results instantly.","title":"SAM Audio"},"try_sam_audio":"Try SAM Audio","usecases":{"musicProduction":{"button":"Start Creating","description":"Extract individual stems and isolate specific instruments using natural language. Perfect for remixing, sampling, and creating stems from any track.","title":"Music Production & Stem Separation"},"speechEnhancement":{"button":"Enhance Speech","description":"Improve speech-to-text accuracy by isolating speech from background noise. Ideal for podcasts, interviews, and meeting recordings.","title":"Speech Enhancement & Transcription"},"subtitle":"Transform your audio workflow with prompt-based separation","title":"SAM Audio Use Cases","videoEditing":{"button":"Try Video Audio","description":"Isolate dialogue from background noise, extract specific sound effects, or remove unwanted audio from video content with simple text prompts.","title":"Video Editing & Post-Production"}}},"sample":{"copied_title":"Copied!","copy_button":"Copy Annotation URL","latest_annotate_at":"Latest Annotated at","question":"Extra Question"},"settings":{"mascot":{"description":"Show this assistant across the dashboard. This preference is saved across your devices","error":"Ask Agent preference could not be updated","success":"Ask Agent preference updated"},"notifications":{"api_balance_warning":{"email":{"description":"Get an email when your API credit falls below the alert threshold. Set the threshold on the API Billing page.","title":"API Balance Alerts"}},"api_key_expiry":{"email":{"description":"Stay ahead by receiving alerts before your API keys expire","title":"API Key Expiration Notifications"}},"error":"Failed to update notifications","marketing":{"email":{"description":"Receive updates on promotions and offers","title":"Marketing Notifications"}},"product_tips":{"email":{"description":"Get tips and guides to make the most of Fish Audio","title":"Product Tips"}},"share_notifications":{"email":{"description":"Comments on stories you share, and updates to stories you commented on.","title":"Share comments and updates"}},"success":"Notifications updated successfully","title":"Notifications"}},"sound-effects":{"authenticationRequired":"Authentication Required","cancel":"Cancel","creativity":"Creativity","creativity_tooltip":"Higher creativity levels yield more diverse and unexpected sound effects.","credit_info":"Each sound effect generation costs 5000 credits.","history_hint":{"generating":"Generating...","generated":"Generated"},"quick_prompt":{"shuffle_aria_label":"Shuffle quick prompt tags","optimize_tooltip":"Optimize Prompt","options":{"use_case":{"gaming":"Gaming","film_video":"Film & Video","social_content":"Social Content","podcast":"Podcast","app_ui":"App & UI","advertising":"Advertising"},"sound_type":{"ambience":"Ambience","foley":"Foley","impact":"Impact","human":"Human","animal":"Animal","nature":"Nature","mechanical":"Mechanical","ui":"UI"},"mood":{"calm":"Calm","tense":"Tense","dark":"Dark","playful":"Playful","epic":"Epic","mysterious":"Mysterious"},"style":{"realistic":"Realistic","cinematic":"Cinematic","cartoon":"Cartoon","retro":"Retro","futuristic":"Futuristic","horror":"Horror"},"theme":{"domestic":"Domestic","urban":"Urban","nature":"Nature","industrial":"Industrial","sci_fi":"Sci-fi","fantasy":"Fantasy","indoor":"Indoor","outdoor":"Outdoor"}}},"delete":"Delete","delete_confirm_description":"This action cannot be undone. This will permanently delete the sound effect.","delete_confirm_title":"Are you sure you want to delete this sound effect?","delete_error":"Failed to delete sound effect","delete_success":"Sound effect deleted successfully","filters":{"clear_all":"Clear all","show_more":"+{count} more","show_less":"Show less","duration":{"0-2":"Under 2s","2-5":"2–5s","5-15":"5–15s","15-30":"15–30s","30+":"30s+"},"sort":{"latest":"Latest","most_downloaded":"Most downloaded","trending":"Trending"},"tags":{"content_type":"Content type","duration":"Duration","genre":"Genre","mood":"Mood","movement":"Movement","theme":"Theme","alert":"Alert","ambient":"Ambient","animal":"Animal","applause":"Applause","bark":"Bark","bell":"Bell","bird":"Bird","button":"Button","cheer":"Cheer","city":"City","click":"Click","comedy":"Comedy","crash":"Crash","crowd":"Crowd","dog":"Dog","door":"Door","drone":"Drone","engine":"Engine","explosion":"Explosion","fantasy":"Fantasy","fire":"Fire","footstep":"Footstep","footsteps":"Footsteps","forest":"Forest","gaming":"Gaming","domestic":"Domestic","human":"Human","nature":"Nature","vlog":"Vlog","gunshot":"Gunshot","rain":"Rain","river":"River","thunder":"Thunder","wind":"Wind","laser":"Laser","punch":"Punch","sci-fi":"Sci-Fi","ui":"UI"}},"empty_state":{"clear_filters":"Clear filters","description":"Try adjusting your search query","title":"No sound effects found"},"demo":{"back_to_samples":"Back to Samples","generate":"Generate","playing":"Playing","poweredBy":"Powered by Fish Audio SFX Generation","prompt_used":"Prompt Used","samples":{"0":"Helicopter Takeoff","1":"Gravel Footsteps","2":"Keyboard Typing","3":"Campfire Crackle","4":"Rain on Metal Roof"},"select_sample":"Select a sample to hear","sound_samples":"Sound Samples","title":"Generate your own {effect} sound effect","titleDefault":"Generate your own sound effects with AI","view_prompt":"View Prompt"},"descriptions":{"airplane":{"0":"Jet airplane flyby with prominent doppler effect","1":"Propeller plane flyover with roaring engine sounds","2":"Turboprop aircraft passing by fast","3":"Heavy jet flies directly overhead","4":"Small prop airplane close pass"},"alarm":{"0":"Old clock alarm: Mechanical, ticking","1":"Electronic alarm:  Harsh, loud, modern","2":"Car alarm: High-pitched, insistent","3":"Smoke detector: Piercing, urgent alarm","4":"Kitchen timer:  Annoying, electronic beeps"},"alert":{"0":"Gentle sonar ping, peaceful alert","1":"Subtle harp glissando notification","2":"Bubbly, upbeat synthetic bloop chime","3":"Loud alarm sound for urgent system warnings","4":"Unique analog synth pop alert"},"applause":{"0":"Audience claps, enthusiastic cheer","1":"Loud crowd cheering and applause","2":"Polite, brief clapping","3":"Large crowd clapping, echoing","4":"Slow, rhythmic hand claps"},"bark":{"0":"Single bark - loud, sharp, and distinct","1":"Single bark - deep, resonant, and strong","2":"Multiple barks - aggressive, short, repeated","3":"Distant barking - echoing and muffled sound","4":"Multiple barks - deep, commanding, with pauses"},"bell":{"0":"Church bell ringing, resonant, slightly discordant","1":"Majestic orchestral brass fanfare for cinematic impact","2":"Service bell, higher pitch, metallic","3":"Classic ringing bell for traditional school alarms","4":"Soft digital chime for clear app notifications"},"bird":{"0":"Quiet bird chirping softly in the background","1":"Crow cawing mixed with rapid chirping","2":"Bird sounds: varied species, rich forest sounds","3":"Australian magpie sounds: unique call","4":"Troping whistling birdsongs in the morning"},"button":{"0":"Simple button click","1":"Click with short reverb","2":"Low clicking sound","3":"Quick pop click","4":"Short zap sound"},"cheer":{"0":"Stadium crowd chanting loudly and cheering","1":"Energetic soccer fans shouting and celebrating","2":"Loud arena cheer with rhythmic clapping","3":"Football crowd cheering victory intensely","4":"Energetic cheering, chanting, and stomping"},"default":{"0":"Powerful helicopter takeoff: rapidly building rotor blades whirring and chopping, increasing engine whine, ground vibrations","1":"Footsteps walking on gravel path, crunching sounds","2":"Fast typing on a modern mechanical keyboard, sharp attacks and satisfying tactile feedback","3":"Crackling campfire with wood popping, gentle wind rustling through trees nearby","4":"Heavy rain falling on a metal roof"},"door-close":{"0":"Mechanical garage door close, heavy duty","1":"Light door close: Gentle thud","2":"Creaky door close in the outdoors","3":"Rapid singular door slam","4":"Door closing with mechanical sounds"},"door-open":{"0":"Door opening with mechanical sounds","1":"Drawer slide open, light wood sound","2":"Door with hinges needing oil opens slowly","3":"Squeaky cold metal door opening","4":"Car door opening, smooth and quick"},"engine-rev":{"0":"Boat engine idling loudly","1":"Powerful boat engine revving, sputtering start","2":"Aggressive car engine revving","3":"Light engine revving and starting quickly","4":"Engine revving: low rumble, consistent speed"},"engine-start":{"0":"Diesel engine starting, heavy","1":"Car starting with key turn and engine roar","2":"Engine starts, close-up sound","3":"Diesel engine starts slowly","4":"Engine sputter start, distant"},"explosion":{"0":"Loud, booming explosion, close range","1":"Deep, rumbling explosion, constant","2":"Loud explosion with sounds of glass shattering","3":"Distant explosion echo effect","4":"Underwater explosion with bubbling sounds"},"fire-crackling":{"0":"Loud fire crackle, sounds of debris burning","1":"Intense, loud fire crackle, energetic and robust","2":"Subtle wood fire, calming and soft crackles","3":"Strong crackling fire sounds, with occasional pops","4":"Fire crackling sounds, steady and warm ambiance"},"footsteps-running":{"0":"Footsteps on crinkling leaves, running","1":"Footsteps on floor, light running","2":"Heavy footsteps on wood floor, fast pace","3":"Footsteps on snow, hurried pace","4":"Slow footsteps on grass, heavy trudge"},"footsteps-walking":{"0":"Crunchy snow footsteps, Winter walk","1":"Dry ground footsteps, Rural walk","2":"Creaky floorboards, House footsteps","3":"Wooden stairs footsteps, Ascending steps","4":"Indoor carpet footsteps, Quiet walk"},"gunshot":{"0":"Sharp, close-range gunshot report","1":"Distant gunshot with reverberation","2":"Close gunshot with heavy impact","3":"Gunshot with a far echo","4":"High-pitched, resonating gunshot sound"},"helicopter":{"0":"Helicopter flying overhead","1":"Helicopter blades spinning with engine rumbling noises","2":"Fast helicopter blades rotating","3":"Helicopter startup sequence","4":"Helicopter roaring overhead"},"horn":{"0":"Loud, aggressive car honking","1":"Short car horn beep","2":"Bulb horn honking sound","3":"Distant loud horn honking surrounded by nature sounds","4":"Consistent car honking"},"laser":{"0":"Laser gun bursts, short and powerful impacts","1":"Laser blast, long and repeated","2":"Pew laser effect, quick zap sound","3":"Deep sci-fi laser, punchy","4":"Futuristic power-up laser charge"},"laughter":{"0":"Loud and intense crowd laughter, with 1 dominant laugh","1":"Low, chuckling laughter","2":"Humorous, comedic laughter","3":"Loud, amused group laughter","4":"Laughter among conversation, light and casual"},"magic":{"0":"Magical whoosh, high-tech sound design","1":"Magical activation, sparkling and bright","2":"Powerful magic spell casting","3":"Magical explosion, destructive and epic","4":"Mystical magic shield activation"},"meow":{"0":"Loud, extended cat meow","1":"Soft, repeated purring","2":"Intense, short meow","3":"Repeated meows, cries for help","4":"Annoyed cat meow"},"notification":{"0":"Simple notification ping sound","1":"Bubbly, playful notification tone","2":"Elegant high-pitched bell strike for premium alerts","3":"Crisp metallic chime for modern app notifications","4":"Mysterious, echoing notification chime"},"punch":{"0":"Several quick and swift punches","1":"Sharp punch, fast and direct","2":"Heavy punch, weighty and impactful","3":"Heavy punch, object breaking","4":"Loud and distant repeated punches, resonating impact"},"rain":{"0":"Heavy rain pelting dense foliage with thunder","1":"Steady rainfall hitting forest canopy; soft and relaxing","2":"Gentle rain trickling with birds chirping","3":"Consistent rain on a metallic roof","4":"Tropical heavy rainfall; immediate"},"reload":{"0":"Quiet gun reload; precise","1":"Rifle pump action reload; mechanical","2":"Fast gun reload, clicking sounds","3":"Fast mechanical rifle reload","4":"Shotgun pump reload, and shooting"},"river":{"0":"Loud river flowing during heavy rain","1":"Small stream trickling over rocks","2":"Disrupted river flow with splashing water","3":"Fast-moving river with strong currents","4":"Water pouring over large waterfall"},"robot":{"0":"Futuristic robot operation sounds","1":"Robot walking, periodic mechanical movements","2":"Periodic robotic whirring, varying in pitch","3":"Mechanical robot servo running, continuous whirring","4":"Sudden and startling loud robot whirring noise"},"rocket":{"0":"Powerful rocket blaster sounds, constant thrust","1":"Deep rocket engine rumble, steady","2":"Rocket power-up: low rumbling ignition","3":"Rocket motor sound, intense and high-pitched","4":"Rocket launch sequence with beeping and engines powering up"},"splash":{"0":"Fluid, watery splash with resonating echoes","1":"Aggressive splash: Impact with a hard surface","2":"Several continuous splashes, artifically induced","3":"Large, resonating loud splash","4":"Periodic small splashes, with pauses"},"success":{"0":"Retro success alert sound","1":"Bright, modern synth success chime","2":"Vibrant, playful success sound","3":"Voice saying \"yes\" in a cheerful tone","4":"Subtle, soothing success beeps"},"sword":{"0":"Violent sword slashing into meat","1":"metal sword clashing sounds, sharp and quick","2":"Quiet sword slices. Ethereal","3":"Sword clashing on metallic armor","4":"Quick sword slice through the air"},"thunder":{"0":"Distant rumble of thunder","1":"Constant rumbling of thunder and light rain","2":"Intense rain, loud thunder in the background","3":"Sharp thunderclaps with rumbling echoes","4":"Heavy rainfall with thunderstorm sounds"},"tick":{"0":"Regular clock tick-tock","1":"Deep and loud ticking sounds","2":"Loud ticking of a clock","3":"Quiet tick-tock of a watch","4":"Rapid ticking of an alarm"},"typing":{"0":"Quiet typing on soft keyboard","1":"Laptop typing, responsive keys","2":"Classic typing, mechanical keyboard sound","3":"Typewriter typing, vintage feel","4":"Desktop clicking, crisp distinct keypresses"},"waves":{"0":"Waves loudly lapping against the shore, distant boat horns","1":"Loud, constantly growing wave","2":"Soft waves on the riverbank","3":"Small waves hitting the shore","4":"Waves crashing sounds, close-up mic, rumbling sounds"},"wind":{"0":"Ocean wind, medium intensity, coastal ambiance","1":"Strong breeze, quiet countryside wind sound effect","2":"Strong storm winds, howling noises","3":"Artifical wind from a large fan","4":"Strong constant gale wind sound"},"zap":{"0":"Short, high-pitched electric zap","1":"Fuzzy, low buzzing electric zap","2":"Sharp, crackling, electric arc","3":"Long, zapping electric spark","4":"Loud electric buzz"}},"duration":"Duration","duration_seconds":"{duration}s","effects":{"airplane":"Airplane","alarm":"Alarm","alert":"Alert","applause":"Applause","bark":"Bark","bell":"Bell","bird":"Bird","button":"Button","cheer":"Cheer","door-close":"Door Close","door-open":"Door Open","engine-rev":"Engine Rev","engine-start":"Engine Start","explosion":"Explosion","fire-crackling":"Fire Crackling","footsteps-running":"Footsteps Running","footsteps-walking":"Footsteps Walking","gunshot":"Gunshot","helicopter":"Helicopter","horn":"Horn","laser":"Laser","laughter":"Laughter","magic":"Magic","meow":"Meow","notification":"Notification","punch":"Punch","rain":"Rain","reload":"Reload","river":"River","robot":"Robot","rocket":"Rocket","splash":"Splash","success":"Success","sword":"Sword","thunder":"Thunder","tick":"Tick","typing":"Typing","waves":"Waves","wind":"Wind","zap":"Zap"},"features":{"controlable":{"description":"Fine-tune generation parameters like duration, guidance, and steps for precise results","title":"Controllable Output"},"diverse":{"description":"Generate any sound imaginable - from nature sounds to sci-fi effects and everything in between","title":"Diverse Sound Library"},"downloadable":{"description":"Download your generated sound effects in high-quality formats ready for production use","title":"Easy Download"},"fast":{"description":"Generate professional sound effects in seconds with our optimized AI infrastructure","title":"Fast Generation"},"subtitle":"Create any sound you can imagine with AI","textToSound":{"description":"Simply describe the sound you want in natural language and our AI will generate it for you","title":"Text-to-Sound"},"title":"Sound Effects Features","versatile":{"description":"Perfect for games, videos, podcasts, music production, and any creative project","title":"Versatile Applications"}},"generate":"Generate","generating":"Generating","guidance":"Guidance","guidance_tooltip":"Higher guidance levels yield more diverse and unexpected sound effects.","history_results":"Generation History","introduction":{"description":"Transform your creative vision into reality with AI-generated sound effects. Simply describe what you want to hear, and our advanced AI will create unique, high-quality sounds tailored to your needs. Perfect for game developers, filmmakers, podcasters, and content creators.","features":{"aiGenerated":"AI Generated","customizable":"Customizable","highQuality":"High Quality","instant":"Instant"},"title":"Create Any Sound with AI","tryFree":"Try It Free"},"library":{"subtitle":"Browse our vast collection of sound effects by category","title":"Sound Effects Library"},"loginToCreateSoundEffect":"Please log in to generate sound effects.","loginToDownloadSoundEffect":"Please log in or sign up to download sound effects.","loginToPlaySoundEffect":"Please log in or sign up to play sound effects.","loginToViewHistory":"Please log in to view your generation history.","loginToViewSoundEffectHistory":"Please log in to view your generation history.","no_history":"No generated sound effects yet. Create your first one below!","load_more":"Load more","no_results":"No sound effects found. Try adjusting your search query","results_truncated":"Showing only the first {count} results.","output":"Generated Sound Effect","parameters":"Generation Parameters","prompt":"Prompt","prompt_placeholder":"Describe the sound effect you want to generate...","refinement":"Refinement","refinement_tooltip":"Higher refinement levels produce clearer sound effects but take longer to generate.","reset":"Reset","retry":"Retry","search":"Search for sound effects","search_results":"Search Results","state_failed":"Generation failed","state_pending":"Generating...","steps":"Steps","steps_tooltip":"Higher step counts produce clearer sound effects but take longer to generate.","subtitle":"Generate unique sound effects with AI-powered audio synthesis","tab_history":"History","tab_search":"Explore","title":"Sound Effects","titleVerb":"Generate Sound Effects","topBar":{"subtitle":"A collection of realistic {effect} sound effects","subtitleDefault":"Generate realistic sound effects from text descriptions with advanced AI technology","title":"{effect} Sound Effect","titleDefault":"Sound Effects Generator"},"usecases":{"gaming":{"button":"Create Game Sounds","description":"Generate unique sound effects for your games - from footsteps and ambient sounds to explosions and magical spells. Create immersive audio experiences without expensive sound libraries.","title":"Game Development"},"podcast":{"button":"Enhance Podcasts","description":"Add professional sound effects to your podcasts and audio content. Create intros, transitions, and ambient backgrounds that make your content stand out.","title":"Podcast & Audio Content"},"subtitle":"Discover how AI sound effects can enhance your creative projects","title":"Sound Effects Use Cases","video":{"button":"Start Creating","description":"Enhance your videos with custom sound effects. Perfect for YouTube content, films, advertisements, and social media videos. Get the exact sound you need without searching through libraries.","title":"Video Production"}},"state_legacy_unavailable":"Legacy result unavailable","custom_range":"Custom, {min}-{max}","duration_presets":{"short":{"label":"Short"},"long":{"label":"Long"}},"step_presets":{"draft":{"label":"Draft","description":"Fast preview"},"balanced":{"label":"Balanced","description":"Good quality and speed"},"high_quality":{"label":"High Quality","description":"Clearer sound details"}},"guidance_presets":{"precise":{"label":"Precise","description":"Follows the prompt closely"},"balanced":{"label":"Balanced","description":"Natural variation"},"creative":{"label":"Creative","description":"More unexpected results"}}},"music-generation":{"add_to_bank":"Add to bank","advanced_settings":"Advanced Settings","authenticationRequired":"Authentication Required","batch_size":"Batch","batch_size_tooltip":"Number of songs to generate in parallel.","bpm":"BPM","bpm_auto":"Auto","bpm_tooltip":"Beats per minute (30–300). Leave on auto for the model to decide.","cancel":"Cancel","credit_info":"Each music generation costs credits based on duration.","delete":"Delete","delete_confirm_description":"This action cannot be undone. This will permanently delete the generated music.","delete_confirm_title":"Are you sure you want to delete this track?","delete_error":"Failed to delete track","delete_success":"Track deleted successfully","duration":"Duration","duration_auto":"Auto","duration_seconds":"{duration}s","guidance_scale":"Guidance","guidance_scale_tooltip":"CFG strength. Higher values follow the prompt more strictly. Only used by base/SFT models.","history_results":"Generation History","inference_steps":"Steps","inference_steps_tooltip":"Number of diffusion steps. More steps = higher quality but slower. Turbo: 4–8, Base: 32–100.","key_scale":"Key","key_scale_auto":"Auto","key_scale_tooltip":"Musical key and scale (e.g. C major, F# minor). Leave on auto for the model to decide.","loginToDownloadSample":"Please log in or sign up to download music samples.","loginToGenerate":"Please log in to generate music","loginToPlaySample":"Please log in or sign up to play music samples.","loginToViewHistory":"Please log in to view your music generation history","load_more":"Load more","lyrics":"Lyrics","lyrics_placeholder":"Add lyrics, or leave empty for instrumental","no_history":"No generated music yet. Create your first track!","no_results":"No music samples found. Try adjusting your search query","results_truncated":"Showing only the first {count} results.","prompt":"Describe your music","prompt_placeholder":"e.g. Upbeat electronic dance track with heavy bass and synth leads","retry":"Retry","search":"Search for music samples","search_results":"Search Results","state_failed":"Generation failed","state_pending":"Generating...","subtitle":"Create original music with AI, describe your genre, mood, and style.","tab_history":"History","tab_search":"Explore","time_signature":"Time Sig.","time_signature_auto":"Auto","time_signature_tooltip":"Time signature of the piece. Use auto for the model to decide.","title":"Music Generation","titleVerb":"Generate Music","view_lyrics":"View lyrics"},"startup":{"hero":{"about":"We believe voice is the interface to a soul. As AI becomes more interactive, the winning products will create conversations that feel real. Our Startup Program helps early-stage teams build that future with Fish Audio, without cost getting in the way.\n\nWhether you're creating an AI companion, an expressive character, or a new kind of agent, you get 3 months and 12 million characters per month of free access to Fish Audio's real-time, emotionally rich speech engine — enough to prototype, stress-test, and launch with confidence.","apply":"Apply","cta":"Apply Now","subtitle":"Power your products with the most expressive real-time voice AI with {brand} Startup Program."}},"stt":{"demo":{"formatTitle":"Try {format} to Text Now","title":"Try Speech to Text Now"},"features":{"accurate":{"description":"Tuned for interviews, meetings and podcasts","title":"Built for Real Speech"},"formatting":{"description":"Plus automatic tags, in the web app","title":"Speaker Labels & Timestamps"},"formatTitle":"{format} to Text Features","multilingual":{"description":"80+ languages with automatic detection","title":"Multilingual"},"privacy":{"description":"Your audio is processed only for transcription, never shared","title":"Privacy First"},"realtime":{"description":"Transcribe live audio streams instantly","title":"Real-time Transcription"},"smart":{"description":"Automatic punctuation and formatting","title":"Smart Punctuation"},"subtitle":"Accurate transcription for any audio, in real time","title":"AI Speech To Text Features"},"library":{"subtitle":"MP3, WAV, FLAC, M4A, MP4 and more. No conversion needed.","title":"Convert Any Audio File To Text"},"speech":"Speech","topBar":{"formatTitle":"{format} to Text","subtitle":"Transcribe any audio instantly, with speaker labels and automatic tags","title":"Speech To Text AI"},"usecases":{"formatTitle":"{format} to Text Use Cases","meetings":{"button":"Try It Free","description":"Transcribe calls as they happen. Web-app speaker detection labels who said what.","title":"Transcribe Meetings"},"subtitle":"Three ways teams use Fish Audio speech to text AI","subtitles":{"button":"Create Subtitles","description":"Timed segments export straight to SRT and VTT caption files in the web app.","title":"Generate Video Subtitles"},"title":"How To Transcribe Audio To Text","transcription":{"button":"Start Transcribing","description":"Turn interviews, lectures and recordings into word-for-word text. Export SRT, VTT or JSON in the web app.","title":"Transcribe Interviews"}}},"train-new-model":{"activity":"Latest Activity","add_audio_sample":"Add Audio Sample","audio_generating":"Please wait for all audio generation to complete before submitting","audio_sample":"Audio Samples","audio_sample_text":"Enter text for audio samples","audio_sample_title":"Enter title for audio samples","audio-file":{"connecting":"Connecting Device","drag_and_drop":"Drag and drop audio files here, or click to upload or record","record":"Record","record-start":"Start","record-info":"*You can record your voice using your own text or the suggested text below.","record-not-supported":"Your browser does not support recording. Please use a different browser.","record-error":"Failed to access microphone. Please try again.","no-microphone":"No microphone found. Please connect a microphone and try again.","permission-denied":"Microphone access denied. Please allow microphone access in your browser settings.","retry":"Retry","recording":"Recording","start":"Click to Start Recording","stop":"Stop","title":"Record or upload your audio files","upload":"Upload","loading-prompt":"Loading suggested prompt...","new-prompt":"Shuffle Text","prompt-hint":"No need to read it word for word — feel free to rephrase or add fillers. Just sound natural.","supported":"Supported: {formats}","max-file-size":"Max {size} per file","max-total-size":"Max {size} total"},"audio":{"good":"Ready to analyze","not-good":"Too short or too long","too-long":"Too long","too-short":"Too short","enough":"Enough for most voices"},"audioRequiredWarning":"Please upload or record audio before proceeding to voice details","authenticationRequired":"Authentication Required","backToAudio":"Back to audio","cancel":"Cancel","changeCover":"Change cover","confirmVoiceRights":"I confirm I have permission to create and share this voice model.","confirmVoiceRightsTooltip":"Only create voices you own, have consent from the speaker to use, or are otherwise legally allowed to share. By creating this model, you agree to our <termsLink>Terms of Service</termsLink> and <privacyLink>Privacy Policy</privacyLink>. We may remove voice models that violate these rules.","confirmVoiceRightsPublicNotice":"Public voice models may be visible to and usable by others.","continueToDetails":"Continue to details","licensed-professional-badge-tooltip":"Professional voice — licensed from a professional voice actor.","licensed-safe-badge-tooltip":"Safe to use — commercially licensed from the voice owner.","professional-badge-tooltip":"Professional voice clone — the voice owner's identity has been verified.","pvc-safe-badge-tooltip":"Safe to use — the voice owner's identity passed voice verification. Use this verified voice for 2× credits and help its creator earn.","uploadToContinue":"Upload to continue","goToUpgrade":"Upgrade","currentPlanLimitTip":"Current plan limit","cover-image":"Cover Image (Optional)","coverImageTooltip":"Cover Image (optional) - A less than 1MB image for the model cover","create":"Create","describeYourVoice":"Describe your voice","description":"Description (Optional)","description-placeholder":"A description of the voice.","done":"Done","duration":"Uploaded:","duration-indicator":"Aim for ~30s","duration-info":"Minimum {min}s. Around {recommend}s is enough for most voices, longer audio can still help.","editPicture":"Edit Picture","editPictureDescription":"Crop and adjust your profile picture","enhance-audio-quality":"Isolating Voice (Premium Feature, Beta)","error_private_limit_reached":"You've reached your private voice limit. Upgrade your plan for more private voice slots.","error_private_not_allowed":"Private voices are not available on your current plan. Upgrade to enable private voices.","error_public_limit_reached":"You've reached your public voice limit. Upgrade your plan for more public voice slots.","form-error":{"confirm_voice_rights_required":"(Required)","name_max_length":"Name must be less than 50 characters","name_required":"Please enter a name","samples_text_audio":"Must generator audio for all samples","samples_max_count":"A voice can have up to {count} samples. Existing samples above this limit can still be edited or removed.","samples_absolute_max_count":"This legacy voice exceeds the {count}-sample safety limit and must be migrated before it can be saved.","samples_text_text_length":"Content must be less than 500 bytes","samples_text_title_length":"Title must be less than 50","video_has_audio":"Video must contain audio track","voices_length":"Audio duration should be between {min}s and {max}s","voices_required":"Please Upload an Audio File","voices_size":"Total file size should be less than 1 GB","voices_type":"Please upload a valid audio or video file","voices_max_files":"You can upload up to {count} audio files"},"generate_sample":"Generate Sample","generated_voices":"Generated Voices Will Appear here","generated_voices_tips":"No voices yet","generateVoice":"Generate Voice","generator_audio":"Generator Audio","generator_audio_tips":"Generating samples will consume your Playground quota","input-audio":"Input Audio","inputAudioStep":"Input Audio","instantVoiceClone":"Instant Voice Clone","instantVoiceCloneSubtitle":"Requires only 10 seconds of audio!","startAnalyze":"Analyze Audio","uploaded":"Uploaded","limit":"A less than 1MB image for the model cover","loading_audio":"Wait for audio generation...","languageUnknown":"Unknown","loginToCreateModel":"Please log in to create your voice model","max":"Plan limit","min":"Min","modelDetail":"Voice Detail","nextStep":"Next","noDescription":"No description","pleaseLoginToContinue":"Please log in to continue creating your voice model","premium":"Premium","preview":"Preview","previousStep":"Back","private":"Private","private_des":"This voice model is only visible to the creator and cannot be shared and will not appear in the discover section","public":"Public","public_des":"This voice model will be visible in the discover page and can be seen by everyone.","recommend":"Enough","upgradeToIncreaseLimitTip":"Upgrade for a higher limit","upgradeDurationCardSubtitle":"Record up to {max}s with an upgrade","pvc_keep_one_sample":"PVC voices must keep at least one sample","pvc_samples_locked":"Samples are locked while this PVC voice is released. You can still listen to them.","regenerate_sample":"Regenerate Sample","sample_text_changed":"Text changed. Regenerate the sample before saving.","sample_text":"Audio Samples","sample_title":"Sample {index}","save":"Save","skip":"Skip","sourceAudio":"Source Audio","step":"Step {index}","suggested-tags":{"advertisement":"Advertisement","angry":"Angry","animated":"Animated","anime":"Anime","announcer":"Announcer","authoritative":"Authoritative","breathy":"Breathy","bright":"Bright","calm":"Calm","character":"Character","character-voice":"Character Voice","cheerful":"Cheerful","cinematic":"Cinematic","clear":"Clear","coach":"Coach","confident":"Confident","conversational":"Conversational","crisp":"Crisp","dark":"Dark","deep":"Deep","documentary":"Documentary","dramatic":"Dramatic","dynamic":"Dynamic","educational":"Educational","empathetic":"Empathetic","energetic":"Energetic","entertainment":"Entertainment","enthusiastic":"Enthusiastic","expressive":"Expressive","fast":"Fast","female":"Female","friendly":"Friendly","gaming":"Gaming","gentle":"Gentle","high":"High","host":"Host","husky":"Husky","intimate":"Intimate","low":"Low","male":"Male","measured":"Measured","medium":"Medium","middle-aged":"Middle Aged","monotone":"Monotone","mysterious":"Mysterious","narration":"Narration","narrative":"Narrative","neutral":"Neutral","neutral-tone":"Neutral Tone","old":"Old","playful":"Playful","podcast":"Podcast","professional":"Professional","radio":"Radio","raspy":"Raspy","relaxed":"Relaxed","sad":"Sad","serious":"Serious","sexy":"Sexy","slow":"Slow","smooth":"Smooth","social-media":"Social Media","soft":"Soft","storytelling":"Storytelling","teacher":"Teacher","warm":"Warm","young":"Young"},"supportedFormats":"","tag":"Tags (Optional)","tag-categories":{"age":"Age","gender":"Gender","showLess":"Show less","showMoreCount":"+{count} more","use-case":"Use Case","voice-qualities":"Voice Qualities"},"tag-placeholder":"Search and select voice tags","tagPresetOnlyNotice":"Only preset tags are supported. Please choose from the suggested tags below.","title":"Name","title-placeholder":"Enter Voice Name","training-type":{"fast":"Instant","full":"Quality","title":"Mode"},"trainNewModel":"Create Voice","trainNewModelTitle":"Build New Voice","type":"Type","unlist":"Unlisted","unlist_des":"This voice model will not appear in the discover page, but can be shared with specific users via a link.","untitledVoice":"Untitled Voice","upgrade":"Upgrade","upload-img":"Upload Image","voice-design-badge-tooltip":"Safe to use — AI-designed voice, not cloned from any real person; no voice copyright risk.","voice_detail":"Voice Detail","voiceDescriptionPlaceholder":"A warm, friendly female voice with a slight British accent, perfect for audiobook narration. The tone should be calm and soothing, with clear enunciation.","voiceDesign":"Voice Design","voiceDetails":"Voice Details","voiceInfoStep":"Voice Information","what_type_title":"What is the type?","analyzeAudio":"Analyze Audio","analyzingAudio":"Analyzing Audio","reanalyzeAudio":"Re-analyze Audio","preflightStatusAnalyzing":"Analyzing","preflightStatusPassed":"good","preflightStatusWarning":"Warning","preflightWarningAcknowledge":"I understand that issues like multiple speakers or cut-off speech may reduce TTS generation quality.","audioAnalyzeRequired":"Please analyze your reference audio before continuing to voice details","audioWarningMustAcknowledge":"Check \"I understand\" to continue","aiSuggestions":"AI Suggestions","preflightExpired":"This analysis session has expired. Please analyze the audio again.","qualitySignalGood":"Clear single-speaker speech","qualitySignalLowQuality":"Speech may be less distinct","qualitySignalNeedsReview":"Reference audio may reduce cloning quality","qualitySignalMultiSpeaker":"Multiple speakers detected","qualitySignalSoundEffect":"Sound effects or strong background audio","qualitySignalTruncated":"Speech appears cut off","preflightStatusInfo":"Info","protectedNameNotice":"\"{name}\" is a protected voice actor/actor name. Verify your authorization below, or close this dialog and pick a different name.","qualitySignalLowQualityHelp":"Try speaking a bit more distinctly or reducing background noise.","qualitySignalMultiSpeakerHelp":"Try using a clip with only one speaker so the cloned voice stays consistent.","qualitySignalTruncatedHelp":"Try a clip where words are not cut off at the beginning or end."},"tts":{"demo":{"title":"Try Text to Speech Now"},"signup":{"dialogTitle":"Sign up free to unlock advanced text to speech"},"features":{"control":{"description":"Precisely control the speed, volume, and raw model parameters","title":"Pro Controls"},"emotion":{"description":"Add emotions and expressions to your speech","title":"Emotional Control"},"multilingual":{"description":"Automatic support for 8 languages with native accents","title":"Multilingual Support"},"natural":{"description":"Ultra-realistic voices that sound like real humans","title":"Natural Voices"},"quality":{"description":"Professional-grade audio output for any use case","title":"Studio Quality"},"realtime":{"description":"Generate speech in seconds with low latency","title":"Real-time Generation"},"subtitle":"Experience the most advanced TTS technology available now","title":"Text to Speech Features"},"introduction":{"card1":{"tag1":"Educational","tag2":"Informative"},"card2":{"tag1":"Narrative","tag2":"Curious"},"card3":{"tag1":"Calm","tag2":"Peaceful"},"description":"Discover the power of cutting-edge text-to-speech technology that creates incredibly natural and expressive voices. From whispered bedtime stories to energetic presentations, our AI voices adapt to every need with remarkable authenticity.","title":"Experience Natural AI Voices","tryDifferent":"Try different voices →","tryFree":"Try It Free","viewVoices":"View All Voices"},"topBar":{"subtitle":"Text to Speech with the most natural and human sounding AI voice generator","title":"Text to Speech"},"usecases":{"audiobooks":{"button":"Start Creating","description":"Transform written content into engaging audiobooks with natural-sounding voices that keep listeners captivated for hours.","title":"Audiobooks & Narration"},"podcasts":{"button":"Get Started","description":"Create podcasts with consistent, high-quality voices. Generate intros, outros, and even full episodes with AI voices.","title":"Podcast Production"},"subtitle":"Discover how TTS transforms content across industries","title":"Use Cases for Text to Speech","videos":{"button":"Try It Now","description":"Add professional voiceovers to your videos without hiring voice actors. Perfect for YouTube, tutorials, and documentaries.","title":"Video Narration"}}},"tutorials":{"all":"All","clear_search":"Clear search","coming_soon":"Coming soon :)","loading":"Loading...","new":"New","new_releases":"New Releases","no_results":"No tutorials found for \"{query}\"","partial_results":"Only the accessible tutorial results are shown. Additional tutorials may exist outside this pagination window.","search_placeholder":"Search tutorials...","source_blog":"Blog","title":"Tutorials"},"upgrade-dialog":{"billing":{"monthly":"Monthly","saveAmount":"Save $39.89","yearly":"Yearly"},"click_here_if_not_redirected":"Click if not redirected","current_plan":"Current Plan","expires_at":"Expires At","free":{"always_free":"Always Free","button":"Current Plan","description":"Try out the ultra-reaslitic AI voice","features_title":"What's included?","features":{"characters":"~3 minutes per clip","generations":"1 hour of ultra-realistic voice per month","no_api":"no API credit included","speed":"standard generation speed"},"name":"Free"},"last_chance_warning":"Take advantage of our lowest price before it changes!","later":"Maybe Later","manage_subscription":"Manage Subscription","next_reset":"Next Reset","premium":{"badge":{"monthly":"Popular"},"button":"Upgrade Now","button_purchase":"Purchase","description":"For creators making premium content","features_title":"Everything in Free, plus","features":{"api":"pay-as-you-go API","audio":"auto-optimized reference audio","characters":"~30 minutes per generation","effects":"precise controls (Coming soon)","generations":"unlimited generations (in web)","license":"commercial use of your voices","models":"latest AI models","speed":"priority generation"},"name":"Premium"},"quota_left":"Quota Left","subtitle":"Unlock advanced features and unlimited generations","title":"Choose Your Perfect Plan","title_zero_balance":"Your monthly free quota has been exhausted","title_zero_balance_premium":"Your daily quota has been exhausted"},"usage":{"credits_remaining":"{remaining} credits remaining","credits_used":"Credits used","current_package":"Current Package","cycle_end":"End","cycle_period":"Billing Cycle","cycle_start":"Start","description":"Monitor your credit usage and generation history","free_plan":"Free","generation_history":"Credit Usage","package_history_tab":"Package History","legacy_premium_plan":"Legacy Premium Plan","model":"Model","model_version":"Model","next_credit_refresh":"Next Credit Refresh","premium_plan":"Premium","renews_on":"Renews on {date}","source":"Source","time":"Time","title":"Usage & Credits","type":"Type","verbatim_credits_remaining":"Credits Remaining","consumed_by":"User","voice":"Voice"},"voice-library":{"features":{"feature1":{"description":"Access the largest library of AI voices on the internet. From professional narrators to unique character voices, find the perfect match for any project.","title":"2,000,000+ Voices"},"feature2":{"description":"Voices available in 8 languages including English, Spanish, Japanese, Chinese, French, German, and more. Native-quality pronunciation in every language.","title":"Multi-Language Support"},"feature3":{"description":"Filter by emotions, speaking styles, ages, and use cases. Find voices that match your exact requirements with powerful search and filtering tools.","title":"Advanced Filtering"},"feature4":{"description":"Listen to voice samples before you use them. Preview how each voice sounds to ensure it's the perfect fit for your content.","title":"Instant Preview"},"feature5":{"description":"Browse by categories like character voices, professional narrators, audiobook voices, gaming voices, and more. Find what you need faster.","title":"Organized Categories"},"feature6":{"description":"Many voices are created and shared by our global community of creators. Discover unique voices you won't find anywhere else.","title":"Community Created"},"subtitle":"The world's most comprehensive collection of {tags} AI voices","subtitleDefault":"The world's most comprehensive collection of AI voices","title":"{tags} AI Voice Features","titleDefault":"Voice Library Features"},"introduction":{"card1":{"tag1":"Educational","tag2":"Informative"},"card2":{"tag1":"Documentary","tag2":"Curious"},"card3":{"tag1":"Calm","tag2":"Peaceful"},"card4":{"tag1":"Narration","tag2":"Reflective"},"card5":{"tag1":"Sexy","tag2":"Smooth"},"description":"Browse through our vast collection of AI voices spanning multiple languages, styles, and emotions. From character voices for gaming to professional narrators for audiobooks, discover the voice that brings your project to life.","title":"Find Your Perfect Voice","tryFree":"Start Creating","viewVoices":"Explore Library"},"library":{"categories":{"age":"Find by Age","archetype":"Find by Archetype","delivery_style":"Find by Delivery Style","emotion":"Find by Emotion","energy":"Find by Energy","gender":"Find by Gender","genre":"Find by Genre","pitch":"Find by Pitch","usecase":"Find by Use Case"},"subtitle":"Discover thousands of AI voices for every project and style by category","title":"Explore More Voices"},"showcase":{"browse_all":"Browse All","popular_voices":"Popular {tags} Voices","title":"Explore {tags} voices"},"subTopBar":{"subtitle":"Choose from thousands of {tags} AI voices in our voice library for your next project.","title":"Discover {tags} AI Voices"},"tags":{"advertisement":"Advertisement","angry":"Angry","animated":"Animated","anime":"Anime","announcer":"Announcer","authoritative":"Authoritative","breathy":"Breathy","bright":"Bright","calm":"Calm","character":"Character","character-voice":"Character Voice","cheerful":"Cheerful","cinematic":"Cinematic","clear":"Clear","coach":"Coach","confident":"Confident","conversational":"Conversational","crisp":"Crisp","dark":"Dark","deep":"Deep","documentary":"Documentary","dramatic":"Dramatic","dynamic":"Dynamic","educational":"Educational","empathetic":"Empathetic","energetic":"Energetic","entertainment":"Entertainment","enthusiastic":"Enthusiastic","expressive":"Expressive","fast":"Fast","female":"Female","friendly":"Friendly","gaming":"Gaming","gentle":"Gentle","high":"High","host":"Host","husky":"Husky","intimate":"Intimate","low":"Low","male":"Male","measured":"Measured","medium":"Medium","middle-aged":"Middle Aged","monotone":"Monotone","mysterious":"Mysterious","narration":"Narration","narrative":"Narrative","neutral":"Neutral","neutral-tone":"Neutral Tone","old":"Old","playful":"Playful","podcast":"Podcast","professional":"Professional","radio":"Radio","raspy":"Raspy","relaxed":"Relaxed","sad":"Sad","serious":"Serious","sexy":"Sexy","slow":"Slow","smooth":"Smooth","social-media":"Social Media","soft":"Soft","storytelling":"Storytelling","teacher":"Teacher","warm":"Warm","young":"Young"},"topBar":{"browseButton":"Browse Voices","cta":"Get Started Free","stat1":"Voices","stat2":"Languages","stat3":"Categories","subtitle":"Discover the perfect voice from our extensive library. Character voices, professional narrators, and everything in between.","title":"Explore <highlight>2,000,000+ AI Voices</highlight> for Every Project"},"usecases":{"content":{"button":"Browse Voices","description":"Find the perfect narrator or host voice for your YouTube videos, podcasts, and social media content. Browse thousands of professional-quality voices with different tones, styles, and emotions to match your brand.","title":"Video & Podcast Production"},"gaming":{"button":"Explore Character Voices","description":"Populate your game worlds with diverse character voices. From heroic protagonists to menacing villains, discover expressive voices that bring your characters to life across every genre.","title":"Gaming & Interactive Media"},"localization":{"button":"Find Multilingual Voices","description":"Reach audiences worldwide with voices in 8+ languages. Find native-quality voices for dubbing, translation, and localized content creation without the overhead of traditional voice casting.","title":"Global Localization"},"subtitle":"Discover how creators use our {tags} AI voices to power their projects","subtitleDefault":"Discover how creators use our AI voice library to power their projects","title":"{tags} AI Voice Use Cases","titleDefault":"Voice Library Use Cases"}},"voice-slots":{"benefit_more_credits":"More generation credits and priority support","benefit_private_voices":"Up to 10 private voices (Plus) or unlimited (Pro)","benefit_unlimited_public":"Unlimited public voice slots","cancel":"Cancel","current_usage":"Your Current Voice Slots","private_label":"Private voices","private_voices":"Private / Unlisted Voices","public_label":"Public voices","public_voices":"Public Voices","slots_used":"slots used","tooltip_free":"Free user can create up to 3 public voices. Upgrade for more voice slots.","tooltip_plus":"You have unlimited public voices and up to 10 private/unlisted voices.","tooltip_plus_used":"Private/unlisted slots used. You have unlimited public voices and up to 10 private/unlisted voices.","tooltip_pro":"You have unlimited public/private/unlisted voices.","unlimited":"Unlimited","upgrade_audio_duration_desc":"Free users can upload up to 90 seconds of audio. Upgrade your plan to upload up to 210 seconds for better voice cloning quality.","upgrade_audio_duration_title":"Audio Duration Limit Reached","upgrade_benefits_title":"What you get with an upgrade:","upgrade_desc":"Upgrade your plan to unlock more voice slots and additional features.","upgrade_private_limit_desc":"You've used all 10 of your private voice slots. Upgrade to Pro for unlimited private voices.","upgrade_private_limit_title":"Private Voice Limit Reached","upgrade_private_locked_desc":"Private and unlisted voices are only available on Plus and Pro plans. Upgrade to create voices that only you can access.","upgrade_private_locked_title":"Private Voices Locked","upgrade_public_limit_desc":"You've used all 3 of your free voice slots. Upgrade for more voice slots.","upgrade_public_limit_title":"Voice Slot Limit Reached","upgrade_title":"Unlock More Voice Slots","view_plans":"View Plans"},"voiceChanger":{"topBar":{"title":"AI Voice Changer — Swap Any Voice in Seconds","subtitle":"Upload a clip, pick a target voice, get a new file in seconds. Your timing, emotion and pacing stay intact."},"features":{"title":"AI Voice Changer Features","subtitle":"Neural voice conversion for creators, gamers, and studios","realtime":{"title":"Fast Conversion","description":"Upload a clip and get the converted file in seconds"},"quality":{"title":"Studio-Quality Output","description":"Preserve emotion, timing, and expression in the transformed audio"},"fast":{"title":"Lightning Fast","description":"Most clips process in under 30 seconds end-to-end"},"multilingual":{"title":"Language Flexible","description":"Works across 13 languages"},"secure":{"title":"Secure by Default","description":"Your audio stays private and is never shared"},"library":{"title":"Rich Voice Library","description":"Pick from curated characters or bring your own reference"}},"useCases":{"title":"Voice Changer Applications","subtitle":"See how creators turn voice changing into production-ready audio","gaming":{"title":"Gaming & Streaming","description":"Give recorded gameplay and stream VODs any character voice, no voice actors needed.","button":"Try Voice Changer"},"content":{"title":"Content Creation","description":"Narrate shorts, podcasts, and tutorials in a custom voice without recording in a studio. Scale your output without changing your workflow.","button":"Start Creating"},"dubbing":{"title":"Dubbing & Localization","description":"Re-voice existing audio into a different character or language-friendly delivery. Keep the original performance, swap the voice.","button":"Try Dubbing"},"privacy":{"title":"Privacy & Anonymization","description":"Share your story without exposing your identity. Perfect for interviews, whistleblower reporting, and anonymous podcasts.","button":"Protect My Voice"},"podcast":{"title":"Podcast Post-Production","description":"Fix takes, replace a co-host, or add character voices in post without scheduling another session.","button":"Polish My Podcast"},"character":{"title":"Character Performance","description":"Give every character in your story a unique voice. Ideal for audio drama, tabletop campaigns, and animation.","button":"Voice My Characters"}},"panel":{"upload_source":"Upload source audio","select_voice":"Target voice","submit":"Transform Voice","submitting":"Transforming...","upload_custom_cta":"Upload your own reference","result_title":"Your transformed audio","pause":"Pause","resume":"Play","try_again":"Try with your own voice","login_required":"Log in to continue","duration_exceeded":"Source audio must be 30 seconds or shorter","generic_error":"Something went wrong. Please try again.","recaptcha_failed":"Verification failed. Please refresh and try again.","more_languages_note":"Log in to access more voices in Chinese, Japanese and other languages."}},"voiceClone":{"demo":{"title":"Try 10-Second Voice Cloning"},"topBar":{"eyebrow":"Voice Cloning · Fish Audio S2","title":"Clone any voice in 15 seconds.","subtitle":"Drop a 10-second clip in, get a voice ready in seconds. Have a sitting president narrate your dating app, run a tech-billionaire launch for your worst idea, or build a fake-panel podcast — no booth, no impressionist on retainer.","trust1":"10s sample is enough","trust2":"Sub-300ms streaming","trust3":"Open-source S2 model","trust4":"Free tier, no card"},"features":{"title":"Built for speed, shipped without the wait","subtitle":"Ten seconds of audio. A usable voice in seconds. No long studio sessions, no training queues, no premium tier gate.","instant":{"title":"10-second clone","description":"One short clip is enough. No 30-minute studio session, no premium tier required."},"quality":{"title":"Studio-grade fidelity","description":"Captures timbre, cadence, and micro-prosody on the first pass — even from noisy field recordings."},"fast":{"title":"Ready in seconds","description":"Instant turnaround. No multi-hour training queue between you and a usable voice."},"crosslingual":{"title":"Zero-shot in 13 languages","description":"Clone once, speak everywhere. No separate multilingual model, no extra training, no re-recording."},"emotion":{"title":"Emotion that survives the clone","description":"Anger, irony, hesitation — the small things that make a voice recognisable carry through every sentence."},"apiReady":{"title":"Open-source S2, API-ready","description":"Self-host the model, hit our sub-300ms streaming endpoint, or ship voices into your agents and apps."}},"usecases":{"title":"What creators actually use it for","subtitle":"Sketches, takes, and crossovers built for feeds — not boardrooms.","sketches":{"title":"Sketch & impression reels","description":"Drop a populist rant onto your dating-app meltdown, voice-act a tech-billionaire product launch for your worst startup idea, or run a weekly impression bit. No booth, no impressionist on retainer — record the joke, ship the clip.","button":"Make a comedy clip"},"commentary":{"title":"24/7 takes channels","description":"Spin up a hot-take channel that reacts to today's news before bedtime, stack a fake-panel podcast where every cohost is someone you'd never get on Zoom, or feed a daily news bit into an AI host that never burns out.","button":"Spin up a channel"},"crossover":{"title":"Memes that travel","description":"Take an English impression and ship the same delivery in Spanish, Japanese, or Arabic the same afternoon. One joke, every region — your algorithm doesn't care which timezone you're farming.","button":"Try multilingual cloning"}},"highlights":{"title":"Why Fish Audio S2","subtitle":"Fast cloning, open deployment, global voices, and streaming built for production.","items":{"reference":{"label":"Reference audio","value":"10 seconds is enough"},"speed":{"label":"Time to clone-ready","value":"Seconds, not hours"},"crosslingual":{"label":"Cross-lingual","value":"Zero-shot in 13 languages"},"latency":{"label":"Streaming latency","value":"Sub-300ms end-to-end"},"openSource":{"label":"Model openness","value":"S2 open-source, self-hostable"},"freeTier":{"label":"Free tier","value":"Start free, no card required"}}}},"waitlist":{"join_waitlist":"Join the waitlist","promotion_bar":{"title":"Join the waitlist for this feature immediately"},"related_keywords":{"title":"Know more about other features"},"submit_error":"Submit failed","submit_loading":"Submitting...","submit_success":"Thank you for your subscription!","tools_header":{"title":"200,000+ users have already joined us"}},"with-draw":{"amount":"Withdrawal amount","amount_placeholder":"Please enter the withdrawal amount","balance":"Balance","balance_title":"balance","completed":"Complete","created_at":"Application Date and Time","failed":"The withdrawal request failed","handle_withdrawal":"extract","history":"Withdrawal history","insufficient_balance":"Insufficient balance","max_amount":"The maximum withdrawal amount is {amount}","min_amount":"The minimum withdrawal amount is {amount}","pending":"In progress","placeholder_amount_history_description":"Recent withdrawal amount history","placeholder_amount_history_title":"Extract records","placeholder_amounts":"Withdraw amount","rejected":"Rejected","status":"Processing status","submit":"Request a withdrawal","success":"Withdrawal request received","title":"Withdrawal request","total_amount_history_description":"Recent earnings amount history details","total_amount_history_title":"Earnings record","total_amount_title":"Total amount obtained","view_all":"View All"},"speech-to-text-page":{"delete":"Delete","delete_success":"Task deleted","delete_error":"Failed to delete task","delete_confirm_title":"Delete Task","delete_confirm_description":"Are you sure you want to delete this task? This action cannot be undone.","tab_transcribe":"Transcribe","title":"Speech to Text","limit_file_size":"Max 1GB","limit_duration":"Max 10 hours","pricing_label":"3,000 credits / minute, billed per second","create_title":"Create transcription task","create_description":"Choose a file, review the estimate, then upload it directly to cloud storage for asynchronous processing.","upload":"Choose audio or video file","upload_hint":"Drag and drop an audio or video file here, or click to upload\nUpload starts only after you create the task.","num_speakers":"Number of speakers","num_speakers_placeholder":"Auto","num_speakers_invalid":"Number of speakers must be between 1 and 16.","tag_audio_events":"Tag audio events","tag_audio_events_description":"Keep bracketed tags like [music] and [applause] in the saved transcript.","estimated_duration":"Estimated duration","estimated_minutes":"Billable minutes","estimated_credits":"Estimated credits","estimating":"Estimating...","duration_unavailable":"Unavailable","duration_parse_failed":"Couldn't read duration from this file.","file_too_large":"File must be 1GB or smaller.","duration_too_long":"Audio must be 10 hours or shorter.","create_task":"Create task","creating_task":"Creating task...","signing_upload":"Preparing upload...","uploading":"Uploading...","tasks_title":"Recent tasks","tasks_description":"Track STT jobs across pending, processing, completed, and failed states.","tasks_updated":"Tasks updated","no_history":"No STT tasks yet.","open_viewer":"View","untitled_audio":"Untitled audio","credits_short":"{count} credits","status_pending":"Pending","status_processing":"Processing","status_finished":"Completed","status_failed":"Failed","loginRequired":"Login Required","loginToTranscribe":"Please log in to create an STT task.","viewer_not_found":"STT task not found.","back_to_list":"Back to list","viewer_updated":"Updated just now","audio_pending":"Audio file is still being prepared.","viewer_failed":"This transcription task failed.","viewer_processing":"Transcription is still running. The viewer will refresh automatically.","viewer_waiting":"Waiting for the worker to start.","controller_title":"Controller","updated_label":"Updated","duration_label":"Duration","speakers_label":"Speakers","segments_label":"Segments","voice_separation_label":"Voice separation","tag_audio_events_label":"Tag audio events","credits_label":"Credits","cost_label":"Credits Cost","on":"On","off":"Off","auto":"Auto","transcript_title":"Speaker-attributed transcript","transcript_empty":"No transcript yet.","overlap_label":"Overlap","export_button":"Export","export_modal_title":"Export transcript","export_modal_description":"Choose a format and adjust subtitle export settings before downloading.","export_format_title":"Format","export_format_description":"Pick the output format for this export.","export_format_json":"JSON (raw)","export_format_json_description":"Download the canonical STT manifest without subtitle transformations.","export_format_srt":"SRT","export_format_srt_description":"Classic subtitle cues for most editors and players.","export_format_vtt":"VTT","export_format_vtt_description":"WebVTT subtitles with optional inline word timing.","export_general_options_title":"General options","export_general_options_description":"These settings apply to SRT and VTT subtitle exports.","export_include_tags":"Include tags","export_include_tags_description":"Keep bracketed audio events like [music] and [applause].","export_include_speaker":"Include speaker","export_include_speaker_description":"Prefix each cue with the detected speaker label when available.","export_punctuation":"Punctuation","export_punctuation_description":"Keep punctuation in exported subtitle text. Turn this off for a cleaner token stream.","export_split_mode_title":"Split mode","export_split_mode_description":"Choose whether to keep the current segments or regroup cues from word timings.","export_split_mode_segment":"Segment","export_split_mode_segment_description":"Keep the existing STT segment boundaries as subtitle cues.","export_split_mode_max_words":"Max words","export_split_mode_max_words_description":"Regroup cues from word timings using punctuation, speaker changes, and a word cap.","export_max_words_label":"Max words per cue","export_max_words_hint":"Current cap: {count} words per cue.","export_json_raw_hint":"Raw JSON export ignores subtitle-only options and downloads the saved manifest directly.","export_vtt_options_title":"VTT options","export_vtt_options_description":"These settings only apply to WebVTT exports.","export_word_level_timestamps":"Word-level timestamps","export_word_level_timestamps_description":"Emit inline WebVTT timestamps for each word when timings are available.","cancel":"Cancel","export_action":"Export","import_to_studio_button":"Import to Audiobooks","import_modal_title":"Import to Audiobooks","import_modal_description":"Turn the transcript into an editable Audiobooks script.","import_mode_new":"Create new project","import_mode_new_description":"Create a new Audiobooks project from this transcript.","import_mode_existing":"Add to existing project","import_mode_existing_description":"Append the transcript to a project you already have.","import_project_name_label":"Project name","import_project_name_placeholder":"Enter a project name","import_select_project_label":"Select a project","import_no_projects":"No projects yet","import_loading_projects":"Loading projects…","import_empty_segments":"There is no content to import.","import_action":"Import","import_success":"Imported to Audiobooks.","import_failed":"Import failed. Please try again."},"voice-changer":{"title":"Voice Changer","tab_convert":"Convert","tab_history":"History","upload_description":"Drag and drop an audio or video file here, or click to upload","upload":"Upload","uploaded":"Uploaded","record_audio":"Record","stop_recording":"Stop Recording","record_connecting":"Connecting...","record_not_supported":"Recording is not supported in this browser. Please upload an audio file.","record_permission_error":"Unable to access the microphone. Check your browser permissions.","ref_voice_title":"Reference Voice","ref_mode_model":"Select Model","ref_mode_model_recommended":"Select Model (Recommended)","ref_mode_upload":"Upload Reference","search_model":"Search models...","search_no_results":"No models found","searching":"Searching...","selected_model":"Selected: {name}","clear_selection":"Clear","ref_upload_title":"Upload Reference Audio","advanced_settings":"Advanced Settings","noise_scale_label":"Noise Scale","convert":"Convert","converting":"Converting...","processing_notice":"Your file is being converted. This may take a moment...","seek_video":"Seek video","conversion_complete":"Conversion complete","state_pending":"Queued","state_processing":"Processing","state_finished":"Completed","state_failed":"Failed","state_legacy_unavailable":"Result no longer available","no_history":"No voice changer tasks yet.","history_results":"History","delete":"Delete","delete_success":"Task deleted","delete_error":"Failed to delete task","delete_confirm_title":"Delete Task","delete_confirm_description":"Are you sure you want to delete this task? This action cannot be undone.","cancel":"Cancel","loginRequired":"Login Required","loginToConvert":"Please log in to use voice conversion","loginToViewHistory":"Please log in to view history","pricing_label":"3,000 credits / minute, billed per second","estimated_duration":"Estimated duration","estimated_credits":"Estimated credits","estimating":"Estimating...","duration_unavailable":"Unavailable","duration_parse_failed":"Couldn't read duration from this file.","form-error":{"audio_required":"Please upload an audio or video file","file_type":"Source must be a WAV, MP3, FLAC, OGG, M4A, OPUS, WEBM, MP4, or MOV file","audio_size":"Source file must be 100MB or smaller","ref_file_type":"Reference audio must be a WAV, MP3, FLAC, OGG, M4A, OPUS, or WEBM file","ref_audio_size":"Reference audio must be 100MB or smaller","ref_model_required":"Please select a reference voice model","ref_audio_required":"Please upload a reference audio file","ref_required":"Please select a reference voice or upload reference audio"},"replace_file":"Replace File","select_voice":"Select Voice","or":"Or","upload_max_size":"Max 100MB per file","remove_reference_voice":"Remove reference voice","remove_reference_audio":"Remove reference audio","play_reference":"Play reference audio","pause_reference":"Pause reference audio","task_load_error":"Unable to load this task.","retry":"Retry","submission_failed":"Couldn't submit this audio. Your file and settings have been kept. Try again."},"pvc":{"title":"Professional Voice Clone","upload-formats":"Supported format: MP3, WAV, FLAC","upload-hint-1":"Each audio clip should be less than 1 minute.","upload-hint-2":"We recommend uploading 12-15 clips, each between 45-60 seconds, with a consistent tone.","upload-btn":"Upload","uploaded":"Uploaded","re-analyze":"Re-analyze Audio","reopen-confirm-title":"Re-edit audio files?","reopen-confirm-desc":"Editing your audio will clear the current analysis results. All clips will be reset and need to be analyzed again before you can continue.","reopen-confirm-cancel":"Cancel","reopen-confirm-ok":"Confirm","good":"good","merging":"Merging","failed":"Failed","rejected":"Rejected","rejected-default-reason":"No usable speech detected. Please go back and re-record a clearer audio with minimal background noise.","warning":"Warning","warning-default-reason":"Multiple speakers detected. Try to use segments with only one speaker, as this will result in a more stable cloned voice.","continue":"Continue","analyzing":"Analyzing","back":"Back","start-analyze":"Analyze Audio","verify-title":"Verify Voice Ownership","verify-desc":"Read the text below to prove you own this voice. The system will automatically compare the voiceprint with the training material.","verify-content":"\"Forest fires, although destructive, can clear old vegetation and provide growing space for new plants, a natural renewal process in forest ecosystems.\"","verify-record":"Record","verify-stop":"Stop","verify-verifying":"Verifying","verify-error":"We couldn't verify your identity.","verify-tab-myself":"Myself","verify-tab-proxy":"Proxy","verify-proxy-desc":"If the voice owner cannot complete verification, please provide legal proof to request a human review.","verify-proxy-upload-title":"Upload Authorization / Heir Proof","verify-proxy-upload-hint":"Supported: PDF, JPG, PNG (Max 10MB per file)","verify-proxy-declaration":"I declare under penalty of perjury that the information provided in this form is accurate, and that I am the rightful owner or authorized representative of the voice identity in question. I understand that submitting false claims may lead to legal consequences.","verify-proxy-submit":"Submit","verify-proxy-unsupported":"Unsupported file type. Please upload a PDF, JPG, or PNG.","verify-proxy-rejected":"Your document didn't pass review. Please upload a different file or verify by voice.","verify-proxy-processing-error":"We couldn't process your document. Please try again later.","upload-duplicate-audio":"This audio file has already been uploaded.","upload-file-too-large":"File is too large. Please upload a smaller file.","file-deleted":"Audio file deleted.","verify-failed-title":"Verification Failed","verify-failed-desc":"We were unable to verify your identity at this time. The model is locked and cannot be deleted. Please contact customer service for assistance.","verify-failed-ok":"Okay","training-title":"Model","training-banner-title":"Preparing training materials...","training-banner-desc":"Training typically takes 10 to 30 minutes. We'll notify you via email as soon as your training is complete.","training-model-id":"Model ID","training-language":"Language","training-time":"Training time","training-state":"State","training-state-value":"training","trained-banner-title":"Training complete","trained-banner-desc":"Your Professional Voice model is trained and ready for sample review.","trained-state-value":"trained","preview-title":"Preview","preview-sample-1-text":"\"Welcome to today's broadcast - I'm your host.\"","preview-sample-1-label":"welcoming","preview-sample-2-text":"\"This is incredible - I can't wait to share it with everyone!\"","preview-sample-2-label":"excited","preview-sample-3-text":"\"In the quiet golden hour, the city lit one window at a time.\"","preview-sample-3-label":"narrative","preview-custom":"Custom preview text","preview-text-label":"Preview text","preview-text-hint":"Leave this blank to let the system write a short in-context sample.","generate-preview":"Generate Preview","release-voice-details":"Voice Details","release-voice-name":"Voice Name","release-voice-name-placeholder":"Name your voice here","release-cover":"Cover","release-description":"Description","release-gender":"Gender","release-age":"Age","release-use-cases":"Use cases","release-voice-style":"Voice Style","release-show-more":"Show More","release-show-less":"Show Less","release-type":"Type","release-public":"Public","release-public-desc":"This voice will be visible in the Voice Library and can be seen and used by everyone.","release-unlisted":"Unlisted","release-unlisted-desc":"This voice model will not appear in the discover page, but can be shared with specific users via a link.","release-private":"Private","release-private-desc":"This voice model is only visible to the creator and cannot be shared and will not appear in the discover section","release-compliance":"I confirm I have permission to create and share this voice model.","release-compliance-required":"(Required)","release-compliance-detail":"Only create voices you own, have consent from the speaker to use, or are otherwise legally allowed to share. By creating this model, you agree to our <termsLink>Terms of Service</termsLink> and <privacyLink>Privacy Policy</privacyLink>. We may remove voice models that violate these rules.","release-compliance-public-notice":"Public voice models may be visible to and usable by others.","release-back":"Back","create-voice":"Create Voice","continue-to-release":"Continue to Release","resume-error-title":"Couldn't open this draft","resume-error-description":"We couldn't load this Professional Voice Clone draft. It may have been deleted or is temporarily unavailable.","resume-error-forbidden-description":"You don't have access to this draft. It may belong to another account or team.","resume-retry":"Retry","resume-cancelled-title":"This draft was cancelled","resume-cancelled-description":"This Professional Voice Clone draft has been cancelled and can no longer be resumed. You can create a new voice instead.","resume-failed-title":"This voice failed to build","back-to-my-voices":"Back to My Voices","create-new-voice":"Create New Voice","verification-failed-banner-title":"Verification attempts exhausted","verification-failed-banner-description":"This draft has used all of its verification attempts and cannot continue. Contact support to free up this voice slot.","resumed-existing-draft":"Resumed your existing draft"},"ttsApi":{"hero":{"headline1":"Text to Speech API","headline2":"Build Voice Into Any App","subhead":"Expressive, directable speech at ~100ms latency, the same S2.1 Pro model behind HeyGen, Retell, and Plaud.","getApiKey":"Get API key","readDocs":"Read the docs"},"demo":{"seedText":"[chuckle] When you are building something new, there is this [audience laughing] mix of wonder and fear. [whisper] But that's what makes it worth building.","languageLabel":"English","voiceLabel":"S2.1 Pro · recommended"},"stats":{"item1":{"number":"<100","unit":"ms","caption":"TIME TO FIRST AUDIO"},"item2":{"number":"Unlimited","caption":"direction tags"},"item3":{"number":"80","unit":"+","caption":"LANGUAGES"},"item4":{"number":"$15","unit":"/1M UTF-8 bytes","caption":"PAY AS YOU GO"}},"logoWall":{"heading":"Running in production at"},"modelCards":{"title":"Models built for different production needs","subtitle":"One API. Switch models with a single header. Both API models bill at the same flat rate.","cards":{"s2":{"tag":"THE ORIGINAL","title":"S2 Pro","description":"Accurate on even the shortest utterances","bullet1":"Instant voice cloning","bullet2":"Full multilingual support","bullet3":"Reliable on very short prompts","bullet4":"Same flat rate as S2.1 Pro","button":"View Docs"},"s21Pro":{"tag":"RECOMMENDED","title":"S2.1 Pro","description":"The most expressive model Fish ships.","bullet1":"Time-to-first-audio ~100ms (no single H200)","bullet2":"Real-time factor 0.195","bullet3":"80+ languages, instant code-switching","bullet4":"Open-domain Emotion Tags","bullet5":"Native multi-speaker in one generation","button":"View Docs"},"onPremise":{"tag":"ENTERPRISE DEPLOYMENT","title":"On-premise","description":"Deploy in your own infrastructure.","bullet1":"VPC, on-prem, sovereign cloud, air-gapped","bullet2":"Zero data egress","bullet3":"Full model control","bullet4":"Commercial license available","button":"Contact Sales"}}},"quickstart":{"headline1":"From signup to first audio in","headline2":"minutes.","subcopy":"No sales call required. Get an API key, install the SDK, and ship.","curlCardTitle":"cURL · REST API","pythonCardTitle":"Python · Fish Audio SDK","chips":{"python":"Python SDK","typescript":"TypeScript SDK","rest":"REST","websocket":"WebSocket streaming"}},"features":{"heading1":"Everything you need","heading2":"to ship production speech","subhead":"One API for voice creation, expressive generation, and real-time delivery.","getApiKey":"Get API key","readDocs":"Read the docs","card1Title":"Inline emotion and delivery","card1Desc":"Direction written as [tag] syntax, anywhere in the text. Unlimited free-form tags, no separate emotion parameter.","card2Title":"Millions of community voices","card2Desc":"Browse and ship from the largest open voice library, or clone your own and build on top of it.","card3Title":"Multi-speaker dialogue","card3Desc":"Generate a full conversation in one pass. Available on S2.1 Pro.","card4Title":"Instant voice cloning","card4Desc":"Capture timbre and speaking style from a short reference clip. Works across all 80+ languages with no extra training.","card5Title":"Read complex text naturally","card5Desc":"Numbers, currency, dates, and units spoken correctly","card6Title":"Streaming and timestamps","card6Desc":"Stream audio with word-level timestamps."},"productTabs":{"title":"Build the Voice Experience Your Product Needs","subtitle":"Create a reusable voice, direct how it performs, and stream it into real-time products.","tabs":{"instantCloning":"Instant cloning","neuralTts":"Neural TTS","restApi":"REST API and SDKs"},"instantCloning":{"title":"Clone Any Voice Instantly<br></br>with Fish Audio","body":"The Fish Audio AI voice cloning API turns a short reference clip into a reusable voice. The clone captures timbre and speaking style and carries across all 80+ languages with no extra training."},"codeLabel":"PYTHON SDK","neuralTts":{"title":"Neural Voice Models and Inline Emotion Control","body":"The Fish Audio AI voice cloning API turns a short reference clip into a reusable voice. The clone captures timbre and speaking style and carries across all 80+ languages with no extra training.","codeLabel":"JSON"},"restApi":{"title":"Authentication, endpoints, and response formats","body":"Official SDKs cover Python and TypeScript, both typed, with streaming support and examples. REST and WebSocket endpoints handle everything else. The API shares the same shape as the major TTS providers, so most production migrations finish in under a week."}},"benchmarks":{"headingLine1":"Fish Audio TTS API","headingLine2":"Benchmarks and Specs","subtitle":"One API. Switch models with a single header. Both API models bill at the same flat rate.","benchmarksLabel":"Benchmarks","metrics":{"rtf":{"value":"0.195","caption":"REAL-TIME FACTOR"},"voiceCloning":{"value":"Short clip","caption":"VOICE CLONING"},"multiSpeaker":{"value":"Native","caption":"MULTI-SPEAKER"},"streaming":{"value":"REST + WebSocket","caption":"STREAMING"},"timestamps":{"value":"Word-level","caption":"TIMESTAMPS"},"sampleRate":{"value":"48","suffix":"kHz","caption":"SAMPLE RATE"},"concurrency":{"value":"5","suffix":"starting","caption":"CONCURRENT REQUESTS"},"audioFormats":{"value":"MP3 · WAV · Opus","caption":"AUDIO FORMATS"}}},"pricing":{"title":"Flexible pricing for your needs","segments":{"individual":"Individual","team":"Team & Enterprise","api":"API"},"caption":"Pay-as-you-go with any subscription","learnMore":"Learn More","button":"Get Started","cards":{"s21pro":{"subtitle":"Text to Speech","price":"0.015","suffix":"/ K UTF-8 bytes","feature1":"70ms ultra-low latency","feature2":"80+ languages supported","feature3":"Word-level timestamps"},"s1":{"subtitle":"Text to Speech","price":"0.015","suffix":"/ K UTF-8 bytes","feature1":"Realtime latency","feature2":"Full multilingual support","feature3":"Instant voice cloning"},"transcribe1":{"subtitle":"Automatic Speech Recognition","price":"0.006","suffix":"/ audio minute","feature1":"Industry-leading ASR accuracy","feature2":"Multilingual with optional language hints","feature3":"Long input transcription"}},"tableTitle":"Concurrent Request Limits","table":{"spendingThreshold":"Spending Threshold","concurrency":"Concurrency","starter":"Starter","elevated":"Elevated","highVolume":"High Volume","enterprise":"Enterprise","starterThreshold":"< $100 paid","starterConcurrency":"5 requests","elevatedThreshold":"≥ $100 paid","elevatedConcurrency":"15 requests","highVolumeThreshold":"≥ $1,000 paid","highVolumeConcurrency":"50 requests","enterpriseThreshold":"Custom","enterpriseConcurrency":"Custom limits"},"billedAnnually":"Billed Annually","threeMonthsOff":"3 months off","holidayOff":"limited-time 50% off","switchToAnnual":"Switch to annual billing for 3 months off!","monthSuffix":"/ month","creditsMonthly":"credits monthly","mostPopular":"Most Popular","recommended":"Recommended","startTrial":"Start 5 day free trial","upgrade":"Upgrade","contactSales":"Contact Sales","individual":{"free":{"subtitle":"For everyone","price":"0","priceNote":"No credit card needed","credits":"8,000","minutes":"Up to 7 minutes generation","feature1":"Up to 500 characters per generation","feature2":"3 public voice slots","feature3":"Standard generation speed","feature4":"Enhanced voice cloning","feature5":"Commercial use"},"plus":{"subtitle":"For creators and professionals","save":"Save ${amount}","price":"0","strike":"15","priceNote":"for 5 days, then ${amount} billed annually","priceNoteMonthly":"for 5 days, then $15 billed monthly","credits":"250,000","minutes":"Up to 200 minutes generation","feature1":"Up to 15,000 characters per generation","feature2":"Unlimited public + 10 private voice slots","feature3":"Priority generation","feature4":"Enhanced voice cloning","feature5":"Commercial use","feature6":"Try Plus plan for free for 5 days"},"pro":{"subtitle":"For power users and teams","save":"Save ${amount}","strike":"100","priceNote":"${amount} billed annually","credits":"2,000,000","minutes":"Up to 1,620 minutes generation","feature1":"8x more usage than Plus","feature2":"Up to 30,000 characters per generation","feature3":"Unlimited voice slots","feature4":"7 day money back guarantee","feature5":"And everything in Plus"}},"team":{"pro":{"subtitle":"For power users and teams","save":"Save ${amount}","strike":"100","priceNote":"${amount} billed annually","credits":"2,000,000","minutes":"Up to 1,620 minutes generation","feature1":"3 team seats","feature2":"Up to 30,000 characters per generation","feature3":"Unlimited voice slots","feature4":"7 day money back guarantee","feature5":"And everything in Plus"},"max":{"subtitle":"Higher limits for production needs.","save":"Save $3000","price":"749","strike":"999","priceNote":"$8988 billed annually","credits":"25,000,000","minutes":"Up to 6,250 minutes generation","feature1":"10 team seats","feature2":"And everything in Pro"},"enterprise":{"subtitle":"For organizations with compliance needs","price":"Custom","priceNote":"volume pricing billed annually","bandTitle":"Pay as you go","bandSubtitle":"with organization-level controls","feature1":"Zero Data Retention","feature2":"On-Premise Deployment","feature3":"SOC2 Compliance","feature4":"More Discount","feature5":"Custom SSO (Coming soon)"}}},"faq":{"heading":"Frequently asked questions","q1":"How do I use the Fish Audio TTS API in Python?","a1":"Install the SDK with pip install fish-audio-sdk, create a FishAudio client with your API key, then call client.tts.convert() and save the audio with save(). The snippet in the quickstart above writes an MP3 in a few lines.","q2":"Is there a free TTS API available?","a2":"Yes. You can use the S2.1-Pro-Free model for unlimited free access to the S2.1 Pro model. It is available for developers for a limited time. For additional concurrency and stability, use the S2.1-Pro model.","q3":"What is voice cloning via API?","a3":"Voice cloning via API turns a short reference recording into a reusable voice. With Fish Audio, you upload a short clip, receive a voice ID, and call the TTS endpoint with that ID. The clone carries across all 80+ supported languages.","q4":"What is a speech synthesis API?","a4":"A speech synthesis API generates spoken audio from text using a neural model rather than stitching together pre-recorded clips. Fish Audio S2.1 Pro is a neural model that produces emotionally rich speech with inline direction control, leading both open-source and closed-source systems in blind evaluation.","q5":"Which model should I use?","a5":"Start with S2.1 Pro. It's the most expressive model, covers 80+ languages, and supports inline direction and multi-speaker dialogue, at $15 per million UTF-8 bytes. S1 retires on December 31, 2026; after that, requests for s1 are served by S2.1 Pro at the same price.","q6":"What latency can I expect?","a6":"S2.1 Pro reaches time-to-first-audio of around 100ms on an H200, at a real-time factor of 0.195. The latency parameter trades quality for speed, and streaming is on by default so playback can begin before the full clip finishes.","q7":"How many languages are supported?","a7":"80+ from a single model, with instant code-switching across English, Japanese, Chinese, Spanish, Arabic, and more inside one generation. Coverage is deepest across CJK and East Asian languages.","q8":"Can I control emotion and delivery?","a8":"Yes. S2.1 Pro reads free-form direction written inline as [tag] syntax, at any point in the text. You (or your LLM) can use these tags to control emotion and delivery of the audio.","q9":"Does the API support streaming?","a9":"Yes, streaming is the default. Connect over WebSocket or REST, get word-level timestamps, and cancel an in-progress generation to start a new one for real-time agents.","q10":"What audio formats are supported?","a10":"MP3, WAV, and Opus, with configurable sample rate and bitrate. Default sample rate is 44100 Hz for most formats and 48000 Hz for Opus.","q11":"How is pricing calculated?","a11":"Pay-as-you-go at $15 per million UTF-8 bytes for S2.1 Pro, billed from your first call, with no subscription and no monthly minimum. One million bytes is roughly 180,000 English words. Non-Latin scripts use more bytes per character, so the same word count costs more in those languages than in English.","q12":"What are the rate limits?","a12":"Concurrency scales with usage: 5 concurrent requests to start, 15 once you have prepaid $100, 50 at $1,000, and custom limits at the Enterprise tier.","q13":"Can I self-host?","a13":"Yes. The open-weights models, S2.1 Pro and fish-speech, deploy in your VPC, data center, sovereign cloud, or air-gapped environment under a commercial license. Self-host is an Enterprise engagement for high-volume teams that need data residency, fine-tuning, or regulated deployment.","q14":"Is the model open source?","a14":"The models ship as open weights with a paid commercial license. Weights, fine-tuning code, inference infrastructure, and the technical report are all public. Research and non-commercial use is free. Open weights is distinct from open source under the OSI definition, and Fish Audio is precise about that.","q15":"Is my data used for training?","a15":"Enterprise API data is not used to train Fish Audio models. Creator-platform content is handled separately. For voices you can't risk leaking, use a private uploaded model."},"cta":{"headline":"Get to production this weekend","subhead":"Get an API key, install the SDK, and ship. No card required.","getApiKey":"Get API key","readDocs":"Read the docs"}},"flows":{"toast":{"export_invalid":"The flow must be valid before exporting Python code.","export_success":"Python code exported successfully.","export_failed":"Failed to generate Python code.","import_invalid_schema":"Invalid JSON schema for this flow.","import_invalid_graph":"Flow validation failed. Check the nodes and connections.","import_success":"Flow imported successfully.","import_failed":"Failed to import JSON.","copy_success":"Copied to clipboard.","copy_failed":"Failed to copy to clipboard."}},"email-preferences":{"title":"Email preferences","description":"Choose which emails Fish Audio sends to {email}.","description_no_email":"Choose which emails Fish Audio sends you.","growth":"Product updates and offers","account":"Account and billing","always_sent":"Security and service emails, such as sign-in codes, security alerts and important notices about your account, are always sent.","unsubscribe_all":"Unsubscribe from all marketing emails","unsubscribed":"You're unsubscribed from marketing emails.","resubscribe":"Resubscribe","saved":"Preferences saved","save_error":"Couldn't save your preferences. Try again.","load_error":"Couldn't load your preferences.","retry":"Try again","invalid":"This link isn't valid.","expired":"This link has expired.","link_hint":"Open the link in a recent Fish Audio email, or sign in to change your email settings.","settings":"Go to settings"},"admin":{"action":"Action","action_at":"Actioned At","active":"Active","active_users":"Active Users","add":"Add","add_success":"Add Success","add_user_credit":"Adjust API credit","adjust":"Adjust","add_user_premium":"Edit Subscription Plan","admin":"Admin","admin_user_management":"Admin User Management","all":"All","amount":"Amount","amount_credit":"Amount","api_credit_balance":"API Credit Balance","api_usage_ranking":"API Usage Ranking","apply":"Apply","approve":"Approve","approve_withdraw_description":"Are you sure you want to approve this withdraw?","approve_withdraw_title":"Approve Withdraw","approve_withdraw_success":"Withdraw approved","avatar":"Avatar","ban_reason":"Ban Reason","ban_success":"Ban Success","ban_user":"Ban User","banned":"Banned","api_pricing":"API Pricing","billing_period":"Billing Period","concurrency":"Concurrency","bio":"Bio","cancel":"Cancel","confirm_approve":"Confirm Approve","confirm_ban":"Confirm Ban","confirm_delete":"Confirm Delete","confirm_reject":"Confirm Reject","created_at":"Created At","credit_history":"API Credit History","day":"Day","delete_success":"Delete Success","delete_user":"Delete User","edit_permissions":"Edit Permissions","show_admin_permissions":"Show Admin Permissions","view_admin_permissions":"View Admin Permissions","view_admin_permissions_description":"Review the assigned admin permissions for this user.","permission_presets":"Quick presets","permission_label_finance":"Finance permission — required for Finance grants to take effect","email":"Email","email_not_match":"Email Not Match","email_verified":"Email Verified","email_verified_placeholder":"Please enter user email verified","enter_reject_reason":"Enter reject reason","enter_user_id_or_email":"Enter user ID or email to search","error":"Error","id":"ID","joined_at":"Joined At","last_30_days":"Last 30 Days","last_7_days":"Last 7 Days","million_bytes":"million UTF-8 bytes","model_management":{"cancel":"Cancel","delete_model":"Delete Model","dmca_cancelled":"DMCA takedown cancelled","dmca_confirm":"Are you sure you want to DMCA take down this model? It will be hidden from public web surfaces, disabled for web usage, and the owner will be notified by email.","dmca_model":"DMCA Take Down","dmca_success":"Model has been taken down for DMCA and the owner has been notified","download_data":"Download Data","edit_model":"Edit Model","hide_cancelled":"Operation cancelled","hide_confirm":"Are you sure you want to hide this model?","hide_model":"Hide This Model","hide_success":"Model has been marked as private","manage":"Manage","regenerate_samples":"Regenerate Samples","sample_regenerator":{"title":"Regenerate Audio Samples","empty":"This model has no samples to regenerate","empty_text":"Sample text is empty","generate":"Generate","generate_missing_task":"Generation failed: missing task ID","generate_success":"Audio generated","generating":"Please wait for audio generation to finish","candidate":"Candidate","current":"Current","default":"Default","selected":"Selected","save":"Save Changes","save_success":"Samples updated successfully","untitled":"Untitled Sample"}},"money":"Money","month":"Month","new_users":"New Users","new_users_premium":"New Member Payment","nickname":"Nickname","no_user_found":"No user found","old_users":"Old Users","old_users_premium":"Paid Member Renewal","open_menu":"Open menu","package_credit_amount":"Package Credit Amount","package_finished_at":"Package Finish At","phone":"Phone","please_enter_search_query":"Please enter a search query","premium_history":"Premium History","price":"Price","reject":"Reject","reject_withdraw_description":"Are you sure you want to reject this withdraw?","reject_withdraw_title":"Reject Withdraw","reject_withdraw_success":"Withdraw rejected","remove_premium":"Remove Premium","remove_premium_consequence":"This action cannot be undone.","remove_premium_failed":"Failed to remove premium","remove_premium_success":"Premium removed successfully","remove_premium_title":"Remove Premium Status","remove_premium_warning":"Are you sure you want to remove premium status from this user?","remove_user_premium":"Remove Subscription","removing":"Removing...","reports":{"description":"Description","filter_all":"All Types","filter_low_quality":"Low Quality","filter_other":"Other","filter_piracy":"Piracy / Copyright","filter_resolved":"Resolved","filter_unresolved":"Unresolved","hide_and_lock":"Hide & Lock Model","hide_and_lock_confirm":"This will set the model to private and lock its visibility. The owner will not be able to make it public again. Continue?","hide_and_lock_success":"Model hidden and visibility locked","next":"Next","no_reports":"No reports found","no_reports_description":"There are no reports matching your filters.","page_info":"Page {page} of {total}","previous":"Previous","reported_at":"Reported At","reporter":"Reporter","resolve":"Resolve","resolve_confirm":"Mark this report as resolved?","resolve_success":"Report resolved","resolved_at":"Resolved At","status_resolved":"Resolved","status_unresolved":"Unresolved","title":"Model Reports","type":"Type","view_model":"View Model"},"retained_users":"Retained Users","risk_control":{"actions":{"close":"Close","contact_support":"Contact support"},"helpLabel":{"description":"The common reasons for an account being blocked are as follows","reason1":"Detection of account sharing","reason2":"Abnormal account usage","reason3":"Suspicious network environment","title":"Are you in trouble?"},"status":{"description":"Your account has been temporarily restricted due to suspicious activity detected by the security system. This precautionary measure is essential to protect the integrity of your account and the platform.","title":"Account status","unlock_time":"The account will automatically be unlocked and restored in a few hours."},"subtitle":"Security Notification","title":"The account has been temporarily blocked"},"search":"Search","search_type":"Search by","search_by_team_id":"Search by team ID","search_by_user_id_or_email":"Search by user ID or email","search_for_user":"Search for a user","search_placeholder":"Please enter email","searching":"Searching...","select_ban_reason":"Select Ban Reason","select_status":"Select status","select_time_range":"Select Time Range","status":"Status","top_up_package_credit":"Set Subscription Credit","top_up_success":"Top up successful","package_credit_adjustment_hint":"Use a positive number to add credits and a negative number to deduct credits.","package_credit_adjustment_non_zero":"Amount cannot be zero.","package_credit_permanent":"Permanent credits","package_credit_permanent_hint":"Survives plan changes and downgrades, like purchased credit packs.","total_users":"Total Users","try_different_search":"Try searching with different criteria","unit":"Unit","update":"Update","refresh":"Refresh","update_price":"Update Price","update_success":"Update Success","update_user_price":"Update User Price","usage":"Usage","user":"User","user_banned":"User Banned","user_detail":"User Detail","user_details":"User Details","user_id":"User ID","user_list":"User List","user_not_found":"User not found","user_role":"Role","user_type":"User Type","user_view":"User View","view_agent_console":"View agent console (read-only)","agent_view_link_opening":"Opening the agent console…","agent_view_link_failed_title":"This link could not be opened","agent_view_link_not_found":"No session, agent or team matches this link.","agent_view_link_denied":"You need the agent-console permission to open this link.","view_in_stripe":"View in Stripe","admin_permissions":"Admin Permissions","no_permission_to_view_info":"You do not have permission to view this information.","contact_admin_for_access":"Contact an administrator if you need access.","current_period_end":"Current Period End","cancel_at":"Cancel At","cancel_at_period_end":"Cancel At Period End","last_synced_at":"Last Synced At","extra_balance":"Extra Balance","yes":"Yes","no":"No","identity":"Identity","subscription":"Subscription","credits_and_balance":"Credits & Balance","billing_details":"Billing Details","email_change_history":"Email Change History","email_change_status_ok":"Success","email_change_status_invalid_otp":"Invalid OTP","email_change_status_duplicate_email":"Duplicate email","email_change_status_same_email":"Same email","waitlist":{"cancel":"Cancel","commitment_count":"Commitment Count","confirm":"Confirm","create":"Create","create_success":"Create Success","create_title":"Create Waitlist","delete":"Delete","delete_confirmation":"Are you sure you want to delete this waitlist?","delete_success":"Delete Success","delete_title":"Delete Waitlist","description":"Description","description_placeholder":"Enter description","display_name":"Display Name","display_name_placeholder":"Enter display name","edit":"Edit","edit_success":"Edit Success","edit_title":"Edit Waitlist","keyword":"Keyword","keyword_placeholder":"Enter keyword","save":"Save","title":"Waitlist"},"week":"Week","withdraw_history":"Withdraw History","withdraw_record_status":{"approved":"Approved","pending":"Pending","rejected":"Rejected","processing":"Processing"},"withdraw_record_title":"Withdraw Records","yesterday":"Yesterday","beta":{"title":"Beta Management","total_beta_users":"Total Beta Users","total_s2_pro_generations":"Total S2 Pro Generations","invite_to_beta":"Invite to Beta","invite_emails_placeholder":"Enter emails separated by commas or newlines","invite":"Invite","inviting":"Inviting...","invite_success":"Beta invite complete","added":"Added","already_beta":"Already beta","not_found":"Not found","skipped_root_admin":"Skipped (root admin)","generation_history":"Generation History","filter_by_email":"Filter by email"},"feedback":{"filter_all":"All","filter_resolved":"Resolved","filter_starred":"Starred","filter_unresolved":"Unresolved","filter_unstarred":"Unstarred","next":"Next","no_feedback":"No feedback found","no_feedback_description":"There is no feedback matching your filters.","page_info":"Page {page} of {total}","page_url":"Page","previous":"Previous","resolve":"Resolve","resolve_success":"Feedback resolved","star":"Star","star_success":"Feedback starred","starred":"Starred","status_resolved":"Resolved","status_unresolved":"Unresolved","title":"User Feedback","unresolve":"Unresolve","unresolve_success":"Feedback unresolved","unstar":"Unstar","unstar_success":"Feedback unstarred","user_agent":"Browser"},"feature_flags_description":"Manage team-level access to frontend features. Select a feature to review enabled teams and update a team's assignments.","feature_flag_summary":"Feature Flag Summary","feature_flag_teams":"Enabled Teams","feature_flag_editor":"Feature Flag Editor","feature_flags_load_failed":"Failed to load feature flags.","feature_flags_save_failed":"Failed to save feature flags.","feature_flags_saved":"Feature flags saved.","loading_feature_flags":"Loading feature flags...","load_more":"Load more","teams_enabled":"teams enabled","feature_flag_teams_empty":"No teams currently have this feature enabled.","select_team_for_feature_flags":"Select a team to edit its feature flags.","save":"Save","custom_feature_flags":"Custom Feature Flags","custom_feature_flags_empty":"No custom feature flags.","custom_feature_flag_marker":"Custom","add_custom_feature_flag":"Add custom feature","add_custom_feature_flag_description":"For features that have no checkbox in the editor, such as backend-only features. The flag is added to the draft; click Save to apply it to the team.","custom_feature_flag_key":"Feature key","custom_feature_flag_key_hint":"Lowercase letters, numbers, dots, hyphens and underscores; up to 64 characters, starting with a letter or number. Example: general-chat","custom_feature_flag_invalid":"This key doesn't match the allowed format.","custom_feature_flag_legacy":"{featureFlag} is a retired feature flag and can't be added.","custom_feature_flag_duplicate":"{featureFlag} is already in this team's feature flags.","remove_custom_feature_flag":"Remove {featureFlag}","saving_feature_flags":"Saving feature flags...","select_team_for_self_host":"Select a team to edit its artifact grants.","self_host_description":"Manage which registry artifacts each self-host team can pull, and whether it can publish. Teams without an explicit grant cannot pull anything.","self_host_explicit_grant":"Explicit grant","self_host_grant_editor":"Artifact Grants","self_host_grant_revoke_failed":"Failed to revoke grant.","self_host_grant_revoked":"Grant revoked.","self_host_grant_save_failed":"Failed to save grant.","self_host_grant_saved":"Grant saved.","self_host_load_failed":"Failed to load self-host data.","self_host_loading":"Loading...","self_host_no_grant":"No grant","self_host_form_all_in_one":"Offline All-in-One","self_host_form_all_in_one_online":"Online All-in-One","self_host_form_all_in_one_online_description":"One container. No Kubernetes; requests are authorised and billed against Fish Audio.","self_host_form_all_in_one_description":"One container, weights included. No Kubernetes, runs air-gapped.","self_host_form_helm_offline":"Offline Helm","self_host_form_helm_offline_description":"Kubernetes, air-gapped. Models are served from inside the cluster and usage is recorded to a local signed ledger.","self_host_form_helm_online":"Online Helm","self_host_form_helm_online_description":"Kubernetes. Models are served from the in-cluster warehouse by default, or pulled from S3-compatible storage — Fish Audio's hosted bucket or the customer's own — and requests are authorised against Fish Audio billing.","self_host_releases_recorded":"Recorded {date}","self_host_push_description":"Allow this team to push to its granted repositories.","self_host_push_label":"Publisher (push)","self_host_repos_count":"{count} repositories","self_host_revoke":"Revoke Access","self_host_revoke_confirm_body":"This deletes the grant for \"{teamName}\". The team will no longer be able to pull any artifacts.","self_host_revoke_confirm_title":"Revoke self-host access","self_host_saving":"Saving...","self_host_teams":"Self-Host Teams","self_host_teams_empty":"No teams have the self-host feature enabled.","self_host_license":"License","self_host_license_product":"Product","self_host_license_binding":"GPU binding","self_host_license_binding_uuid":"Bound to GPU UUIDs","self_host_license_binding_none":"Not bound","self_host_license_starts":"Starts","self_host_license_gpu_uuids":"GPU UUIDs","self_host_license_save_before_issue":"Save the contract before issuing.","self_host_license_save_failed":"Could not reach the server. Check your connection and try again.","self_host_license_ends":"Ends","self_host_license_max_gpus":"GPUs allowed","self_host_license_save":"Save contract","self_host_license_saved":"Contract saved.","self_host_license_save_confirm":"Save the contract term {start} → {end}? This records the contract; it does not issue a license.","self_host_license_save_go":"Confirm & save","self_host_license_issued":"Issued licenses","self_host_license_issued_empty":"No licenses issued for this team yet.","grant_team_plan":"Grant Team Plan","adjust_team_plan":"Adjust Team Plan","revoke_team_plan":"Revoke Team Plan","team_plan_scope_description":"Manage the manual Pro team plan for {teamName}.","team_plan_scope_description_fallback":"Manage the manual Pro team plan for the selected team.","team_plan_current_status":"Current Team Plan Status","team_plan_expires_at":"Plan Expires At","team_plan_status_active":"Active","team_plan_status_inactive":"Inactive","team_plan_fixed_plan":"Plan","team_plan_adjust_hint":"This extends the current gifted plan from its existing expiration time.","team_plan_grant_hint":"This grants Pro to the selected shared team and starts the term now.","apply_team_plan_adjustment":"Apply Adjustment","team_plan_grant_success":"Team plan granted successfully","team_plan_adjust_success":"Team plan adjusted successfully","team_plan_revoke_success":"Team plan revoked successfully","team_plan_revoke_description":"Are you sure you want to revoke the gifted team plan for {teamName}?","team_plan_revoke_description_fallback":"Are you sure you want to revoke the gifted team plan for this team?","team_plan_revoke_warning":"The team will return to the Free plan immediately if no Stripe subscription is active.","team_plan_status_label":"Manual Team Plan","team_plan_until":"Active until {date}","customize_seat_limit":"Customize seat limit","custom_seats_title":"Customize seat limit","custom_seats_description":"Override the included seat count for {teamName}. Clear it to revert to the plan default.","custom_seats_description_fallback":"Override the included seat count for the selected team. Clear it to revert to the plan default.","custom_seats_current_override":"Current override","custom_seats_effective":"Effective seats","custom_seats_active":"Active seats","custom_seats_none":"None (plan default)","custom_seats_input_label":"Custom seat limit","custom_seats_input_hint":"Leave empty and Save to clear the override (revert to the plan default).","custom_seats_below_active_warning":"This limit is below the team's active seat count ({active}).","custom_seats_clear":"Clear override","custom_seats_save":"Save seat limit","custom_seats_save_success":"Seat limit updated","team_id":"Team ID","team_withdraws":"Team Withdrawals","user_withdraws":"User Withdrawals","self_host_releases":"Versions","self_host_releases_create":"Record version","self_host_releases_created":"Version recorded","self_host_releases_delete":"Remove","self_host_releases_delete_confirm_body":"Customers will stop being offered {tag}. Nothing is deleted from the registry, and anyone already running it keeps running it.","self_host_releases_delete_confirm_title":"Remove version","self_host_releases_dismiss":"Dismiss","self_host_releases_dismiss_confirm_title":"Dismiss version","self_host_releases_dismiss_confirm_body":"{tag} was reported by a publish pipeline but never offered to customers. Dismissing only clears it from this page; the next publish reports again.","self_host_releases_deleted":"Version removed","self_host_releases_dismissed":"Version dismissed","self_host_releases_empty":"No version recorded yet. Customers see a placeholder until one is.","self_host_releases_form_helm":"Helm chart","self_host_releases_load_failed":"Couldn't load versions.","self_host_releases_load_more":"Load older versions","self_host_releases_stale":"This list may be out of date — the last refresh failed.","self_host_releases_changed":"This version changed while the dialog was open. Nothing was removed — check the list again.","self_host_releases_mirror_first":"Run the Mirror images workflow first — this records a recommendation, it does not publish anything.","self_host_releases_note_label":"Release note (optional)","self_host_releases_note_hint":"One sentence shown beside this version — to admins here and to every team granted this line. Leave empty for none.","self_host_releases_preview":"Customers will be told to run:","self_host_releases_published":"Published {date}","self_host_releases_record_confirm_title":"Record {tag}?","self_host_releases_scope":"Applies to every self-host team.","self_host_license_contract_term":"Contract term","self_host_license_validity":"License validity","self_host_license_next_period":"Next period","self_host_license_window_invalid":"License end must be after its start.","self_host_license_window_outside":"License validity must sit inside the contract term.","self_host_license_issue":"Issue license","self_host_license_reissue":"Reissue / renew","self_host_license_new_key_pair":"Mint a new key pair (only if the customer lost their license.key)","self_host_license_issue_confirm":"Issue a license valid until {date}? The customer downloads it from their dashboard.","self_host_license_renew_confirm":"Renew: re-sign this team's certificate through {date}? The customer must download it again.","self_host_license_issue_go":"Confirm & sign","self_host_license_cancel":"Cancel","self_host_license_issued_ok":"License issued.","self_host_license_issue_failed":"Could not reach the server. Check your connection and try again.","self_host_releases_latest":"Latest","publication_editor":{"title":"Publication","preview":"Video preview","cover":"Cover frame","hint":"Drag to choose a frame.","save":"Set cover","saving":"Saving cover…","saved":"Cover saved at {seconds}s","failed":"Could not save the cover. Please try again.","prompt":"Prompt"},"self_host_license_admin_label":"Enterprise label (internal, admin-only)","self_host_license_admin_label_hint":"e.g. Sierra, SLNG — which customer this team is","self_host_team_internal":"Internal team","self_host_team_label_saved":"Label saved.","self_host_releases_aio_section":"All-in-One images","self_host_releases_helm_section":"Helm chart versions","grant_audit":{"admin_grants":"Admin grants","action_grant_premium":"Grant plan","action_top_up_package_credit":"Package credit top-up","action_add_api_credit":"API credit","col_time":"Time","col_action":"Action","col_operator":"Operator","col_creative":"Creative","confirm":"Confirm","confirm_allow_title":"Allow Creative without a real payment?","confirm_revoke_title":"Stop allowing Creative without a real payment?","creative_access":"Allow Creative (image / video / lip-sync) without a real payment?","creative_access_updated":"Updated","creative_allow":"Allow","creative_deny":"Deny","creative_required":"Choose whether to allow Creative","creative_state_allowed":"Allowed","creative_state_denied":"Not allowed","creative_unpaid_cost":"Creative cost before first payment","frozen":"Frozen","grants_unavailable":"Failed to load admin grants","has_real_payment":"Real payment","last_admin_grant":"Last admin grant purpose","loading":"Loading…","no_grants":"No admin grants","permanent":"permanent","purpose":"Purpose","purpose_placeholder":"Select a purpose","purpose_required":"Please select a purpose","purpose_internal":"Internal use","purpose_partner_gift":"Partner gift","purpose_compensation":"Customer compensation","purpose_test":"Test","purpose_other":"Other","reason":"Reason","reason_placeholder":"Why is this being done?","reason_required":"Reason is required","risk_title":"Risk","risk_unavailable":"Risk data unavailable","zero_pay_subscription":"Zero-pay subscription","creative_access_history":"History"},"website-content":"Website content","user_voices":{"title":"Voices","col_voice":"Voice","col_visibility":"Visibility","col_state":"State","col_created":"Created","col_actions":"Actions","visibility_public":"Public","visibility_unlist":"Unlisted","visibility_private":"Private","taken_down":"Taken down","select_voice":"Select {title}","transfer":"Transfer","transfer_voice":"Transfer {title}","transfer_selected":"Transfer selected ({count})","loading":"Loading…","empty":"No voices","unavailable":"Failed to load voices","select_all_eligible":"Select all eligible voices","attributes_selected":"Badge & visibility… ({count})","selection_not_transferable":"Can't be transferred: {count} of the selected voices","keep_transferable":"Unselect the ones that can't be transferred","selection_not_editable":"Badge and visibility can't be changed: {count} of the selected voices","keep_editable":"Unselect the ones that can't be changed","cannot_select":"This voice can't be selected","visibility_locked":"Visibility set by an admin — the owner can't change it"},"voice_transfer":{"title_bulk":"Transfer {count} voices","consequence":"Ownership moves to the recipient. Visibility stays unchanged. {owner} loses access.","email_label":"Recipient's Fish Audio account e-mail","email_invalid":"Not a valid e-mail address","cancel":"Cancel","confirm":"Transfer","close":"Close","success":"Voice transferred","success_bulk":"{count} of {total} voices transferred","outcome_done":"Transferred","error_generic":"Failed to transfer voice","error_forbidden":"No permission to transfer this voice","error_target_not_found":"No Fish Audio account uses this e-mail","error_target_is_owner":"This account already owns the voice","error_target_unavailable":"This account can't receive voices right now","error_model_not_trained":"Only trained voices can be transferred","error_pvc_model":"PVC voices can't be transferred","error_pvc_locked":"This released PVC voice is locked and can't be transferred","error_model_taken_down":"This voice is unavailable and can't be transferred","error_conflict":"The voice changed while transferring — try again","error_rate_limited":"Too many transfers — try again in a minute"},"voice_attributes":{"title":"Badge & visibility","description":"Change the badge and the visibility of the selected voices.","summary_voice":"Voice","summary_badge":"Badge","summary_visibility":"Visibility","summary_count":"Selected voices: {count}","badge_label":"Badge","badge_keep":"Keep as is","badge_pvc":"PVC","badge_ai_designed":"AI-designed","badge_ai_designed_hint":"Seal for a voice made by AI, not cloned from a real person","badge_licensed":"Licensed professional","badge_licensed_hint":"Badge for a voice licensed from a professional voice actor","badge_none":"No badge","badge_none_hint":"Removes the licensed badge and an AI-designed seal given here; voices made with Voice Design keep their seal","badge_legacy_listed":"(listed as licensed through an older setup)","option_blocked_count":"{reason} ({count} of {total} selected)","option_blocked_voices":"Affected voices: {names}","names_more":"{count} more","remove_from_selection":"Remove from selection ({count})","visibility_label":"Visibility","visibility_keep":"Keep as is","visibility_lock_note":"Visibility set here is locked: the owner can no longer change it.","note_label":"Note (optional)","note_hint":"Saved with the change history.","cancel":"Cancel","apply":"Apply","progress":"Applying… {done} of {total} voices done","error_generic":"Couldn't apply the changes — try again","error_forbidden":"No permission to change these voices","error_rejected":"The change wasn't accepted as sent — reload the page and try again","result_done":"Changes applied","result_partial":"Some changes weren't applied","result_none":"No voices were changed","result_nothing_needed":"Nothing needed changing","result_counts":"Updated: {updated} · Already as asked: {unchanged} · Not changed: {refused}","result_counts_partial":"Updated: {updated} · Already as asked: {unchanged} · Partly changed: {partial} · Not changed: {refused}","result_partial_heading":"Partly changed","result_refused_heading":"Not changed","result_notice_heading":"Good to know","result_group":"{reason} ({count})","partial_badge":"Badge changed to {badge}","partial_visibility":"Visibility changed to {visibility}","refusal_not_found":"This voice no longer exists","refusal_pvc_model":"PVC voices can't have their badge or visibility changed here","refusal_taken_down":"Taken-down voices can't be changed","refusal_not_trained":"Only trained voices can change visibility","refusal_source_not_designable":"Only voices the owner made in the app or through the API can be marked AI-designed","refusal_legacy_licensed":"This voice is listed as licensed through an older setup; ask engineering to take it off the licensed list","refusal_visibility_rejected":"The publishing checks (protected name, sensitive words or copyrighted content) refused the new visibility. Edit the title or description first; the owner's verification doesn't change this","refusal_internal_error":"Something went wrong with this voice — try again","refusal_not_sent":"Not sent: the request stopped before this voice — try again","refusal_generic":"This voice couldn't be changed","system_message":"System message: “{detail}”","notice_voice_design_kept":"Its AI-designed seal wasn't given here, so it stays","notice_generic":"There's a note about this voice"},"voice_transfers":{"title":"Voice transfers","col_time":"Time","col_direction":"Direction","col_voice":"Voice","col_counterpart":"Counterpart","col_actor":"Actor","direction_received":"Received","direction_given":"Given","direction_performed":"Performed","actor_admin":"Admin","loading":"Loading…","empty":"No voice transfers","unavailable":"Failed to load voice transfers"},"change_email":"Change email","new_email":"New email","change_email_description":"Only the account email will change. All other account data stays the same.","change_email_success":"Email updated","ab_tests":{"title":"A/B Tests","subtitle":"Manage experiment traffic, lifecycle, and user overrides.","refresh":"Refresh","create":"Create experiment","search":"Search by name, key, or description","clear":"Clear filters","filter_status":"Filter by status","all":"All","running":"Running","draft":"Draft","paused":"Paused","completed":"Rolled out","load_failed":"Could not load experiments. Try again.","retry":"Retry","window_limited":"Only experiments within the API retrieval limit are shown. Search applies to this list.","loading":"Loading experiments…","results":"Experiments: {count}","traffic":"Configured traffic","rollout":"Roll out","updated":"Updated {date}","override_count":"Overrides: {count}","start":"Start","pause":"Pause","resume":"Resume","manage":"Manage","no_results":"No matching experiments","empty":"No experiments yet","no_results_hint":"Try another search or clear the filters.","empty_hint":"Create a draft to configure your first experiment.","confirm_rollout":"Roll out “{name}” to everyone?","confirm_pause":"Pause “{name}”?","confirm_start":"Run “{name}”?","rollout_hint":"All users will receive {variant}, ignoring overrides. This is a final state, not a way to stop the experiment.","pause_hint":"Assignments will stop while paused. Saved overrides stay in place for when you resume.","start_hint":"Users will be assigned using the configured traffic split. You can update the percentage at any time.","ambiguous_winner":"Multiple variants share the highest weight. Configure a single winning variant before rolling out.","save_failed":"Could not save changes. Try again.","overrides":"User overrides","override_hint":"Assign a specific user to a group. Saving the same email replaces their existing override.","rolled_out_hint":"All users receive {variant}. Overrides are ignored.","inactive_overrides":"Overrides only apply while this experiment is running.","email":"Email","variant":"Group","save_override":"Save override","no_overrides":"No user overrides.","deleted_user":"This user no longer exists.","remove_override":"Remove override for {email}","saved":"Changes saved.","removed":"Override removed.","name":"Name","key":"Experiment key","description":"Description (optional)","key_hint":"Use 1–100 lowercase letters, numbers, or underscores.","key_locked":"The key cannot be changed after creation.","name_required":"Enter an experiment name.","percentage_invalid":"Enter a percentage from 0 to 100.","experiment_traffic":"Experiment traffic (%)","treatment_traffic":"Treatment traffic (%)","traffic_hint":"Remaining traffic goes to control. Precision: 0.01%.","cancel":"Cancel","close":"Close","save":"Save changes","create_draft":"Create draft","created":"Draft created.","copied":"Copied.","copy_failed":"Could not copy. Try again.","copy_property":"Copy Amplitude property","control":"Control","treatment":"Treatment","clear_search":"Clear search","completed_traffic_hint":"This experiment is rolled out. Changing its configured percentage does not affect the 100% rollout.","holdout":"Holdout required","holdout_hint":"Protects the control group: once started, traffic can only go up and the experiment can never be rolled out. Can't be turned off.","holdout_badge":"Holdout","confirm_holdout":"Turn on holdout for “{name}”?","confirm_holdout_hint":"This can't be undone. Once running, the experiment's traffic can only go up and must stay below 100%, its variants are locked, and it can never be rolled out or returned to draft.","enable_holdout":"Turn on holdout","start_holdout_hint":"Users will be assigned using the configured traffic split. Holdout is on: from now on the percentage can only go up, and the experiment can't be rolled out."},"startup_program":{"require_case_study":"Require case-study commitment","require_case_study_on_hint":"Applicants who decline the case study are rejected automatically before review.","require_case_study_off_hint":"Declining the case study is only a signal for the review agent; applicants are still reviewed."},"permission_label_api_docs":"API docs — the API operations each admin page uses","api_docs":{"button":"API","button_label":"API used by this page","title":"API used by this page","description":"{count, plural, one {# operation} other {# operations}} this page can call","loading":"Loading the documentation…","building":"Building the index…","error":"Couldn't load the documentation.","unavailable":"API docs are unavailable right now. Try again in a few minutes.","retry":"Try again","untagged":"Untagged","auth_session":"Session","auth_api_key":"API key","auth_other":"Other","auth_session_optional":"Session (optional)","auth_api_key_optional":"API key (optional)","auth_other_optional":"Other (optional)","auth_none":"No credential detected","permission":"Permission: {value}","capability":"Capability: {value}","permission_checks_not_listed":"Permission checks inside the handler are not listed","or":"or","details":"Details","parameters":"Parameters","parameter_name":"Name","parameter_in":"In","parameter_type":"Type","parameter_required":"Required","parameter_description":"Description","yes":"Yes","no":"No","request_body":"Request body","response":"Response {status}","truncated":"(truncated)","copy_curl":"Copy as curl","curl_copied":"curl command copied","copy_failed":"Couldn't copy to the clipboard","open_docs":"Open in API docs","not_served":"Not served by the API","not_served_hint":"These operations may have been removed, or are not deployed yet."},"self_host_tab_grants":"Teams & grants","self_host_tab_pending":"{count} pending","self_host_matrix_hint":"One row per model: tick the delivery forms this team bought. — means the model doesn't ship that way.","self_host_matrix_model":"Model","self_host_model_unreleased":"Unreleased","self_host_releases_unreleased":"This model isn't released yet: its chart is still marked unreleased in the toolkit, so no versions are reported.","account_controls":{"title":"Account Controls","description":"Find an account and choose a team. See and change its profile, plan, controls, risk, history and voices in one place.","team":"Team","personal":"Personal","open_user_page":"Open in User page","empty_title":"Find an account","empty_description":"Enter a user ID or email to see the controls of the account.","edit":"Edit","load_failed":"Could not load this control.","discount_title":"Discount","discount_description":"The TTS price as a percentage of the list price.","concurrency_title":"Concurrency","concurrency_description":"Maximum number of API requests that can run at the same time.","seats_title":"Team size","seats_description":"The custom seat limit for this team.","model_limit_title":"Model creation limit","model_limit_description":"Models this team can create with an API key.","model_limit_usage":"{used} of {limit} used","model_limit_exempt":"Exempt (no limit)","model_limit_blocked":"At limit","api_credit":"API credit","add_exemption":"Add exemption","remove_exemption":"Remove exemption","remove_exemption_title":"Remove the exemption?","remove_exemption_description":"This team will have the model creation limit again.","exemption_removed":"Exemption removed.","flags_title":"Feature flags","flags_description":"Features that are on for this team.","flags_changed":"The feature flags of this team changed after you loaded them. The page now shows the latest flags. Make your change again.","credit_description":"The current API credit balance of this team.","model_limit_paid_credit":"Paid API credit","copied":"Copied","discount_list_price":"List price","discount_off":"{percent}% off","discount_above":"{percent}% above list price","discount_mixed":"Mixed rates","view_all_prices":"View all prices","hide_prices":"Hide prices","plan_title":"Plan and billing","plan_description":"The subscription plan and billing of this team.","risk_description":"Payment checks and creative access for this account.","history_title":"History","history_description":"Plan, grant, API credit and withdraw records.","flags_none":"No feature flags are on."},"model_prices":{"title":"Edit team prices","fixed_price_note":"Custom prices are fixed in USD and stay unchanged when promotions end. Restore default to follow platform pricing.","default_price":"Platform default","current_price":"Current price","platform_default":"Following default","fixed_price":"Fixed custom price","custom_price":"Custom price (USD / {unit})","save":"Save","restore_default":"Restore default","invalid_price":"Enter a valid non-negative price with up to 12 decimal places.","saved":"Prices saved","close":"Close","loading":"Loading prices…","load_failed":"Could not load model prices.","retry":"Retry","contract_managed":"Prices for this team are managed by an enterprise contract. Change them in contract management.","refresh_failed":"Price saved, but current prices could not be refreshed. Retry before editing again.","percentage_title":"TTS percentage","percentage_label":"Percentage of list price (%)","percentage_note":"Applies to S2 and legacy TTS models, replacing their custom prices. Drama 3 and other products are unchanged.","apply_percentage":"Apply percentage","per_model_title":"Per-model prices"}},"affiliate":{"actions":{"api_credit_redeemed":"API credits redeemed successfully","copy-affiliate-code-success":"copied affiliate link to clipboard","error":"fail to redeem","membership_redeemed":"Plus Plan redeemed successfully","package_credits_redeemed":"250,000 credits redeemed successfully","redeem-api-credit":"Redeem 10 USD API credit","redeem-api-credit-cancel-button-text":"Cancel","redeem-api-credit-confirm-button-text":"Redeem","redeem-api-credit-confirm-description":"Are you sure you want to redeem 10 USD API credit?","redeem-api-credit-confirm-title":"Redeem 10 USD API credit","redeem-package-credits":"Redeem 250,000 Credits","redeem-package-credits-cancel-button-text":"Cancel","redeem-package-credits-confirm-button-text":"Redeem","redeem-package-credits-confirm-description":"Are you sure you want to redeem 250,000 credits using $15 affilaite reward?","redeem-package-credits-confirm-title":"Redeem 250,000 Credits","redeem-premium":"Redeem 1 month Plus Plan","redeem-premium-cancel-button-text":"Cancel","redeem-premium-confirm-button-text":"Redeem","redeem-premium-confirm-description":"Are you sure you want to redeem 1 Month Plus Plan using $15 affiliate reward?","redeem-premium-confirm-title":"Redeem 1 month Plus Plan"},"affiliate":"Affiliate","affiliate-code-description":"Share your affiliate code with your friends and earn rewards.","affiliate-credit-changed":"Credit Changed","affiliate-type":"Credit Type","cash_card":{"apply_button":"Learn More and Apply","dashboard_link":"Already registered? View your dashboard","description":"Earn 20–30% cash commission on every referral","title":"Share your link and get cash commissions","tooltip":"Only one link can be active at a time. If you upgrade to cash commissions, the product credit link stops tracking new referrals (existing credits stay redeemable)."},"copy-affiliate":"Copy to clipboard","created_at":"Created At","creators":{"creator1":{"description":"Fish voice cloning caught me off guard... I couldn't even tell if it was me or AI talking.","followers":"150K+ subscribers"},"creator2":{"description":"The speech generated by {brand} is so realistic, unlike anything I've seen.","followers":"500K+ followers"},"creator3":{"description":"S1's Advanced Emotional Control is a game-changer! Perfect for creators!","followers":"2.5M+ followers"},"subtitle":"See how our affiliates are sharing {brand} with their communities","title":"How Creators are promoting {brand}"},"credit_card":{"available_credit":"Available to Redeem","back":"Back","copied_button":"Copied!","copy_button":"Copy","insufficient_credits":"You don't have enough credits. Start referring to earn more!","no_history":"No reward history yet. Start sharing your referral link to earn credits!","redeem_api_credit":"$10 API Credits","redeem_package_credits":"250,000 Credits","redeem_premium":"1 Month Plus Plan","redeem_title":"Redeem","title":"Share your link and get product credits","tooltip":"Earn product credits equal to 20% of every purchase made through your link","total_earned":"Total Earned Credits","unique_link_label":"Your unique link:","view_history":"View reward history"},"cta":{"button":"Apply","subtitle":"Start earning while you help others unleash their creativity with AI voice technology","title":"Join our affiliate program now"},"hero":{"cta":"Join Now","subtitle":"Turn your love for {brand} into extra cash by sharing it with your audience. By submitting your application, you acknowledge and accept the","terms":"{brand} Affiliate Terms","title":"Earn money as a {brand} Affiliate Partner"},"introduction":{"benefits":{"benefit1":"Competitive commission rates","benefit2":"Monthly payouts via PayPal or Wise","benefit3":"Early access to new features","benefit4":"Exclusive creator perks","benefit5":"Dedicated affiliate support","benefit6":"Real-time tracking dashboard","title":"Why join our affiliate program?"},"cta":"Start Earning","step1":{"description":"Submit your application and wait for approval","title":"Apply to join"},"step2":{"description":"Receive your personalized affiliate link to share with your audience","title":"Get your unique link"},"step3":{"description":"Get paid for every purchase made by your referred users","title":"Earn cash"},"subtitle":"Start earning in three simple steps","title":"How it works"},"my-affiliate-code":"My affiliate code","page_title":"Earn rewards in one of two ways","redeem-awarded-credit":"Redeem the granted credit","redeem-awarded-credit-description":"Redeem your rewarded credit to get a premium subscription or API credit.","remainingCredit":"Remaining credit","title":"Affiliate Reward History","totalAffiliateNumber":"Total invited users","totalCredit":"Total credits granted","types":{"api_credit_redeemed":"API Credit Redeemed","invitee_subscription_awarded":"Invitee Subscription Awarded","package_credits_redeemed":"Package Credits Redeemed","premium_redeemed":"Premium Redeemed"}},"agents":{"active":"Active","add_document":"Add Document","add_document_description":"Add a text document to your agent's knowledge base. The text will be processed and indexed for retrieval.","add_turn":"Add Turn","agent_description":"Description","agent_description_placeholder":"Describe what this agent does (optional)","agent_name":"Agent Name","agent_name_placeholder":"Enter agent name","agent_voice":"Voice","agent_count":"{count, plural, one {# agent} other {# agents}}","agent_not_found_title":"Agent not found","agent_not_found_description":"This agent does not exist, has been deleted, or you do not have access.","admin_view_banner":"Viewing the agent console of {target} as an admin (read-only).","admin_view_exit":"Exit admin view","admin_view_write_refused":"This is a read-only admin view. Nothing was saved.","admin_view_unavailable_title":"Not available in the admin view","admin_view_unavailable_description":"This page shows your own account, not the team you are viewing.","all_tests_passed":"All {count} tests passed","archived":"Archived","arguments":"Arguments","back_to_list":"Back to agents","back_to_tests":"Back to Tests","beta":"Beta","beta_warning":"Voice agents are in beta and not recommended for production workloads. Costs are reduced by 50%. Please contact support for help.","beta_warning_mobile":"Not recommended for production.","beta_warning_short":"Voice agents are in beta. Not for production. Costs are 50% off.","call_ended":"Call ended","cancel":"Cancel","close":"Close","characters":"Characters","chunks":"Chunks","coming_soon":"Coming soon","completed":"Completed","connected":"Connected","copied":"Copied to clipboard","connecting":"Connecting...","connection_failed":"Connection failed","configuration":"Configuration","phone":"Phone","phone_page":{"tab_inbound":"Inbound calls","tab_outbound":"Outbound calls","numbers_title":"Phone numbers","numbers_summary":"{count, plural, one {# number} other {# numbers}}","bind_number":"Bind number","import_number":"Import number","numbers_empty_title":"No numbers ring this agent","numbers_empty_hint":"Bind a workspace number or buy a new one to put this agent on the phone.","no_transfer_tooltip":"LiveKit numbers can't transfer calls. Use a managed Twilio number for transfers.","rate_note":"Phone calls add {surcharge}/min on top of the {base}/min agent rate. Transfers are billed per leg after handoff.","unbind":"Unbind from this agent","bind_dialog_title":"Bind a number","bind_dialog_description":"Choose a workspace number that should ring this agent.","bind_dialog_empty":"Every workspace number is already bound to an agent.","transfer_title":"Call transfer","transfer_description":"Allow the agent to transfer calls to a phone number or SIP endpoint.","transfer_scope_description":"Applies to inbound and outbound calls.","destination_name_label":"Destination name","destination_name_placeholder":"Support desk","destination_number_label":"Phone number","announcement_label":"Transfer announcement","announcement_hint":"The sentence the agent says right before transferring, so the caller knows what is happening.","announcement_generated":"Generated","announcement_fixed":"Fixed message","announcement_off":"Off","announcement_generated_description":"A short sentence in the agent's own words, or the line your system prompt specifies.","announcement_fixed_description":"This line, word for word. It is skipped if the agent already spoke in the same reply, so remove any transfer line from your system prompt.","announcement_off_description":"No extra sentence. The transfer starts as soon as the agent finishes its current reply.","announcement_fixed_placeholder":"One moment, I'm connecting you now.","announcement_required":"This field is required.","mode_label":"Transfer mode","mode_label_hint":"Cold hands the call over and the agent leaves. Warm keeps the agent on the line until the recipient joins.","mode_cold":"Cold","mode_warm":"Warm","mode_cold_description":"Hand off the call and let the agent leave. Recording stops at transfer.","mode_warm_description":"The agent stays to bridge the call. Recording continues.","warm_connect_label":"Warm handoff","warm_connect_label_hint":"How the agent introduces the caller to the recipient before connecting them.","warm_confirm_title":"Ask the human to accept before connecting","warm_confirm_description":"The agent summarizes the call and waits for confirmation.","warm_briefing_title":"Connect with a briefing","warm_briefing_description":"The agent briefs the colleague, says it is transferring the caller, then connects without waiting for a yes.","warm_direct_title":"Connect without an introduction","warm_direct_description":"The colleague is connected the moment they answer, with no briefing. Recording and analysis continue.","warm_briefing_label":"Briefing instructions","warm_briefing_placeholder_confirm":"Say the customer's number, {example}, then explain in one sentence why they are calling and ask if the colleague can take the call. Skip the number if it is empty.","warm_briefing_placeholder_briefing":"Say the customer's number, {example}, explain in one sentence why they are calling, then say you are transferring them now. Skip the number if it is empty.","warm_briefing_speed_label":"Briefing speed","warm_briefing_speed_agent":"Agent speed ({speed}x)","warm_briefing_speed_reset":"Use agent speed","warm_briefing_speed_error":"Choose a speed between {min}x and {max}x.","warm_briefing_speed_hint":"Applies to the briefing and the rest of the call with your colleague. Add [break] in the instructions for pauses.","warm_ring_timeout_label":"Ring timeout (seconds)","warm_ring_timeout_hint":"How long the destination rings before the transfer counts as unanswered. Keep it shorter than the destination's voicemail pickup, or voicemail will answer the transfer. 5 to 120, default 30.","warm_confirm_timeout_label":"Confirm timeout (seconds)","warm_confirm_timeout_hint":"After the destination answers, how long the agent waits for a person to take the call before treating it as unanswered and returning to the caller. 10 to 300, default 60.","warm_timeout_error":"Enter a whole number between {min} and {max}.","warm_human_detection_label":"Wait for a person to answer","warm_human_detection_hint":"After the destination answers, the agent stays silent until the other side speaks. If voicemail or a phone menu answers, the transfer stops and is handled as a failed transfer. Leave this off for lines that reach people through a phone menu.","on_failure_end_call_label":"End the call if the transfer doesn't connect","on_failure_end_call_hint":"Applies when the line is busy, nobody answers, the colleague declines, or voicemail picks up. The agent says a short goodbye and hangs up. When off, the agent tells the caller and keeps helping.","warm_consult_uses_agent_settings_label":"Use agent settings with the colleague (recommended)","warm_consult_uses_agent_settings_hint":"When on, the agent talks to the colleague with the same turn-taking, interruption sensitivity and language settings it uses with the caller. We recommend turning it on. This is a compatibility option: destinations created before it existed keep it off, so their transfer behavior is unchanged.","transfer_footnote":"Calls through numbers bought from Fish Audio can be transferred to US, CA, UK, DE, FR, ES, IT, MX, AU, JP, IN, ID, PH, MY, and TH. Calls through imported SIP numbers are transferred by your own carrier and can reach other countries too.","transfer_caller_id_hint":"Transfer caller ID is set on each number in <link>Phone numbers</link>.","byo_sip_transfer_hint_one":"Cold transfers on {number} need Call Transfer (SIP REFER) and PSTN transfers allowed on your carrier's trunk. <link>How to set it up</link>","byo_sip_transfer_hint_many":"Cold transfers on <numbers>{count} of your SIP numbers</numbers> need Call Transfer (SIP REFER) and PSTN transfers allowed on your carrier's trunk. <link>How to set it up</link>","byo_sip_transfer_dismiss":"Do not show again","transfer_outbound_caller_id_note":"On outbound calls, the transfer target sees the agent’s number. Caller’s number only applies to inbound calls.","transfer_refuse_questions":"Wait for the caller's answer before transferring","transfer_refuse_questions_hint":"If the agent's line before the transfer asks the caller something, the agent asks it and waits for the answer before transferring.","destinations_hint":"With more than one destination, the agent picks whichever best matches what the caller needs.","destination_heading":"Destination {index}","destination_description_label":"When to transfer","destination_description_placeholder":"Billing questions, invoices, account balance","destination_name_required":"Name each destination so the agent can tell them apart.","destination_name_duplicate":"Another destination already uses this name.","remove_destination":"Remove destination","shared_settings_hint":"Recording, max duration and timezone are shared across channels. Manage them in <link>Configuration</link>.","no_outbound_badge":"No outbound","no_outbound_tooltip":"LiveKit numbers can't place outbound calls. Use a managed Twilio number.","outbound_call_title":"Place a test call","outbound_call_description":"Call a real number with this agent's published configuration. Billed like any call.","outbound_api_hint":"For production outbound, place calls from your backend with the <link>outbound calls API</link>.","outbound_from_label":"From number","outbound_from_placeholder":"Select a number","outbound_from_empty":"No workspace numbers yet. Buy one on the Inbound calls tab first.","outbound_to_label":"To number","outbound_number_error":"Enter a number with country code like +14155550123.","outbound_variables_title":"Variables for this call","outbound_variables_hint":"Used for this call only, and remembered in this browser for your next test. Unfilled variables fall back to their default value.","outbound_call_button":"Call","outbound_call_success":"Call queued — it will appear in recent calls below.","outbound_rate_note":"Ringing is free. Once answered, calls bill at {base}/min plus a phone surcharge that depends on the destination: {surcharge}/min for US/Canada, and {intlMin} to {intlMax}/min for Japan, the UK, Italy, Australia and Mexico depending on whether the number is fixed-line or mobile.","outbound_error_insufficient_credit":"Not enough credits to place this call. Top up and try again.","outbound_error_agent_not_published":"Publish this agent before placing calls.","outbound_error_destination_invalid":"That isn't a valid phone number. Use the international format like +14155550123.","outbound_error_destination_not_allowed":"Outbound calls can only reach numbers in the US, Canada, Japan, the UK, Italy, Australia and Mexico for now.","outbound_error_premium_destination_blocked":"Premium-rate numbers can't be called.","outbound_error_self_call_blocked":"That's one of your own workspace numbers — calls to it are blocked.","outbound_error_number_provider_unsupported":"This number can't place outbound calls. Use a managed Twilio number.","outbound_error_number_inactive":"This number isn't active yet. Wait for provisioning to finish.","outbound_error_daily_limit_exceeded":"Daily outbound call limit reached. Try again tomorrow.","outbound_error_concurrency_limit_exceeded":"Too many calls in progress. Wait for one to finish.","outbound_error_outbound_disabled":"Outbound calling is disabled for this workspace. Contact support.","recent_calls_title":"Recent outbound calls","recent_calls_empty":"Calls you place will show up here.","recent_calls_error":"Couldn't load recent calls.","recent_calls_col_number":"Number","recent_calls_col_status":"Status","recent_calls_col_dial":"Dial result","recent_calls_col_answered_by":"Answered by","recent_calls_col_duration":"Duration","recent_calls_col_time":"Placed","outbound_dial_answered":"Answered","outbound_dial_busy":"Busy","outbound_dial_no_answer":"No answer","outbound_dial_failed":"Failed","outbound_dial_pending":"Dialing","outbound_answered_by_human":"Human","outbound_answered_by_voicemail":"Voicemail","outbound_answered_by_unknown":"Unknown","inbound_only_tooltip":"No SIP termination configured. This number takes inbound calls and cold transfers, but can't place outbound calls or warm transfers.","no_outbound_tooltip_sip":"This number was imported without SIP termination, so it can't place outbound calls.","col_transfer":"Transfer","transfer_on":"ON","transfer_off":"OFF","transfer_cold_only":"Cold only","destination_type":"Destination type","destination_phone":"Phone number","destination_sip":"SIP endpoint","destination_sip_uri":"SIP URI","destination_sip_error":"Enter a SIP URI without a password or custom headers.","destination_sip_hint":"Public endpoints only. Original caller and dialed numbers are included, subject to caller privacy.","destination_sip_cold_hint":"Cold SIP transfer must be enabled for your number.","destination_sip_warm_hint":"Warm transfers use the platform number as caller ID.","keypad_menu_title":"Keypad menu","keypad_menu_description":"Play a menu before the agent's first reply on inbound calls and store the caller's choice in a variable.","keypad_menu_prompt_label":"Menu prompt","keypad_menu_prompt_placeholder":"e.g. Thanks for calling. For sales, press 1. For support, press 2.","keypad_menu_prompt_hint":"Spoken in the agent's voice when the call connects. It can use other variables.","keypad_menu_options_label":"Options","keypad_menu_options_hint":"Callers choose by pressing a key. The variable receives the option's value.","keypad_menu_key_label":"Key for option {index}","keypad_menu_value_label":"Value for option {index}","keypad_menu_value_placeholder":"e.g. sales","keypad_menu_remove_option":"Remove option {index}","keypad_menu_add_option":"Add option","keypad_menu_options_limit":"Up to {max} options.","keypad_menu_duplicate_key":"Another option already uses this key.","keypad_menu_accept_speech":"Callers can also say an option","keypad_menu_accept_speech_hint":"The agent also accepts an option's value said aloud instead of a key press.","keypad_menu_variable_label":"Variable","keypad_menu_variable_hint":"Use {example} in the system prompt, first message, transfer texts or webhook tools to act on the choice.","keypad_menu_variable_required":"Enter a variable name.","keypad_menu_variable_invalid":"Start with a letter and use only letters, numbers and underscores.","keypad_menu_own_variable":"This text can't use {variable}. The menu fills it only after the caller chooses.","keypad_menu_too_long":"Use at most {max} characters.","keypad_menu_retries_title":"Retries and fallback","keypad_menu_timeout_label":"Wait for input","keypad_menu_attempts_label":"Prompt plays","keypad_menu_attempts_unit":"{count, plural, one {time} other {times}}","keypad_menu_retry_label":"Retry message","keypad_menu_retry_placeholder":"Sorry, I didn't get that.","keypad_menu_retry_hint":"Spoken before the prompt plays again. Leave it empty to replay the prompt alone.","keypad_menu_fallback_label":"Fallback value","keypad_menu_fallback_placeholder":"e.g. general questions","keypad_menu_fallback_hint":"Stored in the variable when the caller makes no valid choice.","keypad_menu_scope_hint":"Outbound calls and web, API, preview and test sessions skip the menu and use the variable's default value. Set it under Default values on the Configuration page.","outbound_error_cps_limit_exceeded":"Too many calls per second. Wait a moment and try again.","sip_headers":"Custom SIP headers","sip_headers_hint":"Up to 20 unique X- headers. Values support variables such as {variable}. If a variable is missing or renders an invalid value, this destination is skipped for that call. X-Fish- names are reserved.","sip_headers_cold_hint":"Cold transfers carry these headers in the REFER. They only reach the final destination if the system that receives the REFER copies them onto its new call, and some (Twilio included) don't.","sip_headers_error":"Use unique names that start with X- (X-Fish- is reserved) or a supported standard SIP header. Values must be 1 to 1024 printable ASCII characters. Until this is fixed, the last valid headers stay saved.","keypad_menu_edit":"Edit menu","keypad_menu_edit_title":"Edit keypad menu","keypad_menu_setup_title":"Set up keypad menu","keypad_menu_setup":"Set up menu","keypad_menu_empty":"Add a prompt and the keys callers can press. The menu plays once it's saved.","keypad_menu_not_saved":"This menu has errors and isn't saved yet. Edit the menu to fix them.","keypad_menu_prompt_quoted":"“{prompt}”","keypad_menu_col_key":"Key","keypad_menu_col_saved_to":"Saved to {variable}","keypad_menu_press_key":"Press {key}","keypad_menu_no_choice":"No valid choice","keypad_menu_after_tries":"{count, plural, one {After # try} other {After # tries}}","keypad_menu_fallback_empty":"Empty","keypad_menu_prompt_required":"Add a prompt so callers know which key to press.","keypad_menu_value_required":"Add a value for key {key}.","keypad_menu_options_required":"Add at least one option.","keypad_menu_variable_placeholder":"e.g. department","add_target":"Add target","edit_target_title":"Edit target","edit_target":"Edit {name}","col_target_name":"Name & Description","col_target":"Target","col_announcement":"Announcement","col_mode":"Mode","targets_empty":"No targets yet. Add one so the agent can hand calls to a person.","destination_target_required":"This field is required.","destination_number_error":"Enter a number with country code like +14155550123.","destination_country_needs_sip":"Numbers bought from Fish Audio can't transfer calls to this country. Import a SIP number to transfer through your own carrier.","destination_country_needs_termination":"A warm transfer to this country needs an imported SIP number with termination configured. Use a cold transfer, or add termination to your SIP number.","destination_country_sip_only_cold":"Numbers bought from Fish Audio can't transfer calls to this country. Only calls through your imported SIP numbers can be transferred here.","destination_country_sip_only_warm":"Numbers bought from Fish Audio can't transfer calls to this country. Only calls through imported SIP numbers with termination configured can be transferred here.","transfer_country_unreachable_cold":"Calls through {numbers} can't be transferred to {target}. Its country can only be reached through an imported SIP number.","transfer_country_unreachable_warm":"Calls through {numbers} can't be transferred to {target}. A warm transfer to its country needs an imported SIP number with termination configured.","warm_ring_timeout_title":"Ring timeout","warm_confirm_timeout_title":"Confirm timeout","seconds_suffix":"s"},"rollback_action":"Roll back to this version","rollback_confirm":"Roll back","rollback_confirm_desc":"This replaces your current draft with the contents of v{version} and republishes it. Unpublished changes will be lost.","rollback_confirm_title":"Roll back to v{version}?","rollback_failed_v2":"Rollback failed","rollback_restored_v2":"Restored v{version}. It's already the live version, so no new version was created.","rollback_success_v2":"Rolled back and published as v{version}.","system_prompt":"System prompt","system_prompt_description":"Personality, goals and guardrails that steer every reply.","system_prompt_placeholder":"Describe the agent's personality, goals and guardrails…","system_prompt_variables_hint":"Supports variables like {example}.","system_prompt_variables_link":"Default values","system_prompt_token_hint":"Up to 4,000 tokens — staying under 2,000 is recommended.","first_message":"First message","first_message_off":"Off","first_message_fixed":"Fixed message","first_message_prompt":"Prompt","first_message_off_description":"Start the conversation without a preset opening line.","first_message_fixed_description":"Speak the same opening line every time.","first_message_prompt_description":"Let the agent generate the opening line from a prompt.","first_message_fixed_placeholder":"Hi! Thanks for calling Fish Audio — how can I help you today?","first_message_prompt_placeholder":"Greet the caller and ask what you can help with.","first_message_required":"This field is required.","variable_defaults_description":"Default values for the variables in the prompt and messages. A value passed when the session starts replaces the default.","variable_default_label":"Default value","variable_default_placeholder":"No default","variable_unused_hint":"Not used in the current prompt or messages. Clear the default to remove it.","variable_defaults_empty":"Write a placeholder such as customer_name between double curly braces in the system prompt or first message, then set its default here.","variable_defaults_summary":"{count, plural, one {# variable} other {# variables}}, {missing, plural, =0 {all have defaults} one {# without a default} other {# without a default}}","variable_missing_label":"If a variable has no value","variable_missing_keep":"Keep as written","variable_missing_empty":"Empty text","variable_missing_reject":"Reject session","variable_missing_keep_hint":"The placeholder is spoken as written, braces included.","variable_missing_empty_hint":"The placeholder renders as empty text.","variable_missing_reject_hint":"Session creation fails with an error and inbound calls are not connected.","variable_defaults_search":"Search variables","variable_defaults_no_match":"No variables match.","variable_unused_badge":"Unused","variable_keypad_menu_hint":"Set by the keypad menu on inbound calls. Other calls and sessions use this default.","variable_defaults_bulk_edit":"Edit as JSON","variable_defaults_bulk_description":"One JSON object, the same shape as variables.defaults in the API. Applying replaces every default.","variable_defaults_bulk_invalid_json":"Not valid JSON.","variable_defaults_bulk_invalid_shape":"Must be an object of variable names to text values. Names start with a letter and use letters, digits, and underscores.","variable_defaults_apply":"Apply","version_current":"Current","version_history":"Version history","version_history_empty_hint":"Publish this agent to create its first version.","version_history_empty_title":"No versions yet","version_history_error":"Failed to load version history","version_history_hint":"Every publish creates a version you can restore.","version_load_more":"Load more","version_rename":"Rename version","version_rename_desc":"Give v{version} a name to make it easier to find. Leave empty to clear it.","version_rename_failed_v2":"Rename failed","version_restored_from":"Restored from v{version}","version_title_label":"Version name","version_title_placeholder":"Optional name for this version","version_untitled":"Untitled version","voice_description":"Choose the agent's voice profile and speaking language.","voice_profile":"Voice profile","voice_profile_default_description":"English · Warm support","change_voice":"Change","choose_a_voice":"Choose a voice","more_voices":"More voices","use_this_voice":"Use this voice","no_voice_selected":"No voice selected","voice_unavailable":"Voice unavailable","speaking_language":"Speaking language","expressive_mode":"Expressive mode","expressive_mode_hint":"The agent adds emotion, pauses, and natural speech patterns on its own.","tts_model":"Text-to-speech model","tts_model_hint":"The Fish Audio model that renders the agent's voice.","tts_model_live3_hint":"Fish's full-duplex speech model: it listens while it speaks and takes turns on its own. English only.","speech_model":"Speech model","asr_model":"Model","asr_model_hint":"The model that transcribes what callers say. The latency shown is the typical wait from the caller's last word to the transcript.","asr_live3_self_model":"Agent audio model","asr_live3_self_model_hint":"The model that transcribes the agent's own speech, so an interruption is cut at what the caller actually heard. Same as Model follows the model above.","asr_live3_self_model_follow":"Same as Model","speech_recognition":"Speech recognition","speech_recognition_hint":"How the agent hears the caller.","speech_recognition_summary":"{multilingual, select, on {Multilingual} other {Single language}}{noise, select, on {} other { · Noise cancellation off}}","asr_model_latency":"≈{seconds} s","multilingual_asr":"Multilingual recognition","multilingual_asr_hint":"Recognizes users who switch languages mid-conversation. Turn off to recognize only the selected language, which is more accurate.","noise_cancellation":"Noise cancellation","noise_cancellation_web_voice":"Web calls","noise_cancellation_phone_inbound":"Inbound phone calls","noise_cancellation_phone_outbound":"Outbound phone calls","noise_cancellation_mode_off":"Off","noise_cancellation_mode_noise":"Noise","noise_cancellation_mode_noise_and_voices":"Noise + voices","noise_cancellation_hint":"Noise removes background noise and keeps every voice. Noise + voices also removes other people's voices.","noise_cancellation_toggle_hint":"Removes background noise and other people's voices.","noise_cancellation_per_channel":"Per channel","speaker_labels":"Speaker labels","speaker_labels_hint":"[admin only] Labels each voice in the transcript as [speaker N]. Only Fish Transcribe Stream 1 can tell voices apart.","voice_live3_prompt":"Situation prompt","voice_live3_prompt_hint":"Sets the situation the speech model speaks in: pacing, backchannels and turn-taking.","voice_live3_prompt_default":"Engine default","voice_live3_prompt_p2":"Phone support","voice_live3_prompt_dt":"Drive-thru","voice_live3_prompt_air":"Airline","voice_live3_playout":"Playout","voice_live3_playout_hint":"Direct plays the speech model's audio as it arrives. Buffered holds it behind a short adaptive delay that hides late chunks.","voice_live3_playout_default":"Default","voice_live3_playout_direct":"Direct","voice_live3_playout_buffered":"Buffered","voice_details":"Voice details","voice_details_hint":"How the agent delivers its lines.","voice_details_summary":"Expressive {expressive, select, on {on} other {off}} · {speed}x","voice_details_live3_summary":"Situation: {prompt}","voice_details_live3_note":"Live 3 speaks with its own pacing and delivery. Speaking speed, expressive mode and pronunciation dictionaries are available with Drama 3 and S2.1 Pro.","speaking_language_search":"Search languages","speaking_language_no_match":"No matching language","speaking_language_live3_hint":"Live 3 speaks English only.","voice_picker_filter":"Filter voices","voice_picker_filter_all":"All","voice_picker_filter_female":"Female","voice_picker_filter_male":"Male","voice_picker_live3":"Live 3 voices","voice_picker_library":"From the library","voice_picker_professional":"Professional voices","voice_picker_browse_library":"Browse the voice library","voice_picker_empty":"No voices for this language yet.","voice_picker_unavailable":"Voices could not be loaded.","voice_language_mismatch":"{voice} does not speak {language}. Change to a {language} voice.","voice_live3_default":"Default","voice_play_sample":"Play sample","voice_stop_sample":"Stop sample","voice_effect":"Voice effect","voice_effect_hint":"How the voice sounds on web calls: the clean voice, a phone line, or an intercom speaker. Phone calls already go through the carrier's line, so it does not apply to them.","voice_effect_none":"Off (clean voice)","voice_effect_phone":"Phone line","voice_effect_intercom":"Intercom speaker","sentence_buffering":"Sentence buffering","sentence_buffering_hint":"[admin only] Drama 3 only. Off (default) sends the text to TTS as the model writes it and lets TTS split it. On holds each sentence until it is complete before sending it. S2.1 Pro always holds sentences.","voice_speed":"Speaking speed","voice_speed_hint":"How fast the agent speaks. 1.0x is normal speed.","background_sound":"Background sound","background_sound_hint":"A looping ambience that plays softly under the agent's voice.","background_sound_volume":"Background sound volume","background_sound_volume_short":"Volume","background_sound_preset_off":"Off","background_sound_preset_office":"Office","background_sound_preset_call_center":"Call center","background_sound_preset_restaurant":"Restaurant","background_sound_preset_cafe":"Café","background_sound_preset_city_street":"City street","background_sound_preset_phone_line":"Analog phone line","background_sound_preset_phone_line_digital":"Digital phone line","background_sound_preset_custom":"Custom upload","background_sound_preview":"Preview {name}","background_sound_preview_stop":"Stop preview","background_sound_clip_select":"Select a clip","background_sound_clip_required":"Pick or upload a clip to turn this on.","background_sound_clip_search":"Search clips","background_sound_clip_empty":"Your team has no uploaded clips yet.","background_sound_clip_unavailable":"Unavailable clip","background_sound_clip_delete":"Delete {name}","background_sound_upload_new":"Upload new clip","background_sound_upload_formats":"MP3, WAV, OGG, M4A","background_sound_uploading":"Uploading…","background_sound_upload_error":"Upload failed. Please try again.","background_sound_clip_delete_title":"Delete this clip?","background_sound_clip_delete_description":"“{name}” will be removed from your team's library. Agents using it will fall back to silence for this ambience.","pronunciation_dictionaries":"Pronunciation dictionaries","pronunciation_dictionaries_hint":"Fix how the agent pronounces names, brands, and terms. Up to 3 dictionaries, applied in order. Each call uses the latest published version.","pronunciation_dictionaries_add":"Add dictionary","pronunciation_dictionaries_search":"Search dictionaries","pronunciation_dictionaries_no_match":"No matching dictionaries","pronunciation_dictionaries_empty":"Your team has no pronunciation dictionaries yet.","pronunciation_dictionaries_manage":"Manage dictionaries","pronunciation_dictionaries_remove":"Remove {name}","pronunciation_dictionaries_unavailable":"Unavailable dictionary","pronunciation_dictionaries_unpublished":"Not published","pronunciation_dictionaries_rules":"{count, plural, one {# rule} other {# rules}}","keyterms":"Keywords","keyterms_hint":"Names, brands, and product terms the agent should recognize accurately. Focused lists work best. {count}/{max}","keyterms_placeholder":"Type a term and press Enter","keyterms_remove":"Remove {term}","test_call":"Test call","publish":"Publish","publish_success":"Published v{version}","publish_success_v2":"Agent published successfully.","publish_failed_v2":"Agent publish Failed","draft_saving":"Draft saving","unpublished_changes":"You have unpublished changes","network_error":"Network Error","toggle_off":"Off","toggle_on":"On","optimize_with_ai":"Optimize with AI","optimize_with_ai_unavailable":"AI optimization is not available yet.","draft_saved":"Draft saved","published_up_to_date":"Published","test_call_draft_hint":"Test calls use your current draft, including unpublished changes.","publish_required_title":"Publish required","copy_url":"Copy URL","create_agent":"Create Agent","create_test":"Create test","danger_zone":"Danger zone","danger_zone_hint":"Delete this agent while keeping its existing call history. This cannot be undone.","created":"Created","delete":"Delete","delete_agent":"Delete Agent","delete_confirm":"Delete “{name}”? The agent will be removed, but its existing call history will be retained. This action cannot be undone.","delete_document_description":"Are you sure you want to delete \"{name}\"? All associated data will be permanently removed.","delete_document_title":"Delete Document","delete_test_description":"Are you sure you want to delete \"{name}\"? This action cannot be undone.","delete_test_title":"Delete test","deleting":"Deleting...","deploy":"Deploy","deploy_description":"Configure deployment settings and get integration code for your agent.","deploy_page":{"unpublished_banner":"No published version yet. The API and these snippets always serve the published config — publish to activate them.","unpublished_changes_banner":"You have unpublished changes. The API and these snippets continue to serve your last published configuration — publish to apply them.","first_publish_live_title":"{agentName} is live","first_publish_live_description":"Your agent is now ready to take calls. Next, add it to your product.","first_publish_done":"Done","go_to_deploy":"Go to Deploy","published_description":"Your published configuration is live and ready to use.","not_published_description":"Draft only — nothing is live yet.","published":"Published","not_published":"Not published","public":"Public","authenticated":"Authenticated","copy_code":"Copy code","public_quick_start_hint":"No backend needed — requires Public access below to be on. Best for demos, docs and landing pages.","manage_api_keys":"Manage API keys","full_sdk_reference":"Full SDK reference","api_sdk_docs":"API & SDK docs","public_access":"Public access","add_origin":"Add origin","origin_invalid":"Enter a valid http(s) origin without a path, query, fragment, or credentials.","origin_duplicate":"This origin has already been added.","public_rate_limit":"Public sessions are rate-limited per IP and per agent. Usage is billed to your workspace.","public_access_off_description":"Off — only server-created session tokens can start calls. Turn on to allow the widget and browser-only agentId sessions (requires an origin allowlist).","go_deeper":"Go deeper","go_deeper_description":"Everything the snippets don’t show — full parameters, events and tooling.","public_access_off_warning":"Public access is off for this agent, so this snippet will be rejected. Turn it on below:","quick_start":"Quick start","server_step_title":"On your server","server_step_description":"create a session token","app_step_title":"In your app","app_step_description":"start the conversation","soon":"Soon","allowed_origins":"Allowed origins","allowed_origins_description":"Only these origins can create public sessions — requests from anywhere else are rejected.","session_api_card":"Session API reference","session_api_card_description":"Every parameter of POST /v1/agent/sessions — overrides, dynamic variables, end-user IDs and metadata.","events_card":"Events & state","events_card_description":"Live transcripts, agent mode, interruption, reconnection and error events on AgentSession.","client_tools_card":"Client tools","client_tools_card_description":"Let the agent call functions in your page and speak with the results, mid-conversation.","widget_card":"Widget customization","widget_card_description":"Colors, copy and placement of the drop-in '<fish-agent>' element. Ships with the widget.","channels_label":"Deployment channels","widget_tab":"Widget","web_sdk_tab":"Web SDK","phone_tab":"Phone","webrtc_tab":"WebRTC","public_access_description":"Allow public sessions to be created from specified origins.","telephony_docs":"Telephony docs","manage_phone_numbers":"Manage phone numbers","phone_hint":"Callers dial a number and reach your agent — no client code at all.","phone_empty_title":"No phone number is bound to this agent yet.","phone_empty_description":"Buy or import a number on the Phone numbers page, then bind it to this agent to start taking calls.","widget_public_embed":"Public embed","widget_session_token":"Session token","widget_hint":"A complete voice UI on your site with two lines of HTML — no build step.","widget_page_step_title":"In your page","widget_page_step_description":"drop in the widget","widget_docs":"Widget docs"},"deployment_status":"Deployment Status","deployment_url":"Call URL","deployment_url_description":"Use this URL to connect to your agent via WebRTC or WebSocket.","document_created":"Document created and processing started","document_deleted":"Document deleted successfully","document_name":"Document Name","document_name_placeholder":"Enter a name for this document","draft":"Draft","edit":"Edit","edit_test":"Edit test","agent_name_label":"Agent name","agent_name_example":"Customer support agent","create_agent_action":"Create agent","new_agent_modal_description":"Give this agent a name. You can configure details next.","empty_state":"No agents yet","empty_state_description":"Create an AI voice agent that answers customers, handles common requests, and routes conversations to the right next step.","end_call":"End call","error_creating":"Failed to create agent","error_creating_document":"Failed to create document","error_deleting":"Failed to delete agent","error_deleting_document":"Failed to delete document","error_deleting_test":"Failed to delete test","error_loading":"Failed to load agent","error_loading_test":"Failed to load test","error_running_test":"Failed to run test","error_saving":"Failed to save agent","error_saving_test":"Failed to save test","execution_trace":"Execution Trace","expected_arguments":"Expected Arguments","expected_function":"Expected Function","failed":"Failed","features":{"interactionFlow":{"description":"Map out how your agent handles conversations — greetings, intent routing, escalation, and handoffs. Define branching logic visually so the agent always knows what to do next.","title":"Interaction Flow Designer"},"knowledgeAccess":{"description":"Connect documents, FAQs, and product catalogs. Your agent pulls relevant answers in real time so it responds accurately instead of hallucinating.","title":"Knowledge Base Access"},"multilingual":{"description":"Agents that speak 8+ languages natively. Serve global customers in their preferred language without building separate agents for each region.","title":"Multilingual Support"},"personas":{"description":"Give each agent a distinct personality and voice from 2M+ options. Match your brand tone — professional, friendly, multilingual — and keep it consistent across every call.","title":"Agent Personas & Voices"},"subtitle":"Everything you need to build, deploy, and scale LLM-powered voice agents","telephony":{"description":"Connect to phone systems via SIP or deploy on the web via WebRTC. Replace IVR phone trees with natural conversations your customers actually want to have.","title":"Telephony & Web Integration"},"title":"Voice-First AI Agent Platform","toolIntegration":{"description":"Let your agent take action mid-conversation — look up orders, book appointments, update CRMs, trigger webhooks. Connect any API and the LLM decides when to call it.","title":"Tool & API Integration"}},"final_node":"Final Node","final_state":"Final State","flow_editor":"Flow Editor","filter_all":"All","filter_live":"Live","function_name":"Function","function_name_required":"Function name is required","history":"History","history_description":"View conversation history and analytics for this agent.","initial_state":"Initial State","introduction":{"description":"Define an interaction flow, connect your knowledge base, pick a persona from 2M+ voices, and deploy to web or phone. Your agent handles real conversations — answering questions, routing calls, and speaking your customers' language — so your team can focus on what matters.","title":"Your AI, On the Phone","tryFree":"Create an Agent"},"invalid_initial_state":"Invalid JSON for initial state","knowledge":"Knowledge","knowledge_base":"Knowledge base","knowledge_description":"Add documents, FAQs, and other knowledge sources for your agent to reference.","knowledge_library_hint":"Upload text and Markdown files your agents can search during conversations.","all_sources":"All sources","support":"Support","folder":"Folder","folders_count":"{count, plural, one {# folder} other {# folders}}","knowledge_sources_count":"{count, plural, one {# file} other {# files}}","knowledge_sources_summary":"{count, plural, one {# file} other {# files}} · Updated {time}","knowledge_no_files_yet":"No files yet","search_knowledge_sources":"Search files, folders, chunks","new_folder":"New folder","new_folder_description":"Create a folder to organize knowledge sources.","rename_folder":"Rename folder","rename_folder_description":"Update this folder name.","folder_name":"Folder name","folder_name_placeholder":"Support docs","knowledge_folder_name_required":"Enter a folder name.","knowledge_name_too_long":"Name must be 120 characters or fewer.","add_source":"Add source","add_source_description":"Upload a text or Markdown file.","add_file":"Add file","new_private_file":"New private file","import_from_library":"Import from library","import_from_global_knowledge_base":"Import from global KB","knowledge_scope_private":"Private","knowledge_scope_global":"Global","edit_in_global_knowledge_base":"Edit in global knowledge base","import_knowledge_sources":"Import files from library","import_knowledge_sources_description":"Select a workspace library file for this agent to use.","import":"Import","no_library_files_to_import":"No library files available to import.","knowledge_source_imported":"File imported","knowledge_source_removed":"File removed from this agent","remove_from_agent":"Remove from agent","remove_source_confirm":"Remove “{name}” from this agent? It will remain available in the global knowledge base.","agent_knowledge_files":"Agent files","knowledge_drop_file":"Drop a text or Markdown file to upload","edit_knowledge_source":"Edit file","edit_source_description":"Rename, move, or replace this source with a new text or Markdown file.","global_source_edit_hint":"This is a global file. Edit it from the global knowledge base.","knowledge_source_file":"File","replace_source_file":"Replace file","knowledge_file_hint":"Supported: .txt, .md, .markdown, .text · Max 1 MB","choose_file":"Choose a text or Markdown file","knowledge_file_required":"Choose a file to upload.","knowledge_file_pdf_error":"PDF files are not supported yet. Upload a text or Markdown file.","knowledge_file_type_error":"Unsupported file type. Upload .txt, .md, .markdown, or .text.","knowledge_file_empty_error":"The selected file is empty.","knowledge_file_size_error":"Files must be 1 MB or smaller.","knowledge_file_utf8_error":"The selected file must be UTF-8 text.","source_name":"File name","source_name_hint":"Pre-filled from the uploaded file. You can change it.","source_name_placeholder":"support-faq.md","description":"Description","source_description_hint":"Optional. Helps teammates understand when to use this source.","source_description_placeholder":"What does this source cover?","knowledge_description_too_long":"Description must be 2,000 characters or fewer.","root_folder":"Root","size":"Size","rename":"Rename","rename_source":"Rename source","source_access_title":"Source access","content":"Content","uploaded":"Uploaded","delete_source_title":"Delete source","delete_source_confirm":"Delete “{name}”? It will be archived and detached from every active agent draft. This action cannot be undone.","delete_folder_title":"Delete folder","delete_folder_confirm":"Delete “{name}”? Active sources in this folder will move back to All sources.","knowledge_empty_title":"No documents yet","knowledge_empty_hint":"Upload text or Markdown files to build a knowledge base your agents can search during conversations.","knowledge_folder_empty_title":"No files in this folder","knowledge_folder_empty_hint":"Upload text or Markdown files to this folder so your agents can search them during conversations.","knowledge_library_search_empty_title":"No knowledge base items match your search","knowledge_sources_empty_title":"No sources found","knowledge_sources_empty_hint":"Check the spelling or try a different search.","knowledge_folder_created":"Folder created","knowledge_folder_updated":"Folder updated","knowledge_folder_deleted":"Folder deleted","knowledge_source_created":"Source uploaded","knowledge_source_updated":"Source updated","knowledge_source_deleted":"Source deleted","knowledge_source_not_found":"File not found, deleted, or you do not have access.","folder_access_hint":"Access applies to every document in this folder. New uploads inherit it; a document can still be managed individually.","untitled_folder":"Untitled folder","today":"Today","home_welcome_back":"Welcome back","home_date_past_7_days":"Past 7 days","home_date_past_30_days":"Past 30 days","home_date_past_90_days":"Past 90 days","home_date_custom_range":"Custom range…","home_date_apply":"Apply","home_date_picker_label":"Select date range","home_date_previous_month":"Previous month","home_date_next_month":"Next month","home_conversations":"Conversations","home_average_duration":"Avg duration","home_minutes_used":"Minutes used","home_average_cost":"Avg cost","home_metric_daily":"{metric} · daily","home_view_conversations":"View conversations","home_your_agents":"Your agents","home_view_all_agents":"View all agents","home_view_all":"View all","home_no_activity_data":"No conversation data for this period","home_no_metric_data":"No data for this period","home_recent_conversations":"Recent conversations","home_no_recent_conversations":"No conversations in this period","home_free_minutes":"Trial balance","home_free_minutes_hint":"One-time trial balance · pays for every agent charge, premium models included","home_usage_minutes":"{used} / {total}","home_balance":"Balance","home_add_credit":"Add credit","home_agent_spend":"Agent spend in {month} (this workspace)","home_pricing":"Pricing","home_pricing_conversation":"Conversation","home_pricing_phone":"Phone calls","home_pricing_number":"Phone number","home_pricing_cold":"Cold transfer","home_pricing_warm":"Warm transfer","home_pricing_per_minute":"{price}/min","home_pricing_per_month":"{price}/mo","home_pricing_note":"All-inclusive — ASR, TTS & LLM included. Billed per second.","home_resources":"Resources","home_quickstart_guide":"Quickstart guide","home_api_reference":"API reference","home_whats_new":"What’s new","home_error_description":"We couldn’t load your agents. Try again.","home_overview_error_description":"We couldn’t load your dashboard data. Try again.","home_status_pending":"Pending","home_status_active":"Active","home_status_completed":"Completed","home_status_failed":"Failed","home_status_unknown":"Unknown","home_retry":"Retry","syncing_now":"Syncing now","current_agent":"Current agent","last_updated":"Last Updated","list_description":"Design, test and deploy voice agents that talk to your customers in real time.","list_search_placeholder":"Search agent","list_empty_state":"No Agent yet","list_empty_state_description":"Test your agent or share its number — calls will show up here.","listening":"Listening...","live_url":"Live URL","live_url_description":"Works only when agent is active. Share this URL for production use.","loading":"Loading...","new_test":"New test","new_agent":"New agent","nav_group_build":"Build","nav_group_monitor":"Monitor","nav_group_publish":"Publish","no_knowledge_documents":"No knowledge documents yet","no_test_runs":"This test has not been run yet.","no_tests":"No tests yet. Create your first test to validate your workflow.","no_results":"No agents match your search.","no_results_hint":"Check the spelling or try a different name.","access_no_agents_title":"No agents yet","access_no_agents_hint":"Create an agent first, then choose which ones can use this source.","clear_search":"Clear search","no_turns":"No turns yet. Add a turn to define the test sequence.","no_usage_data":"No usage data available","offline":"Offline","optional":"optional","overview":"Overview","passed":"Passed","private":"Private","processing":"Processing","public":"Public","result":"Result","run_all_tests":"Run All","run_history":"Run History","run_test":"Run test","running":"Running...","running_all_tests":"Running...","save":"Save","save_and_run":"Save & Run","save_changes":"Save Changes","save_test":"Save","saved":"Saved","saving":"Saving...","select_function":"Select function...","select_voice":"Select a voice","search_agents":"Search agents","conversations_search_placeholder":"Search by ID, name or phone number","conversations_page_description":"All agent conversations, transcripts, and analytics within the workspace.","conversations_type":"Conversation type","conversations_type_production":"Production","conversations_type_preview":"Preview","conversations_all_title":"All conversations","conversations_empty_title":"No conversations yet","conversations_empty_description":"All conversations will show up here.","back_to_conversations":"Back to conversations","conversations_calls_in_progress":"{count} calls in progress","conversations_no_results_title":"No results found","conversations_live_running_for":"(Running for {duration})","conversations_live_web_call":"Web call","conversations_no_results":"No conversations match your filters.","conversations_preview_search_hint":"Preview conversations can only be found by their full conversation ID.","conversations_load_error_title":"Unable to load conversations","conversations_load_error_description":"Conversation data could not be loaded. Please try again.","conversation_detail_load_error_title":"Unable to load conversation details","conversation_detail_load_error_description":"Conversation details could not be loaded. Please try again.","conversations_pagination":"Conversation pagination","conversations_previous_page":"Previous page","conversations_next_page":"Next page","conversations_duration":"Duration","conversation_copy_text":"Copy text","conversation_copy_markdown":"Copy markdown","conversation_copied_to_clipboard":"copied to clipboard","conversation_copy":"Copy","conversation_share_link":"Copy share link","conversation_status_active":"Active","conversation_status_escalated":"Escalated","conversation_status_missed":"Missed","conversation_status_resolved":"Resolved","conversation_status_error":"Error","conversation_end_reason_user_hangup":"Caller hung up","conversation_end_reason_agent_hangup":"Agent ended the call","conversation_end_reason_escalated":"Transferred to a human","conversation_end_reason_conversation_timeout":"Reached time limit","conversation_end_reason_heartbeat_timeout":"Agent stopped responding","conversation_end_reason_agent_join_timeout":"Agent did not join","conversation_end_reason_internal_error":"Internal error","conversation_end_reason_llm_endpoint_failure":"Custom LLM failed","conversation_llm_endpoint_error_title":"Custom LLM endpoint error","conversation_llm_endpoint_error_http":"HTTP {status}","conversation_llm_endpoint_error_http_unknown":"HTTP error","conversation_llm_endpoint_error_timeout":"Timed out","conversation_llm_endpoint_error_connection":"Couldn't connect","conversation_llm_endpoint_error_invalid":"Unusable response","conversation_llm_endpoint_error_reason_dns_failed":"Host not found","conversation_llm_endpoint_error_reason_connection_refused":"Connection refused","conversation_llm_endpoint_error_reason_connection_reset":"Connection reset","conversation_llm_endpoint_error_reason_tls_failed":"TLS error","conversation_llm_endpoint_error_reason_address_not_allowed":"Address not allowed","conversation_llm_endpoint_error_reason_not_event_stream":"Not an event stream","conversation_llm_endpoint_error_reason_stream_incomplete":"Stream ended early","conversation_llm_endpoint_error_reason_empty_reply":"Empty reply","conversation_llm_fallback_note":"Fixed line spoken because your LLM endpoint failed","conversation_llm_fallback_title":"Model switched","conversation_llm_fallback_to":"to","conversation_llm_fallback_reason_error":"Error","conversation_llm_fallback_reason_timeout":"Timed out","conversation_llm_fallback_reason_ttft_timeout":"First token timeout","conversation_llm_fallback_reason_total_timeout":"Total timeout","conversation_llm_fallback_reason_empty":"No output","conversation_llm_fallback_reason_kick_in":"Parallel switch","conversation_llm_answered_by":"Answered by {model}","conversation_llm_model_custom":"{model} (custom LLM)","conversation_end_reason_room_join_timeout":"Caller never connected","conversation_end_reason_cancelled":"Cancelled before connecting","conversation_end_reason_dial_failed":"Call not answered","settings_agent_id":"Agent ID","settings_copy_agent_id":"Copy agent ID","settings_agent_id_hint":"Use this in the API and webhooks.","settings_description_hint":"Internal note about what this agent does.","settings_name_hint":"Shown in dashboards and call logs.","settings_page_hint":"Configure agent basic information and general preferences","some_tests_failed":"{passed} passed, {failed} failed","speaking":"Speaking...","state":"State","stats_coming_soon":"Agent usage and stats coming soon","status":"Status","success_created":"Agent created successfully","success_deleted":"Agent deleted successfully","success_saved":"Agent saved successfully","tap_to_start":"Tap to start voice chat","template_food_description":"Order food and log item names and quantities.","template_food_title":"Food Ordering","template_qa_description":"Answer domain specific knowledge from a knowledge base.","template_qa_title":"Question Answering","template_survey_description":"Survey users for answers and record them.","template_survey_title":"Survey Sending","test_created":"Test created successfully","test_deleted":"Test deleted successfully","test_description":"Description","test_description_placeholder":"Describe what this test validates (optional)","test_editor_description":"Define a sequence of function calls to simulate user interactions.","test_failed":"Failed","test_name":"Test Name","test_name_placeholder":"e.g., Happy path checkout","test_name_required":"Test name is required","test_passed":"Passed","test_results":"Test Results","test_turns_required":"At least one turn is required","test_user_turn_required":"At least one user message is required","test_updated":"Test updated successfully","test_url":"Test URL","test_url_description":"Works anytime with valid token. Valid for 24 hours.","test_url_expires_in":"Expires in {time}","test_url_refreshing":"Refreshing...","test_voice_call":"Test Voice Call","test_voice_call_description":"Test your agent with a live voice call","tests":"Tests","tests_description":"Create and run test scenarios to validate your agent's behavior.","text_content":"Text Content","text_content_hint":"Paste your document text here. It will be automatically chunked and indexed for retrieval.","text_content_placeholder":"Paste or type your text content here...","thinking":"Thinking...","title":"Voice Agents","tools":"Tools","tools_description":"Configure external tools and APIs your agent can use during conversations.","topBar":{"cta":"Build Your First Agent","pricingButton":"View Pricing","stat1":"AI Voices","stat2":"Languages","stat3":"Availability","subtitle":"Design conversational AI agents that listen, understand, and respond with natural human voices. Connect knowledge bases, custom tools, and 2 million+ voices to build voice-powered experiences your users will love.","title":"Build Voice Agents That <highlight>Talk Like Humans</highlight>"},"total_credits":"Total Credits","total_duration":"Total Duration","total_sessions":"Total Sessions","turns":"Turns","unknown_error":"An unknown error occurred","unlist":"Unlisted","updated":"Updated","updated_relative":"Updated {time} ago","url_copied":"URL copied to clipboard","usage_stats":"Usage Stats","usage_stats_tooltip":"20 credits per second","usecases":{"callCenter":{"button":"Build Call Agent","description":"Replace rigid IVR menus with voice agents that understand natural language. Route calls intelligently, handle common requests end-to-end, and cut average handle time without sacrificing quality.","title":"Call Centers & Telephony"},"customerSupport":{"button":"Build Support Agent","description":"Deploy agents that answer product questions, troubleshoot issues, and escalate to humans when needed. Handle thousands of calls simultaneously with zero wait times, 24/7.","title":"Customer Support"},"multilingualSupport":{"button":"Build Multilingual Agent","description":"Serve global customers in their native language with a single agent. No need to hire multilingual staff or build separate support lines — one agent, every language, every time zone.","title":"Multilingual Customer Service"},"sales":{"button":"Build Sales Agent","description":"Qualify inbound leads over the phone with natural conversation. Your agent asks the right questions, captures details, and books meetings — so your sales team only talks to hot prospects.","title":"Sales & Lead Qualification"},"subtitle":"Replace hold music and phone trees with AI that actually solves problems","title":"Voice Agents for Every Team"},"user_text":"User Text","visibility":"Visibility","access":"Access","action":"Action","add_argument":"Add parameter","add_auth_header_basic":"Add Authorization header (Basic)","add_auth_header_bearer":"Add Authorization header (Bearer)","add_header":"Add header","add_response":"Add response","add_tool":"Add tool","add_webhook_tool":"Add Webhook tool","agents_have_access":"{enabled} of {total} agents have access.","argument_not_used_warning":"Not used in the URL, request body, or headers.","body":"Body","clone":"Clone","clone_success":"Agent cloned successfully","content_type":"Content type","create_tool":"Create tool","custom_headers":"Custom headers","custom_headers_hint":"Sent with every webhook request.","custom_tools":"Custom tools","custom_tools_hint":"Workspace Webhook tools attached to this agent.","detach":"Detach","detach_tool_confirm":"Detach \"{name}\" from this agent? The tool stays available in your workspace.","detach_tool_title":"Detach tool","edit_webhook_tool":"Edit Webhook tool","endpoint":"Endpoint","endpoint_url":"Endpoint URL","endpoint_url_invalid":"Enter a valid http(s) URL without credentials or private hosts.","endpoint_url_not_allowed":"For security, URLs with credentials, localhost, private network, or metadata hosts aren't allowed.","endpoint_url_required":"Enter an endpoint URL.","error_handling":"Error handling","error_hide":"Hide","error_passthrough":"Passthrough","execution":"Execution","execution_background":"Background","execution_background_description":"The agent continues talking while the tool runs, then announces the result when it arrives. Best for slow operations.","execution_blocking":"Wait for result","execution_blocking_description":"The agent waits for the response before replying. Best for lookups the answer depends on.","execution_fire_and_forget":"Fire and forget","execution_fire_and_forget_description":"The agent continues immediately and never receives the result. Best for notifications and logging.","execution_fire_and_forget_error_note":"Failures are only recorded in logs — the agent is not notified.","header_name":"Header name","header_value":"Header value","invalid_json_arguments":"Enter valid JSON arguments","method":"Method","mock_responses":"Mock responses","mock_responses_hint":"Return canned responses instead of calling the endpoint.","no_response_body":"No response body","request":"Request","request_body":"Request body","response":"Response","response_headers":"Response headers","response_handling":"Response handling","response_truncated":"truncated","seconds_value":"{seconds} s","seconds_unit":"s","send_test_request":"Send test request","status_code":"Status code","system_tools":"System tools","system_tools_hint":"Built-in tools controlled per agent.","hang_up_goodbye":"Farewell","hang_up_goodbye_generated":"Generated","hang_up_goodbye_fixed":"Fixed message","hang_up_goodbye_off":"Off","hang_up_goodbye_generated_description":"The agent says a short goodbye in its own words, then hangs up.","hang_up_goodbye_fixed_description":"Say the same goodbye line every time, then hang up.","hang_up_goodbye_off_description":"Hang up as soon as the agent finishes its current reply, with no extra goodbye.","hang_up_goodbye_fixed_placeholder":"Thanks for calling. Goodbye!","hang_up_goodbye_required":"This field is required.","hang_up_refuse_questions":"Don't hang up on a question","hang_up_refuse_questions_hint":"If the agent's goodbye asks the caller something, the agent asks it and waits for the answer instead of hanging up.","test":"Test","test_tab_hint":"Send a test call with sample arguments to verify your endpoint responds correctly.","timeout":"Timeout","tool":"Tool","tool_arguments":"Parameters","tool_arguments_hint":"Exposed to the agent as tool parameters. Required only means the parameter must be present. Tick Non-empty to refuse an empty string.","tool_created":"Tool created","tool_name":"Tool name","tool_name_required":"Enter a tool name.","tools_empty_hint":"Add a webhook tool so this agent can call your HTTP endpoint.","tools_empty_title":"No custom tools attached","type":"Type","client":"Client","client_sheet_hint":"Client tools are executed by your app through the SDK.","client_tool_sdk_notice":"Client tools require an SDK integration — your app code provides the implementation. On phone calls the tool is hidden from the agent automatically.","edit_client_tool":"Edit client tool","expects_response":"Wait for result","expects_response_hint":"When off, the call is fire-and-forget: the agent continues without waiting for your app's result.","webhook":"Webhook","webhook_test_error_connection":"Connection failed. Check that the endpoint is reachable and accepting connections.","webhook_test_error_dns":"DNS lookup failed. Check the endpoint hostname.","webhook_test_error_network":"Network request failed. Check the endpoint connection and try again.","webhook_test_error_timeout":"Request timed out. Check the endpoint and increase the timeout if needed.","webhook_test_status_connection":"Connection failed","webhook_test_status_dns":"DNS lookup failed","webhook_test_status_network":"Network error","webhook_test_status_timeout":"Timed out","webhook_menu_hint":"Call an HTTP endpoint","webhook_sheet_hint":"Create a reusable custom tool that calls your HTTP endpoint.","webhook_import_title":"Import endpoint","webhook_import_hint":"Paste cURL, request docs, or JSON. Review the generated config before saving.","webhook_import_placeholder":"Paste a cURL command, raw HTTP request, or endpoint notes...","webhook_import_from_clipboard":"Parse clipboard","webhook_import_parse_text":"Parse text","webhook_import_empty":"Paste endpoint details first.","webhook_import_failed":"Could not find an HTTP endpoint to import.","webhook_import_clipboard_failed":"Clipboard access failed. Paste the text manually.","webhook_import_success":"Webhook config filled in","webhook_import_summary":"{method} parsed · {args} args · {headers} headers","conversation_flow":"Conversation flow","open_editor":"Open editor","flow_call_connected":"Call connected","flow_call_connected_hint":"Inbound call is answered","flow_greeting":"Greeting","flow_greeting_hint":"“Hi! Thanks for calling Fish Audio…”","flow_understand":"Understand","flow_understand_hint":"Transcribe speech & detect intent","flow_respond":"Respond","flow_respond_hint":"Answer from the knowledge base or call a tool","flow_wrap_up":"Wrap up","flow_wrap_up_hint":"Confirm, summarize, and end the call","previewing":"Previewing","preview_title":"Preview","preview_status_ready":"Ready","preview_status_connecting":"Connecting…","preview_status_live":"Live · {time}","preview_status_ended":"Ended","preview_status_error":"Error","preview_ready_title":"Ready to preview","preview_start_call":"Start call","preview_call_again":"Call again","preview_end_call":"End call","preview_mute":"Mute","preview_unmute":"Unmute","preview_type_message":"Type a message or just talk…","preview_send":"Send","preview_voice_muted":"Muted","preview_voice_text_only":"Text only","preview_voice_listening":"Listening…","preview_voice_speaking":"Speaking…","preview_voice_interrupt":"Speak or tap to interrupt…","preview_tool_running":"Running","preview_tool_completed":"Done","preview_tool_failed":"Failed","preview_tool_input":"Input","preview_tool_output":"Output","preview_tool_error":"Error","preview_tool_truncated":"truncated","preview_service_unavailable":"Couldn't connect to the voice service. Please try again later.","preview_agent_join_timeout":"The agent didn't join the call. Please try again.","preview_mic_denied":"Microphone access was denied. Allow it in your browser settings to talk, or chat by typing below.","preview_mic_not_found":"Your browser can't access a microphone. Check that one is connected and that your system's privacy settings allow the browser to use it. You can still chat by typing below.","preview_mic_settings_windows":"On Windows, open Settings > Privacy & security > Microphone (Settings > Privacy > Microphone on Windows 10) and turn on Microphone access and Let desktop apps access your microphone.","preview_mic_settings_macos":"On macOS, if the browser is already allowed for this site, also check System Settings > Privacy & Security > Microphone and make sure the browser is allowed there.","preview_mic_audio_session":"Your browser blocked the microphone. Reload the page to talk, or chat by typing below.","preview_mic_unavailable":"The microphone couldn't be started. You can still chat by typing below.","preview_audio_blocked":"Sound is off. Tap to turn on the agent's audio.","preview_variables_title":"Test variables","preview_variables_hint":"Values for the variables in your prompt.","preview_variables_restored":"Restored from your last test","preview_variables_clear":"Clear","preview_variable_value_placeholder":"Value","preview_variables_mode_form":"Form","preview_variables_mode_raw":"Raw","preview_variable_default_placeholder":"Default: {value}","preview_analysis_title":"Analysis","preview_analysis_running":"Analyzing conversation…","preview_analysis_still_running":"Still analyzing — this is taking longer than usual.","preview_analysis_refresh":"Refresh","preview_analysis_skipped":"No analysis for this call — the conversation was empty or analysis isn't configured.","preview_analysis_error":"Analysis failed for this call.","preview_analysis_summary_label":"Summary","preview_analysis_data_label":"Data","preview_analysis_criteria_label":"Criteria","preview_analysis_result_success":"Success","preview_analysis_result_failure":"Failure","preview_analysis_result_unknown":"Unknown","preview_analysis_value_yes":"Yes","preview_analysis_value_no":"No","analysis":"Analysis","guardrails":"Guardrails","guardrails_focus_title":"Focus","guardrails_focus_hint":"Keeps the agent on the task your instructions define.","guardrails_manipulation_title":"Manipulation","guardrails_manipulation_hint":"Keeps the agent in its role and declines attempts to override or extract its instructions.","guardrails_pre_tool_speech_title":"Pre-tool speech","guardrails_pre_tool_speech_hint":"Says a short, natural line before it looks something up or acts, so the other side never waits in silence.","analysis_summary_title":"Summary","analysis_summary_hint":"Generate a short summary of every conversation after it ends.","analysis_summary_language_label":"Summary language","analysis_summary_language_hint":"Summaries are always written in this language, regardless of the conversation language.","analysis_summary_prompt_label":"Custom instructions","analysis_summary_prompt_placeholder":"Leave empty to use the platform's default summary instructions.","analysis_fields_title":"Data fields","analysis_fields_hint":"Structured values extracted from each conversation, delivered via webhook and API.","analysis_fields_empty_title":"No data fields yet","analysis_fields_empty_hint":"Add one to extract structured values from every call.","analysis_add_field":"Add field","analysis_field_name_label":"Name","analysis_field_name_placeholder":"order_number","analysis_field_type_label":"Type","analysis_field_description_label":"Description","analysis_field_description_placeholder":"What should be extracted from the conversation?","analysis_type_boolean":"Boolean","analysis_type_text":"Text","analysis_type_number":"Number","analysis_type_enum":"Choice","analysis_enum_options_label":"Options","analysis_enum_options_hint":"Between 2 and 20 non-empty options.","analysis_enum_option_placeholder":"Option value","analysis_add_option":"Add option","analysis_remove_option":"Remove option","analysis_remove_field":"Remove field","analysis_criteria_title":"Criteria","analysis_criteria_hint":"After each call, the model judges every criterion as success, failure, or unknown, with a short rationale. Vague or incomplete conversations are marked unknown rather than guessed.","analysis_criteria_empty_title":"No criteria yet","analysis_criteria_empty_hint":"Add one to score every call against your definition of success.","analysis_add_criterion":"Add criterion","analysis_criterion_name_placeholder":"issue_resolved","analysis_criterion_description_placeholder":"When should this call count as a success?","analysis_remove_criterion":"Remove criterion","analysis_name_required":"Enter a name.","analysis_name_invalid":"Use lowercase letters, digits, and underscores, starting with a letter.","analysis_name_duplicate":"This name is already used.","webhooks":"Webhooks","post_call_webhook_hint":"Fish Audio can be configured to notify your server when call events take place. This can be helpful for your backend to know when a call has finished, or when its analysis has completed. Preview calls are not delivered. For information about how to set up webhooks, check out our <link>documentation</link>.","post_call_webhook_secret_label":"Signing secret","post_call_webhook_secret_placeholder":"Optional","post_call_webhook_secret_hint":"Used to sign each payload so you can verify it came from Fish Audio.","post_call_webhook_clear":"Remove webhook","post_call_webhook_add":"Add webhook","inbound_webhook_title":"Inbound call webhook","inbound_webhook_hint":"When someone calls your agent's phone number, Fish Audio sends the caller's number to this endpoint before connecting the call. The dynamic_variables returned in the response fill the placeholders in your prompt and first message. If the endpoint fails or times out, the call still connects and every placeholder falls back to its default value. Publish to apply changes to phone calls.","global_tools_hint":"Custom tools your agents call to interact with external systems.","workspace_tools_empty_title":"No custom tools yet","workspace_tools_empty_hint":"Add a webhook tool to make it available to your agents.","library_no_results_title":"No results found","library_no_results_hint":"Try a different search term.","search_custom_tools":"Search custom tools","tools_count":"{count, plural, one {# tool} other {# tools}}","updated_ago":"Updated {time}","used_by_agents":"{count, plural, =0 {No agents} one {# agent} other {# agents}}","name":"Name","manage_access":"Manage access","delete_tool_title":"Delete tool","delete_tool_confirm":"Delete “{name}”? It will be removed from every agent that uses it. This action cannot be undone.","global_tests_hint":"Tests that verify how your agents behave in real conversations.","global_analysis_hint":"Configure post-call summaries, data extraction, and evaluation criteria for each agent.","analysis_no_agents_title":"No agents yet","analysis_no_agents_hint":"Create an agent to configure conversation analysis.","all_tests":"All tests","search_tests":"Search tests","tests_count":"{count, plural, one {# test} other {# tests}}","tests_empty_title":"No tests yet","tests_empty_hint":"Create your first test to check how your agents reply in key moments.","delete_test_confirm":"Delete “{name}”? It will be removed from every agent it is assigned to. This action cannot be undone.","test_type_next_reply":"Single Turn","test_type_simulation":"Simulation","test_type_hint":"Single Turn checks the next reply with an LLM judge. Tool checks whether a tool was called. Simulation runs a whole conversation with a simulated user.","conversation":"Conversation","conversations_phone_number":"Phone number","conversation_hint":"The scripted history the agent sees. On run, the agent generates the next reply after the last message.","add_message":"Add message","message_placeholder":"What was said…","role_agent":"Agent","role_user":"User","judging":"Judging","judging_hint":"An LLM judge scores the generated reply against the expectation. Examples are optional and help calibrate the judge.","expectation":"Expectation","expectation_placeholder":"What must the reply do to pass?","success_examples":"Success examples","failure_examples":"Failure examples","add_example":"Add example","add_limit_hint":"You can add up to {max}.","remove":"Remove","run":"Run","run_tab_hint":"Run the test against an agent — it generates the next reply and the LLM judge scores it.","run_current_agent_hint":"Run this test against the current agent. It generates the next reply and the LLM judge scores it.","select_agent":"Select an agent","run_no_agents":"Grant an agent access on the Access tab first.","judge_note":"LLM judge · expectation + {count, plural, =0 {no examples} one {# example} other {# examples}}","verdict":"Verdict","pass":"Pass","fail":"Fail","run_error":"Error","run_repeats":"Repeats","run_repeat":"Repeat {number}: {status}","run_repeats_pending":"{pending} of {total} repeats still running","run_repeat_needs_review":"Repeat {number}: {status}, needs review","run_repeat_mock_gap":"Repeat {number}: {status}, no mock for {tools}","agent_reply":"Agent reply","judge_reasoning":"Judge reasoning","run_failed":"Test run failed.","test_saved":"Changes saved","add_tests":"Add tests","create_agent_test":"Create new test","choose_from_global_tests":"Choose from shared library","run_all":"Run all","run_matching_count":"Run matching ({count})","last_result":"Last result","agent_tests_summary":"{count, plural, one {# test} other {# tests}} · {passed} passed, {failed} failed on last run","agent_tests_summary_with_errors":"{count, plural, one {# test} other {# tests}} · {passed} passed, {failed} failed, {errors, plural, one {# error} other {# errors}} on last run","agent_tests_summary_never":"{count, plural, =0 {No tests} one {# test} other {# tests}}","no_tests_assigned":"No tests assigned","no_tests_assigned_hint":"Give this agent access to test cases from your shared library.","remove_test_confirm":"Remove “{name}” from this agent? The test stays in the shared library.","used_by":"Used by","agent":"Agent","last_run":"Last run","run_running_status":"Running — generating the reply, then judging…","unsaved_changes":"You have unsaved changes","discard_changes_title":"Discard changes?","discard_changes_desc":"Your unsaved changes will be lost.","keep_editing":"Keep editing","discard":"Discard","conversation_settings":"Conversation","reset_to_defaults":"Reset to defaults","call_limits":"Call limits & silence","call_limits_hint":"How long a call can run, and what happens when the caller goes quiet.","call_limits_summary":"{minutes} min · hang up after {seconds} s","advanced":"Advanced","advanced_hint":"Fine-tune when the agent replies and what counts as an interruption.","advanced_summary":"{seconds} s · Speculative {speculative, select, on {on} other {off}}","context_section":"Context","max_call_duration":"Max call duration","max_call_duration_hint":"Calls end automatically once they reach this limit.","duration_minutes":"{minutes} min","response_wait":"Response wait","response_wait_rail_hint":"How long the agent waits after the caller pauses before it replies.","response_wait_presets":"Response wait presets","response_wait_preset_fast":"Fast","response_wait_preset_balanced":"Balanced","response_wait_preset_patient":"Patient","response_wait_hint":"The agent waits at least this long after the caller pauses. If it thinks the caller is mid-sentence, it waits up to {max} s.","response_wait_no_speculation_hint":"With speculative responses off, this wait is added to every reply.","response_max_wait":"Max wait when unsure","response_max_wait_automatic":"Automatic ({seconds} s)","response_max_wait_hint":"Longest wait when the agent thinks the caller has not finished. Automatic is the response wait plus 0.5 s.","response_max_wait_reset":"Reset to automatic","speculative_response":"Speculative responses","speculative_response_hint":"Start preparing the reply while the caller may still be speaking. Lowers response latency; the LLM may be called more than once per turn when a draft is discarded.","interruption_ignore_phrases":"Ignore phrases","interruption_ignore_phrases_placeholder":"Type a phrase and press Enter","interruption_ignore_phrases_remove":"Remove {phrase}","interruption_ignore_phrases_hint":"Backchannels like these never interrupt the agent when the caller says only them. {count}/{max}","interruption_sensitivity_hint":"How easily the caller can cut the agent off while it is speaking.","interruptions":"Interruptions","echo_guard":"Echo guard","echo_guard_web_voice":"Web calls","echo_guard_phone_inbound":"Inbound phone calls","echo_guard_phone_outbound":"Outbound phone calls","echo_guard_hint":"For 3 seconds after the agent first starts talking in a call, the caller can't interrupt it, so the agent's own voice echoing back from a speakerphone or laptop can't cut it off. Anything the caller says while the agent talks in that window is not heard.","reengage_after_silence":"Re-engage after silence","reengage_after_silence_hint":"When the caller goes quiet, the agent speaks up to bring them back, up to 2 times.","hangup_after_silence":"Hang up after silence","hangup_after_silence_hint":"Seconds of silence before the call ends automatically (10–3600).","hangup_farewell":"Say goodbye before hanging up","hangup_farewell_off_hint":"The call ends without a word.","hangup_farewell_generated_hint":"The agent says a short goodbye in its own words, then the call ends.","hangup_farewell_fixed_hint":"The agent says this line every time, then the call ends.","sensitivity_low":"Hard","sensitivity_balanced":"Balanced","sensitivity_high":"Easy","sensitivity_off":"Off","record_audio":"Record calls","record_audio_hint":"Save call audio for replay in Conversations.","data_retention":"Data retention","data_retention_hint":"How long transcripts, recordings, analysis and caller details are kept after each call. Call duration and billing records are always kept.","data_retention_default_forever":"Forever (default)","data_retention_team_default":"{period} (team default)","data_retention_forever":"Forever","data_retention_hours":"{count, plural, one {# hour} other {# hours}}","data_retention_days":"{count, plural, one {# day} other {# days}}","data_retention_years":"{count, plural, one {# year} other {# years}}","data_retention_custom":"Custom","data_retention_custom_amount":"Retention period","data_retention_custom_unit":"Retention unit","data_retention_unit_hours":"Hours","data_retention_unit_days":"Days","data_retention_apply":"Apply","data_retention_custom_range":"Choose a period between {min} and {max}.","data_retention_zdr_hint":"Your team has Zero Data Retention, so content is kept for at most {max}.","data_retention_admin_only":"Only team owners and admins can change data retention.","data_retention_shorten_title":"Shorten data retention?","data_retention_shorten_description":"Existing conversations of this agent will also keep their content for only {period} after the call. Older content is permanently deleted within an hour and cannot be recovered.","data_retention_shorten_confirm":"Shorten and delete","timezone_label":"Time zone","timezone_hint":"Local time the agent uses for dates and times in conversation. Automatic follows each caller's device, falling back to UTC.","timezone_automatic":"Automatic","timezone_search":"Search timezones...","timezone_no_match":"No timezone found","context_current_time_label":"Current date & time","keypad_input":"Keypad input","keypad_input_description":"Callers can type digits during a phone call, like a member ID ending with #. The agent receives them as one message.","keypad_input_enable":"Accept keypad input","keypad_input_enable_hint":"Applies to inbound and outbound phone calls only.","keypad_input_terminator":"End key","keypad_input_terminator_none":"Pause only","keypad_input_terminator_hint":"The key that sends the digits. With Pause only, they are sent once the caller stops typing.","keypad_input_timeout":"Pause before sending","keypad_input_timeout_hint":"The digits are also sent after a pause this long, even without the end key.","conversation_recording":"Recording","conversation_play_recording":"Play recording","conversation_pause_recording":"Pause recording","conversation_recording_loading":"Loading recording {percent}%","conversation_recording_unavailable":"Recording unavailable","conversation_content_purged":"The transcript, recording and analysis of this conversation were deleted under the agent's data retention policy.","conversation_recording_purged":"Recording deleted by data retention","conversation_transfer_title":"Transfer to {destination}","conversation_transfer_mode_cold":"Cold transfer","conversation_transfer_mode_warm":"Warm transfer","conversation_transfer_connect_confirm":"Ask to accept","conversation_transfer_connect_briefing":"Briefing","conversation_transfer_connect_direct":"Direct","conversation_transfer_in_progress":"Transferring","conversation_transfer_outcome_merged":"Connected","conversation_transfer_outcome_referred":"Transferred out","conversation_transfer_outcome_no_answer":"No answer","conversation_transfer_outcome_busy":"Busy","conversation_transfer_outcome_dial_failed":"Call failed","conversation_transfer_outcome_declined":"Declined","conversation_transfer_outcome_voicemail":"Voicemail","conversation_transfer_outcome_ivr":"Phone menu","conversation_transfer_outcome_consult_timeout":"No go-ahead in time","conversation_transfer_outcome_consult_closed":"Hung up","conversation_transfer_outcome_merge_failed":"Couldn't connect","conversation_transfer_outcome_refer_failed":"Transfer rejected","conversation_transfer_outcome_caller_hangup":"Caller hung up","conversation_transfer_outcome_cancelled":"Cancelled","conversation_transfer_outcome_unavailable":"Couldn't start","conversation_transfer_ringing":"Rang {duration}","conversation_transfer_talk":"Talked {duration}","conversation_transfer_briefed":"Briefed {duration}","conversation_transfer_talked_with":"Talked with {destination} {duration}","conversation_transfer_end_caller_hangup":"Caller hung up","conversation_transfer_end_target_hangup":"{destination} hung up","conversation_transfer_end_time_limit":"Ended at the call's time limit","conversation_transfer_end_connection_lost":"Line dropped","conversation_transfer_call_length_unavailable":"Call length not available","conversation_transfer_call_length_unavailable_hint":"The carrier's call record arrives within about an hour after the call ends. Imported SIP numbers never get one.","conversation_transfer_decline_summary":"Agent's summary: {reason}","conversation_transfer_sip_status":"SIP status {code}","conversation_transfer_cold_note":"The call left the platform. No recording or transcript after the transfer.","conversation_transfer_speaker_agent":"Agent","conversation_transfer_speaker_target":"Transfer target","conversation_transfer_on_hold":"Caller on hold while transferring to {destination}","conversation_transfer_with_person":"Caller talking with {destination}","conversation_transfer_show_details":"Show the consult call","conversation_transfer_hide_details":"Hide the consult call","conversation_transfer_play":"Play the consult call","conversation_transfer_pause":"Pause the consult call","conversation_transfer_recording_processing":"Recording is processing","conversation_transfer_no_transcript":"Nothing was transcribed","conversation_metadata":"Metadata","conversation_cost":"Cost","conversation_cost_free":"Trial","conversation_preview_free_hint":"Preview sessions are free.","test_type_tool":"Tool","test_tools":"Test tools","add_test_tool":"Add tool","change_test_tool":"Change tool","search_tools":"Search tools…","test_tools_empty_hint":"If left blank, the test will check that no tools were called.","test_tools_empty_library":"No tools in the shared library yet.","test_tools_empty_agent":"This agent has no tools yet.","test_tools_group_webhook":"Webhook tools","test_tools_group_client":"Client tools","test_tools_group_integration":"Integration tools","test_tools_confirm_write":"Confirm write","test_tools_confirm_write_description":"Commits a write after the caller confirms it.","tool_should_be_called":"Should have been called","tool_should_not_be_called":"Should not be called","require_tool_execution":"Require tool execution","tool_parameters":"Tool parameters","tool_parameters_hint":"Optionally match the values passed to this tool.","add_parameter":"Add parameter","parameter_name":"Parameter name","parameter_value":"Value","parameter_type_string":"String","parameter_type_number":"Number","parameter_type_boolean":"Boolean","run_tab_tool_hint":"Run the test against an agent — it generates the next reply and checks the tool call.","run_current_agent_tool_hint":"Run this test against the current agent. It generates the next reply and checks the tool call.","tool_judge_note_none":"Tool check · no tools should be called","tool_judge_note_presence":"Tool check · expect {name}","tool_judge_note_absence":"Tool check · {name} should not be called","tool_match_details":"Match details","test_subtitle_tool_none":"Expect no tools","test_subtitle_tool_presence":"Expect {name}","test_subtitle_tool_absence":"Do not expect {name}","transfer_number_error":"Enter a number with country code like +14155550123, or leave empty.","llm_section":"Model","llm_section_hint":"The agent's reasoning power and response speed.","llm_model_request":"Request a model","llm_model_request_error":"Failed to submit. Please try again.","llm_model_request_hint":"Tell us which model you need.","llm_model_request_reason_label":"Reason or use case (optional)","llm_model_request_submit":"Submit request","llm_model_request_success":"Request submitted","llm_model_recommended":"Recommended","llm_price_estimate_hint":"Cost estimated based on general agent behavior. Actual charges are based on token usage.","llm_price_help":"About estimated model price and speed","llm_model_estimated_price":"≈{price}/min","llm_model_in_fallback":"In fallback list","llm_fallback":"Fallback models","llm_fallback_description":"Models the agent switches to when its model fails to answer.","llm_fallback_summary_platform":"Default","llm_fallback_summary_off":"Off","llm_fallback_summary_manual":"{count, plural, one {# model} other {# models}}","llm_fallback_mode_platform":"Default","llm_fallback_mode_manual":"Custom","llm_fallback_mode_off":"Off","llm_fallback_hint_platform":"Fish switches to a backup model when this one fails. A custom LLM has no backup.","llm_fallback_hint_manual":"Tried in order after the agent's model fails. Paid models are billed for the tokens they generate.","llm_fallback_hint_off":"No other model answers when this one fails.","llm_fallback_item":"Fallback {index}","llm_fallback_remove":"Remove fallback {index}","llm_fallback_add":"Add fallback","llm_fallback_empty":"Add at least one fallback model.","llm_fallback_error_incomplete":"Fill in the base URL, model and API key.","llm_fallback_error_primary":"This is already the agent's model.","llm_fallback_error_choose":"Choose a model for this fallback.","llm_fallback_choose":"Choose a model","llm_fallback_error_duplicate":"This model is already in the list.","llm_fallback_save":"Save","llm_fallback_primary":"Primary model","llm_fallback_ttft":"First token timeout (s)","llm_fallback_total":"Total timeout (s)","llm_fallback_timeout_none":"No limit","llm_fallback_ttft_default":"Default 5 s","llm_fallback_parallel":"Run with the primary model","llm_fallback_kick_in":"Switch after (ms)","llm_fallback_parallel_hint":"Used if the primary model hasn't started replying by then. Both models are billed.","llm_fallback_error_ttft":"First token timeout must be {min}–{max} s.","llm_fallback_error_total":"Total timeout must be {min}–{max} s.","llm_fallback_error_total_below_ttft":"Total timeout can't be shorter than the first token timeout.","llm_fallback_error_kick_in":"Enter a whole number from {min} to {max} ms.","llm_model_ttft":"≈{seconds} s","llm_model_included":"Included","llm_ttft_estimate_hint":"Speed is the median time to the model's first word on Fish Audio calls. Longer prompts and tool calls take longer.","llm_model_priority_help":"Runs on Google's Priority tier, so replies stay quick even when Google is busy. Costs about 2× the standard model. If Google handles a call at standard, it's billed at the standard price.","llm_model_priority_learn_more":"Learn more","llm_model_fast_help":"The same model on OpenAI's Fast mode: faster, steadier responses at twice the token price. Calls served at the standard tier are billed at the standard price.","custom_llm_title":"Custom LLM","custom_llm_description":"Your model controls the logic, Fish handles the voice. Read the <guide>API Guide</guide>.","custom_llm_endpoint":"Endpoint","custom_llm_base_url":"Base URL","custom_llm_base_url_hint":"HTTPS only. We send POST '{base_url}'/chat/completions.","custom_llm_base_url_invalid":"Enter an https:// URL, like https://llm.example.com/v1.","custom_llm_in_fallback":"This endpoint is already a fallback model. Remove it from Fallback models first.","custom_llm_model":"Model","custom_llm_model_placeholder":"e.g. gpt-4o-mini, llama-3.1-70b","custom_llm_model_hint":"Sent as-is in the model field of every request.","custom_llm_api_key":"API key","custom_llm_api_key_placeholder":"Paste your endpoint key","custom_llm_api_key_saved_placeholder":"Saved key. Leave blank to keep it.","custom_llm_api_key_hint":"Sent as a Bearer token. Write-only: saved keys can't be viewed again.","custom_llm_api_key_new_host_hint":"The Base URL changed, so paste the key again. A saved key only goes to the endpoint it was saved for.","custom_llm_test_title":"Test connection","custom_llm_test_description":"Sends one streaming turn with this agent's prompt and tools.","custom_llm_run_test":"Run test","custom_llm_test_incomplete":"Fill in all three fields to run a test.","custom_llm_test_ready":"Run a test to check the endpoint before you save.","custom_llm_test_running":"Testing your endpoint…","custom_llm_test_failed":"Couldn't run the test. Please try again.","custom_llm_test_footnote":"Aim for a first token under 800 ms for natural turn-taking; above 1.5 s the pause is too long for voice. This is guidance only and does not affect the connection. Reasoning models (GPT-6, o-series and similar) usually take over 1.5 s: turn reasoning off or pick a non-reasoning model for voice. Requests time out after 10 s and retry once.","custom_llm_check_reached":"Reached endpoint","custom_llm_check_unreachable":"Unreachable","custom_llm_check_streams":"Streams delta.content","custom_llm_check_no_stream":"No stream","custom_llm_check_tools":"Accepts tools","custom_llm_check_no_tools":"No tools","custom_llm_check_tools_count":"{count, plural, one {# tool} other {# tools}}","custom_llm_check_ttft":"Time to first token","custom_llm_ttft_fast":"Fast","custom_llm_ttft_ok":"Slight pause","custom_llm_ttft_slow":"Slow, not suited to voice","custom_llm_remove":"Remove","custom_llm_save":"Save and use","custom_llm_save_failed":"Couldn't save the endpoint. Please try again.","custom_llm_remove_title":"Remove custom LLM?","custom_llm_remove_description":"{agent} will switch to {model}. The endpoint and saved API key are deleted from this agent. Live calls keep using the published version until you publish.","custom_llm_this_agent":"This agent","custom_llm_group":"Custom","custom_llm_edit":"Edit custom LLM","custom_llm_trigger_label":"Custom · {model}","message_latency":"Latency","message_latency_unavailable":"Latency data is unavailable for this message.","message_llm_cost":"LLM cost","message_llm_calls":"{count, plural, one {# model request} other {# model requests}}","message_usage_pending":"Pending usage","message_usage_unavailable":"Usage unavailable","message_usage_preview_free":"Free for Preview","message_usage_included":"No LLM charge","message_usage_legacy":"Token cost is shown for reference. This session uses minute billing.","message_usage_pending_detail":"Some usage or rates are still being reconciled. The total is not final.","message_usage_unavailable_detail":"Token usage was not recorded for this message.","message_usage_known_cost":"Known token cost: {amount}","message_usage_scope":"Includes input context, retries, and generated output, including unplayed output. Charges are rounded after session totals are combined.","message_usage_unattributed":"Other LLM usage","message_usage_unattributed_detail":"Requests that did not produce a visible message, including tool-only and interrupted generations.","message_token_rate_cost":"Cost at token rates: {amount}","add_test":"Add test","col_test_name":"Test name","test_type_hint_next_reply":"Single Turn checks the next reply with an LLM judge.","test_type_hint_tool":"Tool checks whether a tool was called.","test_type_hint_simulation":"In a Simulation test, a simulated user drives the whole conversation, then an LLM judge scores the success conditions.","simulation_scenario":"Scenario","simulation_scenario_hint":"Describe the simulated user: who they are, what they want, the facts they reveal one at a time, and when they end the conversation.","simulation_insert_template":"Insert template","simulation_scenario_required":"Write a scenario for the simulated user.","simulation_max_turns":"Max turns","simulation_max_turns_hint":"Up to {max} user turns before the run stops.","simulation_repeat_count":"Repeat","simulation_repeat_count_hint":"Run up to {max} times per batch to catch flaky behaviour.","simulation_repeat_count_run_all_hint":"Repeats apply to Run all. Running from this form runs the conversation once.","simulation_channel":"Channel","simulation_channel_auto":"Auto","simulation_channel_web_voice":"Web voice","simulation_channel_phone_inbound":"Phone inbound","simulation_channel_phone_outbound":"Phone outbound","simulation_channel_hint":"Auto uses Phone inbound when a phone number is bound to the agent, otherwise Web voice. For an agent that only places calls, pick Phone outbound. Client tools are unavailable on phone channels, and transfers only happen on phone channels.","simulation_conditions":"Success conditions","simulation_conditions_hint":"Each condition is judged on the whole conversation as success, failure, or unknown. All of them must succeed for the run to pass.","simulation_add_condition":"Add condition","simulation_condition_name":"Condition name","simulation_condition_name_placeholder":"Short name (optional)","simulation_condition_description_placeholder":"What must happen in the conversation?","simulation_condition_required":"Add at least one success condition.","simulation_conversation_hint":"Optional. Messages here are replayed before the simulated user takes over.","simulation_history_limit":"Simulation tests replay up to {max} messages.","simulation_judging_hint":"Examples are optional and help calibrate the judge across all conditions.","simulation_tool_mocks":"Tool mocks","simulation_tool_mocks_hint":"Decide which tools answer from a mock instead of calling the real endpoint.","simulation_mock_strategy_all":"Mock all","simulation_mock_strategy_selected":"Mock selected","simulation_mock_strategy_none":"Mock none","simulation_mock_none_warning":"Tools with a real endpoint call it, and webhooks may cause real side effects. Client tools answer from their mocks, because a simulation has no client.","simulation_mock_fallback":"Tools without a mock","simulation_mock_fallback_error":"Return an error","simulation_mock_fallback_real":"Call the real endpoint","simulation_mock_entries":"Mock responses","simulation_mock_entries_hint_all":"Tools without an entry here use their own mock response. A tool with neither fails, so the test cannot pass on a faked result.","simulation_mock_all_unmocked":"These tools have no mock and will fail in this test:","simulation_mock_confirm_write_hint":"To match production, mock Confirm write too, or return a final result from the write tool mock.","simulation_add_real_tool":"Add tool","simulation_real_tools_hint":"Only webhooks and read-only integration tools can call their real endpoint. Every other tool without a mock still fails, so tools added later stay safe.","simulation_mock_entries_hint_selected":"Add the tools that should answer from a mock.","simulation_add_mock":"Add mock","simulation_mock_result":"Mock result","simulation_mock_result_placeholder":"JSON or plain text the tool returns","simulation_mock_error_result":"Error content","simulation_mock_error_placeholder":"Error message or JSON the tool fails with","simulation_mock_fire_and_forget":"This client tool is always acknowledged, as in production, so it can't be mocked. Remove this entry.","simulation_mock_status":"HTTP status","simulation_mock_status_invalid":"Use an HTTP status from 100 to 599.","simulation_mock_status_error_success":"An error needs a non-2xx status. Leave it empty for 500.","simulation_mock_when":"Only when parameters match","simulation_add_condition_param":"Add parameter","simulation_matcher_exact":"Exact","simulation_matcher_regex":"Regex","simulation_matcher_any":"Any value","simulation_matcher_value":"Value","simulation_regex_invalid":"This regular expression is not valid.","simulation_regex_python_only":"Python-only regex syntax is not supported. Use JavaScript syntax.","simulation_regex_literal_trap":"JavaScript reads this escape as plain text here. Use \\uXXXX or \\xXX escapes, a character class, or $ for the end of the input.","simulation_regex_unscorable":"Tool call checks can't score this pattern exactly. Avoid backreferences, \\c, \\S inside brackets other than [\\s\\S], surrogate escapes, characters beyond U+FFFF, non-ASCII characters under the i flag, and repeat counts of 4294967295 or more.","simulation_advanced":"Advanced","simulation_assertions_hint":"Deterministic checks on tool calls and how the conversation ended.","simulation_required_tool_calls":"Required tool calls","simulation_add_required_tool":"Add tool","simulation_call_count":"Matching calls","simulation_min_calls":"At least","simulation_max_calls":"At most","simulation_max_calls_any":"Any","simulation_calls_max_below_min":"The maximum can't be lower than the minimum.","simulation_calls_zero_needs_max":"Set a maximum when the minimum is 0.","simulation_forbidden_tools":"Forbidden tools","simulation_add_forbidden_tool":"Add tool","simulation_ended_by":"Ended by","simulation_ended_by_unset":"Not checked","simulation_ended_by_agent":"Agent","simulation_ended_by_user":"User","simulation_ended_by_transfer":"Transfer","simulation_ended_by_any":"Anyone","simulation_ended_by_transfer_web_voice":"Transfers only happen on phone channels, so this check cannot pass on Web voice.","simulation_ended_by_transfer_auto":"Auto runs on Web voice unless a phone number is assigned to the agent, and transfers only happen on phone channels.","simulation_user_model":"Simulated user model","simulation_user_model_default":"Same as agent","simulation_world_context":"Current date and time","simulation_world_context_hint":"Tells the agent today's date and the current time, as in a real session. Off by default, so the agent goes by the date in its prompt and results don't depend on the day the test runs.","dynamic_variables":"Dynamic variables","dynamic_variables_hint":"Values for the placeholders in the prompt and scenario. Keys start with a letter and use letters, digits, or underscores.","add_variable":"Add variable","variable_name":"Name","variable_value":"Value","run_tab_simulation_hint":"Run the simulation against an agent. It runs in the background and can take a few minutes.","run_current_agent_simulation_hint":"Run this simulation against the current agent. It runs in the background and can take a few minutes.","simulation_judge_note":"LLM judge · {count, plural, one {# condition} other {# conditions}}","simulation_queued_status":"Queued, waiting for a runner…","run_running_simulation_status":"Running the simulated conversation, then judging…","simulation_transcript":"Transcript","simulation_transcript_empty":"No messages were recorded.","simulation_conditions_result":"Success conditions","simulation_assertions_result":"Assertions","simulation_summary":"Judge summary","simulation_needs_review":"Needs review","simulation_needs_review_hint":"The judge could not decide at least one condition. Read the transcript before trusting the verdict.","simulation_needs_review_mock_gaps_hint":"The test left some tool calls unanswered, so this run can't pass. The run lists them.","simulation_mock_gaps_title":"This run can't pass: the test setup left these calls unanswered.","simulation_mock_gap_missing":"{tool} has no mock","simulation_mock_gap_unmatched":"{tool} had no matching mock. Either the agent passed unexpected arguments or the entry's conditions are too narrow.","simulation_mock_gaps_hint":"If the calls look right, add a mock or widen its conditions, then run the test again.","simulation_mock_gap_badge_hint":"The test left these calls unanswered: {tools}","verdict_success":"Success","verdict_failure":"Failure","verdict_unknown":"Unknown","assertion_passed":"Passed","assertion_failed":"Failed","assertion_kind_tool_call":"Tool call","assertion_kind_forbidden_tool":"Forbidden tool","assertion_kind_ended_by":"Ended by","simulation_ended_by_label":"Ended by","ended_by_agent":"Agent","ended_by_user":"User","ended_by_transfer":"Transfer","ended_by_max_turns":"Turn limit","ended_by_timeout":"Timeout","ended_by_error":"Error","simulation_turns_used":"{count, plural, one {# turn} other {# turns}}","simulation_usage_judge":"Judge","simulation_run_cost":"Run cost","simulation_not_charged":"Not charged","simulation_paid_by_trial":"Paid from your trial balance","simulation_paid_by_trial_partly":"{amount} paid from your trial balance, the rest from your balance","simulation_models":"Models","simulation_mocked":"Mock","simulation_mock_source_tool":"Tool mock","simulation_mock_source_missing":"No mock","simulation_mock_source_missing_hint":"No mock was configured for this tool, so it failed.","simulation_mock_source_unmatched":"No matching mock","simulation_mock_source_unmatched_hint":"This tool has mocks, but none matched these arguments.","simulation_mock_source_real":"Real","simulation_mock_source_real_hint":"Called the real endpoint.","pass_rate":"{rate} pass rate","pass_rate_hint":"Passed runs out of passed and failed runs. Runs that errored are not counted.","runs_passed_ratio":"{passed} / {total} passed","runs_errors":"{count, plural, one {# error} other {# errors}}","runs_passed_count":"{count} passed","runs_failed_count":"{count} failed","runs_running_count":"{count} running","test_access_hint":"Agents with access can run this test and include it in their test suite.","test_access_missing_tools":"Missing tools: {names}","test_access_missing_tools_hint":"When an agent lacks a tool this test uses, required checks on that tool fail and forbidden ones pass.","tool_access_hint":"Agents with access can call this tool during conversations.","home_welcome_new":"Welcome to Voice Agents","home_tutorial":"Tutorial","home_tutorial_intro":"Finish these steps to take your first agent live.","home_tutorial_done":"Done","home_dashboard":"Dashboard","home_top_up":"Top up","home_usage_month":"Usage · {month}","home_tag":"Tag","home_tutorial_created_workspace":"Create your workspace","home_tutorial_created_workspace_hint":"Your team and billing are ready.","home_tutorial_created_agent":"Create your first agent","home_tutorial_created_agent_hint":"Pick a voice and describe what it should do.","home_tutorial_completed_test_call":"Make a test call","home_tutorial_completed_test_call_hint":"Talk to your agent right in the browser.","home_tutorial_published_agent":"Publish","home_tutorial_published_agent_hint":"Go live on web, phone, or the API.","preview_runtime_recovering":"A temporary service error was retried automatically. The reply may arrive a little late.","preview_runtime_error_llm":"The model failed to reply. Repeat your last message. If the agent stays silent, start a new call.","preview_runtime_error_llm_custom":"Your LLM endpoint failed to reply. Repeat your last message.","preview_runtime_error_stt":"Your last utterance could not be transcribed. Please say it again.","preview_runtime_error_tts":"The reply could not be voiced. Read it in the transcript and continue.","preview_runtime_error_runtime":"An error occurred during this call. Check the reply and tool results before retrying. If the agent stops responding, start a new call.","integrations":"Integrations","integrations_hint":"Connect third-party accounts once per workspace, then enable their tools on any agent.","integrations_connect":"Connect","integrations_reconnect":"Reconnect","integrations_disconnect":"Disconnect","integrations_use_own_client":"Use your own OAuth client","integrations_connected_count":"{count, plural, =0 {No accounts connected} one {# account connected} other {# accounts connected}}","integrations_connections":"Connected accounts","integrations_connections_count":"{count, plural, =0 {No connections yet} one {# connection} other {# connections}}","integrations_account":"Account","integrations_last_used":"Last used","integrations_own_client_badge":"Own OAuth client","integrations_status_needs_reconnect":"Needs reconnect","integrations_status_revoked":"Revoked","integrations_attention_banner":"{count, plural, one {# connection needs attention. Reconnect it so agents can keep using it.} other {# connections need attention. Reconnect them so agents can keep using them.}}","integrations_empty_title":"No accounts connected","integrations_empty_hint":"Connect an account above. Agents can then check availability and book meetings on it.","integrations_connected_toast":"{provider} account connected","integrations_disconnected_toast":"Account disconnected","integrations_disconnect_blocked":"Remove this connection from its agents before disconnecting it.","integrations_disconnect_title":"Disconnect account?","integrations_disconnect_confirm":"{account} will be disconnected and its access revoked. Agents can no longer use this calendar.","integrations_error_access_denied":"Authorization was cancelled on the {provider} consent screen.","integrations_error_missing_scopes":"Not all requested {provider} permissions were granted. Please try again and allow every permission.","integrations_error_no_refresh_token":"{provider} did not return a long-lived credential. Remove the app's access in your account settings and connect again.","integrations_error_generic":"Connecting {provider} failed. Please try again.","integrations_connect_title":"Connect {provider}","integrations_connect_description":"You will be redirected to Google to grant access. Choose which calendars the agent may use.","integrations_scope_mode":"Calendar access","integrations_scope_owned":"Own calendars only","integrations_scope_owned_hint":"Calendars owned by the connected account.","integrations_scope_all":"Include shared calendars","integrations_scope_all_hint":"Also calendars shared with the account, such as a team or room calendar.","integrations_own_client_required":"This platform has no OAuth client configured for {provider} yet. Enter the client ID and secret from your own {provider} developer project.","integrations_own_client_optional":"Optional: use your own {provider} OAuth client instead of the platform one.","integrations_own_client_incomplete":"Enter both the client ID and the client secret.","integrations_client_id":"Client ID","integrations_client_secret":"Client secret","integrations_redirecting":"Redirecting…","integrations_section_hint":"Connected accounts this agent may act on, and which tools it gets.","integrations_section_empty_title":"No integrations attached","integrations_section_empty_hint":"Add a connected account to let this agent check availability and book meetings.","integrations_add":"Add integration","integrations_add_description":"Pick a connected account from this workspace.","integrations_attach":"Attach","integrations_reconnect_first":"Reconnect before attaching","integrations_none_available":"Every connected account is already attached, or none is connected yet.","integrations_connect_first":"Connect an account first","integrations_needs_reconnect_notice":"This connection stopped working. Reconnect it under <link>Integrations</link>.","integrations_tools":"Tools","integrations_writes_tag":"writes","integrations_confirm_before_write":"Confirm before booking or changing events","integrations_confirm_before_write_hint":"The agent reads the details back and waits for a yes before it writes to the calendar.","integrations_allow_attendees":"Allow inviting attendees","integrations_allow_attendees_hint":"Off by default: email addresses dictated over the phone are easy to get wrong.","integrations_copy_prompt":"Copy recommended prompt","integrations_copy_failed":"Could not copy to clipboard","integrations_remove_title":"Remove integration?","integrations_remove_confirm":"{account} will be detached from this agent. The account stays connected to the workspace.","refusal":{"agents_not_in_contract_scope":"Agents are not in your contract's service scope; contact your account manager","contract_service_suspended":"Service is suspended under your agreement; contact your account manager"},"enterprise_billing_covered":"Agents · billed under your enterprise agreement","enterprise_billing_excluded":"Agents · not in scope (amendment required)","assistant_title":"Assistant","assistant_subtitle":"Helps you set up and configure your agent.","assistant_open":"Assistant","assistant_new_thread":"New conversation","assistant_input_placeholder":"Ask for a change or a question…","assistant_send":"Send","assistant_thinking":"Thinking…","assistant_empty_configure_title":"What should this agent do differently?","assistant_empty_configure_description":"Describe the change you want, or ask how a setting works.","assistant_create_opener":"Create a new agent","assistant_suggestion_interruptions":"It interrupts too easily","assistant_suggestion_timezone":"Use Tokyo time","assistant_suggestion_pricing":"How much does a phone call cost?","assistant_option_other":"Other","assistant_option_other_placeholder":"Type your answer","assistant_skip":"Skip","assistant_continue":"Continue","assistant_confirm_yes":"Looks good","assistant_confirm_no":"Change something","assistant_recommended":"Recommended","assistant_answer_skipped":"Skipped","assistant_changes_title":"Draft updated","assistant_changes_hint":"Publish from the Deploy page to make it live.","assistant_changes_view":"View","assistant_changes_undo":"Undo","assistant_undo_message":"Undo the last change.","assistant_use_voice":"Use this voice","assistant_use_voice_message":"Use the voice \"{name}\" (voice_id {id}).","assistant_navigated":"Opened the {section} page","assistant_agent_created":"Created agent {name}","assistant_error_generic":"Something went wrong. Try again.","assistant_error_unconfigured":"The assistant is not available right now.","assistant_error_turn_active":"The assistant is still answering. Wait a moment and try again.","assistant_create_with":"Create with assistant","assistant_create_with_hint":"Answer a few questions and get a configured agent.","assistant_create_draft":"I want to create an agent called {name}.","assistant_exit_title":"Leave agent creation?","assistant_exit_desc":"Your progress is saved. Choose Create with assistant again to pick up where you left off.","assistant_exit":"Leave","assistant_stop":"Stop","assistant_error_model_unreachable":"Could not reach the model. Check your connection and try again.","assistant_error_thread_closed":"This conversation can't continue. Start a new one.","assistant_composer_locked":"Answer the questions above before continuing.","assistant_back":"Back","assistant_submit":"Submit","assistant_steps_done":"Finished {count} steps","assistant_steps_running":"Working on step {count}…","assistant_preparing":"Preparing a response…","assistant_history":"History","assistant_history_empty":"No conversations yet","assistant_untitled":"New conversation","assistant_rename":"Rename","assistant_delete":"Delete","assistant_delete_confirm":"Delete this conversation?","assistant_confirm":"Confirm","assistant_current":"current","assistant_retry":"Retry","assistant_message_failed":"Not sent","assistant_feedback_up":"Helpful","assistant_feedback_down":"Not helpful","assistant_step_details":"Details","assistant_step_get_agent_config":"Read the current configuration","assistant_step_get_agent_settings":"Read the agent settings","assistant_step_list_webhook_tools":"Looked up the tools","assistant_step_list_knowledge_documents":"Looked up the knowledge documents","assistant_step_list_integrations":"Looked up the integrations","assistant_step_list_phone_numbers":"Looked up the phone numbers","assistant_step_search_voices":"Searched voices for “{query}”","assistant_step_get_pricing":"Checked the price card","assistant_step_estimate_cost":"Estimated the cost","assistant_step_read_doc":"Read the docs page {path}","assistant_step_update_agent_settings":"Updated the agent settings","assistant_step_create_agent":"Created the agent {name}","assistant_step_create_webhook_tool":"Created the tool {name}","assistant_step_update_webhook_tool":"Updated a tool","assistant_step_set_webhook_tool_attachments":"Updated the attached tools","assistant_step_set_system_tool":"Updated a system tool","assistant_step_attach_integration":"Attached an integration","assistant_step_detach_integration":"Detached an integration","assistant_step_bind_phone_number":"Bound a phone number","assistant_step_search_phone_numbers":"Searched available phone numbers","assistant_step_purchase_phone_number":"Bought the phone number {number}","assistant_step_list_sessions":"Looked up recent conversations","assistant_step_get_session":"Read a conversation","assistant_step_list_tests":"Looked up the tests","assistant_step_get_test_runs":"Read the test results","assistant_step_create_test":"Created the test {name}","assistant_step_run_tests":"Started a test run","assistant_field_prompt_system_prompt":"System prompt","assistant_field_prompt_first_message":"Opening message","assistant_field_prompt_first_message_mode":"Opening message mode","assistant_field_prompt_first_message_prompt":"Opening message instructions","assistant_field_voice_voice_id":"Voice","assistant_field_voice_speaking_language":"Speaking language","assistant_field_voice_expressive":"Expressive speech","assistant_field_voice_speed":"Speaking speed","assistant_field_voice_keyterms":"Recognition keyterms","assistant_field_voice_multilingual_asr":"Multilingual recognition","assistant_field_voice_asr_model":"Speech recognition model","assistant_field_voice_pronunciation_dictionary_ids":"Pronunciation dictionaries","assistant_field_voice_engine":"Speech model","assistant_field_voice_tts_model":"Speech model","assistant_field_voice_live3_voice":"Voice (Live 3)","assistant_field_voice_live3_prompt":"Situation prompt","assistant_field_voice_effect":"Voice effect","assistant_field_voice_background_sound":"Background sound","assistant_field_voice_background_sound_preset":"Background sound","assistant_field_voice_background_sound_volume":"Background sound volume","assistant_field_voice_background_sound_custom_asset_id":"Background sound clip","assistant_field_asr_model":"Speech recognition model","assistant_field_asr_multilingual":"Multilingual recognition","assistant_field_asr_strict_language":"Strict language mode","assistant_field_asr_keyterms":"Recognition keyterms","assistant_field_llm_model":"Language model","assistant_field_llm_custom":"Custom LLM","assistant_field_llm_custom_base_url":"Custom LLM endpoint","assistant_field_llm_custom_model":"Custom LLM model","assistant_field_llm_custom_api_key":"Custom LLM API key","assistant_field_conversation_timezone":"Default timezone","assistant_field_context_current_time":"Current date & time","assistant_field_conversation_max_duration_seconds":"Maximum call duration","assistant_field_conversation_hangup_after_seconds":"Hang up after silence","assistant_field_conversation_hangup_farewell_enabled":"Farewell before hanging up","assistant_field_conversation_record_audio":"Call recording","assistant_field_conversation_reengage_enabled":"Re-engage on silence","assistant_field_conversation_response_wait_ms":"Response wait time","assistant_field_conversation_response_max_wait_ms":"Maximum response wait","assistant_field_conversation_eagerness":"Turn-taking eagerness","assistant_field_conversation_interruptible":"Allow interruptions","assistant_field_conversation_interruption_sensitivity":"Interruption sensitivity","assistant_field_conversation_interruption_ignore_phrases":"Phrases that do not interrupt","assistant_field_conversation_speculative_response":"Speculative responses","assistant_field_conversation_transfer_destinations":"Transfer destinations","assistant_field_conversation_transfer_refuse_questions":"No questions before transferring","assistant_field_conversation_outbound":"Outbound settings","assistant_field_conversation_outbound_amd_enabled":"Answering machine detection","assistant_field_conversation_outbound_voicemail_action":"On voicemail","assistant_field_conversation_outbound_voicemail_message":"Voicemail message","assistant_field_webhooks_conversation_init":"Call-start webhook","assistant_field_webhooks_conversation_init_url":"Call-start webhook URL","assistant_field_webhooks_conversation_init_secret":"Call-start webhook secret","assistant_field_webhooks_conversation_init_timeout_seconds":"Call-start webhook timeout","assistant_field_webhooks_post_call":"Post-call webhooks","assistant_field_knowledge_base_enabled":"Knowledge base","assistant_field_knowledge_base_document_ids":"Knowledge documents","assistant_field_tools_enabled":"Tools","assistant_field_analysis_summary":"Call summary","assistant_field_analysis_summary_enabled":"Generate call summary","assistant_field_analysis_summary_language":"Summary language","assistant_field_analysis_summary_prompt":"Summary instructions","assistant_field_analysis_data_fields":"Post-call data fields","assistant_field_analysis_criteria":"Evaluation criteria","assistant_field_guardrails_focus":"Stay on topic","assistant_field_guardrails_manipulation":"Manipulation protection","assistant_field_settings_name":"Name","assistant_field_settings_description":"Description","assistant_enum_sensitivity_low":"Low","assistant_enum_sensitivity_balanced":"Balanced","assistant_enum_sensitivity_high":"High","assistant_enum_eagerness_relaxed":"Relaxed","assistant_enum_eagerness_balanced":"Balanced","assistant_enum_eagerness_eager":"Eager","assistant_enum_first_message_mode_off":"No opening message","assistant_enum_first_message_mode_fixed":"Fixed text","assistant_enum_first_message_mode_prompt":"Generated by the model","assistant_enum_transfer_mode_cold":"Cold transfer","assistant_enum_transfer_mode_warm":"Warm transfer","assistant_enum_announcement_generated":"Generated","assistant_enum_announcement_fixed":"Fixed text","assistant_enum_announcement_off":"Off","assistant_enum_on_failure_return_to_agent":"Back to the agent","assistant_enum_on_failure_end_call":"End the call","assistant_enum_background_sound_preset_off":"Off","assistant_enum_background_sound_preset_office":"Office","assistant_enum_background_sound_preset_call_center":"Call center","assistant_enum_background_sound_preset_restaurant":"Restaurant","assistant_enum_background_sound_preset_cafe":"Café","assistant_enum_background_sound_preset_city_street":"City street","assistant_enum_background_sound_preset_phone_line":"Analog phone line","assistant_enum_background_sound_preset_phone_line_digital":"Digital phone line","assistant_enum_background_sound_preset_custom":"Custom upload","assistant_enum_voice_effect_none":"Off (clean voice)","assistant_enum_voice_effect_phone":"Phone line","assistant_enum_voice_effect_intercom":"Intercom speaker","assistant_enum_live3_prompt_p2":"Phone support","assistant_enum_live3_prompt_dt":"Drive-thru","assistant_enum_live3_prompt_air":"Airline","assistant_value_on":"On","assistant_value_off":"Off","assistant_value_empty":"Empty","assistant_value_redacted":"Hidden","assistant_unit_seconds":"{count} s","assistant_unit_ms":"{count} ms","assistant_list_added":"Added {count}: {names}","assistant_list_removed":"Removed {count}: {names}","assistant_list_changed":"Changed {count}: {names}","assistant_list_cleared":"Cleared ({count} before)","assistant_expand":"Show all","assistant_collapse":"Show less","integrations_token_label":"Access token","integrations_token_connect_description":"Paste a {label} from your {provider} account. It is checked against {provider} and stored encrypted; there is no sign-in redirect.","integrations_token_replace_title":"Replace {label}","integrations_token_replace_description":"Paste a new {label} for {account}. Agents keep using this connection; the token must belong to the same {provider} account.","integrations_token_help_link":"Where to create one","integrations_token_help_calendly":"Create a personal access token in Calendly under Integrations & Apps → API & Webhooks and tick the scopes listed below when generating it; the token is shown once. Booking through the API needs a paid Calendly plan.","integrations_token_help_calcom":"Create an API key in Cal.com (Settings → Developer → API keys) for this workspace. A key starting with cal_live_ books on the real calendar; the key is shown once.","integrations_provider_google_calendar":"Check availability, book, reschedule and cancel meetings on a Google Calendar.","integrations_provider_calendly":"Offer available times, book, look up and cancel Calendly meetings on the caller's behalf.","integrations_provider_calcom":"Offer available slots, book, reschedule and cancel Cal.com meetings on the caller's behalf.","integrations_token_required_scopes":"Scopes to select when creating the token","integrations_connection_name":"Connection name","integrations_connection_name_hint":"Optional. Defaults to the account email.","integrations_token_verifying":"Verifying…","integrations_token_replace":"Replace token","integrations_token_replaced_toast":"Token replaced","integrations_token_rejected":"{provider} rejected this token. Check that it was copied completely and is still valid.","integrations_token_missing_scopes":"The token is missing a required scope. Create a new one with every scope listed above.","integrations_token_other_account":"This token belongs to a different {provider} account. Add a new connection instead.","integrations_token_verify_failed":"{provider} could not be reached to check the token. Try again in a moment.","integrations_token_invalid":"{provider} did not accept this token.","integrations_status_token_invalid":"Token rejected","integrations_attention_banner_token":"{count, plural, one {# connection needs a new token. Replace it so agents can keep using it.} other {# connections need a new token. Replace them so agents can keep using them.}}","integrations_needs_token_notice":"This connection's token was rejected. Replace it under <link>Integrations</link>.","integrations_replace_token_first":"Replace the token before attaching","integrations_disconnect_confirm_token":"{account} will be disconnected and agents can no longer use it. The token itself stays valid until you delete it in your {provider} account.","integrations_allow_guests":"Allow adding guests","integrations_allow_guests_hint":"Off by default: extra email addresses dictated over the phone are easy to get wrong.","busy":{"concurrency_limit_exceeded":"All of your team's lines are in use. Try again shortly.","preview_limit_exceeded":"Two test calls are already running for your team. End one first.","cps_limit_exceeded":"Too many calls per second. Try again in a moment.","upgrade_link":"See how to get more lines"},"plan_page":{"loading_failed":"The plan didn't load.","retry":"Retry","not_available":"Agent plans are not for sale on this deployment yet.","contract_managed":"Agents are billed under your enterprise agreement, which sets your concurrency.","owner_only":"Only the team owner can change the plan.","checkout_success":"Thanks, your plan is active.","checkout_canceled":"Checkout canceled. Nothing changed.","change_saved":"Plan updated.","tier":{"free":"Free","payg":"Pay as you go","pro":"Pro","scale":"Scale","enterprise":"Enterprise"},"status":{"active":"Active","past_due":"Payment failed","canceling":"Ending"},"scheduled_change":"Changes to {tier} on {date}.","scheduled":{"status":"Scheduled · {date}"},"keep_current_plan":"Keep current plan","cta":{"upgrade":"Upgrade","downgrade":"Downgrade"},"save":"Save","cancel":"Cancel","error":{"agent_plan_not_configured":"Agent plans are not for sale on this deployment yet.","agent_plan_contract_managed":"Agents are billed under your enterprise agreement.","agent_plan_already_subscribed":"The team already has a plan. Change it instead of subscribing again.","agent_plan_no_subscription":"There is no subscription to change.","agent_plan_no_change":"That is already your plan.","agent_plan_empty":"Pick a tier or at least one add-on.","agent_plan_free_add_on":"Add credit before adding lines.","agent_plan_free_burst":"Add credit before turning burst on.","agent_plan_in_grace":"Settle the failed payment first.","agent_plan_lines_exceed_self_serve":"That is more lines than a self-serve plan allows. Contact sales.","agent_plan_lines_in_use":"More sessions are live than the new line count. End some first.","agent_plan_pending_change":"A scheduled change is pending. Keep the current plan first.","agent_plan_payment_action_required":"Finish the payment on Stripe to apply the change.","agent_plan_payment_failed":"The card was declined. Nothing changed.","agent_plan_already_canceling":"The plan is already ending."},"preview":{"pay_today_then_monthly":"You pay {today} today, then {monthly} / month","loading":"Working out today's charge…","downgrade_from_date":"Nothing to pay today. From {date} you pay {monthly} / month."}},"billing_page":{"title":"Billing","tabs":{"usage":"Usage","plans":"Plans","billing":"Billing"},"overview":{"current_plan":"Current plan","concurrent_calls":"Concurrent calls","credits":"Credits","per_month":"{price} / month","trial_credit":"{amount} trial credit","no_monthly_fee":"No monthly fee","renews":"Renews {date}","ends":"Ends {date}","changes_to":"Changes to {tier} on {date}","contract_renews":"Contract renews {date}","billed_by_contract":"Billed by contract","lines_unit":"/ {limit, plural, one {# line} other {# lines}}","unlock_lines":"Top up to unlock {count}","per_contract":"Per contract","burst_up_to":"Burst up to {cap}","burst_hint":{"off_can_burst":"Burst off · can burst to {cap} calls"},"unit_trial":"trial","unit_top_up":"top-up","unit_included":"included","unit_total":"total","top_up_to_add":"Top up to add credit","never_expires":"Never expires","top_up_balance":"Top-up {amount}","trial_balance":"Trial {amount}","included_balance":"Included {amount}","invoiced":"Invoiced","invoiced_caption":"Billed under your enterprise agreement","add_lines":"Add lines","top_up":"Top up","top_up_admin_only":"Only the team owner or an admin can top up"},"banners":{"lines_full_title":"All {count} lines are in use","lines_full_body":"New outbound and web calls are rejected until a line frees up. <link>Add lines</link>","lines_full_body_plans":"New outbound and web calls are rejected until a line frees up. <link>See how to get more lines</link>","payment_failed_title":"Payment for {tier} failed","payment_failed_body":"Update your card by {date} to keep {tier}. <link>Update payment</link>","pending_payment_title":"A plan change is waiting for payment","pending_payment_expires":"The invoice stays open until {date}. After that the change is dropped.","pending_payment_body":"The change applies as soon as the invoice is paid. <link>Finish payment</link>","out_of_credits_title":"Out of credits","out_of_credits_body":"Calls are paused until you top up. <link>Top up</link>","trial_used_up_title":"Your {amount} trial credit is used up","trial_used_up_body":"Top up to keep your agents taking calls. <link>Top up</link>","low_credit_title":"Credit balance is below {amount}","low_credit_body":"Calls stop when it runs out. <link>Top up</link>","dismiss":"Dismiss for 24 hours"},"cta":{"top_up":"Top up","current_plan":"Current Plan","downgrade_unavailable":"Downgrade Unavailable","contact_sales":"Contact Sales"},"tier_card":{"most_popular":"Most Popular","per_month":"/ month","custom_price":"Custom","description":{"payg":"Pay only for what you use","pro":"For agents in production","scale":"For high-volume calling","enterprise":"For regulated, large-scale teams"},"note":{"payg":"No minimum spend","subscription":"Minimum monthly spend","enterprise":"Annual terms and volume discounts"},"band":{"payg_unit":"per minute","payg_note":"Billed from your credit balance","payg_promo":"{percent}% off {list}/min until {date}","minutes":"~{minutes}","minutes_unit":"minutes every month","subscription_note":"Unused credits roll over up to 3 months","enterprise_highlight":"Custom concurrency","enterprise_note":"with a custom SLA","info_label":"About this rate"},"tooltip":{"payg":"Conversation minutes at {rate}/min. Phone calls, transfers and premium models add per minute surcharges.","subscription":"Estimated at the {rate}/min base rate. Your {amount} in credits can be spent on anything. Actual minutes depend on your setup."},"feature":{"lines":"{count, plural, one {# concurrent call} other {# concurrent calls}}","lines_by_top_up":"{mid} after {midAt} in top-ups, {top} after {topAt}","seats":"{count, plural, one {# team seat} other {# team seats}}","burst":"Burst to {cap} calls at {rate}/min","burst_multiple":"Burst to {multiple}× your limit at {rate}/min","add_lines":"Add lines at {rate}/line/month","credits_never_expire":"Credits never expire","community_support":"Community and email support","priority_support":"Priority email support","hipaa":"HIPAA BAA","zero_retention":"Zero data retention","sso":"SSO","named_support":"Named support contact","invoice_billing":"Invoice billing"}},"downgrade":{"title":"Downgrade to {tier}?","to_payg":"{current} stays active until {date}. After that your limit is {lines} concurrent calls and unused included credits are removed.","to_pro":"{current} stays active until {date}. After that your limit is {lines} concurrent calls and included credits above the {target} cap are removed.","keep":"Keep {current}"},"usage":{"preset_label":"Period","preset":{"1d":"1d","7d":"7d","30d":"30d"},"spend_title":"Spend","spend_empty":"No spend in this period","spend_failed":"Spend didn't load.","calls_count":"{count, plural, one {# call} other {# calls}}","calls_title":"Calls","calls_empty":"No calls in this period","calls_failed":"Calls didn't load.","column":{"time":"Time","agent":"Agent","channel":"Channel","duration":"Duration","billed_from":"Billed from","cost":"Cost"},"channel":{"inbound_call":"Inbound call","outbound_call":"Outbound call","web_call":"Web call"},"billed_from":{"included":"Included","top_up":"Top-up","trial":"Trial","burst":"Burst"},"duration":"{minutes}m {seconds}s"},"billing":{"add_ons_title":"Add-ons","top_up_first":"Top up first, or subscribe to Pro / Scale","top_up_first_only":"Top up first","lines_title":"Add-on lines","lines_subtitle":"{count, plural, one {# line} other {# lines}} · {total} / month","lines_none":"No add-on lines","manage":"Manage","cps_title":"Outbound CPS","cps_subtitle":"1 call per second included · {price} per extra CPS / month","cps_active":"{count} extra CPS · {total} / month","add":"Add","burst_title":"Burst","burst_subtitle":"Up to {cap} calls · {rate} / min above your limit"},"add_ons":{"locked":{"body":"Add-ons and Burst unlock after a top-up or a Pro / Scale subscription.","body_top_up":"Burst unlocks after a top-up.","burst":"Top up or subscribe to Pro / Scale to enable Burst","burst_top_up":"Top up to enable Burst","top_up":"Top up","upgrade":"Upgrade"}},"add_on":{"title_lines":"Add lines","title_cps":"Add calls per second","subtitle_lines":"{rate} per line per month, prorated for this month.","subtitle_cps":"{rate} per extra call per second per month, prorated for this month.","label_lines":"Lines","label_cps":"Calls per second","monthly_total":"Monthly total","checkout_hint":"The first payment opens Stripe Checkout.","max_lines_hint":"{max, plural, one {Up to # add-on line on this plan.} other {Up to # add-on lines on this plan.}}","limited_lines":"{max, plural, one {Limited to # add-on line, the most this plan allows.} other {Limited to # add-on lines, the most this plan allows.}}","max_cps_hint":"Up to {max} extra CPS on this plan.","limited_cps":"Limited to {max} extra CPS, the most this plan allows.","add_lines":"{count, plural, one {Add # line} other {Add # lines}}","remove_lines":"{count, plural, one {Remove # line} other {Remove # lines}}","add_cps":"Add {count} CPS","remove_cps":"Remove {count} CPS","decrease":"Decrease","increase":"Increase","preview":{"label_lines":"Add-on lines","label_cps":"Add-on CPS","adding_lines":"{count, plural, one {+# line} other {+# lines}}","removing_lines":"{count, plural, one {−# line} other {−# lines}}","adding_cps":"+{count} CPS","removing_cps":"−{count} CPS","increase":"{today} today, then {monthly} / month","decrease":"Nothing to pay today, {credit} is credited on your next invoice. Then {monthly} / month.","decrease_fallback":"Nothing to pay today, the unused time is credited on your next invoice. Then {monthly} / month.","fallback":"Prorated for this month, then {monthly} / month","loading":"Working out today's charge…"}},"pending_payment":{"title":"Finish your payment","action_required":"Your bank asked to verify the card, or the card needs replacing. The change applies as soon as the invoice is paid.","already_pending":"An earlier plan change is still waiting for payment. Finish it first, the plan can change again once it is paid or the invoice expires.","cta":"Finish payment on Stripe"},"invoices":{"title":"Invoices","manage_payment":"Manage payment in Stripe","date":"Date","description":"Description","amount":"Amount","status":"Status","invoice":"Invoice","download":"Download","load_more":"Load more","empty":"No invoices yet","owner_only":"Invoices are visible to the team owner and admins.","load_failed":"The invoices didn't load.","kind":{"tier_pro":"Agent Pro","tier_scale":"Agent Scale","line":"Add-on lines × {count}","cps":"Outbound CPS × {count}","credit_top_up":"Credit top-up"},"reason":{"monthly":"monthly","change":"plan change"},"status_label":{"paid":"Paid","open":"Open","draft":"Draft","uncollectible":"Unpaid","void":"Void"}},"paywall":{"upgrade_title":"Upgrade Your Plan","upgrade_subtitle":"More concurrent calls for your agents","tier_picker":"Plan","concurrent_calls":"{lines} concurrent calls","burst_caption":"Burst to {cap} calls at {rate}/min","feature_minutes":"About {minutes} minutes every month","feature_rollover":"Unused credits roll over up to 3 months","feature_add_lines":"Add lines at {line}/line/month","feature_support":"Priority email support","per_month":"/ mo","billed_monthly":"Billed monthly","upgrade_cta":"Upgrade to {tier}","buy_more_credits":"Buy More Credits"},"top_up":{"title":"Add More Credits","subtitle":"Top up your balance","feature_never_expire":"Top-up credits never expire","feature_after_included":"Used after included credits run out","feature_spend":"Spend on calls, phone numbers and models","about_minutes":"≈ {minutes} min","amount_label":"Amount","recommended":"Recommended","custom":"Custom","any_amount":"Any amount","custom_amount_label":"Custom amount","custom_amount_placeholder":"50","custom_amount_error":"Enter an amount between {min} and {max}.","auto_reload":"Auto reload {amount} when balance drops below {min}","purchase":"Purchase","purchase_amount":"Purchase · {amount}","view_plans":"View Plans"}},"table_pager":{"total":"Total {count, plural, one {# item} other {# items}}","previous_page":"Previous page","next_page":"Next page","page_number":"Page {page}","page_size":"{count} items / Page","page_size_label":"Items per page","go_to_page":"Go to <input></input> Page","go_to_label":"Go to page"},"tool_parameters_validate":"Validate parameters during calls","tool_parameters_validate_hint":"Off: Required is only a hint to the model and nothing is enforced. On: a call that is missing a Required parameter is rejected and the model is told to ask the caller first. Untick the parameters that are actually optional before turning this on.","tool_parameters_validate_confirm_title":"Turn on validation with every parameter required?","tool_parameters_validate_confirm_description":"Every parameter is marked Required. Calls to existing tools usually leave some parameters empty, so with all of them required the agent's calls will be rejected right away. Untick the parameters that are actually optional first, or continue if this tool really needs all of them.","tool_parameters_validate_confirm_action":"Turn on anyway","tool_parameters_form_mode":"Form","tool_parameters_json_mode":"JSON","tool_parameters_json_hint":"A JSON Schema object (draft 2020-12). Use JSON for pattern, default, nested objects or arrays.","tool_parameters_json_invalid":"Enter a JSON object with \"type\": \"object\".","tool_parameters_json_only":"This schema uses features the form cannot show, so it is edited as JSON.","parameter_type":"Type","parameter_required":"Required","parameter_non_empty":"Non-empty","parameter_nullable":"Nullable","parameter_enum_values":"Allowed values","parameter_enum_values_placeholder":"routine, urgent","parameter_name_invalid":"Use letters, digits, _ or -, starting with a letter or _, up to 64 characters.","agent_templates":{"start_from_template":"Create from template","start_from_template_hint":"Start from a ready-made agent for a common call type.","gallery_title":"Start from a template","gallery_description":"Each template comes with a prompt, first message, call analysis and tests. You can change all of it later.","filter_label":"Template category","filter_all":"All","filter_inbound":"Inbound","filter_outbound":"Outbound","filter_industry":"Industry","use_template":"Use template","loading":"Loading templates","load_error":"Templates couldn't load.","retry":"Try again","empty":"No templates here yet."},"user_menu":{"trial_credit":"Trial credit","no_card":"No card on file","never_expires":"Top-up credits never expire","included_this_month":"Included this month"}},"api-keys":{"actions":"Actions","api_keys":"API Keys","api_keys_list":"API Keys List","api_list":"API List","api_total_cost":"API total cost","cancel":"Cancel","change":"Change","clear_filter":"Clear filter","concurrency_tier_base":"All keys share a concurrency limit of {limit}. Top up $100+ to unlock 15 concurrent requests, or top up $1000+ to unlock 50.","concurrency_tier_high":"All keys share a concurrency limit of {limit}. Contact us for custom limits and volume pricing.","concurrency_tier_mid":"All keys share a concurrency limit of {limit}. Top up $1000+ to unlock 50 concurrent requests.","copied_title":"Copied to clipboard","copy_api_key":"Copy API key","copy_failed":"Could not copy the API key. Please select and copy it manually before closing this dialog.","create":"Create","create_api_key":"Create API Key","create_new_secret_key":"Create Secret Key","create_token":"Create Token","created":"Created","created_list_load_failed":"Your API key was created, but the list could not be refreshed. Retry loading the list; you do not need to create another key.","delete":"Delete","delete-confirm-tips":"This action is irreversible and will disable any services using this token. Confirm to proceed.","delete-confirm":{"cancel":"Cancel","confirm":"Confirm"},"delete-success":"Delete Success","delete_confirm_title":"Delete API token?","detail_load_failed":"Could not load this API key. Please try again.","done":"Done","edit":"Edit","edit_token":"Edit Token","empty_description":"Click 'Create API Key' to generate your first key.","empty_title":"No API keys yet","exp_notification_status":"Exp. Notification: {status}","expiration":"Expiration","expiration_date":"Expiration Date","expiration_time":"Expiration time","expiration_notification":"Expiration Notification","expire_30_days":"30 days","expire_7_days":"7 days","expire_90_days":"90 days","expired":"Expired","filter_all":"All","i_saved_my_key":"I've saved my key","id":"ID","key_name":"Key name","key_name_placeholder":"Name your API Key","key_shown_once_warning":"This key is shown only once. Copy it now and store it somewhere safe — you won't be able to see it again.","list_load_failed":"Could not load API keys. Please try again.","log_in_cta":"Log in","login_to_access_api":"Log in to access API","name":"Name","never":"Never","never_expire":"Never Expire","no_results":"No API keys match your filters.","no_token_created_yet":"No token created yet","notification_tooltip_off":"Expiration notification: off","notification_tooltip_on":"Expiration notification: on","off":"Off","on":"On","page_description":"Create and manage API keys to authenticate and connect your applications securely.","pagination_range":"{from}-{to} of {total}","rows_per_page":"Rows per page","retry":"Retry","save_your_key":"Save your API key","search_name":"Search Name","secret_key":"Secret Key","setting":"Setting","status":{"active":"Active","expired":"Expired","title":"Status"},"view_usage":"View usage","warning_tips":"API keys are used for authentication and authorization in API requests. Ensure they are kept secure and not shared with unauthorized individuals.","first_request_title":"Make your first request","first_request_note":"Uses s2.1-pro-free. Paste it into a terminal to get your first audio file.","copy_example":"Copy","open_quickstart":"Open the quickstart"},"asset-library":{"recreateUnavailable":"Couldn't restore the original task inputs. Your draft has been kept.","operationFailed":"Couldn't complete this action. Please try again.","title":"Asset Library","uploadFolder":"Upload","allAssets":"All Assets","searchResults":"Search Results","untitled":"Untitled","breadcrumb":{"back":"Back","collapsed":"Show collapsed folders"},"items":"{count, plural, one {# item} other {# items}}","cancel":"Cancel","save":"Save","close":"Close","play":"Play","pause":"Pause","loading":"Loading assets","loadingMore":"Loading more","loadError":"Couldn't load your assets","loadBusy":"Assets are busy right now. Please try again in a moment.","tryAgain":"Try again","downloadFailed":"Couldn't download. Please try again.","useAssetUnavailable":"This asset can't be used as a reference for the current model.","kinds":{"image":"Image","video":"Video","audio":"Audio","folder":"Folder","avatar":"Avatar","document":"Document"},"types":{"image-generation":"Image Gen","video-generation":"Video Gen","lip-sync":"Lip sync","tts":"Text to Speech","voice-changer":"Voice Changer","audio-separation":"Stem Splitter","sound-effect-generation":"Sound Effects","upload":"Local upload"},"sources":{"all":"All sources","task_output":"Generated","upload":"Local upload","clear":"Clear source filter"},"search":{"placeholder":"Search assets","skills":"Search skills","clear":"Clear search"},"empty":{"title":"No assets","subtitle":"Upload files or save generations to build your Asset Library.","upload":"Upload assets","viewHistory":"View Generation History"},"emptyFolder":{"title":"This folder is empty","subtitle":"Upload files or move assets into this folder."},"emptyUploadFolder":{"title":"Uploads land here first","subtitle":"Files you upload are held here until you keep them in a folder."},"noResults":{"title":"No assets found","subtitle":"Try adjusting your search or filters.","cta":"Clear filters"},"authGate":{"title":"Sign in to continue","description":"Sign in to view your Asset Library.","cta":"Sign in"},"actions":{"rename":"Rename","move":"Move","download":"Download","delete":"Delete","more":"More actions","setCover":"Set as cover","setPortrait":"Set as portrait"},"asset":{"renameTitle":"Rename asset","nameLabel":"Name","renameFailed":"Couldn't rename. Please try again.","moveTitle":"Move \"{title}\" to","moveManyTitle":"Move {count} assets to","moveCta":"{count, plural, one {Move asset} other {Move assets}}","moveFailed":"Couldn't move {count, plural, one {# asset} other {# assets}}. Please try again.","deleteTitle":"Delete \"{title}\"?","deleteManyTitle":"Delete {count} assets?","deleteBody":"{count, plural, one {\"{title}\" will be deleted from your asset library.} other {# assets will be deleted from your asset library.}}","deleteBodyHistory":"Generation history will not be affected.","deleteFailed":"Couldn't delete. Please try again.","deleted":"{count, plural, one {Asset deleted} other {# assets deleted}}","undo":"Undo"},"folder":{"newFolder":"New folder","createTitle":"New folder","nameLabel":"Folder name","createCta":"Create","createFailed":"Couldn't create the folder. Please try again.","renameTitle":"Rename folder","renameFailed":"Couldn't rename. Please try again.","duplicate":"A folder with this name already exists","limit":"Folder limit reached","depthLimit":"Folders can only be nested {max} levels deep","moveTitle":"Move \"{name}\" to","moveCta":"Move folder","moveFailed":"Couldn't move the folder. Please try again.","deleteTitle":"Delete \"{name}\"?","deleteEmpty":"This empty folder will be permanently deleted. This action cannot be undone.","deleteCounts":"There are {assets, plural, one {# asset} other {# assets}} and {folders, plural, one {# folder} other {# folders}} in this folder.","deleteNonEmpty":"These items will be permanently deleted along with this folder. This action cannot be undone.","fromProject":"From a project","deleteSessionFolder":"The Agent project will no longer show these files.","deleteFailed":"Couldn't delete the folder. Please try again.","moveReasons":{"current":"Already in this folder","subtree":"A folder cannot move into itself or a descendant","depth":"Folders can only be nested {max} levels deep","type":"This folder type cannot cross the Avatar boundary","upload":"The Upload folder only holds new uploads"},"noMoveTargets":"No available destinations. See the reason below each folder.","moved":"Folder moved"},"tree":{"destination":"Destination","searchFolders":"Search folders","current":"Current","newFolder":"New Folder","expand":"Expand","collapse":"Collapse","noFolders":"No folders found"},"addToAssets":{"title":"Add {count, plural, one {# generation} other {# generations}} to","cta":"Add to Assets","success":"{count, plural, one {# asset added} other {# assets added}} to your Asset Library","failed":"Couldn't add to Assets. Please try again."},"saveToAssets":{"idle":"Save to Assets","saving":"Saving…","saved":"Saved","savedTooltip":"Saved - View asset"},"upload":{"cta":"Upload","dropHere":"Drop here to upload","dropTarget":"Upload to {path}","unsupported":"Unsupported file type","tooLarge":"File too large (video up to 1 GB, other files up to 50 MB)","limit":"Asset limit reached","uploadingCount":"{count, plural, one {Uploading # file…} other {Uploading # files…}}","summary":"{done, plural, one {# Uploaded} other {# Uploaded}}","summaryWithFailed":"{done} Uploaded · {failed} Failed","progress":"Uploading · {percent}%","waiting":"Waiting","uploaded":"Uploaded","failed":"Upload failed","retry":"Retry","cancel":"Cancel upload","close":"Close","expand":"Expand","collapse":"Collapse","openDetail":"View asset"},"detail":{"source":"Source","type":"Type","format":"Format","duration":"Duration","folder":"Folder","addedBy":"Added by","prompt":"Prompt","text":"Text","viewGeneration":"View generation","previous":"Previous asset","next":"Next asset","noPrevious":"No previous asset","noNext":"No next asset"},"picker":{"title":"Select from assets","back":"Back","empty":"No assets yet. Save generations or upload files in your Asset Library.","selected":"{count, plural, one {# item selected} other {# items selected}}","selectedOfMax":"{count}/{max} items selected","uploading":"Uploading…","uploadOverflow":"You can select up to {max}. The rest were saved to your Asset Library.","search":{"image":"Search images","video":"Search videos","audio":"Search audio"},"use":{"image":"Use image","video":"Use video","audio":"Use audio"}},"avatars":{"moveDisabled":"Assets in Avatars cannot be moved","noStyles":"This avatar has no styles","original":"Original avatar","title":"Avatars","new":"New avatar","empty":{"title":"No avatars","subtitle":"Create an avatar, then add its face images by style."},"createTitle":"Create Avatar","nameLabel":"Name","voiceLabel":"Default Voice","createCta":"Create Avatar","createFailed":"Couldn't create the avatar. Please try again.","editFailed":"Couldn't save. Please try again.","limit":"Avatar limit reached","deleteTitle":"Delete \"{name}\"?","deleteBody":"All styles and images inside this avatar will be permanently deleted. This action cannot be undone.","deleteFailed":"Couldn't delete the avatar. Please try again.","imagesOnly":"Avatars only accept images","styles":"{count, plural, one {# style} other {# styles}}","references":"Reference images","uploadReferences":"Upload references","rootEmptySubtitle":"Upload 1–5 face photos as references, then generate styles from them.","videos":"Videos","noVideos":"Lip-sync videos made with this avatar will show up here.","voiceNone":"No default voice","changeVoice":"Change","setCoverFailed":"Couldn't update. Please try again.","stripSubtitle":"Keep characters consistent","viewAll":"View all","create":"Create Avatar","searchPlaceholder":"Search avatars","selectTitle":"Select avatar","sourceImages":"Source Images","createVideo":"Create Video","noImageForVideo":"Add a source image or generate a style first","methodUpload":"Upload photos","methodUploadHint":"Your photos · photorealistic","methodPrompt":"Generate avatar","methodPromptHint":"Your voice + a few picks · any style","uploadImages":"Upload photos","dropHint":"Drop up to {max} images here","bestResults":"For best results: one person, clear face, multiple angles.","promptLabel":"Prompt","promptPlaceholder":"A woman in her 30s with short dark hair, warm smile, studio lighting","namePlaceholder":"Avatar name","voiceOptional":"Default Voice (optional)","myAvatars":"My Avatars","creating":"Creating","menuView":"View Avatar","menuLipsync":"Create Lip Sync","menuVideo":"Create Video","menuDelete":"Delete Avatar","noneFound":"No avatars found","rename":"Rename avatar","copyLink":"Copy link","linkCopied":"Link copied","copyLinkFailed":"Couldn't copy the link","selectVoice":"Select a voice","voiceUnavailable":"This voice is no longer available","tooMany":"You can add up to {max} images","generateFailed":"Couldn't generate the avatar. Please try again.","shuffle":"Shuffle prompt","clearPrompt":"Clear prompt","previewCreating":"Creating your avatar…","ideas":{"gaming":{"label":"Gaming","prompt":"Esports streamer in a neon-lit gaming room, headset on, confident grin, RGB glow"},"domestic":{"label":"Domestic","prompt":"Friendly home cook in a bright kitchen, apron on, warm smile, soft window light"},"human":{"label":"Human","prompt":"Natural studio portrait of a person in their 30s, plain background, soft light, gentle smile"},"nature":{"label":"Nature","prompt":"Hiker on a mountain trail at golden hour, windbreaker, sun-kissed skin, relaxed expression"},"vlog":{"label":"Vlog","prompt":"Travel vlogger holding a camera on a city street, casual outfit, candid smile, daylight"}},"folderDropUnsupported":"Folders cannot be moved into Avatars. This directory only contains avatars.","assetDropUnsupported":"Assets cannot be moved into Avatars. This directory only contains avatars.","duplicate":"An avatar with this name already exists","disabledReasons":{"generating":"Generation is in progress. Please wait","creating":"Avatar creation is in progress. Please wait","unfinished":"Finish creating the current Avatar before generating again","prompt":"Enter a prompt first","name":"Enter an Avatar name first","nameTooLong":"Use no more than {max} characters for the name","sources":"Upload at least one source image first","preview":"Generate an Avatar image first"},"count":"{count, plural, one {# avatar} other {# avatars}}","voiceTitle":"Voice","createAndWrite":"Create & write script","looksLabel":"Pick one","portrait":{"options":{"look":{"label":"Look","person":"Realistic","anime":"Anime","cartoon":"Cartoon","animated3d":"3D","mascot":"Mascot"},"outfit":{"label":"Outfit","casual":"Casual","business":"Business","trendy":"Street","sporty":"Sport","uniform":"Uniform"},"background":{"label":"Background","plain":"Plain","home":"Home","office":"Office","stream":"Live stream","outdoors":"Outdoor"},"gender":{"label":"Gender","auto":"Auto","female":"Female","male":"Male"},"age":{"label":"Age","auto":"Auto","young":"20s","adult":"30–40s","senior":"60+"},"appearance":{"label":"Ethnicity","auto":"Auto","any":"Any","east_asian":"East Asian","south_asian":"South Asian","southeast_asian":"Southeast Asian","black":"Black","white":"White","hispanic":"Latino","middle_eastern":"Middle Eastern"},"hair":{"label":"Hair","any":"Any","short":"Short","long":"Long","curly":"Curly"},"accessory":{"label":"Accessories","none":"None","glasses":"Glasses","hat":"Hat","beard":"Beard"},"mascotKind":{"label":"Kind","auto":"Auto","robot":"Robot","animal":"Fluffy animal","blob":"Blob creature"}},"advanced":"Edit description","customNote":"Using your own description. Preferences are paused.","reset":"Back to preferences","option":"Option {n}","shuffle":"Shuffle","more":"More options","useCase":{"label":"Use case","presenter":"Presenter","character":"Character","me":"Use my own photos"}},"photoIssues":{"lowRes":"Low resolution — use a sharper photo.","screenshot":"Looks like a screenshot — crop to just the person.","summary":"{count, plural, one {# photo may lower quality} other {# photos may lower quality}} — hover a photo to see why.","summaryTouch":"{count, plural, one {# photo may lower quality} other {# photos may lower quality}} — tap a photo's icon to see why."},"appearanceTags":"Appearance","appearanceTitle":"Appearance","photosLabel":"Photos","photosLimit":"Up to {max}","imageCredits":"{count, plural, one {# image credit} other {# image credits}}","generateOptions":"Generate {count, plural, one {# option} other {# options}}","generatingOptions":"Generating {count, plural, one {# option} other {# options}}…","regenerate":"Regenerate","generationFailed":"Generation failed","imageCreditsPriced":"{credits} credits · {count, plural, one {# image} other {# images}}","optionCount":"Number of images"},"styles":{"title":"Styles","generate":"Generate","generateMore":"Generate more","createTitle":"New style","createHint":"Describe the look — camera angle, outfit, background, lighting. Your avatar's reference images go with it.","nameLabel":"Style name","namePlaceholder":"e.g. Casual, Office, Studio","promptLabel":"Look","promptPlaceholder":"Same person in a navy blazer, office background, soft window light","createCta":"Create & generate","createFailed":"Couldn't create the style. Please try again.","limit":"Style limit reached","lipsync":"Lip sync","noImageYet":"No image yet — generate one first","candidates":"{count, plural, one {# image} other {# images}}","emptyCta":"Create the first style","deleteBody":"{count, plural, =0 {This style} one {This style and its # image} other {This style and its # images}} will be permanently deleted.","new":"New style","searchPlaceholder":"Search styles","remix":"Remix style","use":"Use","generating":"Generating…","generateFailed":"Couldn't generate the style. Please try again.","noPromptToRemix":"This style has no prompt to remix","useStyle":"Use Style","renameTitle":"Rename style","deleteTitle":"Delete \"{name}\"?","syncing":"Syncing image…","duplicate":"A style with this name already exists","renameFailed":"Couldn't rename the style. Please try again.","deleteFailed":"Couldn't delete the style. Please try again.","setDefault":"Set as default","unsetDefault":"Remove default","default":"Default","builder":{"title":"New style for {name}","look":{"label":"Look"},"shot":{"label":"Shot","close_up":"Close-up","half_body":"Half body","full_body":"Full body"},"light":{"label":"Light","soft":"Soft","studio":"Studio","natural":"Natural","dramatic":"Dramatic"},"fullBodyHint":"In a full-body shot the face is small, so talking videos may look less sharp.","generate":"Generate","regenerate":"Regenerate","save":"Save style","startingFrom":"Starting from Default","namePlaceholder":"Named from your picks","yourOwn":"Your own","ownFailed":"Couldn't upload the photo. Try again.","prompt":"Prompt","promptPlaceholder":"Describe the look, e.g. cyberpunk hacker with neon implants, night-city glow.","ownOneAtATime":"Your own photo works for the outfit or the background, one at a time."},"uploadPhoto":"Upload photo","saved":"Style saved","uploadPage":{"photo":"Photo","replace":"Replace","remove":"Remove photo","yourPhoto":"Your photo"}},"speech":{"title":"Voice for {name}","hint":"Choose a voice and write your script. Preview the generated speech, then use it in the audio slot.","voice":"Voice","scriptLabel":"Script","scriptPlaceholder":"Hi, I'm Luna. Let me show you what's new this week.","generate":"Generate speech","generating":"Generating…","skip":"Skip for now","failed":"Couldn't generate the speech. Please try again.","timeout":"Speech is taking longer than expected. Pick it from History once it's ready.","tagsLabel":"Add emotion","tags":{"excited":"Excited","laughing":"Laugh","whispering":"Whisper","soft":"Soft","sad":"Sad","angry":"Angry","emphasis":"Emphasis","sighing":"Sigh","pause":"Pause"},"sceneLabel":"Scene","scenes":{"ad":"Product ad","explainer":"Explainer","podcast":"Podcast","free":"Free talk"},"generateVideo":"Generate video","useAudioOnly":"Use audio only","videoHint":"Emotion tags set both the voice and the avatar's expression.","tooLong":"This speech is {seconds}s. A video can be up to {max}s. Shorten the script.","videoLocked":"Talking videos need the Plus plan. You can still make the speech.","upgrade":"Upgrade"},"generation":{"modelUnavailable":"Avatar generation is temporarily unavailable. Please try again later.","sourcesUnavailable":"Couldn't use all source images. Check the avatar's source images and try again.","tooManySources":"This generation supports up to {max} source images. No images were omitted.","promptTooLong":"Please shorten your description to {max} characters or fewer.","promptRequired":"Enter a description before generating.","inputChanged":"Generation settings changed. Please try again to get a new quote."},"official":{"addToMine":"Copy avatar","adopted":"Added to my avatars","adoptFailed":"Couldn't add this avatar. Please try again."}},"auth":{"and":" and ","continue":"Continue","continue-with-apple":"Continue with Apple","continue-with-google":"Continue with Google","countless-character-sounds":"Countless character sounds","create-account-benefits":"Create a free account to enjoy unlimited generations and access to all models","dont_receive_code":"Didn't receive the code?","email_label":"Email","email_placeholder":"Email Address","email_required":"Enter your email","email_invalid":"Enter a valid email","email-options":"Continue by email","free-voice-generation":"Free voice generation","go_to_create":"Sign up","go_to_forgot":"Forgot password","go_to_login":"Go to login","has_account":"Has an account?","high-quality-audio-in-seconds":"High-quality audio in seconds","latest-ai-model":"Latest AI model","fine-grained-emotion-control":"Fine-grained emotion control","login_subtitle":"Enter your email and password to log in to your account","login_failed":"Login failed. Please try again.","login_title":"Log in to your account","or":"or","password_label":"Password","password_mismatch":"Passwords do not match","password_required":"Enter a password","password_confirmation_required":"Confirm your password","password2_label":"Confirm Password","privacy_policy":"Privacy Policy","privacy_policy_start":"By clicking continue, you agree to our ","continue-consent":"By continuing, you agree to our <terms>Terms of Service</terms> and <privacy>Privacy Policy</privacy>","quote":"Accelerate audio generation","redirecting":"Redirecting...","resend_otp":"Resend OTP","send_otp":"Send","sign-in":"Sign in","sign-in-to-enjoy":"Sign in to enjoy unlimited voice","sign-in-or-sign-up-to-enjoy":"Sign in or <signup>sign up</signup> to enjoy unlimited voice","sign-up-to-enjoy":"Sign up to enjoy unlimited voice","submit_login":"Log in","submit_register":"Register with Email","subtitle_email":"Enter your email below to create your account","subtitle_otp":"Check your email, we will send you a code to complete the verification","subtitle_password":"Please enter a password to secure your account","terms_of_service":"Terms of Service","terms_of_use":"Terms of use","title_email":"Create an account","title_otp":"Verification Code","title_password":"Create Password","unlock-full-potential":"Unlock the Full Potential","onboarding":{"emotionTags":"<accent>Open-domain</accent> Emotion Tags","voiceClone":"<accent>Instant</accent> voice cloning","multiSpeakerDialogue":"<accent>Multi-speaker</accent> dialogue","communityVoices":"<accent>Millions of</accent>\ncommunity voices","pagerLabel":"Show feature {number}","script":{"hey":"Hey there.","good":"Good to see you.","minute":"Got a minute?","talk":"Let’s talk."},"voiceCloneOriginalLabel":"original","voiceCloneCloneLabel":"clone","dialogue":{"mayaDinner":"Everyone, dinner tonight?","leoComing":"I’m in. Leo, you coming?","seeYouTonight":"OK. See you guys tonight.","fishing":"Fishing…"}},"oauth":{"title":"{client} wants to access your Fish Audio account","first-party":"Made by Fish Audio","third-party":"Not made by Fish Audio","account-label":"Account","not-you":"Not you? Log out","log-out":"Log out","team-label":"Team","team-description":"This connection can use only the team you pick here, and its credits. To change teams later, connect again.","no-teams":"You have no teams available to authorize.","no-teams-help":"To continue, log out and log in with an account that has an active team.","permissions-title":"This app will be able to:","scope-mcp":"Use Fish Audio AI tools with the selected team’s credits: speech generation, transcription, voice search, Audiobooks, and image and video generation","scope-koi":"Use Koi voice input: transcribe and rewrite your dictation. Usage is attributed to the selected team.","scope-dropline":"Use Dropline voice input: transcribe and rewrite your dictation. Usage is attributed to the selected team.","scope-dropline-api":"Use your Dropline: dictate with your dictionary and memory, and add material to your Dropline","scope-arena":"Take part in Fish Audio Arena listening evaluations. Arena receives only your user ID, email, nickname, and the selected team’s name; it can’t use credits or change your account.","scope-fish-scale":"Sign in to Fish Scale AI (console.fish.ai) with your Fish Audio account. Fish Scale receives only your user ID, email, nickname, and the selected team’s name; it can’t use credits or change your account.","redirect-notice":"After you allow access, you'll be sent to {host}.","redirect-first-party":"After you allow access, you'll go back to the {client} app.","redirect-app":"After you allow access, you'll go back to an app on this device ({scheme}).","approve":"Allow","deny":"Cancel","verifying":"Waiting for you to verify it's you…","approved-title":"Access granted","approved-app":"Return to {client} to finish signing in. You can close this tab.","denied-title":"Request canceled","denied-app":"{client} didn't get access to your account. You can close this tab.","redirecting":"Taking you back to {host}…","open-app":"Open {client}","invalid-title":"Invalid authorization request","invalid-default":"This authorization request is invalid or the application is not registered.","invalid-client":"This app isn't registered with Fish Audio.","start-over":"Go back to the app and try connecting again.","load-failed-title":"Couldn't load this request","load-failed":"Check your connection and try again.","retry":"Try again","approve-failed":"Access wasn't granted. Try again.","team-access-revoked":"You no longer have access to “{team}”. Choose another team and try again.","loading":"Loading…"},"invite":{"welcome":"Welcome aboard","invitedYou":"You’ve been invited to Fish Audio.","description":"Start building and creating now !","signup":"Claim 10,000 Credits!","alreadyAccount":"Already have an account?","login":"Log in","enter":"Open Fish Audio"},"continue-with-email":"Continue with Email","continue-with-github":"Continue with GitHub","login-as":"Log in as <emailLink>{email}</emailLink>","sign-up-as":"Sign up as {email}","dialog-sign-up":"Sign up","dialog-register":"Register with Email","otp_invalid":"Use a 6-character code","captcha_failed":"Security verification failed. Check your connection and try again.","send_otp_failed":"Couldn't send the verification code. Check your connection and try again.","verify_otp_failed":"Couldn't verify the code. Check your connection and try again.","signup_failed":"Couldn't complete signup. Please try again.","email_suggestion":"Did you mean <suggestion>{email}</suggestion>?","email_domain_undeliverable":"This email domain can't receive mail. Check the address for typos.","developer-signup-title":"Create your free API key","developer-login-title":"Welcome back","developer-login-description":"Log in to manage your API keys, or <signup>sign up</signup> for a free one.","google-incomplete":"Google sign-in didn't finish. Try again, or choose another option.","in-app-browser":"Google sign-in doesn't work in this app's built-in browser. Open this page in your browser, or choose another option.","copy-link":"Copy link","link-copied":"Link copied","error_account_exists":"You already have an account with this email. <login>Log in</login>","error_otp_wrong":"That code is wrong or has expired. Check the latest email, or resend the code.","error_disposable_email":"Disposable email addresses can't be used. Sign up with a permanent address.","error_invalid_email":"Enter a valid email address, like name@example.com."},"collections":{"all_collections":"All Collections","bookmarks_title":"My Bookmarks","cancel":"Cancel","copy_link":"Copy Link","create":"Create","create_collection":"Create Collection","create_title":"Create Voice Collection","create-action":"Create","created_by_me":"Created by Me","creating":"Creating","delete":"Delete","delete_confirm":"Once the voice collection is deleted, it cannot be restored. Are you sure you want to delete it?","delete_title":"Delete Voice Collection","deleting":"Deleting","description":"Description","description_placeholder":"Voice Collection Description","edit":"Edit","edit_title":"Edit Voice Collection","follow":"Follow","followed":"Followed","followers":"Followers","header_title":"My Voice Collections","loading":"Loading...","models":"Models","collection_window_limited":"Showing the newest {count} voices. Older voices are outside this view's browsing window.","no_created_collection_tips":"No created voice collections found","no_created_collections":"No created collections yet","no_followed_collection_tips":"No followed voice collections found","no_followed_collections":"No followed collections yet","notification":{"create_success":"Successfully created voice collection","delete_success":"Successfully deleted voice collection","followed":"Followed Collection","link_copied":"Successfully copied collection link","unfollowed":"Unfollowed Collection","update_success":"Successfully updated voice collection"},"save":"Save","saving":"Saving","title":"Title","title_placeholder":"Voice Collection Title","title-created":"Created","title-followed":"Followed","unfollow":"Unfollow","voice_collections":"Voice Collections","voice_count":"{count, plural, one {# Voice} other {# Voices}}","remove_voice":"Remove","remove_voice_confirm_title":"Remove Voice","remove_voice_confirm_description":"Are you sure you want to remove this voice from the collection?","remove_voice_success":"Voice removed from collection","remove_voice_failed":"Failed to remove voice from collection","removing":"Removing..."},"contact-sales":{"metadata":{"title":"Contact Sales - Fish Audio","description":"Talk to Fish Audio about enterprise pricing, security review, and production-scale voice deployments.","subtitle":"Enterprise Voice"},"title":"Contact our sales team","description":"Tell us about your needs and we'll connect you with the right person or plan.","proof":{"title":"Voice AI in production, at scale","description":"Real results from teams running Fish Audio in production.","cards":{"cost":"<brand>Final Round AI</brand> cut its voice cost by <metric>~10x</metric> with Fish Audio.","quality":"<brand>HeyGen</brand> picked Fish Audio <metric>3:1</metric> in voice tests.","scale":"<brand>Pictoria</brand> runs <metric>daily</metric> AI character livestreams on Fish Audio."},"story":"Read the {brand} story"},"form":{"submit":"Submit","submitting":"Sending...","submitError":"We couldn't save your request. Please try again, or email business@fish.audio.","footnote":"By submitting, you agree that Fish Audio may contact you about your request using the email you provide.","fields":{"firstName":{"label":"First name","placeholder":"Ada"},"lastName":{"label":"Last name","placeholder":"Lovelace"},"workEmail":{"label":"Work email","placeholder":"name@company.com"},"jobTitle":{"label":"Job title","placeholder":"CTO"},"companyName":{"label":"Company name","placeholder":"Acme Inc."},"companyWebsite":{"label":"Company website","placeholder":"acme.com"},"interest":{"label":"What are you interested in?","placeholder":"Select an option","options":{"enterprise":"Enterprise plan","partnership":"Partnership inquiry","support":"Customer support / Other"}},"product":{"label":"Which product are you asking about?","placeholder":"Select a product","options":{"tts":"Text to Speech","stt":"Speech to Text / Streaming STT","agent":"Voice Agent"}},"expectedVolume":{"label":"Expected monthly voice generation","placeholder":"Select a range","options":{"under_10m":"Under 10M characters (~10k minutes)","10m_66m":"10M – 65M characters (~10k–65k minutes)","66m_250m":"66M – 250M characters (~66k–250k minutes)","250m_1b":"250M – 1B characters (~250k–1M minutes)","over_1b":"Over 1B characters (~1M+ minutes)"}},"expectedUsage":{"labelAgent":"Expected monthly call minutes","labelStt":"Expected monthly audio hours","placeholder":"Select a range","optionsAgent":{"under_1k_min":"Under 1k minutes","1k_10k_min":"1k – 10k minutes","10k_50k_min":"10k – 50k minutes","50k_250k_min":"50k – 250k minutes","over_250k_min":"Over 250k minutes"},"optionsStt":{"under_300h":"Under 300 hours","300h_2kh":"300 – 2k hours","2kh_7kh":"2k – 7k hours","7kh_30kh":"7k – 30k hours","over_30kh":"Over 30k hours"}},"useCase":{"label":"Tell us about your use case","placeholder":"Describe your product, expected traffic, and what you'd like to achieve with Fish Audio."}},"validation":{"firstNameRequired":"Enter your first name.","lastNameRequired":"Enter your last name.","workEmailInvalid":"Enter a valid work email.","jobTitleRequired":"Enter your job title.","companyNameRequired":"Enter your company name.","companyWebsiteRequired":"Enter your company website.","companyWebsiteInvalid":"Enter a valid URL.","interestRequired":"Select what you are interested in.","productRequired":"Select the product you are asking about.","expectedVolumeRequired":"Select your expected monthly volume.","expectedUsageRequired":"Select your expected monthly usage.","useCaseTooShort":"Please provide more detail about your use case.","useCaseTooLong":"Use case is too long.","fieldTooLong":"This field is too long."}},"postSubmit":{"selfServe":{"title":"Thanks for your interest!","description":"Based on your expected usage, our self-serve plans are a great fit. Get started in minutes — no sales call needed.","cta":"View plans & get started","fallback":"Need custom terms? <link>Contact us directly</link>"},"support":{"title":"We're here to help","description":"For support inquiries, our dedicated team can assist you faster through our support portal.","cta":"Go to support"},"booking":{"title":"Book a call with our team","description":"Pick a time that works for you. We'll discuss your requirements and tailor a plan for your needs.","cta":"Schedule a Call","fallback_prefix":"Can't find a suitable time? Email us at","unavailable_description":"Our booking calendar is temporarily unavailable. Email us and we'll find a time together.","email_cta":"Email Us to Schedule"},"booked":{"title":"You're all set!","description":"We've sent a calendar invite to your email. Looking forward to speaking with you.","cta":"Back to home"}}},"enterprise-portal":{"page":{"title":"Enterprise","description":"Invoices, usage and credits under your enterprise agreement"},"redirect":{"title":"Your team is on an enterprise agreement","body":"Invoices, usage and credits now live in the Enterprise section. Self-serve top-ups are disabled for invoice-billed teams; usage is invoiced under your contract terms.","cta":"Open Enterprise"},"assessment":{"title":"Quarterly commitment","description":"Your agreement's quarterly minimums, banked excess and true-up credits","current_quarter":"Current quarter (Q{q})","current_period":"Current period (Period {n})","banked_balance":"Banked excess","banked_hint":"Consumption above a quarter's minimum counts toward later quarters' minimums.","credits_title":"True-up credits","credit_expires":"expires {date}","title_period":"Period commitment","description_period":"Your agreement's period minimums, banked excess and true-up credits","description_no_banked":"Your agreement's quarterly minimums and true-up credits","description_period_no_banked":"Your agreement's period minimums and true-up credits"},"plan":{"title":"Enterprise plan · {company}","term":"Term {start} – {end}","renews":"Renews automatically","ends":"Ends {date}","billed_monthly":"Billed monthly · Net {days}","billed_on_agreement":"Billed on agreement","contract_rates":"Contract rates","no_charge_through":"No charge through {date}","concurrent":"{count} concurrent requests","zdr_on":"Zero data retention · On","coverage_message":{"agents_not_in_scope":"Not in scope (amendment required)"},"display_unit":{"million_utf8_bytes":"{count}M UTF-8 bytes","agent_minute":"{count} agent minutes","transfer_minute":"{count} transfer minutes","video_second":"{count} seconds of video","megapixel":"{count} megapixels"}}},"billing":{"title":"Billing","contact_account_team":"Contact account team","tabs":{"label":"Billing sections","overview":"Overview","invoices":"Invoices","credits":"Credits","settings":"Settings"},"no_access":{"title":"Billing is managed by your team's owners, admins and billing members","body":"Invoices, credits and contract terms are visible to owners, admins and billing members. Ask one of them, or switch to a team you manage."},"plan":{"plan":"Plan","contract_plan":"Contract plan","yearly":"Yearly","monthly":"Monthly","renews":"{period} · renews {date}","renews_no_period":"Renews {date}","ends":"{period} · ends {date}","ends_no_period":"Ends {date}","included":"Included with your enterprise contract","free_pitch":"Upgrade for more credits, voices and faster generation","upgrade":"Upgrade","change_plan":"Change plan","compare_plans":"Compare plans","manage_in_stripe":"Manage in Stripe","billed_app_store":"Billed through the App Store. Change or cancel it there.","billed_google_play":"Billed through Google Play. Change or cancel it there.","credits_title":"Credits this month","credits_left":"left of {total}","refreshes":"Refreshes {date}","buy_credits":"Buy more credits","seats_title":"Seats","seats_value":"{used} of {total} used","seats_included":"{count, plural, one {# seat} other {# seats}}","seats_by_contract":"Set by your contract","add_seats":"Add seats","payment_title":"Payment method","payment_in_stripe":"Your card is kept in Stripe.","payment_declined":"Your last payment was declined.","update":"Update","failed_banner":"We couldn't charge your card for your {plan} renewal. Update your card to keep {plan}.","update_card":"Update card"},"settings":{"request_change":"Request a change","manage_in_stripe":"Manage in Stripe","edit":"Edit","add":"Add","save":"Save","cancel":"Cancel","saved":"Saved","details":{"title":"Billing details","bill_to":"Bill to","address":"Address","tax_id":"Tax ID","tax_forms":"Fish Audio W-9","w9":"Download W-9","contract_note":"These details are part of your contract. Changes apply to future invoices.","change_by_manager":"Owners and billing members can request a change.","change_requested":"Change requested {date} · {caseKey}","shown_on_invoices":"Shown on future invoices.","in_stripe":"Your name, address and tax ID for invoices are kept in Stripe.","name":"Name or company","email":"Invoices sent to","street":"Street","postal_code":"Postal code","city":"City","country":"Country","tax_type":"Tax ID type","contract_elsewhere":"Invoice recipients, purchase order and alerts are in <link>Developer → Billing → Settings</link>."},"recipients":{"title":"Invoices sent to","note":"Recipients don't need a Fish Audio account.","dialog_title":"Invoices sent to","dialog_description":"Each address gets a copy of every invoice.","placeholder":"name@company.com","add_label":"Email address","remove":"Remove {email}","invalid":"Enter a valid email address."},"po":{"title":"Purchase order","number":"PO number","note":"Printed on your future invoices.","none":"No PO number","remove":"Remove PO number"},"change":{"title":"Request a change","label":"What should change?","placeholder":"For example: our new billing address is …","note":"Your account team updates the details on your contract. Changes apply to future invoices.","send":"Send request","sent":"Request sent"},"pay":{"title":"How to pay","bank_terms":"Bank transfer (ACH or wire) within {days} days of each invoice. Use the invoice number as the reference.","bank_on_receipt":"Bank transfer (ACH or wire) when each invoice arrives. Use the invoice number as the reference.","card":"You can also pay an invoice by card ({pct}% fee).","card_no_fee":"You can also pay an invoice by card.","view_bank":"View bank details"},"payment":{"title":"Payment method","card":"{brand} •••• {last4} · expires {month}/{year}","in_stripe":"Your card is kept in Stripe.","none":"No card on file.","update":"Update"},"auto_top_up":{"title":"Auto top-up","rule":"Add {amount} when your balance drops below {threshold}","off":"We add credit automatically when your balance runs low.","set_up":"Set up"},"alerts":{"title":"Email alerts","extra_usage_expected":"Extra usage expected this period","extra_usage_started":"Extra usage started this period","carryover_expiring":"Carried-over credit expires in {days, plural, one {# day} other {# days}}","invoice_issued":"New invoice ready","invoice_past_due":"Invoice overdue","recipients_enterprise":"Sent to the addresses that receive invoices, plus owners and billing members.","recipients_self_serve":"Sent to owners and billing members.","balance_email":"Owners and admins get an email when the API balance runs low. Each person can turn it off in <link>profile settings</link>."},"access_note":"Owners, admins and billing members can see Billing. <link>Manage roles in Members</link>","access_note_plain":"Owners, admins and billing members can see Billing."},"units":{"million_short":"{count}M","hours_short":"{count} h","per_million":"{rate} / 1M","per_hour":"{rate} / h","times":"{quantity} × {rate}"},"subscription":{"invoices_title":"Invoices","invoices_in_stripe":"Plan invoices and receipts are kept in Stripe.","open_history":"Open invoice history","contract_invoices":"Your contract's invoices are in <link>Developer → Billing → Invoices</link>."},"dev":{"amount_due":{"title":"Amount due","overdue":"Overdue · {count, plural, one {# invoice} other {# invoices}}","was_due":"{number} · was due {date}","pdf":"PDF","how_to_pay":"How to pay","next_due":"Next due {date} · {amount} · {number}","already_paid":"Already paid? Bank transfers can take a few business days to show here.","none":"No open invoices","commitment_line":"{period} commitment","due_line":"{number} · due {date}","due_line_period":"{number} · {period} commitment · due {date}","download":"Download invoice","prepaid_left":"Pay-as-you-go balance left: {amount} · used on your next invoices","pdf_for":"Download PDF for {number}"},"contract":{"title":"Contract","term_renews":"{range} · auto-renews","commitment":"Minimum commitment","per_month":"{amount} / month","pricing":"Pricing","payg":"Pay as you go","payg_discount":"Pay as you go · {percent}% off list prices","rollover":"Unused commitment","rollover_value":"Carries over {days, plural, one {# day} other {# days}}","extra":"Extra usage","extra_value":"{factor}× your rate","payment_terms":"Payment terms","net":"Net {days} · bank transfer","due_on_receipt":"Due on receipt · bank transfer","your_rates":"Your rates","contact":"Contact your account team"},"usage":{"title":"Usage","this_period":"This period","this_month":"This month","period":"{range} · {days, plural, one {# day left} other {# days left}}","details":"Usage details","alerts":"Set up usage alerts","used":"used","accrued":"accrued","group_tts":"Text to speech · UTF-8 bytes","group_asr":"Speech to text · audio hours","group_agent":"Agents","group_voice_design":"Voice design","strip":"This period · {range}","days_left":"{days, plural, one {# day left} other {# days left}}"},"credits":{"title":"Credits","carried_row":"Carried over ({range})","commitment_row":"Minimum commitment ({range})","monthly_row":"Monthly credits ({range})","prepaid_row":"Prepaid credits ({range})","extra_row":"Extra usage","used_of":"<b>{used}</b> used of {amount}","expires":"expires {date}","legend_used":"Used {amount}","legend_forecast":"Forecast ≈ {amount} by {date}","forecast":"Forecast","forecast_extra":"≈ {billed} extra usage (≈ {usage} × {factor}) · on the {date} invoice","forecast_extra_plain":"≈ {billed} extra usage · on the {date} invoice","period":"This period · {range} · {days, plural, one {# day left} other {# days left}}","used":"used","payg_note":"Your agreement is pay as you go, so there are no credits: usage is billed each month at your rates.","prepaid_title":"Pay-as-you-go balance","prepaid_origin":"From your pay-as-you-go balance before the contract","prepaid_line":"<b>Pay-as-you-go balance</b> {amount} · applied to {numbers}","applied_to":"Applied to invoice {number}","left":"Left","prepaid_note":"The balance is taken off your invoices until it's used up. It doesn't expire.","prepaid_note_expires":"The balance is taken off your invoices until it's used up or expires on {date}.","carried_title":"Carried over","from_period":"From period","amount":"Amount","expires_column":"Expires","past_title":"Past periods","period_column":"Period","commitment":"Minimum commitment","from_last_period":"From last period","used_column":"Used","carried_short":"Carried over","extra_billed":"Extra usage billed"},"pay":{"title":"Pay by bank transfer","amount":"Amount","reference":"Reference","currency":"Currency","account_name":"Account name","beneficiary_address":"Beneficiary address","bank":"Bank","routing":"Routing (ACH)","account_number":"Account number","swift":"SWIFT (wire)","remittance":"Send remittance advice to","copy_value":"Copy {label}","copied_value":"{label} copied","copied":"Bank details copied","copy":"Copy all","download_invoice":"Download invoice","open_payment_page":"Open payment page","payment_page_note":"Each invoice's payment page shows the bank details for that invoice. The invoice PDF has them too.","card":"Pay by card instead","never_by_email":"We never change bank details by email.","details_on_invoice":"The bank details are on the invoice PDF.","card_short":"Pay by card","open_payment_page_for":"Open the payment page for {number}","card_for":"Pay {number} by card"},"invoices":{"desc_commitment":"Commitment {range}","desc_extra":"Extra usage {range}","desc_usage":"Usage {range}","desc_credit":"{label} − {amount}","desc_top_up":"Credit top-up","desc_subscription":"Plan {range}","desc_final":"Final invoice","desc_charge":"Services {range}","status_paid_method":"Paid {date} · {method}","method_bank_transfer":"Bank transfer","method_ach":"ACH","method_wire":"Wire","method_card":"Card","status_paid_on":"Paid {date}","status_paid":"Paid","status_overdue":"Overdue","status_processing":"Payment received","status_partially_paid":"Partially paid","status_due_on":"Due {date}","status_due":"Due","line_commitment":"Minimum commitment","line_extra":"Extra usage","line_usage":"Usage","line_applied_payg":"Pay-as-you-go balance applied","line_applied_contract":"Contract credit applied","line_applied_prepaid":"Prepaid balance applied","line_adjustment":"Adjustment","line_prepaid_credits":"Prepaid credits","line_charge":"Services","line_subscription":"Plan","line_top_up":"Credit top-up","issued":"Issued {date}","due":"due {date}","bill_to":"Bill to {name}","po":"PO {number}","tax":"Tax","total":"Total","download_pdf":"Download PDF","usage_csv":"Usage (CSV)","filter_all":"All statuses","filter_due":"Due","filter_past_due":"Overdue","filter_paid":"Paid","download_all":"Download all PDFs","export_csv":"Export CSV","empty":"No invoices yet.","number":"Number","date":"Date","description":"Description","amount":"Amount","status":"Status","pdf":"PDF","download_error":"The invoice PDF could not be downloaded.","recent_title":"Recent invoices","all":"All invoices","filter_status":"Filter by status","filter_year":"Filter by year","pdf_for":"Download PDF for {number}","usage_csv_error":"The usage CSV could not be downloaded."},"rates":{"title":"Your rates","concurrency":"requests at a time · shared across all keys","model":"Model","all_models":"All models","rate":"Rate","extra_rate":"Extra usage rate","product_tts":"Text to speech","product_asr":"Speech to text","list_price":"List price","billed_separately":"Billed separately","per_audio_hour":"per audio hour","per_million_bytes":"per 1M UTF-8 bytes","bytes_hint":"1 byte per English letter, about 3 per Chinese or Japanese character."},"load_error":"Some billing details couldn't load.","retry":"Try again"},"payg":{"balance":{"title":"Balance","runway":"About {days, plural, one {# day} other {# days}} left at your recent usage","add":"Add credit"},"auto":{"title":"Auto top-up","on":"On","off":"Off","rule":"Add {amount} when below {threshold}","pitch":"Never run out mid-request","pitch_detail":"We add credit automatically when your balance runs low.","set_up":"Set up","edit":"Edit","turn_on":"Turn on"},"month":{"title":"This month","details":"Usage details","since":"spent since {date}","none":"No usage yet this month."},"limits":{"title":"Limits","rate_limits":"Rate limits","at_a_time":"requests at a time","progress":"{toppedUp} of {target} topped up.","reach_one":"Reach {spend} to get {limit} at a time.","reach_two":"Reach {spend} to get {limit} at a time, and {spend2} to get {limit2}.","next_top_up":"Your next top-up raises this to {limit} at a time.","top":"You're at the highest self-serve limit.","more":"Need more? <link>Talk to sales</link>"},"credits":{"no_expiry":"Purchased credit doesn't expire.","added_title":"Credit added","credit":"Credit","added":"Added","amount":"Amount","expires":"Expires","never":"Doesn't expire","empty":"No credit added yet.","types":{"purchased":"Credit top-up","signup_bonus":"Welcome credit","promotional":"Promotional credit","admin_grant":"Credit from Fish Audio"}}},"overdue_dot":"Overdue invoice","api_keys_locked":{"title":"API keys aren't part of the Billing role","body":"Billing members see usage, invoices and payment. An owner or admin can create and manage API keys."},"team_locked":{"title":"Team settings are managed by your team's owners and admins","body":"Members, plans and the team wallet live here. Ask an owner or admin to make a change."},"account_team":{"title":"Contact your account team","label":"How can your account team help?","placeholder":"For example: we'd like to review our commitment …","note":"Your account team replies by email.","send":"Send message","sent":"Message sent"}},"create-voice":{"title":"Create Voice","pick-a-method":"Pick a method","instant":{"title":"Instant Voice Clone","description":"Upload or record 10s of audio, clone it instantly.","badge-duration":"~1min","badge-tag":"Best for existing recordings"},"voice-design":{"title":"Voice Design","description":"Describe the voice in plain text.","badge-duration":"~15s","badge-tag":"Best for original characters"},"professional":{"title":"Professional Voice Clone","description":"Verified, real-person, studio-quality voice with optional commercial release & revenue share.","badge-duration":"1-2hrs","badge-tag":"Studio quality","slots-used":"{used}/{total} slots used"}},"customers":{"title":"Customer stories","facts":{"industry":"Industry","region":"Region","useCase":"Use case","audience":"Audience","deployment":"Deployment","status":"Status","migratedFrom":"Migrated from","voiceStack":"Voice stack","language":"Languages","readingTime":"Reading time"},"quotes":{"cases":{"dubbing":{"customer":{"speaker":{"name":"Tiange Ling","role":"CEO, Dubbing AI"},"quote":"Fish Audio delivers exceptional voice naturalness, rich emotional expression, and reliable low-latency TTS that perfectly underpin our core Voice Agent product experience."},"fish":{"speaker":{"name":"Rissa Cao","role":"CEO of Fish Audio"},"quote":"Voice agents are the use case where every voice AI tradeoff gets exposed. You can't be fast and flat, or expressive and slow. The agent has to sound real, in real time, in the user's language. Dubbing AI is building the version of this that's hardest: a voice that speaks for the user when they can't or don't want to speak themselves. The bar is identity-level realism, and that's the bar we built S2 Pro to clear."}},"heygen":{"customer":{"speaker":{"name":"John Wu","role":"Audio Engineering Manager for HeyGen"},"quote":"Fish is a fantastic voice model for maximizing voice similarity for very unique voices."},"fish":{"speaker":{"name":"Rissa Cao","role":"CEO of Fish Audio"},"quote":"HeyGen is where voice cloning quality matters most. Knowledge creators don't need a voice that sounds like them: they need a voice that sounds like them, accent and all. That bar, the bar that flattens most TTS models when they leave American English, is exactly what we built S2 Pro to clear. Watching HeyGen's users pick Fish three-to-one in side-by-side tests is the validation we built the model for."}},"pictoria":{"customer":{"speaker":{"name":"Hayato Akedo","role":"CEO, Pictoria"},"quote":"Fish Audio is consistently pushing the frontier of the high-quality voice generation expected in the Japanese market. We believe voices with this level of emotional nuance and character expression can only be created by a team that genuinely loves character-driven content. Thank you for building such an outstanding TTS technology."},"fish":{"speaker":{"name":"Shijia Liao","role":"Chief Scientist of Fish Audio"},"quote":"Japanese AI characters are the use case that demands the most from a voice model. Pronunciation accuracy isn't enough. The voice has to carry character: the specific emotional register, the moment of pause, the warmth that makes someone feel like a person rather than sound like one. Pictoria sets that bar higher than almost any team we work with, and being part of Picto VOICE pushes our model further every release."}}}},"about":{"cases":{"dubbing":{"title":"About Dubbing AI — 10 million users across voice creation, cloning, and changing.","body":{"first":{"before":"Dubbing AI is a local-end AI voice technology product offering one-stop voice creation, voice cloning, and real-time voice changing across desktop and mobile. The platform serves over 10 million users globally across three core audiences: ","emphasis":"content creators and streamers, individual entertainment users, and commercial users including advertising agencies and media companies.","after":""},"second":"Dubbing AI is the voice layer for gamers, streamers, and brand creators who need to shape, change, or clone voice in real time across the platforms they live on."}},"heygen":{"title":"About HeyGen — AI video for knowledge creators.","body":{"first":"HeyGen is the leading AI video platform for knowledge-based creators — the educators, course builders, business communicators, and content creators who turn expertise into video at scale. The platform lets creators produce professional AI-generated video without studio equipment, professional voice talent, or weeks of production time.","second":"Voice sits at the center of every video HeyGen produces. For a knowledge creator whose audience already knows their voice, the AI voice has to be their voice — not a generic narrator, not a close approximation, but the actual voice with the actual accent that audiences recognize. That bar is the bar voice cloning for AI video has to clear."}},"pictoria":{"title":"About Pictoria — AI characters and original IP for the Japanese market.","body":{"first":{"before":"Pictoria is a Japanese AI character company building both AI character projects with voice talent and original AI character IPs developed in-house. At the center of every Pictoria production sits ","emphasis":"Picto VOICE ","after":"— an internal voice system that combines multiple Japanese TTS technologies and selects the right one per character."},"second":"Voice isn't a feature of the AI character experience. For Pictoria, voice is the AI character experience."}}}},"dubbingStory":{"voiceAgent":{"title":"Introducing the Voice Agent — an agent that speaks for you.","body":{"first":"Dubbing AI's newest feature — the Voice Agent — extends the platform's voice toolkit from voice changing to voice speaking. Instead of changing the user's own voice, the Voice Agent speaks for the user.","second":"The use cases are immediate and human. When a gamer is in the middle of an argument and doesn't want to escalate, the Voice Agent can speak for them. When someone is too tired to make a phone call reservation, the Voice Agent makes it. When someone is shy, occupied with work, or temporarily unavailable to communicate, the Voice Agent enables them to interact with others in real time.","third":{"before":"It's an extension of Dubbing AI's product mission across every feature on the platform — voice changing, accent refinement, real-time translation, and now Voice Agent: ","emphasis":"help people communicate more smoothly and express themselves more effectively. ","after":"Voice Agent stretches that mission into the situations where speaking for oneself isn't possible or isn't ideal."},"fourth":"For the Voice Agent to work, the AI's voice has to feel real. The hearing party — the gaming opponent, the restaurant host, the person on the other end of the line — should feel like they're talking to a real person, not an obviously synthesized voice. That's where Fish Audio came in."}},"challenge":{"title":"The challenge of real-time TTS for voice agents: latency vs naturalness.","body":{"first":{"before":"Voice agents make voice AI's hardest tradeoff visible. Real-time TTS for voice agents has to balance latency against naturalness and emotion, and most providers force a choice. ","emphasis":"Low-latency models tend to sound flat and machine-like; expressive models tend to introduce processing delays that break conversational flow.","after":""},"second":"For the Dubbing AI Voice Agent, both factors are equally critical. A Voice Agent that pauses noticeably between user input and spoken response breaks the illusion that the hearing party is talking to a real person. A Voice Agent that responds instantly but sounds robotic breaks the same illusion in a different direction. The deciding factor isn't either alone — it's the combination."}},"evaluation":{"title":"Why Dubbing AI evaluated the TTS market for voice agent  infrastructure.","body":{"first":{"before":"Dubbing AI evaluated multiple TTS audio workflows before settling on Fish Audio. The evaluation criteria mapped directly to the structural demands of TTS for voice agents: ","emphasis":"naturalness, emotional depth, voice cloning quality, low latency, and multilingual support ","after":"— five capabilities most providers deliver on two or three of, but rarely all five."},"second":"For a Voice Agent serving 10 million users across gaming, entertainment, and commercial use cases, a model that nailed naturalness but failed on multilingual was disqualified. A model that nailed latency but flattened emotion was disqualified. The Voice Agent use case forced an all-five-or-nothing evaluation."}},"criteria":{"title":"Why Fish Audio won the Voice Agent evaluation — all five criteria.","intro":"Fish Audio stood out for the combination Dubbing AI couldn't find anywhere else: all five capabilities at the level a real-time voice agent demands. The single-criterion winners every other provider produced disqualified them from the Voice Agent use case. Fish was the only model that earned its place across every evaluation dimension.","items":{"naturalness":{"title":"Naturalness","description":"Voice output that sounds like a real person speaking — not a synthesizer reading."},"emotion":{"title":"Emotional depth","description":"Emotional register that carries across an utterance — the layer most low-latency models flatten."},"cloning":{"title":"Voice cloning quality","description":"Cloned voices that maintain identity across content, important across Dubbing AI's creator and entertainment audiences."},"latency":{"title":"Low latency","description":"Real-time response without noticeable processing delay — the table-stakes constraint for any conversational agent."},"multilingual":{"title":"Multilingual support","description":"80+ languages with native code-switching, required for a Voice Agent serving a global user base."}}},"usage":{"title":"How Dubbing AI uses Fish Audio for real-time voice agent TTS.","body":{"first":"Dubbing AI deploys Fish Audio via the cloud API for real-time text-to-speech generation inside the Voice Agent feature. As users compose the text they want the Voice Agent to speak, Fish converts it to natural, emotionally expressive voice output in real time — across the languages and accents Dubbing AI's global user base requires.","second":{"before":"The Voice Agent runs cross-platform on both desktop and mobile, matching the rest of the Dubbing AI platform's coverage. ","emphasis":"The Voice Agent is preparing for beta release to the platform's gamer audiences first ","after":"— the user segment with the strongest demand for the use cases Voice Agent was built for. Internal testing results have been very positive heading into beta."}}},"outcomes":{"title":"Outcomes from the integration.","products":"Products used: Fish Audio S2 Pro · Text-to-Speech (cloud API)","cards":{"users":"10M+ users on Dubbing AI's broader platform across gaming, streaming, and commercial creators.","criteria":"5 of 5 evaluation criteria met by Fish Audio: naturalness, emotional depth, cloning quality, low latency, multilingual.","beta":"Voice Agent beta launching to gamer audiences first, with positive internal testing results.","deployment":"Cross-platform deployment on desktop and mobile, matching the full Dubbing AI surface."}}},"heygenStory":{"problem":{"title":"The voice cloning problem with ElevenLabs for non-American English accents.","body":{"first":{"before":"Before evaluating Fish Audio, HeyGen was using ElevenLabs for the TTS layer of its AI video generation pipeline. The platform worked. The voices were intelligible. But one structural problem kept surfacing in user feedback: ","emphasis":"voice similarity issues, especially for creators with non-American English accents.","after":""},"second":"Knowledge creators speak with the accents they have. Australian creators sound Australian. Indian creators sound Indian. British, South African, Singaporean, Irish, Scottish, Filipino, Caribbean — the accent landscape of global English isn't an edge case for HeyGen, it's the shape of the international creator base.","third":"A TTS that produces strong American English but flattens every other accent into something closer to neutral American breaks the core promise of voice cloning for AI video: that the AI video sounds like you. HeyGen's users with non-American English accents were complaining about accent maintenance. The voice clones weren't preserving the accent identity creators expected."}},"evaluation":{"title":"Why HeyGen evaluated the entire TTS market for accent preservation.","body":{"first":"HeyGen evaluated the entire TTS market to solve the non-American English accent problem. TTS for non-American English accents wasn't a feature comparison — it was an existential evaluation criterion for the platform's international creator base.","second":{"before":"Across providers tested, the gap between American English voice cloning quality and non-American English voice cloning quality was consistent — and consistent in the wrong direction. Most TTS models were trained American-English-first, then adapted for other accents. The adaptation showed up as ","emphasis":"flattened prosody, neutralized vowels, and a distinct loss of accent identity ","after":"in cloned voices."}}},"selection":{"title":"Why HeyGen chose Fish Audio for voice cloning quality.","body":{"first":{"before":"Fish Audio earned HeyGen's selection on one criterion above all others: ","emphasis":"voice cloning quality for unique voices, particularly voices with non-American English accents.","after":" The Fish S2 Pro model preserves the accent identity of the source voice rather than normalizing toward an American English baseline — the specific failure mode HeyGen's testing had surfaced across other providers."},"second":{"before":"For HeyGen, this isn't a technical detail. It's the difference between a knowledge creator's audience hearing the creator they recognize and hearing a synthesized stranger. ","emphasis":"Voice cloning quality,","after":" not latency or cost, was the deciding factor."}}},"usage":{"title":"How HeyGen uses the Fish Audio cloud API for AI video voice generation.","body":"HeyGen deploys Fish Audio via the cloud API, generating TTS for the videos HeyGen's customers produce on the platform. The integration is production-scale: every video that a knowledge creator publishes through HeyGen using a Fish-powered voice runs through Fish's S2 Pro model."},"feedback":{"title":"What knowledge creators are saying about voice quality.","intro":"The most telling user signal isn't praise — it's silence on what was previously the loudest complaint. Three signals from HeyGen's creator base since the migration:","items":{"selection":{"title":"The 3:1 selection rate","description":"In side-by-side voice tests on HeyGen, creators pick Fish for their own videos three times more often than alternatives."},"accent":{"title":"Emotional depth Accent complaints ceased","description":"Creators with non-American English accents have stopped complaining about accent maintenance — the loudest pre-migration ticket."},"quality":{"title":"Positive voice quality feedback","description":"Voice cloning quality across HeyGen's international knowledge creator base has caught up to what audiences already know."}}},"outcomes":{"title":"Outcomes from the integration.","products":"Products used: Fish Audio S2 Pro · Text-to-Speech (cloud API)","cards":{"selection":"3:1 user selection rate for Fish Audio over alternative TTS providers in side-by-side comparisons on HeyGen.","complaints":"Non-American English accent complaints ceased across HeyGen's international creator base.","evaluation":"Entire TTS market evaluated before selecting Fish Audio — accent preservation was the deciding factor.","migration":"Migrated from ElevenLabs to Fish Audio for voice cloning quality."}}},"pictoriaStory":{"challenge":{"title":"The challenge of Japanese AI character voice: prosody, emotion, and consistency.","body":{"first":"Japanese AI character voice has a bar most TTS models can't cross. Naturalness and pronunciation accuracy are table stakes; the deciding factors are emotional expressiveness across a single utterance, accurate Japanese prosody and pitch-accent, and voice consistency across long-form character content.","second":{"before":"Generic TTS readouts pass benchmark tests but break the suspension of disbelief that AI character experiences depend on. For Pictoria, the two persistent gaps in available Japanese TTS for AI characters were ","emphasis":"emotional expressiveness and natural Japanese prosody at the character level ","after":"— both essential for the company's growing roster of original AI character IPs."}}},"stack":{"title":"Inside Picto VOICE: Pictoria's multi-vendor Japanese TTS stack.","body":{"first":"Rather than commit the entire character voice surface to a single provider, Pictoria built Picto VOICE as an internal orchestration layer that integrates multiple Japanese voice AI technologies. Each character and use case selects the right voice generation component from the stack.","second":"This architecture protects Pictoria against vendor lock-in, lets the team evaluate new Japanese voice AI models continuously, and ensures the best technology — for that character, for that scene, for that emotional register — is always the one in production. Fish Audio earned a place in Picto VOICE alongside the other voice technologies the team integrates."}},"selection":{"title":"Why Fish Audio earned a place in Picto VOICE.","body":{"intro":"Pictoria evaluated Fish Audio as one of several voice generation technologies under consideration for Picto VOICE. Three things drew the team in:","expressiveRange":{"title":"Expressive range of character-style voices ","description":"— particularly the ability to carry emotional nuance across a single utterance. The move that separates a character voice from a narrator."},"japaneseQuality":{"title":"Expressive Japanese TTS quality","description":" at the level of prosody and intonation, not just phoneme accuracy."},"flexibility":{"title":"Flexibility in character voice design ","description":"— the ability to shape voices that fit a specific character brief rather than picking from a fixed library."},"partnership":"What stood out beyond the model itself was the responsiveness of the Fish Audio team to Japanese AI character voice needs — the kind of partnership that turns a vendor relationship into a working collaboration with the research team behind the model."}},"usage":{"title":"How Pictoria uses Fish Audio for Japanese AI character voice production.","body":{"first":"Inside Picto VOICE, Fish Audio is used particularly for AI character use cases where strong character-level expressiveness is the deciding factor. A representative deployment is Pictoria's AI character voice production pipeline for original Pictoria AI character IPs — the in-house IPs the company develops and operates on its own publication channels.","second":"Integrating Fish Audio into Picto VOICE produced strong impact and positive reception across these AI character projects."}},"reception":{"title":"Audience reception of Japanese AI character voices powered by Fish Audio.","intro":"User reception of the Japanese AI character voices produced through Picto VOICE has been positive across three consistent themes:","items":{"selection":{"title":"Naturalness beyond the TTS register","description":"Japanese voices that sound like Japanese voices, not the synthetic flatness audiences have come to expect from generic TTS."},"accent":{"title":"Emotional expressiveness that brings characters to life","description":"Characters with real emotional register, not lines being read aloud. The deciding difference for character-driven content."},"quality":{"title":"Consistency across long-form character content","description":"The same voice, the same character, holding together across hours of content rather than drifting between sessions."}}},"outcomes":{"title":"Outcomes from the integration.","products":"Products used: Fish Audio S2 Pro · Text-to-Speech","cards":{"improvements":"Meaningful improvements in Japanese response speed and emotional expressiveness within Picto VOICE.","reception":"Strong positive reception across original Pictoria AI character IPs.","collaboration":"Active collaboration on the Japanese character voice frontier; quantitative metrics held confidential per IP agreements."}}},"sharedClosing":{"cta":{"primary":"Talk to sales","secondary":"See Fish for Enterprise"},"cases":{"dubbing":{"next":{"title":"What's next for Dubbing AI and Fish Audio.","description":"As the Voice Agent moves from beta to general availability across Dubbing AI's 10 million users, Fish Audio remains the real-time TTS layer powering the experience. Future expansions of the Voice Agent (into more languages, more situations, and more cross-platform contexts) ship alongside Fish's continuing model improvements."},"cta":{"title":{"before":"Building a ","emphasis":"voice agent","after":"？"},"description":"Talk to our team about real-time TTS that balances naturalness, emotional depth, latency, and multilingual support — the five-way combination voice agents demand."}},"heygen":{"next":{"title":"What's next for HeyGen and Fish Audio.","description":"As HeyGen continues to expand its global knowledge creator base, Fish Audio remains the voice quality layer behind the AI video. New accent expansions, new languages, and new voice cloning capabilities ship together as HeyGen scales internationally."},"cta":{"title":{"before":"Building ","emphasis":"voice cloning","after":" products?"},"description":"Talk to our team about voice similarity for unique voices, non-American English accent preservation, and production-scale cloud API integration."}},"pictoria":{"next":{"title":"What's next for Japanese AI character voice with Pictoria and Fish Audio.","description":"As Pictoria continues to expand its in-house AI character IPs and the Picto VOICE stack evolves, Fish Audio remains a partner in the Japanese character voice surface. The Japanese AI character market is growing, expectations are rising release-by-release, and the bar for character voice quality continues to lift with every new title."},"faq":{"title":"Frequently asked questions.","items":{"good":{"question":"What makes a good TTS for Japanese AI characters?","answer":"Three things separate Japanese character TTS from generic Japanese TTS: emotional expressiveness across a single utterance, accurate Japanese prosody and pitch-accent rather than phoneme-only accuracy, and voice consistency across long-form character content. Pictoria's Picto VOICE selects voice technologies on these criteria for each character, with Fish Audio earning a place for character-level expressiveness."},"prosody":{"question":"Can Fish Audio handle Japanese prosody and emotional expressiveness?","answer":"Fish Audio's S2 Pro model is trained with native Japanese prioritization and supports open-domain emotion control: natural-language emotion direction at the per-utterance level, which is the layer Pictoria identified as the deciding factor for character voices."},"stack":{"question":"Does Fish Audio support multi-vendor voice stacks?","answer":"Yes. Fish is designed to integrate into customer-built orchestration layers like Pictoria's Picto VOICE, alongside other voice technologies. API integration is the standard path; on-prem deployment is available for regulated customers."},"languages":{"question":"What other Asian languages does Fish Audio support?","answer":"Beyond Japanese, Fish supports Mandarin, Cantonese, Korean, and code-switching across English, Mandarin, Japanese, Spanish, and Arabic among 80+ languages."},"compare":{"question":"How does Fish Audio compare to ElevenLabs for Japanese character voices?","answer":"Both providers offer Japanese support. Fish Audio prioritizes native Japanese training and offers open-domain natural-language emotion control rather than fixed emotion presets: the difference Pictoria's team called out during evaluation."}}},"cta":{"title":{"before":"Building voice products in ","emphasis":"Japanese?","after":""},"description":"Talk to our team about character voice, prosody control, and integration into multi-vendor stacks like Picto VOICE. We come prepared."}}}},"cases":{"dubbing":{"title":"Real-time Voice Agent TTS for 10 million users.","description":"How Dubbing AI built its Voice Agent on Fish Audio — the only TTS that delivered all five capabilities a real-time agent demands: naturalness, emotional depth, voice cloning quality, low latency, and multilingual support.","facts":{"industry":"Consumer · Gaming · Entertainment","region":"Global","useCase":"Voice Agent (real-time TTS)","audience":"10M+ users","deployment":"Cloud API · desktop & mobile","status":"Voice Agent in beta"},"metric":{"value":"10M","suffix":"+","description":"Across gaming, streaming, and entertainment — the scale at which a voice agent has to feel real in real time, in the user's language."}},"heygen":{"title":"Voice cloning for AI video, 3-to-1 over alternatives.","description":"How HeyGen migrated from ElevenLabs to Fish Audio to solve voice similarity issues with non-American English accents — and watched users pick Fish three-to-one in side-by-side comparisons.","facts":{"industry":"AI Video / Creator Tools","region":"Global","useCase":"Voice cloning for AI video","migratedFrom":"ElevenLabs","deployment":"Cloud API","readingTime":"4 min"},"metric":{"value":"3:1","suffix":"×","description":"Selection rate for Fish Audio over alternative TTS providers in side-by-side user comparisons on HeyGen."}},"pictoria":{"title":"Japanese AI character voice for Picto VOICE.","description":"How Pictoria integrates Fish Audio into Picto VOICE — their internal multi-vendor stack — for character-level expressiveness across Japanese AI character productions.","facts":{"industry":"Media & Entertainment","region":"Japan","useCase":"AI character voice production","voiceStack":"Component in Picto VOICE","language":"Japanese","readingTime":"3 min"},"metric":{"value":"0","suffix":"Drift","description":"Across hours of long-form character content — the zero-drift audio reliability required to maintain the suspension of disbelief for Japanese AI character IPs."}}},"detail":{"products":"Products used","ready":"Ready to get started?","contact":"Contact Sales","more":"Read more customer stories","read":"Read the case study","ctaTitle":"Ready when you are","ttsApi":"Text-to-Speech API","voiceCloning":"Voice Cloning","heygen":{"title":"HeyGen creators choose Fish Audio three-to-one for voice cloning","description":"HeyGen is the AI video platform for knowledge creators, used by educators, course builders, and business communicators to produce professional video without a studio or voice talent. The company moved its voice layer to Fish Audio to preserve the accents of its international creator base.","million":"million","arr":"ARR","users":"users","countries":"countries","used":"used","preference":"preference for Fish Audio in voice tests","zero":"Zero","issues":"accent-similarity issues since migration","role":"Audio Engineering Manager, HeyGen","sections":{"challenge":{"title":"What happens when a voice leaves American English","paragraphs":["HeyGen's creator base is international. Australian, Indian, British, South African, Singaporean, Irish, Scottish, Filipino, and Caribbean creators all speak English, and all sound different doing it.","The text-to-speech layer <heygen>HeyGen</heygen> had in production produced accurate American English and pulled everything else toward it. Prosody flattened. Vowels neutralized. The accent that made a creator recognizable to their own audience came back sounding close to neutral American. The pattern held across most of the market, and for a reason: models trained American-English-first and adapted afterward tend to perform well on American English and degrade predictably on everything else."]},"feedback":{"title":"The loudest ticket in the queue","paragraphs":["Creators noticed it right away. Accent similarity became a recurring complaint: their voices no longer sounded like themselves. More importantly, the problem was concentrated in the exact audience HeyGen was trying to grow. Global creators needed their voices to travel across languages and accents without losing the identity that made them recognizable in the first place."]},"evaluation":{"title":"HeyGen tested the market on one question","paragraphs":["The evaluation was not a feature comparison. HeyGen wasn’t asking which model had the lowest latency, the most expressive delivery, or the longest list of supported languages. They reduced the evaluation to a much simpler question: when a creator cloned their voice, did it still sound like them?","More specifically, HeyGen tested whether the model could preserve the accent that made a voice recognizable in the first place. Could a British creator keep their British accent? Could a voice move between languages without defaulting to an Americanized version of itself?","That became the bar. A voice could be fast, expressive, and technically impressive, but if the accent changed, the voice failed the test."]},"selection":{"title":"Similarity won over latency and cost","paragraphs":["HeyGen selected Fish Audio because it was the strongest match against that criterion. Speed and price mattered, but neither was decisive. Once the models cleared the performance bar, the differentiator was simple: which one could deliver the most faithful voice across different accents?","Fish Audio stood out because it preserved the characteristics of the source voice rather than smoothing them toward a common baseline. That gave HeyGen the consistency it needed to expand its voice product to more creators and markets without asking creators to compromise on how they sounded.","The result was more than a better voice model. It removed a barrier to using HeyGen across languages and gave the company a stronger foundation for its global creator strategy."]},"production":{"title":"Full production volume from the first week","paragraphs":["HeyGen deployed S2 Pro through the Fish Audio cloud API. Every video a creator publishes on a Fish-powered voice runs through the model. There was no need for a staged rollout or pilot cohort. The integration went to production scale immediately."]},"outcomes":{"title":"The result: voices that stay themselves","paragraphs":["Since migrating to Fish Audio, HeyGen has had zero accent-similarity issues in production. In voice tests, creators chose Fish Audio 3:1 over the alternative.","Today, Fish Audio powers voice experiences for HeyGen’s global creator base, helping every voice sound unmistakably like its creator, wherever they speak."]}}},"summaries":{"pictoria":"Powering character-level expressiveness for <strong>Japanese AI characters</strong> inside Picto VOICE.","dubbing":"Real-time Voice Agent TTS for <strong>10M+ users</strong> — naturalness, emotion, latency, multilingual.","heygen":"Selected 3-to-1 over alternatives for voice cloning with non-American English accents."},"dubbing":{"title":"Dubbing AI builds a real-time Voice Agent for 10 million users with Fish Audio","description":"Dubbing AI lets gamers, streamers, and creators clone, change, and translate voices. With Voice Agent, the company took that experience a step further, letting AI speak for users in real time. To make it work, Dubbing AI needed TTS that was natural and expressive without sacrificing speed.","voices":"AI voices","languages":"languages supported","sections":{"voiceAgent":{"title":"Dubbing AI wanted Voice Agent to feel like a person, not a voice assistant","paragraphs":["Dubbing AI had already built a platform around voice. Its users could change their voices in real time, clone them, refine accents, and translate between languages. Voice Agent extended that product in a new direction: the AI could now speak on the user's behalf.","The use cases were immediate. A gamer could have the agent respond during a conversation. Someone who was too busy to make a phone call could have the agent do it for them. Someone who was temporarily unavailable could still communicate in real time.","But the experience only worked if the voice sounded real.","A noticeable pause would make the interaction feel artificial. A flat or robotic response would do the same. For Dubbing AI, real-time TTS wasn't simply a matter of generating speech quickly. The voice needed to sound natural, carry emotion, preserve the speaker's identity, and work across the languages its global users needed."]},"evaluation":{"title":"The fastest model wasn't enough if it sounded flat","paragraphs":["Dubbing AI evaluated multiple TTS providers against the demands of the Voice Agent experience. The team narrowed the decision to five criteria: naturalness, emotional depth, voice cloning quality, latency, and multilingual support.","The evaluation created a difficult tradeoff. Models that performed well on latency could lose emotional expression. Models that sounded expressive could introduce delays that disrupted conversation. Others performed well in one language but fell short when users switched languages.","For a product serving more than 10 million users across gaming, entertainment, and commercial use cases, being excellent at only one part of the experience wasn't enough.","Dubbing AI needed a model that could clear every bar at once."]},"criteria":{"title":"Fish Audio was the only model to meet all five requirements","paragraphs":["Fish Audio stood out because it delivered the combination Dubbing AI needed for Voice Agent: natural speech, emotional depth, strong voice cloning, low latency, and multilingual support.","The distinction mattered because the criteria were interconnected. Naturalness made the voice believable. Emotional expression made it feel human. Voice cloning preserved the identity of the speaker. Low latency kept the conversation moving. Multilingual support allowed the same experience to work across Dubbing AI's global user base.","Fish Audio supported more than 80 languages with native code-switching, while maintaining the responsiveness required for real-time interactions."]},"outcomes":{"title":"Fish Audio gives Dubbing AI room to scale Voice Agent","paragraphs":["Voice Agent is now moving from a technical possibility to a product Dubbing AI can bring to its global user base. With Fish Audio handling real-time TTS, Dubbing AI can focus on building new ways for its users to communicate while maintaining the speed, expression, and voice quality the experience requires.","The result is a voice agent that doesn't just respond. It sounds like someone you want to keep talking to."]}},"capabilities":{"naturalness":"Speech that sounds human, not synthesized","emotion":"Expression that carries through every nuance","cloning":"Cloned voices that preserve the speaker’s identity","latency":"Real-time responses without noticeable delay","multilingual":"80+ languages with native code-switching"},"cloningTitle":"Voice cloning"},"pictoria":{"title":"Pictoria adds Fish Audio to its voice stack for more expressive Japanese AI characters","description":"Pictoria builds AI characters and original character IP for the Japanese market. Its Picto VOICE platform combines multiple voice technologies, giving the team flexibility to choose the right model for each character and use case.","useCase":"AI Characters","metrics":{"subscribers":"subscribers for most popular AI YouTuber","daily":"Daily","livestreams":"AI character livestreams with real-time audience interaction","hours":"Hours","content":"of long-form character content where voice consistency matters"},"quote":"Fish Audio is consistently pushing the frontier of the high-quality voice generation expected in the Japanese market. We believe voices with this level of emotional nuance and character expression can only be created by a team that genuinely loves character-driven content.","sections":{"challenge":{"title":"Natural Japanese TTS wasn't enough for Pictoria's AI characters","paragraphs":["For Pictoria, the voice is part of the character itself. A model can produce accurate, natural Japanese and still fall short once a character needs to sound excited, emotional, playful, or distinct.","The challenge becomes more apparent in longer-form content. Small differences in pitch, pacing, and emotional delivery can change how a character comes across, making consistency just as important as naturalness.","Pictoria needed a way to give each character a voice that could hold its personality across different interactions and content."]},"stack":{"title":"Pictoria built Picto VOICE to choose the right model for every character","paragraphs":["Rather than rely on a single TTS provider, Pictoria built Picto VOICE as a multi-model voice system. The team could evaluate different models and match each one to the requirements of a particular character or production.","That approach raised the bar for every model in the stack. Fish Audio needed to offer something meaningfully different, not simply another capable Japanese TTS option."]},"selection":{"title":"Fish Audio stood out where character expression was a priority","paragraphs":["Pictoria evaluated Fish Audio alongside other voice generation technologies and found three areas where it stood out: expressive character voices, Japanese prosody and intonation, and flexibility in character voice design.","The difference was particularly apparent in how a voice carried emotion across a single utterance. Instead of simply reading a line, the model could give a character a distinct emotional register and personality.","Fish Audio also worked closely with Pictoria's team on the specific demands of Japanese AI character voice, turning the integration into an ongoing collaboration rather than a simple vendor relationship."]},"usage":{"title":"Fish Audio powers the characters where expression matters most","paragraphs":["Within Picto VOICE, Pictoria uses Fish Audio for AI character use cases where character-level expression is the deciding factor. One key application is the voice production pipeline for Pictoria's original AI character IP, developed and operated through its own publishing channels.","The integration has delivered positive reception across these projects, with users consistently responding to three qualities: natural Japanese voices, stronger emotional expression, and consistency across long-form character content."]},"outcomes":{"title":"The result: stronger character voices, from production to audience","paragraphs":["After integrating Fish Audio into Picto VOICE, Pictoria saw meaningful improvements in Japanese response speed and emotional expressiveness across its AI character projects. The voices also received strong positive feedback across Pictoria’s original character IP, particularly for sounding natural, carrying emotion, and staying consistent across hours of content.","That gives Pictoria a practical advantage in production: its team can match each character with the voice technology that best fits the experience, while using Fish Audio when expressive Japanese performance is the priority."]}}},"befreed":{"title":"BeFreed builds AI-powered audio lessons that sound like real conversations","description":"BeFreed is an AI-powered learning platform that turns books, research papers, expert talks, and podcasts into personalized audio lessons. With more than 1M+ learners, the company is building a learning experience designed to fit around everyday life, from commutes to workouts to household chores.","tts":"Text-to-Speech","cloud":"Cloud API","metrics":{"learners":"learners worldwide","episodes":"long-form conversational episodes","languages":"languages shipped","format":"in BeFreed's conversational AI podcast format","minutes":"min","voices":"voices"},"quote":{"quote":"Audio is the heart of how our users learn, so voice quality is non-negotiable. Fish Audio gives us natural, emotionally expressive, multi-voice audio at the scale and cost we need to make every piece of content listenable.","speaker":{"name":"Jisong Liu","role":"Founder, BeFreed"}},"sections":{"introduction":{"title":"BeFreed turns books into conversations worth listening to","paragraphs":["BeFreed takes dense source material and turns it into short, personalized lessons. Learners can choose the voice, tone, and pace, then listen wherever they are. The experience is built around audio rather than the screen, making learning possible during the parts of the day when reading is not.","The company's standout format takes that idea further. Instead of simply narrating a book or paper, BeFreed turns it into an AI podcast: a back-and-forth between two distinct voices discussing the material. Each episode can run 10, 20, or 40 minutes, giving learners something closer to a podcast they commissioned for themselves.","That format made voice a core part of the product. The two speakers had to sound like distinct people having a conversation, not two voices reading generated text."]},"challenge":{"title":"A 40-minute conversation is a different TTS problem","paragraphs":["A voice that sounds good for a sentence does not necessarily hold up for an entire episode. Over 20 or 40 minutes, small problems become more noticeable: flat delivery, repetitive expression, or two voices that sound like they are speaking past each other.","BeFreed also needed personalization to work across the experience. Learners choose the voices they want to spend an entire episode with, so the platform needed a broad range of distinct voices rather than a single default narrator.","And because BeFreed ships in more than 10 languages, the same experience had to work across markets. Naturalness, expression, voice variety, and language coverage all had to hold up together."]},"selection":{"title":"BeFreed needed voices that could perform, not just narrate","paragraphs":["During its evaluation, BeFreed focused on how voices performed across the type of long-form conversational content at the center of its product.","Fish Audio stood out for its naturalness and emotional range over longer passages. Two voices could maintain distinct identities while delivering a more expressive back-and-forth, giving BeFreed the foundation for its AI podcast format.","The breadth of voices also mattered. Because personalization is built into the product, BeFreed could give learners more choice over who they listen to rather than designing the experience around a single voice."]},"integration":{"title":"Fish Audio gives BeFreed a voice layer built for long-form audio","paragraphs":["BeFreed integrated Fish Audio's text-to-speech API directly into its content pipeline. When a learner selects a voice and tone, BeFreed generates the corresponding audio as part of the in-app experience.","The same voice infrastructure supports both monologue lessons and two-voice conversational episodes. That lets BeFreed build different learning formats without creating a separate voice production workflow for each one.","The economics matter as well. BeFreed can generate audio on demand rather than manually producing every lesson, making it practical to turn a large library of source material into personalized listening experiences."]},"outcomes":{"title":"One voice layer across a global learning platform","paragraphs":["BeFreed now ships AI-personalized audio lessons in more than 10 languages to a global community of more than 1,000,000 learners.","Fish Audio's broader language coverage gives the team room to extend that experience without rebuilding its voice infrastructure for every market. As BeFreed adds formats and expands its interactive audio experience, the same voice layer can support the product underneath.","The architecture keeps voice inside the product rather than treating it as a separate content-production workflow."]},"future":{"title":"Building a learning experience that talks back","paragraphs":["BeFreed is extending personalized audio beyond generated lessons into interactive experiences where learners can talk to the lesson in real time.","That moves the product from listening to interacting. The same principle behind its AI podcasts continues into these experiences: learning can adapt to the person, the moment, and the way they want to engage.","Fish Audio provides the voice layer underneath that evolution, giving BeFreed a foundation for audio experiences that can become more personalized, conversational, and expressive over time."]}}},"reverie":{"title":"Reverie AI builds entertainment that talks back with Fish Audio","description":"Reverie AI builds real-time interaction models that turn video into responsive worlds. Its AI can interpret what users say, choose, tap, or do, then change the experience in response.\n\nFor Reverie, that means characters cannot rely on pre-recorded dialogue. Fish Audio provides the voice layer, streaming speech as the world responds and giving Reverie control over how characters speak, react, and stay recognizable across every branch of an experience.","tts":"Text-to-Speech","streaming":"Streaming API","metrics":{"languages":"languages on the production model","styles":"documented expressions and styles","reference":"reference audio to create a reusable voice model","seconds":"seconds"},"sections":{"introduction":{"title":"Reverie AI builds entertainment that responds to the user","paragraphs":["Traditional entertainment follows a fixed timeline. The script is written, the performance is recorded, and every viewer sees the same sequence.","Reverie AI is building something different. Its interaction models can take in text, voice, video, touch, gestures, choices, and on-screen actions, then determine what happens next. A user can talk to a character, influence a scene, change an ending, or open a branch that did not exist a moment earlier.","That means the experience is no longer fully defined before the user enters it. Characters and scenes have to respond to what happens in the moment."]},"challenge":{"title":"A responsive world cannot wait for the voiceover","paragraphs":["In a fixed piece of content, the voice can be recorded after the script is finished. In an interactive world, the next line may not exist until the user does something.","Reverie needed voice that could begin before the full response had finished generating, follow direction within a line, and maintain the same character across scenes and branches. It also needed the economics to work when every interaction could generate new speech.","The goal was not simply to make a generated voice sound human. It was to make voice behave like part of a live world."]},"selection":{"title":"Reverie AI wanted control over the character, not a finished voice experience","paragraphs":["Reverie evaluated voice providers against four requirements: fast streaming, expressive control, persistent character identity, and multilingual support. The team needed to direct a character in the moment rather than choose a single mood for an entire response.","Fish Audio met those requirements in one voice layer. Speech streams over WebSocket as it generates, expression can be directed inline with natural language, and reusable voice models allow characters to maintain a consistent vocal identity across an experience."]},"integration":{"title":"Fish Audio lets characters respond in the moment","paragraphs":["With Fish Audio, Reverie can start streaming speech before the full response has finished generating. That keeps the gap between a user's action and a character's reaction short enough for the interaction to feel continuous.","The team can direct individual moments inside a line, using cues for expressions such as whispering, laughing, or excitement. Rather than applying one voice setting to an entire scene, Reverie can shape the performance around what is happening.","Reusable voice models keep those characters recognizable as the experience moves between scenes, sessions, and branches."]},"global":{"title":"One voice layer for worlds that can go anywhere","paragraphs":["Reverie's experiences are designed to reach global audiences, so voice needs to work across languages without creating a separate production pipeline for every market.","Fish Audio supports 83 languages on its current production model, allowing Reverie to carry its characters into new markets while keeping the voice layer within the same architecture.","The economics matter too. Fish Audio's pay-as-you-go API is priced at $15 per million UTF-8 bytes, giving Reverie voice infrastructure that can scale with usage as more interactions generate speech."]},"outcomes":{"title":"Voice becomes part of the world","paragraphs":["For Reverie, the shift is from voice as playback to voice as participation.","Characters can react in the moment instead of delivering pre-recorded lines. Their voices can change with the scene while maintaining a recognizable identity. The same voice infrastructure can support the different formats Reverie is building, from roleplay companions and virtual pets to interactive adventures and games.","Fish Audio gave Reverie the voice layer to make those experiences responsive without turning voice production into a separate pipeline."]}}},"finalRound":{"title":"Final Round AI powers 25-min AI interviews with Fish Audio","description":"Final Round AI is an AI-powered career platform that helps candidates prepare for interviews. For its mock interviews, Final Round wanted to create an experience that felt as close to a real interview as possible. Fish Audio provided the voice layer, giving the team control over how its interviewer sounds while reducing voice and avatar costs by roughly 10x.","tts":"Text-to-Speech","cloud":"Cloud API","metrics":{"engagement":"longer engagement on AI interviews","session":"average mock interview session","cost":"lower voice cost with Fish Audio","streaming":"voice generation across full interview sessions","minutes":"min","realtime":"Real-time"},"highlights":{"cost":"Final Round reduced voice and avatar infrastructure costs by roughly 10x","engagement":"Final Round saw 25%+ longer engagement with the new voice AI infrastructure."},"sections":{"introduction":{"title":"Final Round AI powers 25-minute AI interviews with Fish Audio","paragraphs":["Final Round AI is an AI-powered career platform that helps candidates prepare for interviews. For its mock interviews, Final Round wanted to create an experience that could sustain a real interview from start to finish. Fish Audio provides the voice layer, giving the team control over how its interviewer sounds while reducing voice and avatar costs by roughly 10x."]},"product":{"title":"Final Round AI puts voice at the center of its product","paragraphs":["Final Round AI gives candidates a place to practice interviews with an AI interviewer before they face the real thing. The experience is designed to simulate a first-round interview, with candidates answering questions and responding to an interviewer over an extended conversation.","The average session lasts about 25 minutes. That makes voice a fundamental part of the product, not simply an interface. The interviewer has to maintain quality, responsiveness, and expression throughout the entire conversation."]},"challenge":{"title":"A 25-minute interview changes what voice AI needs to do","paragraphs":["A voice that works for a short interaction is not necessarily built for a 25-minute conversation. The interviewer needs to respond quickly, maintain consistent quality, and adapt its expression throughout the session. Small drops in quality or responsiveness become much more noticeable over a sustained interaction.","The voice also needs to work economically at the volume Final Round expects. The team wanted the flexibility to shape the interview experience around its own product, rather than accept the constraints of a packaged voice and avatar platform."]},"selection":{"title":"Final Round AI chose to build the interviewer experience itself","paragraphs":["The team evaluated packaged avatar platforms that combined the avatar, voice, and infrastructure in one product. They offered a fast path to an AI interviewer, but limited how much Final Round could control the experience.","Instead, Final Round built its own interviewer avatar and integrated Fish Audio as the voice layer underneath it. The team could design the avatar and interaction around its product while Fish Audio handled the underlying voice generation.","This gave Final Round the flexibility to shape the interviewer experience without having to build and maintain its own voice infrastructure."]},"economics":{"title":"The right voice infrastructure also changed the economics","paragraphs":["Separating the voice layer from the avatar experience gave Final Round more control, but it also changed the economics of running each interview.","By replacing its previous provider stack with its own avatar experience and Fish Audio for TTS, Final Round reduced voice and avatar infrastructure costs by roughly 10x. For a product built around 25-minute interview sessions, that creates meaningful room to scale usage.","The lower cost lets Final Round support longer and more frequent conversations without voice infrastructure becoming a constraint on the product."]},"engagement":{"title":"Candidates stayed longer with the avatar experience","paragraphs":["The impact showed up in engagement. Final Round saw more than 25% longer engagement on avatar-based mock interviews compared with its earlier voice-only experience.","For an interview practice product, longer sessions mean more time for candidates to work through a complete interview and practice responding under pressure. The avatar experience gave candidates a more engaging way to use the product."]},"outcomes":{"title":"Voice infrastructure built around the product","paragraphs":["Final Round now owns the interviewer experience around its product, while Fish Audio provides the voice layer underneath it.","That gives the team the freedom to shape how its AI sounds and evolve the interviewer as the product develops, without being tied to a packaged avatar or voice experience."]}}}}},"discovery":{"add_to_collection":"Add to Collection: {title}","add_to_collection_action":"Add to Collection","ai-generated-warning":"AI-generated from user contents.","all_tags":"All tags","anime_collection":"Anime Collection","audio_samples":"Audio Samples","back_to_top":"Back to Top","banner":{"button":{"api-keys":"API Keys","docs":"Documentation"},"subtitle":"Create & Use Voice","title":"Text to Speech APIs"},"browse_banner":"Discover the most realistic and expressive AI voices ready to use in your next project","cinematic_collection":"Cinematic Collection","clear_all":"Clear All","clone_failed":"Clone Failed","clone_model":"Clone Model","clone_success":"Clone Success","collaboration":"Collaboration","conversational_collection":"Conversational Collection","copied_title":"Copied to clipboard","copy_model_id":"Copy Model Id","create_new_collection":"Create New Collection","default_voices_collection":"Default Voices","documentary_collection":"Documentary Collection","edit":"Edit","educational_collection":"Educational Collection","end_list":"You've reached the end of the list,","energetic_collection":"Energetic Collection","filter":{"apply":"Apply","language":{"all":"All Languages","disabled_hint":"Multiple languages selected. Use the filter button to edit.","en":"English","match_all_hint":"Models must match all selected languages","no_results":"No languages found","placeholder":"Select languages","search":"Search languages","selected":"languages","title":"Language","title_plural":"Languages","zh":"Chinese"},"source":{"official":"Fish Official","pvc":"Professional voice clone","licensed":"Licensed"},"tags":{"placeholder":"Select tags","title":"Tags"},"title":"Select"},"footer_tagline":"Find a voice to be heard...","gaming_collection":"Gaming Collection","header":{"description":"Search 2M+ AI voice models across languages, styles, and use cases.","title":"Explore Our AI Voice Library"},"list":"List of Models","models":"Models","narration_collection":"Narration Collection","no_audio_sample":"No audio sample","no_results":"No voices found","notification":{"added_to_collection":"Successfully added to collection","already_in_collection":"This voice is already in the collection","collection_check_failed":"Could not check this collection. Please try again.","collection_add_failed":"Could not add the voice to the collection. Please try again."},"official_community":"Join Our Community","our_trusted_partners":"Trusted By Industry Leaders","play":"Play","popular_voices":"Popular Voices","preview_sample":"Preview the generated voice","quick_search":"Quick Search","dispute":{"title":"Voice Ownership Dispute","model":"Model","step_of":"Step {current} of {total}","claimant_type":"Claimant Type","filing_as":"I am filing as","select_models_subtitle":"select the infringing voice models","select_models_title":"Select Infringing Voice Models","search_models_placeholder":"Search by model name","search_models_empty":"No voices found","select_models_limit":"You can select up to 10 models.","remove_model":"Remove model","individual_title":"Individual","individual_desc":"I am the original creator or the sole owner of the copyright identity being infringed.","representative_title":"On Behalf of Someone","representative_desc":"I am filing for the voice owner with their permission (e.g., their agent, manager, or family member).","enterprise_title":"Enterprise / Organization","enterprise_desc":"I am filing on behalf of a company, brand, agency, or organization.","cancel":"Cancel","back":"Back","next":"Next","identity_verification":"Identity Verification","full_legal_name":"Full Legal Name","full_legal_name_placeholder":"John Doe / Acme Corp Ltd.","contact_email":"Contact Email","contact_email_placeholder":"legal@yourdomain.com","contact_email_hint":"This email will be used for official legal correspondence regarding this dispute.","contact_email_invalid":"Please enter a valid email address.","supporting_links":"Supporting Links","supporting_links_placeholder":"https://x.com/your_handle or YouTube channel URL...","add_link":"Add link","remove_link":"Remove link","supporting_links_hint":"Links to your verified social profiles or original audio sources.","supporting_links_invalid":"Please enter valid URLs starting with http:// or https://.","upload_evidence":"Upload Supporting Evidence","upload_title":"Upload Proof","upload_supported":"Supported: PDF, JPG, PNG (Max 10MB per file)","upload_button":"Upload","upload_hint":"Upload proof of the voice owner's ownership (e.g., verified social media backend screenshots or original audio sources), along with their authorization (e.g., a signed letter of authorization).","individual_upload_title":"Upload Proof","individual_upload_hint":"Upload proof of ownership, such as verified social media backend screenshots or original audio sources.","verify_fallback_hint":"Unable to complete voice verification? Upload proof of ownership below, then you can submit directly.","verify_evidence_ready_hint":"Proof uploaded — you can submit without completing voice verification.","remove_file":"Remove file","additional_context":"Description","additional_context_placeholder":"Please provide any additional details, background, or specific context regarding your ownership claim to help our team speed up the review process.","declaration":"I declare under penalty of perjury that the information provided in this form is accurate, and that I am the rightful owner or authorized representative of the voice identity in question. I understand that submitting false claims may lead to legal consequences.","submit":"Submit Takedown Request","submit_short":"Submit","submit_success":"Submission successful. We will review your report shortly.","step_placeholder":"This step is coming soon.","enterprise_company_name":"Company & Representative Name","enterprise_company_name_placeholder":"Acme Corp (Attn: Legal Department)","enterprise_contact_email_hint":"Please provide an official corporate email address for legal correspondence.","enterprise_links":"Official Website & Rightsholder Links","enterprise_links_placeholder":"e.g., https://www.company.com/music-catalog","enterprise_links_hint":"Links to the company's official catalog or copyrighted audio source.","enterprise_upload_title":"Upload Entity Authorization & Proof","enterprise_upload_hint":"Please upload a signed authorization document (e.g., a signed Power of Attorney or letter of authorization) if you are filing on behalf of the rightsholder.","voice_verification":"Voice Verification","verify_prompt_hint":"Please read the sentence below aloud to verify your voice.","verify_record":"Record","verify_upload":"Upload","verify_stop":"Stop","verify_recording":"Recording...","verify_verifying":"Verifying...","verify_success":"Voice verified successfully.","verify_failed":"Verification failed. Please try again.","verify_low_score":"Voice verification did not pass. A new sentence has been generated, please record again.","verify_refresh_prompt":"Try another sentence","verify_mic_error":"Unable to access microphone. Please check permissions.","file_too_large":"File exceeds the 10MB size limit.","file_type_invalid":"Only PDF, JPG, and PNG files are supported.","file_too_many":"You can upload up to 10 files.","submit_failed":"Submission failed. Please try again."},"report":{"action":"Report","copyright_complaint":"Copyright Complaint","other_issues":"Other Issues","cancel":"Cancel","comment":{"min":"20 characters minimum","placeholder":"Type your message...","title":"Comment (20 characters minimum)"},"reason":{"copyright":"Copyright Infringement","not_work":"Not Work","other":"Other","title":"Why are you reporting this model?"},"save":"Save","title":"Report Model"},"reset":"Reset","search_placeholder":"Search Voice","sexy_collection":"Sexy Collection","sort":{"count":"Recommended","new":"Newest","popular":"Popular","title":"Sort by","trending":"Trending"},"take-down":"Take Down","title":"Voice Library","todays_pick":"Today's Pick","top_brands":{"kol_count":"300k+ kol","title":"Top Brands That Collaborate With Us"},"top_recommended":"Top Recommended","top_trending":"Top Trending","top_voices":"Top Voices","trending_ugc":"Trending Voices","try_voice":"Try this voice","use":"Use","use_voice":"Use Voice","view_in_app":"View in App","view_more":"More","pvc_delete_disabled_tooltip":"This voice was created via Professional Voice Clone and cannot be deleted here."},"generation-history":{"title":"Generation History","tabs":{"all":"All","audio":"Audio","image":"Image","video":"Video","document":"Documents"},"kinds":{"audio":"Audio","image":"Image","video":"Video"},"types":{"tts":"Text to Speech","image-video":"Image & Video","lip-sync":"Lip sync","sound-effect-generation":"Sound Effects","voice-changer":"Voice Changer","audio-separation":"Stem Splitter","studio":"Audiobooks"},"filter":{"generationType":"Generation Type","allSources":"All sources","clearSource":"Clear source filter"},"search":{"toggle":"Search","placeholder":"Search generations","clear":"Clear search"},"view":{"grid":"Grid view","list":"List view"},"items":"{count, plural, one {# item} other {# items}}","empty":{"title":"No generations yet","subtitle":"Your generations will appear here.","cta":"Start creating"},"noResults":{"title":"No generations found","subtitle":"Try adjusting your search query","cta":"Clear filters"},"loadError":"Couldn't load History","tryAgain":"Try again","loading":"Loading History","loadingMore":"Loading more","noMore":"No more generations","play":"Play audio","pause":"Pause audio","close":"Close","download":"Download","actions":{"share":"Share","sharePreparing":"Creating share link…","preparing":"Preparing…","downloadPreparing":"Preparing download…","shareUnsupported":"Share isn't supported for {type} yet","delete":"Delete","deleteWhileRunning":"You can delete this after it finishes generating","deleteUnsupported":"Delete isn't supported for {type} yet","more":"More actions","useAsPrompt":"Use as prompt","recreate":"Recreate","move":"Move","addToAssets":"Save to Assets"},"deleteConfirm":{"title":"Delete this item?","body":"This action cannot be undone. This item will be permanently deleted.","cancel":"Cancel","confirm":"Delete"},"deleteFailed":"Couldn't delete. Please try again.","downloadFailed":"Couldn't download. Please try again.","selection":{"count":"{count, plural, one {# item selected} other {# items selected}}","clear":"Clear selection","selectAll":"Select all"},"batchDelete":{"title":"Delete {count, plural, one {# selected generation} other {# selected generations}}?","body":"This action cannot be undone. The selected generations will be permanently deleted."},"batchDownloading":"{count, plural, one {Downloading # item…} other {Downloading # items…}}","batchDownloaded":"{count, plural, one {# item downloaded} other {# items downloaded}}","batchDownloadFailed":"{count, plural, one {# item couldn't be downloaded} other {# items couldn't be downloaded}}","batchToggle":"Batch select","batchExit":"Exit batch selection","authGate":{"title":"Sign in to continue","description":"Sign in to view your generation history.","cta":"Sign in"}},"help":{"account":{"a1":"Credits are a flexible currency that can be spent on any feature across the Fish Audio platform. The exact cost depends on the feature and the voice model selected.\n\nOn monthly or annual plans your credit balance is refilled on the same calendar date each month, based on your tier. Unused credits do not roll over.\n\nIf you downgrade or cancel, your current plan remains active until the end of the billing cycle; any unused credits expire at that point.\n\nAPI credits are sold separately. For purchase instructions see [API documentation](https://docs.fish.audio/developer-platform/getting-started/introduction)","a10":"Yes. You can downgrade at any time on the [Plans page](https://fish.keatska.top/app/team). The downgrade takes effect at the start of your next billing cycle (monthly or annual). Until then, you'll continue to receive the credits and features of your current plan.","a11":"Upgrade: Additional credits from the new plan are applied immediately.\nDowngrade: You keep all remaining credits until the current cycle ends. At the next refill, your quota adjusts to the lower amount of your new plan.","a12":"You can cancel subscription renewal on the Plans page. You'll keep any remaining credits and features until the end of your billing period. After that, your subscription expires automatically and no further charges will be made.","a13":"Your current plan's renewal or expiration date is displayed on the [Plans page](https://fish.keatska.top/app/team).","a14":"Simply visit the [Plans page](https://fish.keatska.top/app/team) and select your preferred plan. Your subscription will be reactivated immediately.","a15":"No. Accounts created with Google Sign-In remain permanently linked to that Google account. Deleting the account will not release the same email for reuse.","a16":"No. Accounts created with GitHub Sign-In remain tied to that GitHub identity. As with Google accounts, deleting the account will not allow reuse of the same email.","a17":"Email and password accounts: Go to Profile → Settings → Change Password.\nGoogle or GitHub accounts: Change your password directly through the security settings of Google or GitHub. Fish Audio does not manage these credentials.","a2":"The exact credit cost is always displayed in the interface before you confirm a generation. Costs may change as models evolve, so please refer to the app for the most accurate, real-time information.\n\nFor text-to-speech (TTS) features, credits are charged per byte of text. The number of bytes depends on the language you're generating: in English, a typical word is 5 characters, which is 5 bytes.","a3":"Credits reset on the monthly anniversary of your first subscription payment\n\ne.g. March 1 → April 1; Aug 31 → Sep 30; Jan 30 → Feb 28","a4":"A complete, timestamped log is available in Platform → [Usage](https://fish.keatska.top/app/usage/)","a5":"The renewal happens at the exact time-of-day you first subscribed, based on your billing timezone. If the calendar date has passed but the refill is missing, wait a few hours—most issues resolve automatically. Still stuck? [Submit a ticket](support://ticket) or contact us on [Discord](https://discord.com/invite/fish-audio).","a6":"You can either wait for the next refill or upgrade to a higher tier at any time on the [Plans page](https://fish.keatska.top/app/team/) — new credits are granted instantly after upgrade.","a7":"We're constantly developing state-of-the-art models and often release them in small private alpha testing waves. The best way to be among the first to try them is to join the [Fish Audio Discord](https://discord.com/invite/fish-audio). We sometimes give members exclusive early access in exchange for feedback, helping us shape upcoming launches.","a8":"A subscription grants recurring, uninterrupted access to Fish Audio features, credits and model updates. You choose monthly or annual billing; the fee renews automatically until you downgrade or cancel. Plan details are listed on the [Subscription Plans page](https://fish.keatska.top/app/team).","a9":"Yes. You can upgrade at any time on the [Plans page](https://fish.keatska.top/app/team). Once upgraded, your new credit quota and features are available immediately. You'll only be billed the pro-rated difference between your old plan and the new one.","q1":"What are credits?","q10":"Can I downgrade my subscription plan?","q11":"What happens to my credits when I upgrade or downgrade?","q12":"How do I cancel my subscription?","q13":"How do I check my plan expiration date?","q14":"How do I resubscribe after my plan expired?","q15":"Can I change my sign-in method from Google to Email and Password?","q16":"Can I change my sign-in method from Github to Email and Password?","q17":"How do I change my password?","q2":"How many credits do generations cost?","q3":"How does credit renewal work?","q4":"Where can I see my credit history?","q5":"Why haven't my credits refreshed yet?","q6":"What if I run out of credits?","q7":"How do I get access to alpha features?","q8":"What is a subscription?","q9":"Can I upgrade my subscription plan?"},"billing":{"a1":"Most declines are caused by an incorrect ZIP/postal code or CVV. If your details are correct, your bank or our processor may have blocked the transaction. Open a ticket in [Discord](https://discord.com/invite/fish-audio) or [submit a ticket here](support://ticket) and we'll investigate.","a2":"All purchases are non-refundable as stated in our [Terms of Service](https://fish.keatska.top/terms/). If you experience a billing issue or believe you were charged in error, please contact our support team by [submitting a ticket](support://ticket) or through our [Discord server](https://discord.com/invite/fish-audio), and we’ll review your case.","a3":"Our refund policy does not allow refunds for accidental purchases. To review your situation, contact our support team by [submitting a ticket](support://ticket) or through our [Discord server](https://discord.com/invite/fish-audio). Please note that a processing fee of approximately 15% may apply.","q1":"Why is my payment method is getting declined?","q2":"What is your refund policy?","q3":"I made an accidental purchase. Can I get a refund?"},"legal":{"a1":"We may use limited data you provide in order to improve the overall quality and performance of our audio models. Your data is never used to clone your voice without consent, nor to create advertising profiles.\n\nBy default, we do not train on data from our API customers, except where strictly necessary to deliver and maintain the service. For more information, see our [Privacy Policy](https://fish.keatska.top/privacy/)","a2":"The Free plan does not include a commercial license. Any content generated under the free plan—or without signing in—cannot be used commercially. When publishing such content non-commercially, you must credit Fish Audio by including \"Fish Audio\" or \"fish.audio\" in the title or description.\n\nThe Paid plans all Include a commercial license. As long as you hold the required intellectual property rights, and your content complies with applicable laws and our [Terms of Service](https://fish.keatska.top/terms), you may use generated content for commercial purposes without attribution.\n\nIn summary, everything generated during your paid subscription is yours to use commercially forever, whereas anything created before or after the subscription period will never be usable commercially and will always require attribution when posted non-commercially.","a3":"Yes. You retain ownership of all files you upload. Fish Audio claims no rights over your files, except as described in the [Terms of Service](https://fish.keatska.top/terms) and [Privacy Policy](https://fish.keatska.top/privacy)—for example, rights necessary to process your files securely and to comply with applicable law.","a4":"Yes. Privacy and security are our top priorities. All generations you create remain private unless you explicitly choose to make them public. Strong data-handling and security safeguards protect your creations at all times. Learn more in our [Privacy Policy](https://fish.keatska.top/privacy).","a5":"Our billing address is 1111B S Governors Ave STE 48109 Dover, DE 19904, United States.","q1":"Is my data used to improve Fish Audio's AI models?","q2":"Can I publish the content I generate on the platform?","q3":"Do I own the files I upload?","q4":"Are my generations private, even if I'm not a subscriber?","q5":"What is your billing address?"},"searchPlaceholder":"Search","supportEntry":{"action":"Submit a ticket","description":"Open a support case directly from the Help Center when you need a manual follow-up.","title":"Need more help?"},"tabs":{"account":"Account","billing":"Billing & Payment","legal":"Legal & Privacy"},"title":"Help Center"},"home":{"advanced-settings":{"speed":"Speed","volume":"Volume"},"api-integration":"API Integration","audio-file":{"connecting":"Connecting...","current":"Current","duration-limit":"The audio duration must be under 2 minutes. Please try again with a shorter audio.","duration-too-short":"The audio must be at least 1 second long. Please try again with a longer audio.","format-error":"Please upload a valid audio or video file","load-error":"Failed to load the audio file. Please try again with a different file.","microphone-devices":"Microphone Devices","no-devices":"No devices found","record-not-supported":"Your browser does not support recording.","recording":"Recording","rescan-devices":"Rescan Devices","start":"Start Recording","stop":"Stop Recording","submit":"Submit","upload-audio":"Upload Audio","video_has_audio":"Video must contain audio track"},"blog-preview":{"cta":"All Updates","title":"Latest Updates"},"contact-us":"Contact Us","creators":{"affiliate":"Earn as an affiliate","creator1":{"creatorName":"Bob Doyle","feature":"Voice Cloning","title":"Bring characters to life with"},"creator2":{"creatorName":"Daniel | Tech & Data","feature":"Text to Speech","title":"Narrate your videos with"},"creator3":{"creatorName":"Jarods Journey","feature":"Audiobooks","title":"Create audiobooks with"},"creator4":{"creatorName":"Kingy AI","feature":"Voice Library","title":"Explore 2M+ voices in the"},"cta":"Join them","title":"Trusted by 8M+ users - free to start","creator5":{"creatorName":"Monster Library","feature":"Image & Video","title":"Create animated short films with"}},"cta":{"button":"Start free now","title":"Create with the most expressive AI voices"},"demo":{"poweredBy":"Powered by Fish Audio","poweredByFishAudio":"Powered by Fish Audio","poweredByModel":"Powered by {model}","poweredByDrama3":"Powered by Fish Audio Drama 3","poweredBySTT":"Powered by Fish Audio STT"},"description":{"1":"Enabling natural and expressive speech generation.","2":"Making speech AI accessible to everyone.","3":"Targeting intelligent and empathetic AI companion."},"discover-voices":"Discover Voices","discover-voices-popover-description":"Click to explore our curated collection of voices and find the perfect one for your project.","discover-voices-popover-title":"Discover Amazing Voices","explore-more":"Explore More","faq":{"q1":{"answer":"Fish Audio supports multiple languages including English, Japanese, Korean, Chinese, French, German, Arabic, and Spanish. We're continuously adding more languages to serve our global user base.","question":"What languages does the best AI voice generator support for text to speech?"},"q2":{"answer":"AI voice cloning software analyzes voice recordings to create a digital model that captures tone, pitch, and speaking style. Content creators use it to generate unlimited narration for videos, podcasts, and courses without re-recording. Fish Audio needs as little as 10 seconds of audio to create a natural-sounding voice clone that can speak in multiple languages, streamlining your content production workflow.","question":"How does AI voice cloning software work for content creation?"},"q3":{"answer":"Fish Audio offers the best free AI voice generator for YouTube creators, providing free generations monthly with natural-sounding voices in multiple languages. Our text to speech technology produces broadcast-quality narration perfect for YouTube videos, tutorials, and documentaries. Start creating professional voiceovers instantly without expensive equipment or voice actors – just type your script and generate studio-quality audio for your YouTube content.","question":"What is the best free AI voice generator online for YouTube videos?"},"q4":{"answer":"AI text to speech costs 90-95% less than hiring professional voice actors. While voice actors charge high hourly rates plus studio fees, Fish Audio starts free with monthly generations and affordable paid plans. Compared to other AI services like ElevenLabs, Fish Audio offers more affordable pricing with comparable quality. Create unlimited voiceovers in multiple languages instantly, eliminating scheduling delays and re-recording costs that make traditional voice acting expensive for content creators.","question":"How much does AI text to speech cost compared to hiring voice actors?"},"q5":{"answer":"Fish Audio's free plan is for personal use only. To monetize content or use voices commercially (YouTube, podcasts, business), upgrade to our paid plans for full commercial rights. This lets creators test voices free before monetizing their content.","question":"Can I use free AI voice generator for commercial use and monetization?"},"q6":{"answer":"Fish Audio offers the best AI voice generator API for developers with ultra-low latency, comprehensive SDKs, and simple REST endpoints. Our API supports both <ttsPage>text-to-speech</ttsPage> and voice cloning with pay-as-you-go pricing, making it ideal for apps requiring natural voices. See our <developersPage>developer documentation</developersPage> for integration guides.","question":"What is the best AI voice generator API for developers and apps?"},"q7":{"answer":"Fish Audio has the most realistic human voices online, powered by our advanced AI technology and community of over 2,000,000 natural-sounding voices. Our voice generator creates speech indistinguishable from real humans, perfect for audiobooks, podcasts, games, and any application requiring authentic voice quality.","question":"Which AI voice generator has the most realistic human voices online?"},"title":"Frequently asked questions"},"features":{"audioBooks":{"description":"Publish-ready storytelling with lifelike pacing, emotion, and chapter-level control. Generate hours of audio that meets ACX/Audible specs without a recording booth.","title":"Audiobook Narration"},"characterVoices":{"description":"Clone signature voices or craft brand personas for games, animation, and interactive stories. Fine-tune dynamic emotions online or with easy-to-use API.","title":"Character Voices"},"chatBots":{"description":"Give customer support and virtual agents a natural voice with minimal latency. Inject tone tags for helpful, empathetic, or upbeat responses that feel truly human.","title":"Conversational Chatbots"},"cta":"Get Started Free","dubbedVideos":{"description":"Localize content at scale with synchronized, emotion-aware dubbing. Auto-match lip-sync timing and keep the original energy across 30+ languages.","title":"Multilingual Dubbing"},"title":"Create studio-quality AI voices for videos, audiobooks, and characters","videoVoiceovers":{"description":"Turn scripts into rich, scene-matched narration, perfect for YouTube, advertisement, and explainers. Swap tones, add emotion tags, and keep your viewers hooked.","title":"Video Voiceovers"},"avatarLipsync":{"title":"Avatar Lipsync","description":"Create images and videos, then lip-sync them to any Fish Audio voice for talking avatars, ads, and explainers. Powered by leading models like GPT Image, Seedance, Kling, Veo, and Creatify."}},"footer-company":{"blog":"Blog","gitHub":"GitHub","research":"Research","support":"Support"},"footer-earn-as":{"affiliate":"Affiliate"},"footer-products":{"ai-voice-generator":"AI Voice Generator","audio-converter":"Audio Converter","audio-separation":"Audio Separation","audio-translation":"Audio Translation","pricing":"Pricing","pricing-tiers":"Pricing Tiers","sound-effects":"Sound Effects","speech-to-text":"Speech-to-Text","story-studio":"Audiobooks","text-to-speech":"Text-to-Speech","voice-cloning":"Voice Cloning","voice-changer":"Voice Changer","video-editor":"Video Editor","voice-agent":"Voice Agents","ai-avatar-generator":"AI Avatar Generator","ai-video-generator":"AI Video Generator","ai-image-generator":"AI Image Generator","dropline":"Dropline AI Dictation","mcp":"MCP"},"footer-research":"","footer-resources":{"character":"Character Collection","compare-us":"Compare Us","competitor-comparisons":"Competitors","guide":"Guide","reference":"API Reference","startup-program":"Startup Program","support":"Support","voice-library":"Voice Library","discovery":"Browse Voices"},"footer-solutions":{"character-voices":"Character Voices","conversational-chatbots":"Conversational Chatbots","for-startups":"For Startups","for-students":"For Students","voiceover":"Voiceover","voiceovers":"Voiceovers"},"footer-term":{"privacy":"Privacy Policy","report":"Report Abuse","terms":"Terms of Service"},"footer":{"company":"Company","earn-as":"Earn as","products":"Products","research":"Research","resources":"Resources","solutions":"Solutions"},"generate":{"play":"Generate & play selection"},"get-started":"Get Started","invite_description":"Invite users to register for the same duration of membership, unlimited!","invite_detail":"Details","invite_title":"Invite and Get Rewards","kol-bottom-center-card":{"description":"As a content creator, I find {brand} to be a game-changer. It consistently produces voices <span1>so realistic that my audience thinks they're hearing actual human narrators.</span1>"},"kol-bottom-left-card":{"description":"The upgrade to {version} has taken {brand} to the next level— <span1>more expressive, stable, and versatile than any</span1> other tool we've tried, including premium options."},"kol-bottom-right-card":{"description":"What amazed me about {brand} is their <span1>commitment to open-source development.</span1> Their community-driven approach means constant innovation and rapid improvements."},"kol-card-bottom":{"description":{"part-1":"At just 31 years of age and already with multiple international","part-2":"bestsellers","part-3":"such as The Mountain Is You — There's no question that the author is on a","part-4":"phenomenal trajectory.","part-5":"Brianna's catalog of deeply emotive, philosophical writing has exploded in popularity and in turn has gathered a passionate worldwide audience."}},"kol-card":{"description":{"part-1":"Use side-by-side comparison sliders showing ","part-2":"Before AI","part-3":"(traditional recording setup) vs.","part-4":"With Our Solution","part-5":"(dashboard interface with time/cost metrics)."}},"kol-center-left-card":{"description":"{brand} is easily one of the best voice-generation platforms I've ever used. The <span1>clarity, expressiveness, and</span1> naturalness of their AI-generated voices surpass all expectations."},"kol-center-right-card":{"description":"After testing numerous platforms, {brand} stands out due to its seamless voice cloning feature. <span1>A mere 15-second clip was enough to create an incredibly accurate voice replica.</span1>"},"kol-counter":{"description":"","title":"Trusted by builders who expect more from voice AI"},"kol-top-center-card":{"description":"We compared {brand} directly with ElevenLabs, and {brand} clearly <span1>outperformed in voice authenticity and emotional nuance.</span1> It's become our go-to choice."},"kol-top-left-card":{"description":"{brand}'s <span1>multilingual support</span1> is truly impressive. We successfully created voiceovers in Japanese, French, and Arabic, all with <span2>native-level quality</span2>."},"kol-top-right-card":{"description":"Our team transitioned from traditional voiceovers to {brand} and immediately saw <span1>drastic improvements</span1> in production efficiency and quality. It's now integral to our workflow."},"live-agent-demo":{"title":"Live Agent"},"live-audio":{"connecting":"Connecting...","start":"Start","stop":"Stop"},"loginSection":{"experience":"UNLOCK THE FULL AUDIO POWER","login":"Sign up","go-to-studio":"Go to app","contactUs":"Contact Sales"},"metadata":{"description":"Powerful, fast, and customizable text-to-speech solution. Ultra-low latency, rapid voice cloning, and flat-rate pricing for AI Voice Over.","keywords":"Fish Audio, Fish Speech, GPT-SoVITS, Bert-VITS2, voice models, text to speech, tts, GPT-4o, Voice Over, AI Voice, AI Speech, Generative AI","seo":{"description":"Studio-grade AI text-to-speech and voice cloning. Start using free industry-leading voice generator today with emotion control and 2m+ voices in 8 languages.","keywords":"Fish Audio, Fish Speech, GPT-SoVITS, Bert-VITS2, voice models, text to speech, tts, GPT-4o, Voice Over, AI Voice, AI Speech, Voice Actor","title":"Best AI Text To Speech & Free Voice Cloning | Fish Audio"},"social":{"description":"TTS and voice cloning with unmatched emotion control.","subtitle":"The Most Expressive AI Speech","title":"Fish Audio"},"title":"Fish Audio: The Best & Free Generative AI Text To Speech & Voice Cloning"},"partners":{"title":"Partnering with Global Innovators","read-stories":"Read their stories"},"solutions":{"title":"Powerful Voice-AI APIs for enterprise users","description":"From real-time streaming to instant voice cloning. {brand} gives you every tool to build production-ready voice agents.","tts":{"title":"Text to Speech","description":"Ultra Low Latency, #1 in control & expressive"},"stt":{"title":"Speech to Text","description":"Include multispeaker, emotion tags & natural language description in your transcription"},"voice-agent":{"title":"Voice Agents","description":"End-to-end voice agent solution"},"clone":{"title":"Clone Any Voice","description":"with perfect fidelity in 15 seconds"},"multilingual":{"title":"Multilingual Support","description":"Speak 30+ languages with any voice"}},"powerful-solutions":{"description":"From real-time streaming to instant voice cloning, {brand} gives you every tool to build production-ready voice agents.","description-1":"Full control over when audio stops","description-2":"Server auto-stops on silence for hands-free trimming","description-3":"One endpoint for all features","description-4":"with perfect fidelity in","description-5":"Speak 30+ languages with any voice","title":"Powerful Voice-AI Solutions","title-1":"Push to Send","title-2":"Voice Activity Detection","title-3":"Unified Streaming API","title-4":"Clone Any Voice","title-5":"Multilingual Support","video-coming-soon":"Video coming soon"},"products":{"card1":{"description":"The most expressive Text to Speech model with emotional depth and rich delivery. Available now.","primaryButton":"Discover TTS","secondaryButton":"Sign up","title":"Fish Speech v1.5"},"card2":{"description":"Create natural, human-sounding AI voices that feel truly personal with just a few seconds of audio.","primaryButton":"Discover Voice Cloning","secondaryButton":"Contact sales","title":"Voice Cloning"}},"realtime-stt-demo":{"realtime-label":"Realtime STT","file-label":"STT","empty-title":"Your words appear here as you speak","empty-latency":"Words on screen in {seconds, number}s","connecting":"Connecting","listening":"Listening...","no-output":"No output","transcribing":"Transcribing","transcribing-desc":"Hang tight while we turn your audio into text","speaker":"Speaker {index}","final-latency":"fin {ms, number}ms","first-text":"1st word {ms, number}ms","stop-to-final":"end→final {seconds, number, ::.0}s","taken":"Taken","taken-after":"Taken {seconds, number, ::.0}s","non-user":"Non-user","turn-listening":"Listening","eager":"Eager EOT","eager-after":"Eager EOT {seconds, number, ::.0}s","eot":"EOT","eot-after":"EOT {seconds, number, ::.0}s","custom-vocabulary":"Custom Vocabulary","vocabulary-placeholder":"Add names, brands or jargon you expect to hear.\ne.g. Fish Audio, S2.1 Pro, Kubernetes","vocabulary-limit":"Up to {max} terms","upload":"Upload","start":"Start Talking","stop":"Stop","keep-talking":"Keep Talking","restart":"Restart","play":"Play","pause":"Pause","mic-blocked":"Microphone access is blocked. Click the site icon in the address bar, allow the microphone, then try again. If it's already allowed, check your system's microphone privacy settings.","mic-not-found":"No microphone found. Check that one is connected and that your system settings allow the browser to use it.","mic-unavailable":"The microphone couldn't be started. Close other apps that may be using it, then try again.","connection-failed":"Failed to connect, please try again.","rate-limited":"You've reached the demo limit. Please try again in a few minutes.","upload-failed":"Failed to upload, please try again.","upload-timeout":"Upload timed out. Check your connection or try a smaller file.","transcribe-failed":"Failed to transcribe, please try again.","session-limit":"This demo session has reached its time limit.","explore-console":"Explore more in the Developer Console","signup-title":"Sign up free to keep transcribing","signup-description":"Create a free account and explore speech to text in the Developer Console."},"showcase":{"card1":{"description":"Patient · Reassuring · Knowledgeable","subtitle":"","title":"Customer support"},"card2":{"description":"Immersive · Nuanced · Warm","subtitle":"","title":"Narrator"},"card3":{"description":"Dramatic · Expressive · Memorable","subtitle":"","title":"Character"},"cta":"Hear it in action","subtitle":"Voice AI that doesn't sound like an AI voice","title":"Meet Fish Audio Drama 3"},"speech-to-text-demo":{"download":"Download","empty-area":"Enable mic access, upload or record any audio sample, and generate the sample in different voices","record-upload-desc":"Record yourself or upload an audio clip. Get a clean transcript in seconds.","restart":"Restart","title":"Speech to Text","transcribing":"Transcribing...","transcription-label":"Transcription"},"team":{"description-1":"We are the pioneers behind the most acclaimed Open Source SVC / TTS projects ","description-2":"commanding over 70,000+ stars on GitHub.","founder":"Founder of {project}","maintainer":"Maintaner of {project}","open-to-hire":"Open to Hire","title":"Meet the Team"},"text-to-speech-demo":{"audio-not-ready":"Audio is not ready yet","cancel":"Cancel","confirm":"Confirm","download":"Download audio","download-failed":"Download failed","empty-model":"Please select a model","empty-text":"Please enter text","no-voices-description":"No curated demo voices are available right now. Please try again later or use the full app.","no-voices-title":"Demo voices are unavailable","enter-text":"Enter your own text","generate-play":"Generate & play","regenerate":"Regenerate","generating":"Generating...","more-voice":"More Voices","no-audio-to-download":"No audio to download","pause":"Pause","placeholder":"The text to be converted to speech","resume":"Resume","tag-emotions":"Emotions","tag-special":"Special","tag-special-desc":"Special markers with corresponding onomatopoeia: Laughing (Ha,ha,ha), Chuckling (Hmm,hmm)","tag-tone":"Tone","tags":"Tags","text_to_long":"Text is too long","title":"Text to Speech","try-full-feature":"Try Full Feature","try-now":"Try Now","voice-popup-title":"Voice"},"title":"The most expressive AI speech","topBar":{"subtitle":"Five seconds is easy. Five minutes is the test.\nFish Audio creates voices that capture the complexity of every conversation, from the first word to the last.","title":"The most expressive, emotionally controllable real-time voice model","s2-badge-prefix":"Try","s2-badge-title":"Live 3","cta-contact":"Contact Sales","cta-get-started":"Get started"},"usecases":{"accessibility":{"button":"Search Now","description":"Make your content accessible to everyone with AI-powered audio. Convert text to speech for visually impaired users and create inclusive experiences.","title":"Accessibility"},"elearning":{"button":"Search Now","description":"Transform your educational content with engaging AI narration. Create courses, tutorials, and training materials that captivate learners.","title":"E-learning"},"podcasts":{"button":"Search Now","description":"Create high-quality podcast episodes with natural-sounding AI voices. Perfect for narration, interviews, and multi-speaker content.","title":"Podcasts"},"title":{"line1":"Add professional voice AI tools","line2":"to your creative workflow"}},"version-control":{"title":"Voice model","version":"{version} control"},"voice-clone-demo":{"audio-corrupted":"Audio corrupted, please check your recording device","clone":"Clone","loading":{"alignment-generation-finished":"Alignment generation finished","alignment-generation-started":"Alignment generation started","asr-finished":"ASR finished","part-1":"Magic happens in 1 second","part-2":"Please wait","random-text-generation-finished":"Random text generation finished","random-text-generation-started":"Random text generation started","save-to-my-voice-library":"Save to My Voice Library","save-voice":"Save Voice","start":"Start","tts-generation-finished":"TTS generation finished","tts-generation-started":"TTS generation started"},"original":"Original","popup-description":"Sign in now to use the voice model you just created","popup-title":"Love what you're hearing?","record-prompt-desc":"Record yourself reading some prompts and clone your own voice instantly","restart":"Restart","start-over":"Start Over","subtitle":"Please read the paragraph above","title":"Voice Cloning","tooltip":"Just talk like you always do — we'll pick up every nuance"},"voices-feature":{"description":" The {brand} platform hosts over 2,000,000 voices, ideal for diverse scenarios from creative storytelling and dynamic advertisements to immersive audiobooks and beyond.","title":{"part-1":"Infinite Possibilities ","part-2":"with User-Uploaded Voices"},"voices":"Voices","sr-only":"voices, infinite possibilities"},"models-feature":{"title":"30+ AI Models","subtitle":"Create Anything with the World's Best Image, Video, and Avatar Models","description":"GPT Image, Seedance, Kling, Veo, Creatify, and more, always the latest, all ready to use. Out of ideas? Explore hundreds of community creations and remix any of them.","links":{"avatar":"AI Avatar Generator","video":"AI Video Generator","image":"AI Image Generator"},"sampleAlt":"AI image and video example made on Fish Audio"},"avatar-lipsync-demo":{"title":"Avatar Lipsync","voice":"Fish Audio voice","soundOff":"Tap for sound","soundOn":"Sound on","cta":"Try it now","how":"Upload a photo or pick an avatar, add a script and a Fish Audio voice, and the lip sync model matches every word and expression."}},"image-video":{"title":"Image & Video","tabs":{"explore":"Explore","history":"History","contest":"Join contests on Discord"},"authGate":{"title":"Sign in to continue","description":"Sign in or create a free account to generate images and videos."},"introduction":{"title":"Introducing Avatars","description":"Create an avatar from your own photos, or describe one in a prompt.","featureModes":"Create an avatar from your own photos, or describe one in a prompt.","featureModels":"Type @ to reference an avatar and keep the same face across images, videos, and lip sync.","featureFlow":"Assign a default voice when you create an avatar. Lip sync picks it up automatically, so your character looks and sounds consistent in every video.","cta":"Get started","dismiss":"Dismiss","open":"Open introduction","demo":{"prompt":"Cinematic portrait breaking through water, frozen splash","captionPrompt":"Describe your idea","captionReference":"Add a reference","captionRatio":"Pick a ratio","captionGenerate":"Generate","watermark":"Made with Fish Audio"},"mobile":{"featureModes":"Create an avatar from photos or a text prompt.","featureModels":"Type @ to keep the same face across images, videos, and lip sync.","featureFlow":"Give each avatar a default voice."}},"filters":{"image":"Image","video":"Video","lipsync":"Lip sync"},"explore":{"empty":"Nothing to explore yet","error":"Failed to load","retry":"Retry"},"modes":{"image":"Image","video":"Video","lipsync":"Lip sync"},"promptBox":{"collapsedPlaceholder":"Describe or upload anything…","collapsePrompt":"Collapse","expandPrompt":"Expand","promptCharacterCount":"{current}/{max}","promptTooLongHint":"Shorten your prompt to {max} characters or fewer. Longer prompts can blur the key details and reduce generation quality.","optionalPlaceholder":"Describe what to generate (optional)…","optionalPlaceholderImage":"Describe your image, or use @ to reference an image (optional)…","optionalPlaceholderVideo":"Describe your video, and use @ to reference image, video, or audio (optional)…","optionalPlaceholderLipsync":"Add a video or image and speech, then describe your scene (optional)…","creatifyAvatarPlaceholder":"Describe framing, background, lighting, style, and body movement (optional)…","minimaxH3LipsyncPlaceholder":"Lip-syncs to the audio by default. Optionally describe motion, expression or framing…","placeholderImage":"Describe your image or reference by using @...","placeholderVideo":"Describe your video, and use @ to reference image, video, or audio…","placeholderLipsync":"Add a video or image and speech, then describe your scene…","syntheticMediaDisclaimer":"Only use media you have the right and authorization to use. Generated content is AI-synthesized media.","presetReferenceAdded":"Image added to prompt","presetConfigApplied":"Settings added to prompt","presetModelFallback":"Original model unavailable, using {model}. {message}","videoRefIntentNotice":"This may fail: prompts with words like “replace” or “extend” are read as editing the original video. To use it only as a motion reference, try “follow the motion of @Video 1”.","videoRefIntentNoticeShort":"This prompt may fail","referenceVideoBillingNotice":"Each reference video is billed for its first {seconds} seconds at the reference-to-video rate, on top of the output. Reference images and audio are free.","referenceVideoBillingNoticeShort":"Reference video billing","presetUnavailable":"This media is temporarily unavailable. Please try again.","dropAs":"Drop as {slot}","dropRequiresImage":"This slot accepts images only","dropRequiresVideo":"This slot accepts videos only"},"refs":{"deletedBadge":"Deleted","imageRefs":"Image refs","videoRefs":"Video refs","audioRefs":"Audio refs","ref":"Reference image","videoRef":"Reference video","audioRef":"Reference audio","slotConflict":"{slot} cannot be used with {conflict}","durationMaxBadge":"Max {max}s","durationMinBadge":"Min {min}s","durationTotalBadge":"Total ≤{max}s","startFrame":"Start frame","endFrame":"End frame","sourceVideo":"Video","sourceAudio":"Speech","avatar":"Avatar","selectAvatar":"Select avatar","uploadImage":"Upload image","uploadVideo":"Upload video","uploadAudio":"Upload audio","imageN":"Image {n}","referenceImageN":"Reference image {n}","videoN":"Video {n}","audioN":"Audio {n}","swapFrames":"Swap frames","changeFrame":"Change frame","more":"More options","textToSpeech":"Text to Speech","unsupported":"The current model does not support this media","uploadRetryTitle":"Couldn't upload this file","unsupportedBadge":"Not supported","failureBadge":{"unreadable":"Can't be read","tooLarge":"Too large","duration":"Wrong length","noAudio":"No audio","extractFailed":"Extraction failed","limitReached":"Limit reached","rateLimited":"Too many requests","notFound":"Unavailable","unsupported":"Not supported","notVideo":"Not a video","serviceUnavailable":"Service unavailable","offline":"Network error","failed":"Upload failed"},"unreadable":{"image":"This image can't be read — it may be damaged or not a real image file. Re-export it as JPG or PNG and upload again.","video":"This video can't be read — it may be damaged or use an unsupported codec. Re-export it as MP4 (H.264) and upload again.","audio":"This audio can't be read — it may be damaged or use an unsupported codec. Re-export it as MP3 or WAV and upload again.","file":"This file can't be read — it may be damaged. Re-export it and upload again."},"dropOnly":{"image":"Only images or videos can go here (JPG, PNG, MP4, etc.).","video":"Only videos can go here (MP4, MOV, etc.).","audio":"Only audio or videos can go here (MP3, WAV, MP4, etc.)."},"maxFiles":"Max {n} files","stackExpand":"{slot}: show all {n}","uploadErrors":{"retry":"Try again","fileTooLarge":"This file is larger than {limit} MB. Choose a smaller file.","tooLargeAfterOptimize":"This video is still larger than {limit} MB after optimization. Trim it to a shorter clip and upload it again.","optimizeFailed":"This video is larger than {limit} MB and couldn't be optimized. Trim it to a shorter clip and upload it again.","noAudioTrack":"This video has no audio track. Choose a video with sound.","audioExtractFailed":"Couldn't extract the audio from this video. Choose another video.","frameExtractFailed":"Couldn't capture a frame from this video. Pick another moment or choose another video.","frameLimitReached":"This video has reached its frame capture limit. Use a frame you already captured.","rateLimited":"Too many requests. Wait a minute and try again.","serviceUnavailable":"The media service is temporarily unavailable. Try again in a moment.","offline":"Network connection failed. Check your connection and try again.","generic":"Couldn't process this file. Try again or choose another file.","referenceNotFound":"This reference file is no longer available. Remove it and add it again.","referenceUnfulfillable":"This file's size or shape isn't supported by this model. Choose another file or model.","notVideo":"This file isn't a video. Choose a video file.","durationOutOfRange":"Each reference video or audio clip must be {min}–{max} seconds long. Trim it or choose another clip.","totalDurationExceeded":"Reference videos and reference audio can each total at most {max} seconds. Remove or trim some clips.","uploadLinkExpired":"This upload link has expired. Request a new one.","uploadLinkInvalid":"This upload link is invalid. Request a new one.","uploadTypeNotAllowed":"This upload doesn't accept this file type. Choose a different file.","uploadRequestInvalid":"The upload request was incomplete. Try again."},"imagePreflight":{"size":"Image {n} exceeds 20 MB. Choose a smaller file.","dimensions":"Image {n} must be 240–8000 pixels on each side.","ratio":"Image {n} must have an aspect ratio between 1:8 and 8:1.","unreadable":"Unable to check image {n}. Remove it and upload it again."},"mediaPreflight":{"checking":"Checking reference media…","unreadable":"{role} {n} could not be checked. Replace it or try again.","offline":"{role} {n}: network connection failed. Check your connection and try again.","unsupportedFormat":{"image":"{role} {n} can't be read — it may be damaged or not a real image file. Re-export it as JPG or PNG and upload again.","video":"{role} {n} can't be read — it may be damaged or use an unsupported codec. Re-export it as MP4 (H.264) and upload again.","audio":"{role} {n} can't be read — it may be damaged or use an unsupported codec. Re-export it as MP3 or WAV and upload again."},"format":"{role} {n}: this model accepts {formats}. Choose a supported file.","size":"{role} {n} exceeds {max} MB. Choose a smaller file.","totalSize":"Reference files exceed {max} MB in total. Remove some or choose smaller files.","minEdge":"{role} {n}: both dimensions must be at least {min}px. Choose a larger image or video.","maxEdge":"{role} {n}: neither dimension may exceed {max}px. Resize the image or video.","minPixels":"{role} {n}: the image or video must contain at least {min} pixels. Choose a higher resolution.","maxPixels":"{role} {n}: the image or video must contain no more than {max} pixels. Choose a lower resolution.","ratio":"{role} {n}: width divided by height must be between {min} and {max}. Crop or replace it."},"selectFromHistory":"Select from history"},"framePicker":{"title":"Select frame","select":"Select frame","cancel":"Cancel","extractFailed":"Couldn't capture this frame","trimTitle":"Trim video","trimDescription":"Server optimization could not prepare this video. Select a shorter segment and upload it again.","trimEditDescription":"Select the segment to keep and upload it again.","trim":"Trim & upload","trimming":"Trimming…","trimFailed":"Couldn’t trim this video. Please choose a shorter or smaller file.","trimLoading":"Reading video…","trimReadFailedTitle":"Can’t read this video","trimReadFailedDescription":"Your browser can’t recognize this video’s format or encoding. Try an MP4 encoded with H.264, or choose another video.","audioTrimReadFailedTitle":"Can’t read this audio","audioTrimReadFailedDescription":"Your browser can’t recognize this audio’s format or encoding. Try an MP3 or WAV, or choose another file.","trimTimeoutTitle":"Video took too long to load","trimTimeoutDescription":"Try again, or choose a shorter, smaller video.","close":"Close","audioTrimTitle":"Trim audio","audioTrimDescription":"Select the segment to keep and upload it again.","audioTrimRetryHint":"Retry after audio trimming.","audioTrimFailed":"Couldn’t trim this audio. Please choose a shorter or smaller file.","selectedDuration":"{selected}s","selectedDurationWithLimit":"{selected}s ({min}–{max}s)"},"historyPicker":{"useAudio":"Use Audio","noResults":"No history found","loadError":"Couldn't load History.","tryAgain":"Try again","generationType":"Generation Type","generationTypeOption":{"image-video":"Image & Video","lip-sync":"Lip sync"},"searchPlaceholder":"Search...","cancel":"Cancel","useImage":"Use Image","useVideo":"Use Video","play":"Play audio","pause":"Pause audio","audioSource":{"tts":"Text to Speech","sound-effect-generation":"Sound Effects","voice-changer":"Voice Changer","audio-separation":"Stem Splitter","studio":"Audiobooks"},"emptyAudio":"No compatible audio generations yet.","emptyImage":"No compatible image generations yet.","emptyVideo":"No compatible video generations yet."},"historyMention":{"referencesGroup":"References","noResults":"No results","sheetTitle":"Insert reference","loadingMore":"Loading more","loading":"Loading History"},"embeddedTts":{"title":"Generate or Select Speech"},"params":{"aspectRatio":"Aspect ratio","aspectRatioAuto":"Auto","aspectRatioAutoHint":"Match the first input image","resolution":"Resolution","quality":"Quality","qualityLow":"Low","qualityMedium":"Medium","qualityHigh":"High","qualityXHigh":"Extra high","qualityMax":"Maximum","generation":"Generation","promptEnhance":"Prompt enhance","on":"On","off":"Off","negativePrompt":"Negative prompt","neg":"Neg","negativePromptPlaceholder":"Describe what should not appear in the result.","matchVideo":"Match video","matchImage":"Match image","matchVideoDesc":"Better at copying exact motion, max 30s","matchImageDesc":"Better at adding new motion, max 10s","model":"Model","duration":"Duration","settings":"Settings","generateAudio":"Generate audio","audioOn":"Audio on","audioOff":"Audio off"},"actions":{"generate":"Generate","calculatingPrice":"Calculating price… Almost ready","download":"Download","share":"Share","delete":"Delete","deleteWhileRunning":"You can delete this after it finishes generating","close":"Close","save":"Save","generateDisabledNoPrompt":"Enter a prompt","generateDisabledNoModel":"Choose a model","generateDisabledUploading":"Reference image uploading...","generateDisabledUploadingVideo":"Reference video uploading...","generateDisabledUploadingAudio":"Reference audio uploading...","generateDisabledExtractingFrame":"Extracting video frame...","generateDisabledInvalidAssets":"A reference failed to upload. Remove it and upload again.","generateDisabledMissingAssets":"Still needed: {roles}","generateDisabledMissingAssetsAlternatives":"Still needed: {roles} (or {alternatives})","generateDisabledRefDuration":"{role} must be {min}–{max} seconds each. This one is {actual}s.","generateDisabledRefDurationTotal":"{role} total must be within {max} seconds. Current total is {actual}s.","generateDisabledUnsupportedAssets":"The current model does not support some added media","generateDisabledInvalidParams":"The current model does not support the selected settings: {params}","generateDisabledNoSourceAssets":"Add a video and speech audio","generateDisabledNoAvatarAudio":"Add an image and speech audio","generateDisabledAudioTooShort":"Speech audio is too short for this model. Minimum is {min} seconds.","generateDisabledAudioTooLong":"Speech audio is too long for this model. Maximum is {max} seconds.","audioTooLongTitle":"Speech audio is too long","refDurationTitle":"{role} is too long","trimAction":"Trim","useModelAction":"Use {model}","report":"Report","generateDisabledMaxFiles":"Max {n} files for this model. Remove the extra references."},"entitlement":{"freeDailyLimitTitle":"Daily image limit reached","freeDailyLimit":"You are on the Free plan. Your daily free generation limit has been reached.","generationFrozen":"Generation is unavailable for this account. Contact support if you believe this is a mistake.","riskDailyLimitTitle":"Limit reached","riskDailyLimit":"You've reached the limit for now. Subscribe to a plan to unlock full access.","emailPaymentRequiredTitle":"Pay to unlock","emailPaymentRequired":"Complete payment to start creating with Image & Video.","paymentMethodTrialUsedTitle":"Pay to unlock","paymentMethodTrialUsed":"Complete payment to start creating with Image & Video.","updatePaymentMethodTitle":"Update your payment method","updatePaymentMethod":"We couldn't collect payment for your subscription. Update your payment method to keep creating.","updatePaymentMethodCta":"Update payment method","updatePaymentMethodFailed":"Couldn't open the billing page. Please try again.","freePoolExhaustedTitle":"Generation unavailable right now","freePoolExhausted":"Upgrade your plan to keep creating without interruption.","imageCountLimitTitle":"Generate more images at once","imageCountLimit":"Your current plan generates up to {max} images per generation. Upgrade to generate more at once.","videoCountLimitTitle":"Generate more videos at once","videoCountLimit":"Your current plan generates up to {max} video outputs per generation. Upgrade to generate more at once.","unlockCount":"Upgrade to {plan} to unlock this output count.","autoSwitchTitle":"Your video is one step away","autoSwitchDescription":"Draft saved — make the image now, make it move with Plus","autoSwitchCta":"Finish my video","membershipRequiredTitle":"Upgrade to generate videos","membershipRequired":"You are on the Free plan. Upgrade to a membership to generate videos.","creditsExhaustedTitle":"Not enough credits","creditsExhausted":"Your credits are exhausted. Upgrade your subscription or purchase more credits.","insufficientImageCredits":"Not enough credits to generate {count} images. This generation costs {credits} credits; your balance is {balance}.","insufficientGenerationCredits":"Not enough credits for this generation. It costs {credits} credits; your balance is {balance}.","upgradePlan":"Upgrade Plan","dailyUsage":"{used}/{limit} free generations used today. Resets at {resetAt}.","remainingCapacity":"Your current balance covers about {count} generations with these settings.","remainingImageCapacity":"{batchCount, plural, one {# image will cost {credits} credits.} other {# images will cost {credits} credits.}} Your balance covers {count, plural, one {# image} other {# images}} with the current settings.","remainingVideoCapacity":"{batchCount, plural, one {# video will cost {credits} credits.} other {# videos will cost {credits} credits.}} Your balance covers {count, plural, one {# video} other {# videos}} with the current settings.","remainingCapacityCompact":"{value} left","remainingCapacityCalculating":"Calculating remaining generations…","remainingCapacityUnavailable":"We can't estimate the remaining generations right now","buyCredits":"Buy Credits","temporarilyUnavailable":"Generation failed due to a temporary issue. Please try again later."},"paywall":{"firstMonthHalfPrice":"First month half price","seeAllPlans":"See all plans","neverWallTitle":"Never hit this wall again","readyToGenerate":"Ready to generate","posterCta":"Unlock and generate","demoLabel":"{model} demo","demoInputTag":"ONE PHOTO","rankMostRemixed":"#1 Most remixed","rankMostViewed":"#1 Most viewed","rankEditorsPick":"Editor's pick","videoAmountSeconds":"{value}s","videoAmountMinutes":"{value} min","videoAmountHours":"{value} hours","gains":{"outputSpec":"≈ {images} images or {video} of video / month","creditsFallbackSpec":"{credits} credits / month","plusTalking":"Your photos start talking","plusTalkingSpec":"video & lipsync unlocked","plusDaily":"Enough to post every day","plusFaster":"Get it right {count}× faster","plusFasterSpec":"up to {count} outputs per generation","plusCommercial":"Sell what you make","plusCommercialSpec":"commercial use included","proCredits":"{multiple}× the credits of Plus","proCreditsSpec":"{credits} credits / month","proScale":"Production-scale output","proPerDollar":"More video per dollar","proPerDollarSpec":"~{percent}% lower cost per generation than Plus","proEverything":"Everything in Plus included","proEverythingSpec":"talking photos, batch outputs, commercial use","latestModels":"Access to all latest models","popularModels":"Access to all popular models","topUp":"Flexible credit top-ups","voiceIncluded":"All voice features included","voiceMaxed":"All voice features, maxed out"},"creationsCount":"{count} creations and counting"},"deleteConfirm":{"title":"Delete this generation?","description":"This generation will be removed from your history. This action cannot be undone.","cancel":"Cancel","confirm":"Delete"},"tags":{"gaming":"Gaming","domestic":"Domestic","human":"Human","nature":"Nature","vlog":"Vlog","anime":"Anime","food":"Food","travel":"Travel","fashion":"Fashion","sports":"Sports","enhance":"Enhance prompt","custom":"Custom","customInputLabel":"Custom enhancement direction","customPlaceholder":"e.g. softer lighting","customSubmit":"Apply custom enhancement","customCancel":"Cancel custom enhancement","categories":{"cinematic":"Cinematic","composition":"Composition","lighting":"Lighting","realism":"Realism","motion":"Motion","camera":"Camera","style":"Style","environment":"Environment","reference":"Use reference"},"undo":"Undo suggestion","shuffle":"Shuffle suggestions","expand":"Expand suggestions","generating":"Generating…","view":"View","generated":"Generated","generateFailed":"Generate failed","collapse":"Collapse suggestions","previousTags":"Previous suggestions","nextTags":"Next suggestions","loadFailed":"Suggestions unavailable","retry":"Retry","avatarConflict":"Describe one character with a visible face and mouth, then try again.","applyFailed":"Couldn't enhance the prompt. Try again."},"history":{"searchPlaceholder":"Search generations","type":"Type","model":"Model","modelSelectedCount":"{count} models","clearTypeFilter":"Clear type filter","clearModelFilter":"Clear model filter","allModels":"All Models","all":"All","searchHistory":"Search history","today":"Today","regenerate":"Regenerate","reuseSettings":"Reuse settings","reEditHint":"Keep editing from this result","reuseSettingsHint":"Fill in the prompt, model and settings so you can change them before you generate","regenerateHint":"Generate again with the same settings. This uses credits.","regenerateHintCredits":"Generate again with the same settings. This will cost {credits} credits.","failed":"Failed","notCharged":"Not charged","generatingProgress":"Generating · {done}/{total}","noMore":"No more generations","empty":"No generations found","rewritePrompt":"Rewrite prompt to fix","quickStartTitle":"Quick Start","quickStartSubtitle":"Generate or remix one of the examples below to get started"},"detail":{"useAsReference":"Use as Reference","recreate":"Recreate","upscale":"Upscale Image","useInLipsync":"Use in Lip sync","createVideo":"Create video","extend":"Extend video","promptLabel":"Prompt","noPrompt":"This task did not use a prompt.","referenceAssets":"Reference assets","publicShare":"Share publicly","shareCopied":"Public share link copied to clipboard","shareFailed":"Could not create share link","publishPending":"Link copied. The work is submitted for Explore review.","publishApproved":"Link copied. This work is on Explore.","publishFailed":"Could not publish this work","publishCreatorOnly":"Only the creator of this work can publish it to Explore.","publishTakenDown":"This work was taken down and can't be published.","mediaUnavailable":"This work was taken down or doesn't exist.","shareCreatorOnlyCopied":"Only the creator can publish to Explore. We copied a share link for you.","shareCanceled":"Stopped sharing","shareCancelFailed":"Could not stop sharing","shareUnavailableDescription":"This generation was removed by its owner.","unavailableTitle":"Generation unavailable","unavailableDescription":"This shared generation is unavailable or the link has expired.","play":"Play","pause":"Pause","promptCopied":"Prompt copied to clipboard","expandInfo":"Show details","credits":"{count} credits","openRef":"Open reference","applyParam":"Apply {label}","previousItem":"Previous generation","nextItem":"Next generation","noPreviousItem":"No previous generation","noNextItem":"No next generation","loadingImage":"Loading image","mediaLoadError":"Couldn't load this media","mediaRetry":"Try again","mediaInvalid":"This file is damaged or its format is unsupported. Please upload another file."},"publishGuide":{"title":"Publish this work","description":"Publishing gives you a share link and sends this work for Explore review.","prompt":"Your prompt becomes public. People who open this work can see and reuse it.","review":"We review each work before it appears on Explore. The link works right away.","rewards":"Published works can earn credits when other people create from them.","learnMore":"How review and rewards work","dontShowAgain":"Don't show this again","confirm":"Publish and copy link","confirmPublishOnly":"Publish"},"publication":{"cpp":"Creator Partner","hot":"Popular","usedCount":"{count, plural, one {Used by # person} other {Used by # people}}","authorProfile":"View {name}'s profile","review":{"pending":"In review for Explore","approved":"On Explore","rejected":"Not approved for Explore","appealPending":"Appeal under review","appealRejected":"Appeal not approved"},"appeal":{"button":"Appeal","reasonLabel":"Your reason","placeholder":"For example: I designed the logo in the image myself.","submit":"Submit appeal","cancel":"Cancel","submitted":"Appeal submitted. We will review the work again.","failed":"Could not submit the appeal"},"panel":{"title":"Share and publish","shareTitle":"Share","copyLink":"Copy link","copyFailed":"Could not copy the link. Try again.","pasteOn":"Link copied. Paste it in {name}.","popupBlocked":"Your browser blocked the {name} window. Link copied. Paste it in {name}.","shareTo":"Share to","publishShareTo":"Publish & share to","shareOn":"Share on {name}","more":"More","viewOnExplore":"View","appealOnce":"You can appeal each work once.","seeReason":"See reason","rejectedReason":"Why it was not approved","removedByModeration":"Removed by Fish Audio moderators","removedFromExploreByAdmin":"Removed from Explore by Fish Audio","exploreSwitch":"Publish to Explore","publish":"Publish","exploreHint":"Your prompt becomes public. After review, the work shows on Explore.","creatorOnlyHint":"Only the creator can publish to Explore.","withdrawConfirm":"Remove from Explore? To show it on Explore again, it needs a new review.","withdrawAction":"Remove","withdrawFailed":"Could not remove the work from Explore","withdrawnRequest":"Withdrew the Explore request","withdrawnAppeal":"Withdrew the appeal","withdrawnFromExplore":"Removed from Explore","withdrawAppealConfirm":"Withdraw the appeal? You can appeal each work only once. After you withdraw it, you cannot appeal again.","withdrawAppealAction":"Withdraw","stopSharing":"Stop sharing","stopConfirm":"Stop sharing? The link will stop working.","stopConfirmExplore":"Stop sharing? The link will stop working, and the work will be removed from Explore.","cancel":"Cancel","previewLockedHint":"Pay to publish this video to Explore."}},"card":{"edit":"Edit","videoGen":"Video Gen","upscale":"Upscale","extend":"Extend","lipsync":"Lip sync","reference":"Reference"},"modelModal":{"title":"Select model","searchPlaceholder":"Search models","clearSearch":"Clear search","generate":"Generate","editing":"Editing","lipsyncAvatar":"Avatar Syncing","lipsyncVideo":"Video Syncing","new":"New","startingPriceOutput":"Starting at {credits} credits","startingPriceSecond":"Starting at {credits} credits per second","startingPriceDiscount":"{percent}% off, was {original}","empty":"No models found"},"modelDescriptions":{"heygenVideo1":"5–15s clips with sound, from text or references.","wan30":"Generate 2–30 second videos from text, frames, or media references.","geminiOmniFlash":"Generate 3–10 second videos or edit existing video. Priced per generation.","nanoBanana":"Quick idea drafts and reference edits for everyday visuals.","nanoBanana21":"Newer Nano Banana with stronger reference consistency, at a lower price than Nano Banana 2.","nanoBanana2Lite":"Fast, lightweight Nano Banana for quick drafts and simple edits.","seedream45":"Clean, prompt-faithful images for polished social and product visuals.","seedream50":"Sharper Seedream output for detailed scenes, products, and stylized concepts.","gemini3ProImage":"Best for text-heavy, structured images and precise reference edits.","gptImage2":"High-control image generation with quality, size, and edit options.","gptImage25Flare":"Fast generation and editing for everyday images and quick iterations. Same price as Sunburst at matching settings.","gptImage25Sunburst":"Fine detail and precise editing for complex visuals and repeated revisions. Slower than Flare, at the same price for matching settings.","grokImagineImage":"Expressive xAI images with strong prompt adherence up to 2K detail.","grokImagineVideo":"Grok Imagine clips with native audio from text or a start frame.","topazHd":"Upscale one image with Topaz High Fidelity detail recovery.","topazVideo":"Upscale one video with Topaz detail recovery.","kling26Pro":"Reliable cinematic clips from text or a start frame.","kling3Pro":"Higher-end motion and camera control for premium short clips.","klingO3Pro":"Up to 7 reference images keep characters and scenes consistent for unlimited creative possibilities.","kling40":"Steadier big motion and camera moves, up to 30 s with auto multi-shot, in 4K.","hailuo23":"Fast short videos when speed matters more than deep controls.","minimaxH3":"Standard H3 supports up to 2K and keeps characters and voices consistent with mixed image, video and audio references.","minimaxH3Lipsync":"Lip-syncs to your audio with expressive speech; direct full-body motion freely in the prompt.","veo31":"Premium Google video for realistic motion and scene consistency.","seedance25":"Latest Seedance generation with mixed media references, native audio and clips up to 30s.","seedance20":"Flexible ByteDance video with start/end frames and media references.","seedance20Fast":"Faster Seedance 2.0 runs for quick drafts at 480p/720p.","seedance20Mini":"Smallest, most affordable Seedance 2.0 tier at 480p/720p.","seedance15Pro":"Fast, budget-friendly ByteDance video at 480p/720p.","syncLipsyncV3":"Video and audio drive the lip sync; text prompts are not supported.","syncLipsyncV2Pro":"Stable pro lip-sync for existing footage and clean voice tracks.","veedLipsync":"Quick video lip-sync for simple talking updates.","pixverseLipsync":"Stylized lip-sync for short clips with a lighter creative feel.","creatifyAuroraAvatar":"Audio up to ~5 min; image and audio create the avatar.","creatifyAuroraV2Avatar":"Up to 1080P, audio up to 59 s, sharper detail.","heygenAvatar4":"Image and audio create the avatar, with speech determined by the audio. Choose the output aspect ratio and resolution.","veedFabricAvatar":"Image and audio create the avatar without a text prompt. The output follows the image aspect ratio.","infinitalkAvatar":"Prompt-guided avatar speech with a more expressive generated look.","minimaxH3Max":"Prompt-faithful Max with mixed image, video and audio references; reference mode supports up to 768P.","minimaxH3MaxTurbo":"Faster text-to-video and start/end-frame generation at half the Max price for the same settings. No mixed references.","minimaxSolH3":"The fast H3: quick, low-cost clips for trying ideas."},"status":{"downloadReady":"Your file is ready. Tap to save or share.","saveOrShare":"Save or share","deleteFailed":"Couldn't delete. Please try again.","submissionUnconfirmed":"We couldn't confirm this generation. Check History in a moment.","submissionOffline":"No internet connection. This generation wasn't sent — reconnect and try again.","submissionConflict":"We couldn't submit this generation. Please try again.","downloadFailed":"Download failed. Please try again.","failed":"Generation failed","generating":"Generating...","priceChanged":"Price changed to {credits, number} credits. Please review and generate again.","priceFailed":"We couldn't calculate the price","priceFailedNetwork":"Connection failed — check your network and retry","priceFailedReason":"We couldn't calculate the price. {reason}"},"menu":{"upscale":"Upscale","extend":"Extend","lipsync":"Lip sync","recreate":"Recreate","reEdit":"Re-edit","useAsReference":"Use As Reference","download":"Download","saveToAssets":"Save to assets","delete":"Delete"},"report":{"title":"Report content","question":"Why are you reporting this?","reasons":{"nsfw":"NSFW or explicit content","copyright":"Copyright infringement","privacy":"Privacy violation","violence":"Violent or graphic content","spam":"Spam or misleading","other":"Other"},"detailPlaceholder":"Add more details (optional)","cancel":"Cancel","submit":"Submit report","success":"Report submitted. Thanks for helping keep Explore safe.","error":"Failed to submit report"},"taskError":{"subtype":{"content":{"title":"Blocked by content moderation","desc":"Your prompt or reference didn't pass moderation. You weren't charged — adjust it and try again."},"inputInvalid":{"title":"Input not supported","desc":"Some settings or reference files aren't supported by this model. Adjust them and try again."},"noOutput":{"title":"No result generated","desc":"The model didn't return a result for this prompt. Try rephrasing it. You weren't charged."},"busy":{"title":"Service is busy","desc":"Too many requests right now. This attempt wasn't charged. Trying again uses credits."},"timeout":{"title":"Generation timed out","desc":"This took longer than expected. This attempt wasn't charged. Trying again uses credits."},"transient":{"title":"Something went wrong","desc":"A temporary issue interrupted this generation. This attempt wasn't charged. Trying again uses credits."},"modelUnavailable":{"title":"This model isn't available right now","desc":"You weren't charged. Trying again won't help — switch to a different model."},"canceled":{"title":"Canceled"},"submitFailed":{"title":"Couldn't submit the task","desc":"The task couldn't be submitted. This attempt wasn't charged. Trying again uses credits."},"unknown":{"title":"Generation failed","desc":"This attempt wasn't charged. Trying again uses credits."}},"code":{"image_too_large":"The reference image is too large. Use a smaller image and try again.","image_too_small":"The reference image resolution is too low. Use a larger image and try again.","unsupported_media_format":"This file format isn't supported. Convert it and try again.","media_duration_exceeded":"The media is too long for this model. Trim it and try again.","media_duration_exceeded_max":"The media is too long for this model. Maximum is {max} seconds. Trim it and try again.","media_load_error":"We couldn't load the reference file. Re-upload it and try again.","media_constraint_violation":"A reference file doesn't meet this model's requirements. Adjust it and try again.","reference_aspect_ratio_invalid":"The reference images have mismatched aspect ratios. Use matching images or a matching output ratio.","invalid_parameters":"This parameter combination isn't supported. Adjust the settings and try again.","video_task_type_constraint":"The prompt was read as editing the original video. Rewrite it like “follow the motion of @Video 1” and try again.","moderation_copyright_suspected":"This reference image may contain copyright-protected material. Replace the reference image and try again.","prompt_too_long":"Your prompt is {received} characters, but this model accepts up to {max}. Shorten it and try again.","reference_video_too_large":"The reference video is over {max} MB. Use a smaller file and try again.","reference_audio_too_large":"The reference audio is over {max} MB. Use a smaller file and try again."},"action":{"editPrompt":"Edit prompt","adjustInput":"Adjust and retry","retry":"Try again","retryRecommendedModel":"Retry with recommended model"}},"contract":{"billed":"Billed to your agreement","billed_amount":"<label>Billed to your agreement</label> · <figure>{amount}</figure>","free_period":"No charge · free period","prepaid_exhausted":"Agreement prepaid balance is exhausted","suspended":"Service is suspended under your agreement","price_changed":"Price changed to {amount}, billed to your agreement. Please review and generate again."},"feed":{"backToTop":"Back to top"},"watermarkPreview":{"badge":"Preview","paywallTitle":"Pay to download the original","paywallDescription":"This video is a watermarked preview. Once you pay, all your videos switch to the originals.","downloadLocked":"This video is a preview. Only its creator can unlock the download.","composerHint":"Videos are watermarked until you upgrade.","unlockHint":"Upgrade to remove watermarks and keep creating.","upgradePaywallTitle":"Upgrade to remove watermarks and keep creating","composerPaywallDescription":"Once you pay, new videos come without watermarks and all your past videos switch to the originals.","publishPaywallTitle":"Pay to publish to Explore","pending":"Preparing preview","pendingReuse":"The preview is being prepared. Try again soon."},"avatarSpeech":{"autoGenerateDropped":"The quote timed out, so the video was not submitted. Press Generate to submit it."}},"mcp-upload":{"title":"Upload for your AI assistant","description":"Your AI assistant can't receive files in this chat, so it sent you here. The file uploads directly to Fish Audio; this link expires after one hour.","expected_file":"Requested file: {name}","drop_hint":"Drag and drop a file here, or","browse":"Choose a file","uploading":"Uploading…","done_title":"Upload complete","done_hint":"Go back to your chat and tell the assistant the file is uploaded.","replace":"Upload a different file","invalid_link":"This upload link is invalid. Ask your assistant for a new one.","error_expired":"This upload link has expired — links last one hour. Ask your assistant for a new one.","error_too_large":"The file exceeds the 100 MB limit.","error_too_large_limit":"The file is larger than {max} MB, the limit for this file type.","error_empty":"The file is empty. Choose another file.","error_unsupported_type":"This link only accepts {formats} files. Upload that format, or ask your assistant for a new link.","error_needs_new_link":"This link can't take this file. Ask your assistant for a new link.","error_failed":"Upload failed. Check your connection and try again.","error_try_later":"Too many requests or the service is busy. Try again in a moment."},"nav":{"about":"About","admin":"Admin","admin_shell_description":"Centralized admin entry and navigation.","admin_workspace":"Admin Workspace","admin_workspace_description":"All current admin features are collected here in one place.","admin-affiliate":"Affiliate","admin-chart":"Stat","admin-group-users":"Users & Accounts","admin-group-business":"Enterprise & Finance","admin-group-moderation":"Support & Moderation","admin-group-models":"Voices & Models","admin-group-media":"Media","admin-group-content":"Content & Marketing","admin-group-tools":"Experiments & Dev Tools","admin-project":"Project","admin-account-controls":"Account Controls","admin-user":"User","admin-withdraw":"Withdrawals","administration":"Administration","agent":"Agent","all_agents":"All agents","agents":"Voice Agents","affiliateTooltip":"Earn as an affiliate","api":"API","api_billing":"API Billing","api_keys":"API Keys","api_pricing":"API Pricing","audio-separation":"Stem Splitter","auth-card":{"affiliate":"Affiliate","changelog":"What's New","description":"Enjoy all features","guest":"Guest","help":"Help","helpLabel":"Help","login":"Login / Sign up","logout-trigger":"Logout","logout":{"cancel":"Cancel","confirm":"Confirm","title":"Are you sure you want to log out?"},"my-profile":"My Profile","get-free-credits":"Get Free Credits","notifications":"Notification","settings":"Settings","sign-up":"Sign up","title":"Sign up or log in","tutorials":"Tutorials"},"back_to_top":"Back to top","billing":"Billing","pronunciation_dictionary":"Pronunciation Dictionary","team-settings":"Team Settings","character":"Character","cms":"CMS","credit-links":"Credit Links","creative":"Creative","dashboard":"Dashboard","developer":"Developer","developer_docs":"Developer Docs","developer_get_started":"Get Started","developer_program":"Developer Program","developers":"Developers","discovery":"Voice Library","asset-library":"Asset Library","docs":"Docs","documentation":"Documentation","end_list":"You have reached the bottom of the list,","extraCredits":{"tooltip":"Claim more credits by following our <discordLink>Discord</discordLink>, <xLink>X</xLink>, <youtubeLink>YouTube</youtubeLink>, <instagramLink>Instagram</instagramLink> and <tiktokLink>TikTok</tiktokLink>."},"go-premium":"Go premium","go-to-app":"Log in","helpTooltip":"Help","interface":"Interface","join-at":"Joined","language":"Language","allLanguages":"All Languages","languageTooltip":"Change language","launch":"Launch","link-home":"Home","link-image-video":"Image & Video","link-tts":"Text to Speech","login":"Log in","manage-premium":"Plans","models":"Models","my-collections":"Bookmarks","my-conversions":"Generation History","my-library":"My Voices","my-voice":"My Voices","my-voice-collection":"Collections","team-voices":"Team Voices","not_matching_result":"Not matching result","open-app":"Open App","overview":"Overview","platform":"Platform","playground":{"quota":"Quota","title":"Playground"},"premium_bar":{"free_button_text1":"Free","free_button_text2":"","free_plan_line1":"You are on the free plan.","free_plan_line2":"{balance}/{total} credits left.","paid_plan":"You're on the {planName} plan!","premium_benefits":"Cheers! You're enjoying premium benefits!","premium_button_text":"Premium","unauth_button_text":"Upgrade","upgrade_now":"Upgrade Now"},"pricing":"Pricing","products":"Products","reports":"Reports","search":"Search","search_result":"Search Result","self_host":"Self Host","settings":"Settings","sound-effects":"Sound Effects","speech-to-text":"Speech to Text","story_studio":"Audiobooks","story-studio":"Audiobooks","suggestions":"Suggestions","support":"Support","careers":"Careers","text-to-speech":"Text to Speech","ai-voice-generator":"AI Voice Generator","theme":{"dark":"Dark","light":"Light","system":"System","title":"Theme","tooltip":"Toggle light/dark mode"},"train":"Voice Cloning","voice-design":"Voice Design","try_a_new_search":"Try a new search","tutorials":"Tutorials","usage":"Usage","voice-cloning":"Voice Cloning","waitlist":"Waitlist","beta":"Beta","new":"New","contact-us":"Contact Sales","get-started":"Get started","sign-up-free":"Sign Up Free","sign-up-short":"Sign Up Free","solutions":"Solutions","research":"Research","resources":"Resources","enterprise-nav":"Enterprise","finance-nav":"Finance","feedback":"Feedback","model-testing":"Model Testing","music-generation":"Music Generation","music-samples":"Music Samples","audio-converter":"Audio Converter","audio-translation":"Audio Translation","voice-agent":"Voice Agents","video-editor":"Video Editor","sound-effect":"Sound Effect","partner-integrations":"Partner Integrations","for-startups":"For Startups","voiceovers":"Voiceovers","for-students":"For Students","character-voices":"Character Voices","conversational-chatbots":"Conversational Chatbots","fish-audio-s2":"Fish Audio S2","fish-audio-s1":"Fish Audio S1","fish-speech":"Fish Speech","open-audio":"OpenAudio","fish-diffusion":"Fish Diffusion","github":"Github","blog":"Blog","guide":"Guide","api-reference":"API Reference","compare-us":"Compare Us","character-collection":"Character Collection","voice-library":"Voice Library","affiliate":"Affiliate","earn-as-affiliate":"Earn as Affiliate","dropdown-column-apis":"APIs","dropdown-column-company":"Company","dropdown-column-resources":"Resources","dropdown-tts-desc":"Generate clean voice from scripts","dropdown-ai-voice-generator-desc":"Create natural voices instantly","dropdown-tts-api-desc":"Generate speech via API","dropdown-stt-desc":"Transcribe audio to text with exceptional accuracy","dropdown-audio-separation-desc":"Extract vocals from noisy or mixed audio","dropdown-audio-converter-desc":"Convert audio files between 20+ formats","dropdown-voice-changer-desc":"Transform your voice into any character in real time","dropdown-audio-translation-desc":"Convert audio into different languages","dropdown-voice-cloning-desc":"Create a replica of your voice","dropdown-story-studio-desc":"Audiobooks, podcasts, lessons & narration","dropdown-video-editor-desc":"Add AI voiceovers to any video","dropdown-voice-agent-desc":"Build voice agents that talk like humans","dropdown-sound-effect-desc":"Generate cinematic sound effects","dropdown-partner-integrations-desc":"Access Fish Audio through our partner platforms","dropdown-for-startups-desc":"Scale your voice product with flexible APIs","dropdown-voiceovers-desc":"Professional voices for any media","dropdown-for-students-desc":"Learn and create with AI voice tools","dropdown-character-voices-desc":"Transform any text into authentic character voices","dropdown-chatbots-desc":"Voice-enable your AI assistant","feature-flags":"Feature Flags","ab-tests":"AB Tests","tts-templates":"TTS Templates","voice-changer":"Voice Changer","zero_retention":"Zero Retention","team_wallet":"Team Wallet","creative_agent":"Creative Agent","create-voice":{"title":"Create Voice","subtitle":"Pick a method to start — you can always come back.","pick-method":"Pick a method","voice-clone":{"title":"Instant Voice Clone","description":"Upload or record 10s of audio, clone it instantly.","tag-time":"~1min","tag-best":"Best for existing recordings"},"voice-design":{"title":"Voice Design","description":"Describe the voice in plain text.","tag-time":"~15s","tag-best":"Best for original characters"},"pvc":{"title":"Professional Voice Clone","description":"Verified, real-person, studio-quality voice with optional commercial release & revenue share.","tag-time":"1-2hrs","tag-best":"Studio quality","quota-exceeded-tooltip":"You've reached the limits of your current plan. Upgrade to continue creating professional voice clones.","confirm-title":"Create Professional Voice Clone?","confirm-description":"Once created, a Professional Voice Clone job cannot be deleted. Are you sure you want to continue?","confirm-cancel":"Cancel","confirm-continue":"Confirm","confirm-draft-hint":"You have an unfinished draft from {date}. Confirming will start a brand-new voice clone.","confirm-continue-draft":"Continue draft"},"upgrade-dialog":{"voice-design-free":"Voice Design is not included in the Free plan. Upgrade your plan to design voices from text.","voice-design-free-title":"Voice Design is not included in the Free plan.","voice-design-free-description":"Upgrade your plan to design voices from text.","pvc-free":"Professional Voice Clone is not included in the Free plan. Upgrade your plan to create studio-quality voice clones.","pvc-slots":"Your {plan} plan includes {limit, plural, one {# Professional Voice Clone slot} other {# Professional Voice Clone slots}}. Upgrade your plan to create more.","pvc-unavailable":"Your current plan cannot create another Professional Voice Clone. Upgrade your plan to continue."},"section-draft":"Professional Clone Draft","continue-draft":"Continue with Professional Voice Draft","section-done":"Professional Clone Trained","section-awaiting-release":"Professional Clone Awaiting Release","section-training":"Professional Clone Training in progress","section-failed":"Professional Clone Failed","action-continue":"Continue","action-release":"Release","action-contact-support":"Contact Support","delete-title":"Delete voice?","delete-description":"Are you sure you want to delete “{name}”? This action cannot be undone.","delete-cancel":"Cancel","delete-confirm":"Delete","action-view":"View","failed-to-clone":"Failed to clone","continue":"Continue","slots-used":"<used></used>/{limit} slots used","draft-voice":"Draft Voice","released":"Released"},"library":"Library","monitor":"Monitor","conversations":"Conversations","analytics":"Analytics","whats_new":"What's New","knowledge_base":"Knowledge Base","phone_numbers":"Phone numbers","studio_beta":"Studio Beta","quality_guard":"Quality Guard","voice_content_policy":"Voice Content Policy","arena":"Arena","asr_source_url":"ASR Source URL","agent_billing":"Billing","enterprise-nav-desc":"Enterprise customers, contracts & invoices — import signed deals here","finance-nav-desc":"Revenue schedules, finance datasets & the product dictionary","enterprise_portal":"Enterprise","promo_banner":{"cta":"Redeem","subtitle":"- 50% OFF YEARLY","title":"Limited Time Offer","drama3_countdown":"Offer expires in","drama3_timer":"{days}D {hours}H {minutes}M {seconds}S","drama3_message":"Meet Drama 3: 80% off through API and 50% off all plans","drama3_message_short":"Drama 3: 80% off API, 50% off plans","drama3_cta":"Claim Offer","drama3_popup_title":"DRAMA 3. OUR BEST MODEL. 80% OFF.","drama3_popup_description":"Drama 3 is 80% off through the <api>developer API</api>, and all plans are 50% off until November 30.\nThe best voices we’ve ever shipped, at half the price.","drama3_popup_cta":"Claim Your 50% Off","drama3_popup_close":"Close campaign offer"},"dropdown-column-creative":"Creative","ai-avatar-generator":"AI Avatar Generator","ai-video-generator":"AI Video Generator","ai-image-generator":"AI Image Generator","mcp":"MCP","dropdown-ai-avatar-generator-desc":"Make any photo talk with lip sync AI","dropdown-ai-video-generator-desc":"Cinematic video from text or images","dropdown-ai-image-generator-desc":"Generate and edit images in up to 4K","dropdown-mcp-desc":"Use Fish Audio from Claude, Codex, and more","dropline":"Dropline","dropdown-dropline-desc":"AI dictation for Mac and Windows","website-content":"Website content","group_account":"Account","members":"Members","voice_acting":"Voice Acting","voices":"Voices","browse-voices":"Browse Voices","landing-audio-separation":"Audio Separation","live3_api_access":"Live 3 API access","live3_banner":{"badge":"New","message":"Meet Live 3: the full-duplex voice model that listens while it speaks","cta":"Try Live 3"},"live-3":"Live 3","dropdown-live-3-desc":"Full-duplex real-time voice for agents"},"plan":{"all_plans":"All Plans","already_discounted":"You already have a great discount on your subscription!","badge":"3 MONTHS OFF","best_value":"Best Value","better_discount_message":"Your {percent}% discount is better than the 50% offer. Keep your subscription and enjoy your savings!","billed_annually":"{amount} billed annually","first_year_promo_billing_note":"First year {percent}% off · {amount} billed annually","first_year_promo_trial_billing_note":"First year {percent}% off · {amount} billed annually after {days}-day free trial","first_year_promo_banner":"Limited time: {percent}% off your first year","monthly_promo_banner":"Limited time: {percent}% off your first month","monthly_promo_billing_note":"First month {percent}% off","billing_period_label":"Billing Period","buy_more_credits":"Buy more credits","campare_plans":"Compare plans for more details","cancel":"Cancel","cancel_anyway":"Cancel Anyway","cancel_current_to_change":"Cancel current plan to change","cancel_on":"Cancel on","cancel_reason_comment_placeholder":"Please tell us more...","cancel_reason_low_quality":"Poor audio quality","cancel_reason_missing_features":"Missing features I need","cancel_reason_other":"Other","cancel_reason_prompt":"Why are you cancelling?","cancel_reason_switched_service":"Switching to another service","cancel_reason_too_expensive":"Too expensive","cancel_reason_unused":"I don't use it enough","cancel_scheduled_change_button":"Cancel scheduled downgrade","cancel_scheduled_downgrade_to_upgrade":"Cancel scheduled downgrade to upgrade plan","cancel_subscription":"Cancel subscription","non_renewing_plan_notice":"Your current plan ends on {date} and won't renew.","non_renewing_plan_ending_notice":"Your current plan ends on {date} and won't renew. Subscribe to continue without interruption.","cancel_subscription_failed":"Failed to cancel your subscription. Please try again.","cancel_subscription_title":"Cancel Subscription?","cancel_subscription_warning":"Cancelling will remove access to cloned voices beyond the free slot at the end of your billing period.","cancel_to_downgrade":"Cancel plan to downgrade","cancelling":"Cancelling","cancels_on":"Cancels on","cannot_downgrade_cross_period":"Downgrade Unavailable","changes_scheduled_for":"Changes will take effect on","changes_take_effect_immediately":"Changes will take effect immediately","changing_on":"Changing on","changing_to":"Changing to","checking_offer":"Checking your offer...","claim_offer":"Claim 50% Off","comming_soon":"Coming Soon","compare_plans":"Compare plans for more details","confirm_and_pay":"Confirm and Pay","confirm_change":"Confirm Change","confirm_downgrade":"Confirm Downgrade","confirm_plan_change":"Confirm Plan Change","confirm_upgrade":"Confirm Upgrade","continue":"Continue","credit_packs_description":"Purchase additional credits to boost your account. Credits never expire and can be used anytime.","credit_packs_note":"Purchased credits will never expire and will be used after package credits have been used up.","credits_remaining_label":"Credits Remaining","legacy_paid_tts_unlimited_notice":"Text to Speech: Unlimited","legacy_paid_other_features_use_credits":"Other features use credits","current_plan":"Current Plan","current_plan_label":"Current Plan","current_plan_subscription":{"expire_date":"Expiry date: {date}","title":"Current Plan"},"current_plan_title":"Current Plan","downgrade":"Downgrade","downgrade_to_plan":"Downgrade to {plan}","downgrade_description":"Your plan will be downgraded at the end of your current billing period","downgrade_notice":"Downgrade Notice","existing_discount_active":"Active discount on your subscription","existing_discount_forever":"Forever discount on your subscription","expire_date":"Expiry date: {date}","faq":{"q1":{"answer":"Each minute of generation costs roughly 600 to 625 credits.","question":"How many credits does each minute of generation cost?"},"q2":{"answer":"Free plan gives you free generations per month while Premium provides credits for up to 200 minutes of highest quality speech generation.","question":"What's the difference between Free and Premium plans?"},"q3":{"answer":"Yes, you can switch between monthly and yearly billing at any time. When switching to yearly, you'll save at least {percent}% compared to monthly billing. Changes take effect at your next billing cycle.","question":"Can I switch between monthly and yearly billing?"},"q4":{"answer":"We accept all major credit cards (Visa, MasterCard, American Express), debit cards, and various regional payment methods through our secure payment processor.","question":"What payment methods do you accept?"},"q5":{"answer":"Credits get replenished and reset each month. See your remaining credits at <textToSpeech>text to speech</textToSpeech> page.","question":"When do my credits reset?"},"q6":{"answer":"Monthly quotas reset at the beginning of each billing cycle. Unused minutes do not roll over to the next month. We recommend using your allocated minutes within your billing period.","question":"What happens to my unused minutes?"},"q7":{"answer":"Yes, and you don't need a subscription for it. The API is billed separately from subscription plans, with pay-as-you-go API credit, and the S2.1 Pro Free model can be called without any credit. You can find documentation and pricing on our <apiDocs>developers page</apiDocs>.","question":"Do you offer API access?"},"q8":{"answer":"Premium subscribers can use verified voices (that you own) for commercial purposes. Free plan users can only use generated content for personal, non-commercial projects. Please review our terms of service for detailed usage rights.","question":"Can I use generated voices for commercial purposes?"},"title":"Frequently Asked Questions"},"free":"Free","free_plan_credits":"8,000","free_plan_credits_text":"credits monthly","free_plan_description":"Experience realistic AI voice technology.","free_plan_title":"Free Tier","free_powers":["Up to 7 minutes of highest quality speech generation","Up to 500 characters per generation","Standard generation speed","3 public voice slots"],"great_deal_title":"You Already Have a Great Deal!","has_scheduled_change":"Has scheduled change","highly_recommended_for_who_seek_to_make_premium_content":"Highly recommended for who seek to make premium content.","hold_to_confirm_payment":"Hold to confirm payment","hold_to_pay":"Hold to Pay","keep_my_discount":"Keep My Discount","keep_subscription":"Keep Subscription","lite_plan_description":"Great for hobbyists and light users.","lite_powers":["Up to 60 minutes of speech generation monthly","Priority generation on our latest models","Up to 5,000 characters per generation","Enhanced voice cloning","Unlimited public + 10 private voice slots"],"login_for_free":"Sign Up for Free","looking_for_api_pricing":"Looking for API pricing?","manage_subscription":"Manage Subscription","start_free_trial":"Start Free Trial","subscription_history":"Subscription History","minimum_charge_notice":"A minimum charge has been applied","month":"month","monthly":"Monthly","new_plan":"New Plan","next_billing_date_label":"Next Billing Date","no_payment_required":"No Additional Payment Required","pack_1m_credits":"1,000,000 credits","pack_1m_description":"Perfect for regular users","pack_1m_audio_usage_estimate":"Up to 800 min audio, 6666 images, or 2840 s video.","pack_1m_creative_usage_estimate":"Up to 800 min audio, 6666 images, or 2840 s video.","pack_5m_credits":"5,000,000 credits","pack_5m_audio_usage_estimate":"Up to 4000 min audio, 33333 images, or 14204 s video.","pack_5m_creative_usage_estimate":"Up to 4000 min audio, 33333 images, or 14204 s video.","pack_5m_description":"Best for heavy users","pack_5m_recommended":"Recommended for heavy users","pick_your_plan":"Choose Your Plan","pick_your_plan_description":"Unleash your creativity with unlimited generations","pick_your_premium":"Pick Your Premium","plan":"Plan","plan_credits_text":"credits monthly","team_plan_free_subtitle":"For everyone","team_plan_offer_banner":"Limited Time Offer: {percent}% off when billed annually","team_plan_generation_summary":"Up to {minutes} minutes generation","team_plan_no_credit_card":"No credit card needed","team_plan_commercial_use_short":"Commercial use","team_plan_creative_capacity":"Up to {images, number} images or {seconds, number}s of video monthly","team_plan_plus_trial_feature":"Try Plus plan for free for {days} days","team_plan_voice_design_access":"Access to Voice Design","team_plan_professional_voice_slots_plus":"1 professional voice slot","team_plan_professional_voice_slots_pro":"5 professional voice slots","team_plan_professional_voice_slots_max":"15 professional voice slots","team_plan_everything_in_plus":"And everything in Plus","team_plan_everything_in_pro":"And everything in Pro","team_plan_enterprise_controls":"with organization-level controls","team_plan_custom_sso_coming_soon":"Custom SSO (Coming soon)","plan_price_unit":"mo","plus":"Plus","plus_plan_description":"Access all advanced features.","plus_plan_description_v2":"For creators and professionals.","plus_plan_title":"Pro","plus_powers_v2":["Up to 200 minutes of speech generation monthly","Priority generation on our latest models","Up to 15,000 characters per generation","Enhanced voice cloning","Unlimited public + 10 private voice slots","Commercial use allowed","Works with the pay-as-you-go API (billed separately)"],"plus_powers":["Everything in premium","Enhanced reference audio","Priority access to the new models"],"plus_upgrade_button":"Coming Soon","popular":"Popular","premium":"Premium","premium_legacy_plan_updates_link":"Learn more about plan updates","premium_plan_credits":"250,000","premium_plan_credits_text":"credits monthly","premium_plan_description":"Perfect for creators who need professional-quality content.","premium_plan_title":"Premium (Legacy)","premium_powers":["Up to 200 minutes of highest quality speech generation","Priority generation on our latest models","Enhanced voice cloning","Unlimited voice slots","Expressive speech","Lightning-fast generation speed","Advanced model parameters","Flexible pay-as-you-go API","Commercial use of verified voices"],"pricing_breakdown":"Pricing Breakdown","pro_plan_description":"For power users and businesses.","pro_powers":["Up to 1,620 minutes of speech generation monthly","Priority generation on our latest models","Up to 30,000 characters per generation","Enhanced voice cloning","Unlimited voice slots","Commercial use allowed","3 team seats included","Works with the pay-as-you-go API (billed separately)"],"max_plan_description":"For teams with large-scale production needs.","max_powers":["Up to 6,250 minutes of speech generation monthly","Priority generation on our latest models","Up to 30,000 characters per generation","Enhanced voice cloning","Unlimited voice slots","Commercial use allowed","10 team seats included","Works with the pay-as-you-go API (billed separately)"],"proceed_to_payment":"Proceed to Payment","processing":"Processing...","promo_badge_1":"3 MONTHS OFF","promo_badge_2":"Limited Time {percent}% OFF","promo_badge_2_mobile":"Limited Time {percent}% OFF","prorated":"Prorated","purchase_pack":"Purchase","quota":"Quota:","quota_reset":"Quota Reset:","reactivating":"Reactivating...","refresh_tooltip":"Your credits will refresh in {days} days on {date}.","renew_subscription":"Renew subscription","renewal_date":"Renewal date","replacing_discount":"This will replace your current {percent}% {duration} discount","resume_offer_applied":"Your subscription has resumed. Your next renewal is 50% off.","resume_offer_confirm":"Resume at 50% off","resume_offer_description":"Your subscription resumes, and your next renewal is 50% off. After that renewal, it goes back to the regular price, and you can cancel any time.","resume_offer_dismiss":"Not now","resume_offer_failed":"Couldn't resume your subscription. Please try again.","resume_offer_title":"Stay for half the price","resume_offer_unavailable":"This offer isn't available for your subscription, but you can still renew it at the regular price.","resume_offer_unavailable_title":"Offer unavailable","retention_offer_applied":"50% discount applied to your next renewal!","retention_offer_benefit":"Keep your cloned voices and premium features","retention_offer_description":"Get 50% off your next renewal and keep all your premium features.","retention_offer_title":"Wait! Here's a special offer","scheduled":"Scheduled","scheduled_change":"Scheduled change","scheduled_change_cleared":"Your scheduled plan change was cleared","subscription_cancelled":"Your subscription will cancel at the end of the billing period","subscription_cancelling":"Subscription Cancelling","subscription_reactivated":"Your subscription has been reactivated","switch_to_annual":"Switch to annual billing for 3 months off!","switch_to_annual_billing":"Switch to Annual Billing","switch_to_plan":"Switch to {plan}","total_due":"Total Due","try_out_ai_voice":"Try out the ultra-realistic AI voice.","unlimited_generations_ignite_infinite_creativity":"Unlimited generations ignite infinite creativity","unlock_all_features":"Unlock all powerful features.","update_payment":"Update payment","upgrade":"Upgrade","upgrade_to_plan":"Upgrade to {plan}","subscribe_to_plan":"Subscribe to {plan}","upgrade_modal_cta":"Upgrade to {plan} {billing}","upgrade_modal_billing_monthly":"Monthly","upgrade_modal_billing_annually":"Annually","upgrade_at_no_cost":"Your upgrade will be processed at no additional cost","upgrade_charged_immediately":"Your upgrade will be charged immediately","upgrade_ends_trial_charged_immediately":"Upgrading ends your free trial now — you'll be charged immediately","pay_now_convert_trial":"Pay now and start your plan","upgrade_no_credits":"Upgrade for more credits","upgrade_no_credits_pro":"Purchase more credits","upgrade_char_limit":"Byte Limit Reached","upgrade_char_limit_desc":"Your current plan's byte limit has been reached. Upgrade to a higher plan for more bytes per generation.","upgrade_plan":"Upgrade Plan","upgrade_to_premium":"Upgrade to Premium","upgrade_to_pro_for_credits":"Upgrade to Pro to purchase additional credits","yearly":"Yearly","yearly_benefit_money_back":"7 days money back guarantee","yearly_trial_banner":"Try Plus annual plan free for 5 days","yearly_trial_billing_note":"{amount} billed annually after {days}-day free trial","trial_feature":"{days}-day free trial","you_save":"You save {amount}","your_current_plan":"Your current plan","your_power":"Your Power","currency_select_label":"Currency","prices_in_usd":"USD","cancel_access_until":"You'll keep access until {date}","cancel_credits_remaining":"Credits remaining: {count}","view_plans":"View plans","buy_credits_hero_subtitle":"Unleash your creativity","buy_credits_close":"Close buy credits dialog","credit_pack_feature_never_expire":"Top-up credits never expire","credit_pack_feature_after_subscription":"Consumed after subscription credits are used up","credit_pack_feature_after_subscription_ends":"Can be used anytime, even after subscription ends","upgrade_modal_monthly_confirm_title":"Pay less with annual billing","upgrade_modal_monthly_confirm_description":"Switch to annual billing and save {amount}.","upgrade_modal_continue_monthly":"Continue monthly","upgrade_modal_switch_annual_with_savings":"Switch to annual (save {amount})","upgrade_modal_audio_description":"Unlock text to speech & more features","upgrade_modal_creative_description":"Unlock video generation & more features","upgrade_modal_and_more":"And more","upgrade_modal_monthly_credits":"{credits} monthly credits","payment_link_modal_title":"Complete your payment","payment_link_modal_description":"Click the button below to open the secure payment page in a new tab. You can also copy the link.","payment_link_modal_copy_link":"Copy link","payment_link_modal_open_new_tab":"Open in new tab","payment_link_modal_close":"Close","payment_link_modal_copied":"Link copied to clipboard","payment_link_modal_copy_failed":"Failed to copy link","payment_link_modal_popup_blocked":"Please allow popups to open the payment page.","audio_upgrade_dialog":{"tts_credits_exhausted_free":{"title":"Continue generating your voice","description":"Your free credits are used up. Upgrade to Plus for up to 200 minutes of high-fidelity voice per month and up to 15,000 characters per generation."},"tts_credits_exhausted_plus":{"title":"Unlock 8x more voice credits","description":"Your monthly voice credits are used up. Upgrade to Pro for up to 27 hours of voice per month."},"tts_character_limit_free":{"title":"Generate longer content at once","description":"Free plans can generate up to 500 characters at a time. Upgrade to Plus for up to 15,000 characters per generation and 200 minutes of voice per month."},"tts_character_limit_plus":{"title":"Generate 30,000 characters at once","description":"Upgrade to Pro to double your per-generation limit to 30,000 characters and get up to 27 hours of voice per month."},"stt_credits_exhausted":{"title":"Transcribe more audio","description":"Your credits are used up. Upgrade to Pro to transcribe up to 11 hours of audio per month."},"voice_private_required":{"title":"Create private voices","description":"Private voices are available on Plus and above. Upgrade to create 10 private voices, with unlimited public voices."},"voice_private_limit":{"title":"Private voice slots are full","description":"Upgrade to Pro to unlock unlimited private voices."},"voice_public_limit":{"title":"Voice slots are full","description":"Free plans include up to 3 voices. Upgrade to Plus to unlock unlimited public voices and 10 private voice slots."},"voice_clone_duration_limit":{"title":"Upload longer reference audio","description":"Free plans can upload up to 90 seconds. Upgrade to Plus to upload 210 seconds for more realistic voice cloning."},"pvc_required":{"title":"Unlock Professional Voice Clone","description":"Upgrade to Plus to get 1 professional clone slot and recreate your voice with studio-grade fidelity."},"voice_collection_required":{"title":"Unlock voice collections","description":"Upgrade your plan to create and share voice collections."},"pvc_limit":{"title":"Create more professional clones","description":"Your professional clone slot is used up. Upgrade to Pro to get 5 professional clone slots."},"studio_export_required":{"title":"Export your project","description":"Project export is a paid feature. Upgrade to Plus to unlock unlimited exports, 200 minutes of voice per month, and 10-way concurrent synthesis."},"sound_generation_credits_exhausted":{"title":"Continue creating","description":"Your credits are used up. Upgrade to Plus to generate up to 50 sound effects or music tracks per month."},"processing_credits_exhausted":{"title":"Process more audio","description":"Your credits are used up. Upgrade to Pro to process up to 11 hours of audio per month."},"generic_entry_free":{"title":"Choose your plan","description":"Upgrade to unlock longer generations, more voice slots, and up to 200 minutes of voice per month."},"generic_credits_exhausted_paid":{"title":"Upgrade for more credits","description":"Your credits are used up. Upgrade your plan or buy more credits to continue."},"voice_private_required_pro":{"title":"Create private voices","description":"Upgrade to Pro to unlock unlimited private voices."},"voice_public_limit_pro":{"title":"Unlock unlimited voice slots","description":"Upgrade to Pro to unlock unlimited voice slots and get 5 professional voice slots."},"voice_clone_duration_limit_pro":{"title":"Upload longer reference audio","description":"Upgrade to Pro to upload 210 seconds of reference audio and unlock unlimited voice slots."},"pvc_required_pro":{"title":"Create professional voice clones","description":"Upgrade to Pro to get 5 professional clone slots and recreate your voice with studio-grade fidelity."},"studio_export_required_pro":{"title":"Export production projects","description":"Upgrade to Pro to unlock unlimited exports, up to 27 hours of voice per month, and higher production capacity."},"sound_generation_credits_exhausted_pro":{"title":"Scale your audio creation","description":"Upgrade to Pro for a larger monthly credit pool and more room for sound effects, music, and voice work."},"sound_generation_credits_exhausted_max":{"title":"Continue creating","description":"Your credits are used up. Upgrade to Max for the highest monthly credit pool."},"generic_entry_pro":{"title":"Scale your voice production","description":"Upgrade to Pro to unlock 27 hours of voice per month, 30,000 characters per generation, unlimited private voices, and 5 professional clone slots."},"generic_entry_max":{"title":"Upgrade for maximum credits","description":"Upgrade to Max for the highest monthly credit pool."},"tts_credits_exhausted_max":{"title":"Unlock maximum voice capacity","description":"Upgrade to Max for up to 6,250 minutes of voice per month for large-scale content production."},"tts_character_limit_max":{"title":"Generate 30,000 characters at once","description":"Upgrade to Max to double your per-generation limit to 30,000 characters and get up to 6,250 minutes of voice per month."},"stt_credits_exhausted_max":{"title":"Transcribe audio at scale","description":"Upgrade to Max for the highest monthly credit pool and more room for long-form transcription."},"voice_private_limit_max":{"title":"Scale private voice creation","description":"Upgrade to Max to unlock unlimited voice slots and get 15 professional voice slots."},"pvc_limit_max":{"title":"Create professional clones at scale","description":"Upgrade to Max to get 15 professional clone slots."},"processing_credits_exhausted_max":{"title":"Process audio at scale","description":"Upgrade to Max for the highest monthly credit pool and more room for voice conversion, vocal separation, and other audio processing."},"generic_credits_exhausted_max":{"title":"Upgrade for maximum credits","description":"Upgrade to Max or buy a credit pack to continue with the highest monthly credit pool."},"pvc_required_max":{"title":"Unlock Professional Voice Clone","description":"Upgrade to Max to get 15 professional clone slots and recreate your voice with studio-grade fidelity."}},"retention_invoice_description":"Get 50% off your current unpaid invoice. Pay the remaining balance to keep your subscription.","retention_invoice_applied":"Your unpaid invoice has been reduced by 50%. Please pay the remaining balance.","retention_invoice_already_applied":"This invoice already has the retention discount. Please check your remaining balance in billing.","retention_offer_unavailable":"This offer is unavailable or your invoice has changed. Close and reopen this dialog to check again, or continue cancelling.","credit_packs_unavailable_contract":"Credit packs are not available on your enterprise agreement","credit_packs_temporarily_unavailable":"Credit packs are temporarily unavailable. Try again in a moment.","agent_pricing":{"start_free":"Start free","get_started":"Get started","contact_sales":"Contact Sales","payg_note":"No minimum spend · $5 trial credit","enterprise_band_highlight":"Custom volume","enterprise_band_note":"Dedicated lines and volume pricing","feature_custom_concurrency_sla":"Custom concurrency and SLA","agent":"Agent","subtitle":"Plans for voice agents","faq":{"title":"Frequently asked questions","q1":{"question":"What counts as a concurrent call?","answer":"Any active web, inbound or outbound session on your team. Inbound calls waiting in the queue don’t count and aren’t billed."},"q2":{"question":"What happens when I reach my limit?","answer":"New web and outbound calls are refused with a busy response until a line frees up. Inbound callers hear ringing for up to 30 seconds while we wait for a line. Turn on burst to keep answering above your limit at $0.12 per minute, or add lines at $8 per line per month."},"q3":{"question":"Do unused credits roll over?","answer":"Included credits from Pro and Scale carry over for up to three months of fees. Top-up credits never expire."},"q4":{"question":"Can I downgrade or cancel?","answer":"Yes. Downgrades and cancellations take effect at the end of the current billing period. Lines drop to the new plan's limit and unused included credits are removed."},"q5":{"question":"Do you offer annual billing?","answer":"Self-serve plans are billed monthly in USD. Annual terms and volume discounts are available on Enterprise through sales."},"limit":{"question":"What happens when I reach my limit?","answer":"New web and outbound calls are refused with a busy response until a line frees up. Inbound callers hear ringing for up to 30 seconds while we wait for a line. Turn on burst to keep answering above your limit at $0.12 per minute."},"more_lines":{"question":"How do I get more concurrent calls?","answer":"Pay as you go starts at 10 concurrent calls. The limit rises to 30 once your top-ups total $100, and to 100 at $1,000. For more, talk to sales about Enterprise."}}}},"playground":{"text_to_speech":"Text to Speech","speech_to_text":"Speech to Text","create_key":"Create Key","tab_curl":"cURL","tab_python":"Python","tab_javascript":"JavaScript","copy_code":"Copy code","copied_title":"Copied to clipboard","audio":"Audio","audio_supported":"Supported: {formats} (Max {max} per file)","upload":"Upload","restore_default_audio":"Restore default audio","language":"Language","auto_detect":"Auto-detect","lang_en":"English","lang_zh":"Chinese","lang_de":"German","lang_ja":"Japanese","lang_fr":"French","lang_es":"Spanish","lang_ko":"Korean","lang_ar":"Arabic","true":"True","false":"False","output":"Output","download":"Download","copy":"Copy","invalid_format":"Unsupported file format","file_too_large":"File exceeds 10MB limit","cancel":"Cancel","request_failed":"Request failed. Please try again.","error_invalid_key":"This API key was rejected — check it exists in this environment.","error_insufficient_credit":"Insufficient API credit. Switch to S2.1 Pro Free (no credit needed) or top up.","error_insufficient_credit_stt":"Insufficient API credit. Top up to run Speech to Text.","error_env_unavailable":"Running requests isn't available in this environment yet.","error_generic":"Request failed — please try again.","model":"Model","voice":"Voice","text":"Text","default_voice":"Default voice","play":"Play","pause":"Pause","free_badge":"Free","paid_badge":"Paid"},"premium":{"access_the_api_page":"Access the API Page","access_the_api_page_desc":"Visit the Fish Audio API section where you can find the button to create new token","account_balance":"Account Balance","account_connected":"Account Connected","account_not_connected":"Account Not Connected","action":"Action","action_at":"Action At","activate":"Activate","active_keys":"Active Keys","add_credit_amount_label":"Recharge amount","add_credit_amount_range":"Enter an amount from $1 to $10,000.","add_credit_description":"Choose how much USD credit to add. You will review and pay in Stripe.","add_credit_presets":"Quick amounts","add_credit_title":"Add credit","amount":"Amount","auto_recharge_caption":"when balance is below ${amount}","auto_recharge_off_value":"Off","low_balance_alert":"Low Balance Alert","low_balance_alert_default":"Default","low_balance_alert_paused":"Paused while auto recharge is on","low_balance_alert_email_label":"Email me when the balance is low","low_balance_alert_email_hint":"Only for you: each owner and admin chooses for themselves.","low_balance_alert_threshold_label":"Alert when the balance falls below","low_balance_alert_threshold_hint":"Leave it empty to use the default, ${amount}, worked out from your recent top-ups and daily spend.","low_balance_alert_auto_recharge_note":"No alert is sent while auto recharge is on.","low_balance_alert_saved":"Low balance alert saved","automatic_recharge_title":"Auto top-up","available_balance":"Available balance","amount_should_be_greater_than_10":"Input should be greater than or equal to 10","api":"API","api_balance":"API Credit","api_balance_tips":"Your balance is separate from playground quota. Purchasing premium doesn't include free API calls.","api_keys":"API Keys","api_playground":"API Playground","api_stats":"API Stats","api-keys":"API Keys","api-manage":"API Management","api_key":"API Key","asr_cost":"ASR Cost","asr_requests":"ASR Requests","asr_usage":"ASR Usage","auto_deduction":"Auto top-up","auto_deduction_active_status":"Active","auto_deduction_inactive_status":"Inactive","auto_deduction_tooltip":"Click to activate auto recharge.","auto_recharge":"Turn on auto top-up","auto_recharge_off_description":"Won't refill automatically","auto_recharge_on_description":"Refills ${amount} when below ${min}","balance":"Balance","balance_records":"Balance records","balance_tips":"The balance is independent of the Playground quota. Membership purchase does not include free API calls.","base_concurrent_request":"15 concurrent requests for users who have paid more than $100, 5 concurrent requests for other users.","billing":"Billing","billing_description":"Manage your API credits, set up auto-recharge, and view billing history.","buy_quota":"Add Credit","by_api_key":"By API Key","by_model":"By Model","by_service":"By Service","bytes_unit":"bytes","cancel":"Cancel","change":"Change","charges_disabled":"Charges Disabled (Verification Required)","charges_enabled":"Charges Enabled","comparison_details":"Comparison Details","confirm":"Confirm","connect_account":"Connect Account","connected":"Stripe Account Connected","connection":"Connection","contact_us":"Contact Us","continue":"Continue","continue_to_payment":"Continue to payment","copied":"Copied","copied_title":"Copied to clipboard","copy":"Copy","copy_success":"Developer ID Copied","cost":"Cost","cost_by_api_key":"Cost by API Key","count":"Count","create_api_key":"Create API Key","create_token":"Create Token","create_token_tips":"Store this secret key securely. You won't be able to view it again in your Fish Audio account for security reasons. If you lose it, you will have to create a new one.","create_your_api_token":"Create your API token","create_your_api_token_desc":"Select \"New Token\" to create an API token. Keep your API key confidential! If you suspect your account has been compromised, delete the old key and generate a new one.","created_at":"Created At","current_period":"Current","custom":"Custom","daily_limit":"Daily Limit","daily_reset_desc":"Premium: Your limit refreshes at midnight - doesn't carry over","delete":"Delete","delete-confirm-tips":"This action is irreversible and will disable any services using this token. Confirm to proceed.","delete-confirm":{"cancel":"Cancel","confirm":"Confirm","title":"Are you sure you want to delete this API token?"},"delete-success":"Delete Success","details_missing":"Account Details Incomplete (Personal Info & Bank Account Required)","details_submitted":"Account Details Complete","developer_account":"Developer account","developer_api":"Developer Dashboard","developer-program":"Program for developers","disable":"Close","disconnect":"Disconnect","disconnect_description":"After disconnecting, you will no longer be able to receive payments.","disconnect_success":"Disconnect Success","documentation":"Docs","done":"Done","download_invoice":"Download invoice","each_recharge_amount":"Credit added each time","edit_token":"Edit Token","efficient_usage_plan":"Charging","enable":"Enable","enter_amount":"Please enter the withdrawal amount","example":"Example","expiration":"Expiration","expiration_date":"Expiration Date","expired_at":"Expire","export":"Export","free_credit":"Get Free Credit","free_input_characters":"free input characters","free_input_size_desc":"Free: 500 bytes per request (~30 seconds of speech)","free_limit_desc":"Free: Credits reset every 30 days","free_plan":"Free","free_reset_30days_desc":"Free users: Quota resets every 30 days at 00:00 (UTC).","generations_unit":"generations","group_by":"Group by","higher_usage":"For higher usage, we're open to discussing custom options.","how_to_use_api":"How To Use API","id":"ID","income":"Income","income_and_withdraw_records":"Income and Withdraw Records","increase_title":"Ready to Scale Up?","increase_title_desc":"Choose Your Plan:","input_size":"Input Size","insufficient_api_credit":{"close":"Close","recharge":"Recharge Now","status":{"description":"Your API account balance is insufficient to pay for the current request. Please check your balance or recharge.","title":"Current Status","unlock_time":"You need to recharge to continue using the paid model"},"subtitle":"The selected model is a paid model, and your API credit is insufficient to use","title":"Insufficient API Credit"},"invite_now":"Invite Now","invite_tips":"Get matching membership duration when your invited users recharge","invite_url_copied":"Invite URL Copied","last_24_hours":"Last 24 hours","last_30_days":"Last 30 days","last_7_days":"Last 7 days","learn_more":"Learn More in Our Docs","left":"left","left_for_today":"Left for Today","log_in_to_view_usage":"Log in to view usage","manage":"Manage","manage_subscription":"Manage Subscription","model":"Model","maximum_duration_tips":"{count} requests per 30 days and {limit} UTF-8 bytes per request.","metric":"Metric","million_bytes":"million UTF-8 bytes","min_unit":"min","minimum_deduction":"Minimum Recharge","money":"Amount","more":"More","never_expire":"Never Expire","new_token":"New Token","next_refresh":"Next Refresh","next_tier":"Next Tier","no_accumulation":"No Accumulation","no_accumulation_desc":"Unused daily quota does not carry over to the next day.","no_comparison_data":"No comparison data available","no_token_created_yet":"No token created Yet","no_usage_data":"No usage data","not_connected":"Stripe Account Not Connected","open_payment_page":"Open Payment Page","otp":"Verification Code","pay_in_stripe":"Pay in Stripe","payouts_disabled":"Payouts Disabled (Identity & Bank Verification Required)","payouts_enabled":"Payouts Enabled","pending_payment_description":"You have an unpaid invoice that may prevent automatic charging.","pending_payment_description_2":"Please settle the payment manually or update your payment method in Stripe. Once you update your payment method, this invoice will be automatically closed.","pending_payment_title":"Pending Payment","payment_method":"Payment method","payment_method_description":"Manage the card or wallet used for auto top-up in Stripe.","phone_number":"Phone Number","playground":"Playground","popup_blocked_description":"The browser may be blocking the payment page popup. You can click the button below to try again or copy the link in a new tab.","popup_blocked_title":"Payment Page May Not Be Accessible","premium_duration_tips":"Unlimited* under fair use policy.","premium_input_size_desc":"Premium: 5,000 bytes per request (~5 minutes of speech)","premium_limit_desc":"Premium: Unlimited* under fair use policy.","premium_plan":"Premium","previous_period":"Previous","quota_refresh":"Quota refresh","quota_refresh_desc":"The daily quota refreshes at 00:00 (UTC).","quota_usage":"Quota Usage","rate_limit":"Rate Limit","reason":"Reason","recharge_when_balance_falls_below":"Add credit when the balance falls below","redeem":"Redeem Credit","redeem-success":"Redeem Success","refer_to_our_documentation":"Refer to our documentation for further details.","refer_to_our_documentation_and_start_building":"Refer to our documentation and start building","refer_to_our_documentation_and_start_building_desc":"Check out our API documentation to understand how to utilize our Text-to-Speech and Train for your projects!","refresh":"Refresh","remark":"Remark","reset":"Reset","reviewed_at":"Reviewed At","reviewer":"Reviewer","risk_control":{"actions":{"close":"Close","contact_support":"Contact Support"},"helpLabel":{"description":"Here are some common reasons for account blocking:","reason1":"Account sharing detected","reason2":"Abnormal account usage","reason3":"Suspicious network environment","title":"Need Help?"},"status":{"description":"Your account has been temporarily restricted due to suspicious activity detected by our security system. This precautionary measure is essential to safeguard both your account and our platform's integrity.","title":"Account Status","unlock_time":"Your account will be automatically unlocked and restored in a few hours."},"subtitle":"Security Notice","title":"Account Temporarily Blocked"},"rules":"Ready for premium?","save":"Save","select_quota_tips":"Select the amount of quota you want to buy","setting":"Setting","setting_success":"Setting Success","service":"Service","single_deduction_amount":"Single Recharge Amount","source":"Source","speech_to_text":"Speech-to-Text","spent":"Spent","status":"Status","stripe_access_error":"The payment page may not be accessible. Please check your network connection or try again later.","stripe_invoice_id":"Stripe Invoice ID","text_limit":"Text limit","text_limit_desc":"In a single request, up to 500 UTF-8 bytes can be used, and premium users can use up to 30,000 bytes.","text_to_speech":"Text-to-Speech","there_are_token_has_been_created_yet":"There are token has been created yet","token":"Token","top_up":"Add credit","top_up_label":"Amount to add","total_cost":"Total cost","total_quotas":"Total Quota","total_spending":"Total Spending","tts_cost":"TTS Cost","tts_requests":"TTS Requests","tts_usage":"TTS Usage","unit":"Unit","update_payment_method":"Update payment method","upgrade_monthly":"One-Month Pass","upgrade_subscription":"Monthly Subscription","usage":"Usage","usage_breakdown":"Usage Breakdown","usage_by_api_key":"Usage by API Key","usage_monitoring":"Usage Monitoring","usage_monitoring_desc":"Quota usage is monitored to prevent misuse or excessive use. Any detected misuse may result in restricted or suspended quotas.","usage_stats":"Usage Stats","user_id":"User ID","validation":{"phone_number_format":"The phone number format is incorrect","phone_number_max":"Phone number cannot exceed 15 digits","phone_number_min":"Phone number must be at least 10 digits"},"view_documentation":"View Documentation","vs_previous_24h":"vs previous 24h","vs_previous_30d":"vs previous 30 days","vs_previous_7d":"vs previous 7 days","vs_previous_period":"vs previous period","withdraw":"Withdraw","withdraw_invalid_amount":"Please enter a valid whole-dollar amount","withdraw_record":"Withdraw Record","withdraw_record_status":{"approved":"Approved","pending":"Pending","rejected":"Rejected"},"withdraw_success":"Withdraw Success","zero_retention_banner_title":"Zero Retention enabled","zero_retention_banner_description":"Text and audio sent to the API under this team, including TTS reference audio and speech-to-text audio, are not retained or used for training. Agents session audio and transcripts are deleted after each agent's data retention period.","s1_retirement_banner_title":"S1 retires on December 31, 2026","s1_retirement_banner_description":"After that date, API requests using model s1 will be served by S2.1 Pro at the same price. Switch to s2.1-pro before then.","drama3_banner_title":"Drama 3 is now available via API","drama3_banner_description":"Direct every line with natural-language instructions and precise control over emotion, sounds, and pauses. API usage is billed on a pay-as-you-go basis.","s21_free_banner_title":"S2.1 Pro is now free for developers","s21_free_banner_description":"Build with S2.1 Pro Free: prototype, test, and ship voice features with our most advanced voice model.","buffer_hint":"Your recent API usage averages ${spend}/day, so this threshold only covers about {hours}h. A declined charge waits several hours before the next attempt — long enough to run out.","buffer_hint_apply":"Use ${min} threshold / ${amount} per recharge","auto_recharge_disabled_notice":"Automatic recharge was turned off after your card was declined ({reason}). Update your payment method, then turn it back on.","auto_recharge_reenable":"Re-enable","auto_recharge_failed_notice":"The last automatic recharge was declined ({reason}). It will retry automatically — you can also top up manually.","auto_recharge_no_pm_notice":"Automatic recharge is off because there is no usable payment method on file. Add a payment method, then turn it back on.","quickstart_free_terms":"S2.1 Pro Free is free through November 30, 2026, with no SLA, and requests may be used to improve model quality. <link>Read the details</link>","signup_grant_title":"{amount} free API credit added","signup_grant_description":"Try Drama 3 and every other model with it. The sample and the playground below now use Drama 3.","quickstart_copy_key":"Copy API key","quickstart_manage_keys":"Manage API keys","quickstart_sample_ready":"Your key is already filled in. Run it to save welcome.mp3.","balance_free_tier_hint":"S2.1 Pro Free works without credit. Top up to use Drama 3 and other paid models.","quickstart_add_credit":"Add {amount} API credit","get_started":{"title":"Your first voice in three steps","description":"Get a key, run a request, then go further. S2.1 Pro Free is free to call; Drama 3 and the other models are paid.","description_done":"All three steps are done. Open any step to pick up where you left off.","progress":"{done} of {total} done","step_label":"Step {number}","status_done":"done","status_next":"Up next","show":"Show","hide":"Hide","key_title":"Get your API key","key_description":"One click creates a key. It is filled into every request on this page.","create_key":"Create API key","key_shown_once":"Shown once. Copy it now.","key_copied":"API key copied","request_title_step":"Make your first request","request_description":"Pick a template, or switch to Speech to Text, and press Run. The request preview shows exactly what Run sends.","request_done_summary":"You made your first API request.","request_title":"Request","request_key_ready":"Your key is already filled in.","request_key_missing":"No key yet: the code reads FISH_API_KEY from your environment.","request_stt_file":"Run it next to {file} to print the transcript.","mode_label":"API","templates_label":"Templates","template_conversational":"Conversational","template_conversational_hint":"Bracket tags like [excited], [laughing] and [whispering] set emotion and sounds. [break] adds a pause.","template_narration":"Narration","template_narration_hint":"[break] and [long-break] pace the story. [whispering] lowers the voice for one line.","template_pronunciation":"Pronunciation","template_pronunciation_hint":"Phoneme tags (CMU Arpabet) set how a word is said: read and read, or Kubernetes.","template_drama":"Drama 3","template_drama_hint":"Drama 3 takes stage directions in plain words, whisper tags around single words, and phoneme tags.","stt_description":"Transcribe the sample clip or your own audio file.","run":"Run request","run_with_new_key":"Create key and run","run_done":"That was a real API call. Copy the request to run it from your terminal.","paid_model_note":"Paid model: billed to your API credit. Balance: {balance}.","stt_cost_note":"Billed to your API credit. Balance: {balance}.","grant_added":"{amount} free API credit added. Drama 3 is selected, so you can try it now.","paid_needs_credit":"{model} is a paid model and you have no API credit yet. Add credit, or switch to the free model.","use_free_model":"Use S2.1 Pro Free","stt_needs_credit":"Speech to Text uses API credit, and you have none yet. Add credit to run it.","transcript":"Transcript","further_title":"Go further","further_description":"Direct performances with Drama 3, add API credit for the paid models, and build with the SDKs.","further_done_summary":"API credit {balance}. Drama 3 and every model are unlocked.","drama_title":"Drama 3","drama_syntax_direction":"Direction in plain words","drama_syntax_words":"Effects on single words","drama_syntax_phonemes":"Phonemes","drama_try":"Load the Drama 3 template","drama_guide":"Drama 3 guide","credit_title":"API credit","credit_description":"Pay as you go. Drama 3, S2.1 Pro and S2 Pro use API credit; S2.1 Pro Free does not. Balance: {balance}.","sdks_title":"SDKs and docs","copy_command":"Copy {command}","docs_quickstart":"Quickstart","docs_emotions":"Emotion and sound tags","docs_phonemes":"Phoneme control","docs_api_reference":"API reference"}},"profile":{"avatar":"Avatar","avatar_description":"This image will appear on various pages as your user avatar on this website","avatar_description_2":"(file must be less than 1MB)","bio":"Bio","bookmarks":"Bookmarks","creative":"Image & Video","bookmarked":"Bookmarked","bookmark_removed":"Bookmark removed","bookmark_failed":"Could not update bookmark. Please try again.","no_sample":"No Sample","copy_id":"Copy ID","cancel":"Cancel","change_avatar":"Change Avatar","upload_photo":"Upload photo","replace_photo":"Replace photo","change_email":"Change Email","change_email_dialog":{"confirm":"Confirm Change","continue":"Continue","new_email_label":"New Email","new_email_placeholder":"name@example.com","send_code":"Send Code","start_over":"Start over","subtitle_confirm":"Enter the verification code we sent to {email} to confirm your new email address.","subtitle_start":"To keep your account secure, we'll first send a verification code to your current email address.","subtitle_verify":"Enter the code we sent to {email}, then enter your new email address.","success":"Your email address has been updated","title":"Change Email"},"change_password":"Change Password","copied_title":"Copied to clipboard","edit_profile":"Edit Profile & Settings","email":"Email","joined_at":"Joined ","likes":"Likes","list":"List of Models","login":"Login","models_created":"Models Created","nickname":"Nickname","no_collection_tips":"There's no collection yet","no_likes_tops":"There's no likes yet","empty_title":"No Voices","empty_voices_description":"Your voices will appear here","empty_likes_description":"Your likes will appear here","empty_bookmarks_description":"No bookmarks yet","empty_creative_title":"No published works","empty_creative_description":"Published images and videos appear here after review","creative_rewards_users":"{count, plural, one {# person used your works} other {# people used your works}}","creative_rewards_settled":"{credits, plural, one {# credit earned} other {# credits earned}}","creative_rewards_pending":"{credits, plural, one {about # credit pending} other {about # credits pending}}","start_creating_cta":"Start creating","discover_more_cta":"Discover More","no_socials":"No social links yet","no_trained_voices_yet":"No trained voices yet","password":"Password","personal_website_url":"Personal Website URL","profile_details":"Profile Details","save":"Save Changes","socials":"Socials","sort":{"count":"Recommended","new":"Newest","title":"Sort by"},"total_likes":"Total Likes","total_marked":"Total Marked","total_shared":"Total Shared","username":"Username","voice_conversions":"Voice Conversions","voices":"Voices","edit":"Edit","play_voice":"Play voice","pause_voice":"Pause voice","more_actions":"More actions","remove_bookmark":"Remove bookmark","view_voice":"View voice","use_voice":"Use voice","load_error":"Could not load this list","retry":"Retry","loading":"Loading","user_profile":"User Profile","profile_load_error":"Could not load this profile","nickname_required":"Nickname is required","nickname_too_long":"Nickname must be 50 characters or fewer","bio_too_long":"Bio must be 200 characters or fewer","website_invalid":"Enter a valid http or https URL","social_link_invalid":"Enter a valid {platform} link","bio_placeholder":"Tell people a little about yourself","login_security":"Login & Security","password_description":"Reset your password with a one-time code","change":"Change","sign_out_everywhere":"Sign out of all devices","sign_out_everywhere_description":"Sign out everywhere else and disconnect connected apps","sign_out_everywhere_action":"Sign out","sign_out_everywhere_confirm_title":"Sign out of all devices?","sign_out_everywhere_confirm_description":"Every other device will be signed out and every connected app, such as an MCP client, will be disconnected. This device stays signed in. API keys keep working.","sign_out_everywhere_success":"Signed out of all other devices","back":"Back","share":"Share","share_error":"Couldn't copy the profile link"},"pronunciation-dictionary":{"title":"Pronunciation dictionary","no-rules":"No Rules","add-rule":"Add a new rule","import-pls":"Import PLS","rename":"Rename","new-dictionary":"New Dictionary","dictionary-list":"Dictionary list","edit-dictionary":"Edit Dictionary","no-dictionaries":"No Dictionaries","view-documentation":"View documentation","dictionary-name":"Dictionary Name","required":"(required)","name-placeholder":"Name","description":"Description","description-placeholder":"What's this dictionary used for?","import-from-existing":"Import from existing dictionary","import-formats":"(.pls .txt .xml)","upload":"Upload","rules-count":"{count, plural, one {# rule} other {# rules}}","create-dictionary":"Create Dictionary","save":"Save","create-failed":"Failed to create dictionary","update-failed":"Failed to update dictionary","import-failed":"Dictionary created, but importing rules failed","parse-failed":"Could not read any rules from this file","too-many-rules":"The file contains more than 5,000 rules","close":"Close","search-rules":"Search rules","add-rule-short":"Add Rule","add-rule-tooltip":"Add a rule","select-voice":"Select Voice","input-placeholder":"Input","input-too-long":"Input too long ({count}/{max})","input-too-long-publish":"Each input must be at most {max} characters","output-placeholder":"Output","alias-output-placeholder":"Plain text replacement","alias-output-help":"The input is replaced with this text exactly as written.","alias-input-invalid":"Alias inputs can't start or end with a space or contain control characters, <, >, (, ), [, or ].","alias-output-invalid":"Alias outputs can't contain <| or |>.","column-input":"Input","column-output":"Output","case-sensitive":"Case sensitive","case-sensitive-on":"Case sensitive: on","case-sensitive-off":"Case sensitive: off","case-sensitivity-on":"Case sensitivity turned on","case-sensitivity-off":"Case sensitivity turned off","rule-type":"Rule type","rule-type-phoneme":"Phoneme","rule-type-alias":"Alias","rule-type-changed":"Rule type changed from {from} to {to}","moved-badge":"Moved {from} → {to}","delete-rule":"Delete rule","restore-rule":"Restore rule","reorder-rule":"Reorder rule","play-preview":"Play preview","stop-preview":"Stop preview","publish-success":"Dictionary published","ignore-changes":"Ignore Changes","publish-new-version":"Publish New Version","rules-changed":"{count, plural, one {# rule changed} other {# rules changed}}","prev-change":"Previous change","next-change":"Next change","ignore-confirm-title":"Ignore unsaved changes?","ignore-confirm-description":"Your unpublished changes will be discarded and the editor will return to the latest published version.","publish-failed":"Failed to publish dictionary","publish-conflict":"This dictionary changed somewhere else. The latest version has been reloaded — reapply your changes and publish again.","conflict-title":"Dictionary updated elsewhere","conflict-description":"Someone published a newer version of “{name}” while you were editing.","conflict-hint":"Loading the latest version discards your unpublished edits. Overwriting keeps your edits and removes theirs.","conflict-load-latest":"Load latest version","conflict-overwrite":"Overwrite anyway","preview-failed":"Failed to generate preview","load-failed":"Failed to load rules","list-load-failed":"Couldn't load your dictionaries","list-load-failed-description":"Something went wrong reaching the server. Your dictionaries are safe — try again in a moment.","retry":"Try again","incomplete-rules":"Each rule needs both an input and an output","duplicate-rules":"Duplicate input: {key}","output-too-long":"Output too long ({count}/{max})","output-too-long-publish":"Each output must be at most {max} characters","search-no-results":"No rules match your search","more-actions":"More actions","edit":"Edit","download":"Download","import-success":"Imported {count, plural, one {# rule} other {# rules}}","export-empty":"This dictionary has no saved rules to export","export-failed":"Failed to export dictionary","export-save-first-title":"Publish before exporting?","export-save-first-description":"Your changes to “{name}” haven’t been published yet. Publish them as a new version first so the export includes them.","publish-and-export":"Publish & Export","delete":"Delete Dictionary","dictionary-id":"Dictionary ID","latest-version-id":"Latest Version ID","copy":"Copy","copy-dictionary-id":"Copy dictionary ID","copy-version-id":"Copy version ID","copied":"Copied to clipboard","cancel":"Cancel","delete-confirm-title":"Delete this dictionary?","delete-confirm-description":"“{name}” and its pronunciation rules will be permanently deleted. This action cannot be undone.","delete-confirm":"Delete","delete-success":"Dictionary deleted","delete-failed":"Failed to delete dictionary","unsaved-badge":"Unsaved changes","unsaved-confirm-title":"Discard unsaved changes?","unsaved-confirm-description":"Your changes to “{name}” haven’t been published yet. Leaving now will discard them.","discard":"Discard","keep-editing":"Keep editing","version-history":"Version history","compare-with":"Compare with","compare-none":"None","select-version":"Select","latest":"Latest","summary-added":"Added {count, plural, one {# new rule} other {# new rules}}","summary-removed":"removed {count, plural, one {# rule} other {# rules}}","summary-changed":"updated {count, plural, one {# rule} other {# rules}}","no-versions":"No versions yet","delete-version":"Delete version","delete-version-confirm-title":"Delete this version?","delete-version-confirm-description":"V{version} will be removed from the history. Any request pinned to this version ID will stop working.","delete-version-success":"Version deleted","delete-version-failed":"Failed to delete version","delete-version-latest-blocked":"The latest version can't be deleted","import-unsupported-format":"Choose a .pls, .xml or .txt file.","import-unsafe-text":"Remove control characters and phoneme markers from the rule.","import-line-error":"Line {line}: {message}","import-ready":"{count, plural, one {# rule ready to import} other {# rules ready to import}}","import-duplicates":"Skipped {count, plural, one {# duplicate rule} other {# duplicate rules}} on lines {lines}. The first occurrence is kept; matching is case insensitive unless specified in the file.","import-skipped-lines":"Skipped {count, plural, one {# line} other {# lines}} without an input/output separator: {lines}.","clear-import":"Clear imported file","summary-separator":", ","summary-ending":"."},"self-host":{"all_in_one_handoff":"The deployment guide you just downloaded has the full docker run command (all-in-one.md in the extracted archive). You're done when a test request returns audio. Upgrading an existing deployment? Pick the new version above, then re-run with it.","artifacts_empty":"No deployment has been granted to this team yet. Contact fish.audio to get access.","artifacts_load_failed":"Couldn't load your deployment. Refresh the page to retry.","cancel":"Cancel","copied_title":"Copied to clipboard","copy_command":"Copy command","copy_token":"Copy deploy token","create":"Create","create_token":"Create Deploy Token","created":"Created","delete":"Delete","delete_confirm_body":"Deleting \"{name}\" is irreversible and any deployment using this token will stop pulling images. Confirm to proceed.","delete_confirm_title":"Delete deploy token","delete_success":"Delete Success","deployment_title":"Deployment steps","documentation":"Docs site","form_all_in_one_offline":"Offline All-in-One","form_all_in_one_online":"Online All-in-One","form_helm_offline":"Offline Helm","form_helm_online":"Online Helm","helm_description":"Install the Fish Audio chart on your Kubernetes cluster. Online and Offline are one chart — the mode picked below decides which values file the runbook applies; the pull stays the same.","helm_handoff":"The deployment guide you just downloaded has the full install, including which values file serves each mode and where the online profile can pull models from (deployment-runbook.md in the extracted archive). You're done when every pod is Ready and a test request returns audio. Upgrading? Pick the new version above and follow the runbook's upgrade procedure.","i_saved_my_token":"I've saved my token","last_used":"Last used","license_binding":"GPU binding","license_binding_none":"Not bound to specific GPUs","license_binding_uuid":"Bound to GPU UUIDs","license_bound_gpus":"GPUs","license_download":"Download bundle","license_download_failed":"Could not download the bundle.","license_valid_from":"Valid from","license_load_failed":"Could not load the license.","license_not_configured":"No license has been set up for this team yet — contact Fish Audio support to have it issued. The deployment cannot start without one.","license_product":"Product","license_title":"License","license_valid_until":"Valid until","limit_hint":"You've reached the limit of 5 deploy tokens.","load_failed":"Couldn't load deploy tokens. Refresh the page to retry.","name":"Name","never":"Never","no_tokens_yet":"No deploy token created yet","not_enabled":"Self-host deployment is not enabled for this team. Contact your account manager.","profile_label":"Available modes","publisher_badge":"Publisher","publisher_hint":"This team can also push to its granted repositories.","rotate":"Rotate","rotate_confirm_body":"Rotating \"{name}\" issues a new token and the old one stops working immediately.","rotate_token":"Rotate deploy token","save_your_token":"Save your deploy token","title":"Self Host","token":"Token","token_name":"Token name","token_name_placeholder":"Name your deploy token","token_shown_once_warning":"This token is shown only once. Copy it now and store it somewhere safe — you won't be able to see it again.","tokens_description":"The password your machines use to pull images, charts, and documentation from our registry — and to export your team's voices. Create one here, store it safely, and paste it wherever a command below asks for a deploy token.","tokens_title":"Deploy Tokens","version_label":"Version","version_latest":"Latest","version_recorded":"Recorded {date}","version_release_notes":"What's new","badge_docker":"Docker","badge_kubernetes":"Kubernetes","all_in_one_group_description":"All-in-One: the whole stack in one Docker container on your GPU host. Pick the mode your deployment needs — the pull below is for that mode.","axis_offline":"Offline","axis_offline_ex":"Usage recorded to a local signed ledger; no outbound billing calls.","axis_online":"Online","axis_online_ex":"Each request authorised and billed live against Fish Audio; needs outbound access.","axis_dual_gpu":"Dual-GPU","axis_dual_gpu_ex":"Worker on GPU 0, vocoder on GPU 1.","axis_single_gpu":"Single-GPU","axis_single_gpu_ex":"A special case: one H100-class 80 GB card, shared by worker and vocoder through MPS. Lower throughput than Dual-GPU.","axis_baked":"Baked weights","axis_baked_ex":"Model weights baked into the image; fully self-contained.","axis_external":"External weights","axis_external_ex":"Weights mounted at run time, not in the image.","license_contract_term":"Contract","license_pending_issue":"Your license is being prepared — it will be available to download here shortly. You can continue with the Install step meanwhile; only starting the deployment needs the bundle.","license_guidance_issue":"Your download includes a new license.key, so the service must (re)start to load it. Follow the license setup steps in the deployment guide you received.","license_guidance_renew":"This is a renewal — only license.crt changes, and it reloads with no restart. Follow the \"License Renewal\" section of the deployment guide you received.","license_renewal_hint":"Your certificate expires {date}. Before then, settle this period's invoice — and, if you're on offline billing, send us the usage ledger. Once we've reconciled it, we renew your license and your validity extends.","axis_helm_models":"Models","axis_helm_models_ex":"In-cluster by default; can also pull from Fish Audio's S3 or your own storage — see the runbook.","license_description":"Required to run the deployment: download the bundle and mount it where the deployment guide's License section shows — the guide itself is downloaded in the Install step. A renewal replaces only license.crt, in place.","step_token":"Step 1 · Deploy token","step_install":"Step 5 · Install","step_sync":"Step 6 · Test voices","voice_sync_description":"Get your voices and Fish's official pack onto the deployment, then make a request with one to confirm it works.","voice_sync_note":"Sync settings per platform, internal mirrors, and building your own archives are in the deployment guide (reference-cache.md) in the package you downloaded.","choose_description":"Six steps. Steps 1–2 apply to every model and are done once; from Step 3 on, the page follows the model you pick. Need a different setup? See the Docs site or ask Fish Audio support.","platform_aio_summary":"One container on a single machine. No Kubernetes; the smallest footprint.","platform_helm_summary":"The chart on your Kubernetes cluster: scales out, rolling upgrades.","need_gpus_label":"GPUs:","need_runtime_label":"Host runtime:","need_network_label":"Network:","need_network":"Outbound access to registry.fish.audio from the machine that downloads the image or chart. Online billing also needs outbound access at runtime, to the Fish Audio billing endpoint — api.fish.audio, unless your delivery credentials name another. Offline modes run air-gapped at runtime.","need_license_label":"License:","need_license":"Required on every platform. Missing, the services never come up; expired, they run but refuse every request (403). Get the bundle in Step 2 above.","platform_all_in_one":"All-in-One","platform_helm":"Helm","external_weights_note":"To pull the weight fileset from Fish Audio's hosted bucket, contact Fish Audio for the read-only access keys — the guide's External weights section has the details.","need_gpus_aio":"2 GPUs — one for the inference worker, one for the vocoder; NVIDIA H100/H200 recommended. The Single-GPU mode is a special case: one H100-class 80 GB card shared by both, with lower throughput.","need_gpus_aio_drama_3":"2 GPUs — one for the inference worker, one for the vocoder; NVIDIA H200 or B300 recommended.","need_runtime_aio":"Docker with the NVIDIA Container Toolkit, a driver supporting CUDA 13.x, at least 32 vCPU, 128 GiB RAM and ~100 GB of free disk.","need_runtime_aio_drama_3":"Docker with the NVIDIA Container Toolkit, a driver supporting CUDA 13.x, at least 32 vCPU, 128 GiB RAM and ~130 GB of free disk.","need_runtime_helm":"A Kubernetes cluster with the NVIDIA GPU stack.","releases_load_failed":"Couldn't load the published versions. Refresh the page to retry.","install_nothing_published":"No version has been published for this platform yet — contact Fish Audio.","platform_label":"Platform","need_gpus_helm":"2 GPUs — one for the inference worker, one for the vocoder; NVIDIA H100/H200 recommended. Timestamps, if enabled, add a third; add replicas to scale.","need_gpus_helm_drama_3":"2 GPUs — one for the inference worker, one for the vocoder; NVIDIA H200 or B300 recommended. Timestamps, if enabled, add one more; add replicas to scale.","install_description":"Choose your platform and mode, pick and note your version, then run the commands — they fetch your deployment guide and artifact, and the install continues in the guide. Options here are what you can install, not what's currently running.","install_description_one":"Pick your mode, note your version, then run the commands — they fetch your deployment guide and artifact, and the install continues in the guide. Options here are what you can install, not what's currently running.","need_network_online":"Outbound access to registry.fish.audio from the machine that downloads the image or chart, and at runtime to the Fish Audio billing endpoint — api.fish.audio, unless your delivery credentials name another.","need_network_offline":"Outbound access to registry.fish.audio from the machine that downloads the image or chart. At runtime, none — the deployment runs air-gapped.","step_license":"Step 2 · License","bys_footer":"Environment ready? Continue to Step 5 to install.","voice_sync_archive_path":"/mnt/shared/reference-archives/<voice_id>.zip","voice_sync_call_label":"Make a TTS call","voice_sync_source_label":"Get your voices","voice_sync_source_auto":"Auto-sync","voice_sync_source_manual":"Manual · air-gapped","voice_sync_auto_aio":"The deployment pulls them itself once it has the deploy token from Step 1 as the env var FISH_REFERENCE_SYNC_TOKEN — an -e on the guide's run command, or your platform's env config. New or edited voices land within a few minutes, one archive per voice:","voice_sync_auto_helm":"The deployment pulls them itself once it has the deploy token from Step 1 — set referenceSync.enabled=true with the fish-audio-sync-token Secret from the runbook. New or edited voices land within a few minutes, one archive per voice:","voice_sync_auto_any":"The deployment pulls them itself once it has the deploy token from Step 1 — the deployment guide shows where it goes. New or edited voices land within a few minutes, one archive per voice:","voice_sync_download_label":"Download — on a machine with network access","voice_sync_copy_aio_label":"Copy in — on the All-in-One host","voice_sync_copy_helm_label":"Copy in — onto the cluster's shared storage","voice_sync_copy_any_label":"Copy in — into your deployment's reference-archives directory","voice_sync_copy_aio_alt":"Can't run docker against the container (a hosted platform runs it for you)? Mount a volume holding the zips and set EDGE_API_REFERENCE_LOCAL_ROOT to its path — reference-cache.md, \"Default Location\".","voice_sync_copy_helm_alt":"No node access? The runbook's \"Reference Cache Files\" section has a helper-pod method.","step_model":"Step 3 · Choose a model","step_environment":"Step 4 · Prepare your environment","model_scoped":"From here on, for the model you pick","model_steps_placeholder":"Steps 4–6 — prepare, install, test — appear once you pick a model.","model_placeholder":"Choose a model ({count} available)","model_kind_tts":"TTS","model_kind_stt":"STT","model_group_tts":"Text to speech","model_group_stt":"Speech to text","environment_description":"The hardware, host and network to have ready before deploying {name}. GPUs can take a while to procure — check this first.","install_where_label":"Run on:","install_where_aio":"the GPU host that will run All-in-One: the image is pulled onto it, and docker run happens there too. A host that cannot reach registry.fish.audio runs these on a machine that can — the guide covers carrying the image across.","install_where_helm":"the machine you deploy from — with helm and kubectl, able to reach the cluster. The cluster pulls images with the pull secret the runbook creates, so no docker login is needed here.","model_description":"Select the model to deploy. Steps 4–6 below are for the selected model."},"share":{"meta":{"title":"{title} · Fish Audio","description":"Listen and leave comments. Made with Fish Audio.","subtitle":"Shared story"},"top_bar":{"by":"by {name}","chapters":"{count, plural, one {# chapter} other {# chapters}}","scenes":"{count, plural, one {# scene} other {# scenes}}","ai_voices":"AI-generated voices","voices_label":"Voices: {names}","voices_title":"Voices in this story","made_with":"Made with Fish Audio","log_in":"Log in","try":"Try Fish Audio","open_app":"Open app","open_in_studio":"Open in Audiobooks","open_in_voice_acting":"Open in Voice acting","studio":"Audiobooks","voice_acting":"Voice acting","share":"Share","opening_studio":"Opening in Audiobooks","opening_voice_acting":"Opening in Voice acting"},"banner":{"newer_export":"Newer export · {date}","update_share":"Update share"},"rail":{"label":"Chapters and voices","label_scenes":"Scenes and voices","chapters":"Chapters","scenes":"Scenes","open_comments":"{count, plural, one {# open comment} other {# open comments}}","voices":"Voices","sharing":"Sharing","version":"Version","export_from":"Export {date}","comments":"Comments","comments_anyone":"Anyone with the link","comments_off":"Off"},"legal":{"terms":"Terms","privacy":"Privacy","report":"Report"},"script":{"label":"Script","chapter":"Chapter {number}","scene":"Scene {number}","chapter_of":"Chapter {number} of {total}","scene_of":"Scene {number} of {total}","previous_chapter":"Previous chapter","previous_scene":"Previous scene","next_chapter":"Next chapter","next_scene":"Next scene","voice_label":"Voice {letter}","play_from":"Play from {time}","badge_label":"{count, plural, one {# comment on this line} other {# comments on this line}}","comment":"Comment","comment_on_line":"Comment on this line","back_to_current":"Back to current line","create_cta":"Create your own story with Fish Audio"},"player":{"label":"Player","play":"Play","pause":"Pause","play_or_pause":"Play or pause","back":"Back 10 seconds","forward":"Forward 10 seconds","seek":"Seek","position":"Chapter {chapter}, {time} of {duration}","position_scene":"Scene {chapter}, {time} of {duration}","spoken_time":"{minutes, plural, =0 {} one {# minute } other {# minutes }}{seconds, plural, one {# second} other {# seconds}}","chapter_short":"Ch {number}","scene_short":"Scene {number}","chapter_label":"Chapter {number}: {title}","scene_label":"Scene {number}: {title}","comment_here":"Comment at current time","comment_here_tip":"Comment at playhead","load_failed":"Couldn't load audio.","retry":"Retry"},"shortcuts":{"title":"Keyboard shortcuts","play":"Play or pause","skip":"Back or forward 10 seconds","comment":"Comment at the playhead","escape":"Close or cancel","post":"Post comment","show":"Show shortcuts","single_key":"Single-key shortcuts"},"tabs":{"label":"View","script":"Script","comments":"Comments"},"comments":{"title":"Comments","open_count":"{count} open","filter_label":"Filter comments","filter_all":"All","filter_open":"Open","filter_resolved":"Resolved","group":"Chapter {number} · {title}","group_scene":"Scene {number} · {title}","empty_title":"No comments yet","none_open":"No open comments","none_resolved":"No resolved comments","orphans":"No longer in this version · {count}","earlier_version":"Earlier version · {time}","anchor_label":"Ch {chapter} · {time}","anchor_label_scene":"Scene {chapter} · {time}","play_from":"Play from {label}","quote":"\"{quote}\"","quote_was":"Was: \"{quote}\"","guest_email":"<address>{email}</address> · Unverified","deleted_user":"Deleted user","tag_guest":"Guest","tag_creator":"Creator","tag_team":"Team","tag_you":"You","tag_changed":"Sentence changed","tag_resolved":"Resolved","show_resolved":"Show resolved thread","collapse":"Collapse","actions":"Comment actions","reply":"Reply","reply_placeholder":"Reply…","resolve":"Resolve","reopen":"Reopen","open_in_studio":"Open in Audiobooks","open_in_voice_acting":"Open in Voice acting","show_in_script":"Show in script","more":"More actions","delete":"Delete","cancel":"Cancel","delete_title":"Delete this comment?","delete_body":"The comment and its replies will be removed for everyone.","delete_reply_title":"Delete this reply?","delete_reply_body":"The reply will be removed for everyone.","comment_deleted":"Comment deleted","reply_deleted":"Reply deleted","resolved_toast":"Comment resolved","reopened_toast":"Comment reopened"},"composer":{"label":"Comment","drawer_title":"Add a comment","placeholder":"Add a comment…","placeholder_creator":"Add a comment for {name}…","chip_time":"On {at} · in \"{quote}\"","chip_line":"On {at} · \"{quote}\"","unpin":"Anchor to the playhead instead","submit":"Comment at {time}","left":"{count} left","posted":"Comment posted","view":"View","comments_off":"Comments are off","turn_on":"Turn on","comments_on_toast":"Comments turned on"},"identity":{"title":"Add your name and email to post","name":"Name","email":"Email","privacy":"Only the creator sees your email.","sign_in_instead":"Sign in instead","name_required":"Enter your name.","name_no_links":"Names can't include links.","email_invalid":"Enter a valid email address.","commenting_as":"Commenting as {name}","verify_email":"Verify email","not_you":"Not you?","forget_prompt":"Forget {name} on this device?","forget_me":"Forget me","forgotten":"Forgotten on this device"},"verify":{"label":"Verify email","prompt":"Verify <b>{email}</b> to get notified of replies and updates.","send_code":"Send code","not_now":"Not now","code_sent":"Code sent","check_email":"Check {email}.","send_failed":"Couldn't send the code. Try again.","enter_code":"Enter the 6-digit code we sent to {email}","resend":"Resend code","resend_in":"Resend in 0:{seconds}","different_email":"Use a different email","email_placeholder":"you@example.com","mismatch":"That code doesn't match. Try again.","expired":"This code has expired. Send a new one.","too_many":"Too many attempts. Send a new code.","pending_closure":"This account is scheduled to close. Log in to recover it.","blocked":"You can't sign in with this email.","done_new":"Signed in.","done_existing":"Signed in as {name}."},"claim":{"prompt":"{count, plural, one {Add # comment you posted as \"{name}\" to this account?} other {Add # comments you posted as \"{name}\" to this account?}}","add":"Add","keep":"Keep as guest"},"gone":{"document_title":"Link not available · Fish Audio","title":"This link isn't available","home":"Go to Fish Audio"},"errors":{"version_changed":"This share was updated. Reload to comment.","reload":"Reload","post_failed":"Couldn't post your comment. Try again.","rate_limited":"Too many comments. Try again shortly.","generic":"Something went wrong. Try again."}},"step-up":{"title":"Verify it's you","sending":"Sending a 6-digit code to {email}…","code_sent":"We sent a 6-digit code to {email}. Enter it to continue.","no_code":"Didn't receive the code?","resend":"Resend code","resend_in":"Resend code ({seconds}s)","verify":"Verify","cancel":"Cancel","close":"Close","invalid_code":"That code is incorrect or has expired.","too_many_attempts":"Too many incorrect attempts. Request a new code.","too_many_codes":"Too many codes requested. Please try again later.","send_failed":"We couldn't send the code. Please try again.","verify_failed":"Something went wrong. Please try again.","viewing_as_user":"Not available while viewing as a user. Exit user view to continue.","verification_required":"Please complete email verification, then try again."},"support":{"common":{"cancel":"Cancel","caseIdCopied":"Case ID copied","copyLink":"Copy link","loadingCase":"Loading case...","openModel":"Open model","optional":"Optional","refresh":"Refresh","translatedFrom":"Translated from {language}"},"categories":{"billing":{"help":"Get help with charges, invoices, subscriptions, or refunds.","label":"Billing / refund"},"bug":{"help":"Report something that is broken or behaving incorrectly.","label":"Bug report"},"copyright":{"help":"Submit a copyright or ownership complaint. At least one evidence file is required.","label":"Copyright claim"},"help":{"help":"Ask a general product, account, or workflow question.","label":"General help"},"image_video":{"help":"Get help with the image and video generation feature — failed generations, unexpected results, or usage questions.","label":"Image & Video"},"model_abuse":{"help":"Report unsafe, misleading, low-quality, or otherwise problematic public models.","label":"Model report"},"sales":{"help":"Talk to us about enterprise needs, partnerships, or larger commercial use cases.","label":"Sales inquiry"}},"statuses":{"closed":"Closed","in_progress":"In progress","new":"New","reopened":"Reopened","resolved":"Resolved","triaged":"Triaged","waiting_user":"Waiting for user"},"urgencies":{"critical":{"badge":"Critical","short":"Critical"},"high":{"badge":"High urgency","short":"High"},"low":{"badge":"Low urgency","short":"Low"},"normal":{"badge":"Normal urgency","short":"Normal"}},"detailFields":{"browser":"Browser","claimant_company":"Claimant company","claimant_name":"Claimant name","contact_email":"Contact email","device":"Device","invoice_reference":"Invoice reference","order_reference":"Order reference","page_url":"Page URL","product_area":"Product area","reference_urls":"Reference URLs","subscription_reference":"Subscription reference","title":"Title","company":"Company","expected_volume":"Expected volume","use_case":"Use case"},"attachmentDropzone":{"chooseFiles":"Choose files","copyrightDescription":"Paste, drag and drop, or choose image / audio / PDF files. At least one file is required for copyright / DMCA-like requests. Up to 5 files, 50 MB total.","copyrightTitle":"Evidence files","defaultDescription":"Paste, drag and drop, or choose image / audio / PDF files. Up to 5 files, 50 MB total.","defaultTitle":"Evidence and attachments","fileCounter":"{count} / {max} files","maxFiles":"You can attach up to {max} files.","maxSize":"Attachments exceed the {size} limit.","removeFile":"Remove file","sizeCounter":"{used} / {max}","unsupportedFiles":"Only image, audio, and PDF files are supported."},"detailView":{"internalNotes":{"title":"Internal notes"},"messageAuthors":{"meBadge":"Me","support":"Support","supportBadge":"Support Team","system":"Fish Audio","systemBadge":"System","you":"You"},"overview":{"caseId":"Case ID","linkedSubject":"Linked subject","subject":"Subject","updatedAt":"Updated {date}"},"reply":{"defaultTitle":"Reply","placeholder":"Write your reply","send":"Send reply"},"timeline":{"title":"Timeline"}},"dialog":{"actions":{"create":"Create case","send":"Send request"},"adminNotice":"Creating a manual case will send an acknowledgement email with a secure portal link.","auth":{"description":"Your draft is saved. Sign in to submit this request.","title":"Sign in to contact support"},"billing":{"invoiceReferenceLabel":"Invoice reference","orderReferenceLabel":"Order reference","subscriptionReferenceLabel":"Subscription reference"},"bug":{"pageUrlAttached":"Page URL will be attached automatically: {pageUrl}","productAreaLabel":"Product area","productAreaPlaceholder":"TTS, Voice Library, billing page, API, etc."},"copyright":{"claimantNameLabel":"Claimant name","companyLabel":"Company","contactEmailLabel":"Contact email","referenceUrlsLabel":"Reference URLs (one per line)"},"description":"Create a structured support case. Image, audio, and PDF files are supported.","descriptionLabel":"Description","descriptionPlaceholder":"Describe what happened and what you need from us.","manageCasesLink":"Manage your cases","manageCasesPrompt":"Need to follow up on an existing request?","modelNotFound":"Model not found.","requestType":"Request type","requester":{"emailLabel":"Requester email","emailPlaceholder":"customer@example.com","hint":"Provide a requester email or requester user ID. Both are not required if one of them is present.","nameLabel":"Requester name","userIdLabel":"Requester user ID"},"restoreAttachmentsInfo":"Please reattach your files before submitting.","reviewForm":"Please review the form.","subjectId":{"label":"Model ID","modelLabel":"Model","placeholder":"Enter a model ID","validate":"Validate model"},"success":{"created":"Support case created.","createdWithCopiedAccessLink":"Support case created. Access link copied."},"title":{"admin":"Create support case","user":"Contact support"},"validation":{"attachmentsRequired":"Please attach at least one evidence file.","claimantCompanyTooLong":"Company name is too long.","claimantNameTooLong":"Claimant name is too long.","contactEmailInvalid":"Enter a valid email address.","descriptionTooLong":"Description is too long.","descriptionTooShort":"Please provide a more detailed description.","invoiceReferenceTooLong":"Invoice reference is too long.","orderReferenceTooLong":"Order reference is too long.","productAreaTooLong":"Product area is too long.","referenceUrlsInvalid":"Reference URLs must be valid absolute URLs.","referenceUrlsTooLong":"Reference URLs are too long.","requesterEmailInvalid":"Enter a valid requester email.","requesterIdentityRequired":"Provide a requester email or requester user ID.","requesterNameTooLong":"Requester name is too long.","requesterUserIdTooLong":"Requester user ID is too long.","subjectIdRequired":"A model ID is required for this request type.","subjectIdTooLong":"Model ID is too long.","subscriptionReferenceTooLong":"Subscription reference is too long.","companyTooLong":"Company name is too long.","expectedVolumeTooLong":"Expected volume is too long.","useCaseTooLong":"Use case is too long."},"sales":{"companyLabel":"Company","expectedVolumeLabel":"Expected volume","useCaseLabel":"Use case"}},"userPage":{"attachments":"{count} attachments","description":"Track your requests, replies, and attachments in one place.","empty":{"description":"Create a case when you need help, want to report a bug, or need billing support.","title":"No support cases yet"},"filters":{"allCategories":"All categories","allStatuses":"All statuses"},"loading":"Loading support cases...","newCase":"New case","openCasePreview":"Open the case to view details.","publicMessages":"{count} public messages","title":"Support cases"},"userDetailPage":{"backToCases":"Back to support cases","replyTitle":"Add a reply"},"accessPage":{"replyTitle":"Reply without signing in"},"adminPage":{"assignee":"Assignee","createManualCase":"Create manual case","description":"Prioritize urgent requests, reply to customers, and manage inbound manual cases.","search":{"placeholders":{"case_id":"SUP-ABCD1234 / 500db7775ebb4610b8a40a42dea2901a","user_email":"customer@example.com","user_id":"500db7775ebb4610b8a40a42dea2901a"},"types":{"case_id":"Case ID","user_email":"User Email","user_id":"User ID"}},"empty":{"description":"Adjust the filters or create a manual case for inbound requests.","title":"No support cases found"},"filters":{"allCategories":"All categories","allUrgencies":"All urgency levels"},"loading":"Loading cases...","openCasePreview":"Open the case to review.","statusFilters":{"activeCases":"Active cases","activeOnly":"Active only","allStatuses":"All statuses","count":"{count} statuses","label":"Status filters","showAll":"Show all statuses"},"title":"Support admin"},"adminDetailPage":{"backToList":"Back to support admin","controls":{"latestAccessLink":"Latest access link","rotateAccessLink":"Rotate access link","status":"Status","title":"Case controls","urgency":"Urgency"},"internalNote":{"add":"Add note","placeholder":"Visible only to support operators","title":"Internal note"},"publicReply":{"aiDraft":"AI draft","draftMessage":"Draft message for AI","draftPlaceholder":"Optional draft or instruction for the AI to refine","insertDraft":"Insert draft","keepCurrentStatus":"Keep current status","missingInformation":"Missing information","optionalStatusAfterReply":"Optional status after reply","reply":"Reply","replyPlaceholder":"Write a response for the customer","suggestedReply":"Suggested reply","suggestedStatus":"Suggested status: {status}","suggestedUrgency":"Suggested urgency: {urgency}","suggestions":"Suggestions","title":"Public reply"},"summary":{"label":"Summary","placeholder":"Optional internal summary","save":"Save case"},"toasts":{"accessLinkCopied":"New access link copied.","caseUpdated":"Case updated.","noteAdded":"Internal note added.","replySent":"Reply sent."},"translationToggle":{"showEnglish":"Show English","showOriginal":"Show original"},"updatedAt":"Updated {date}","userInfo":{"apiBalance":"API balance","creditsBalance":"Credits balance","currentBillingCycleUsage":"Current billing cycle usage","email":"Email","membership":{"cancelsAtPeriodEnd":"Cancels at period end","free":"Free","label":"Membership","periodEnd":"Period end {date}"},"nickname":"Nickname","noLinkedUser":"No linked Fish Audio user was found for this case.","noUsageThisCycle":"No model usage in current billing cycle","openAdminUser":"Open admin user","publicModels":"Public models","title":"User info","usageSince":"{count} uses since {date}","usedThisCycle":"Used models in current billing cycle"}}},"studio-page":{"timeline":{"tooltips":{"collapse":"","expand":"","fit-to-window":"","follow-playhead":"","next-block":"","play-pause":"","previous-block":"","return-to-start":"","ripple-edit-off":"","ripple-edit-on":"","zoom-in":"","zoom-out":""}}},"studio":{"advanced-setting":{"audio_controls":"Audio Controls","loudness_normalization":"Loudness Normalization","text_normalization":"Text Normalization","text_normalization_hint":"Improves reading accuracy for numbers, currency amounts, and similar text.","tag_compatible_mode":"Tag Compatible Mode","tag_compatible_mode_hint":"Converts all brackets into tags for compatibility with text written for older models, but content inside parentheses may no longer be spoken aloud.","tag_compatible_mode_regenerate_notice":"Tag Compatible Mode changes only apply after regenerating audio.","speed":"Speed","speed_hint":"Adjust based on the reference audio","temperature":"Temperature","temperature_hint":"Controls expressiveness. Higher gives more emotion, lower gives more stability.","title":"Advanced Settings","top_p":"Top P","top_p_hint":"Controls variation. Lower gives more consistency but can sound more rigid.","volume":"Volume","volume_hint":"Adjust based on the reference audio","off":"Off","on":"On","scope-segment":"This segment"},"audio-control":{"export-block":"Export this block","export-selection":"Export selection","generate":"Generate","generation-failed":"Audio generation failed","generation-in-progress":"This block is already generating","history":"History","play-selection":"Play selection","play-until-end":"Play until end","regenerate":"Regenerate","retry":"Retry","title":"Audio","unsaved-content-error":"Couldn't save your latest edits, so audio generation was canceled. Please try again."},"auto-split-success":"Split into {count} blocks","banner":{"audio-story":{"action-label":"Create","description":"Effortlessly transform long texts into immersive and expressive audio narratives.","title":"Advanced Audio Story"},"instant-speech":{"action-label":"Create","description":"Quickly convert short phrases into natural, lifelike speech in an instant","title":"Instant Speech"},"project-banner":{"title":"My Projects"},"title":"Voice Acting Studio"},"batch-apply":{"title":"Replace settings for all selected segments?","description":"The selected segments currently have different values for this setting. Applying the change will overwrite all of them with the same value.","confirm":"Replace all","cancel":"Cancel"},"block-card":{"auto-tag":"Auto Tag","add-prompt":{"add-speaker":"Add Speaker","audio":"Audio"},"primary-action":{"play":"Play block","pause":"Pause","generate":"Generate and play"},"tags":"Tags","menu":{"auto-split":"Auto-split long text","copy-text":"Copy text","delete":"Delete block","duplicate":"Duplicate block","more":"More actions"},"tooltip":{"add-block":"<b>Click</b> to add block below","auto-split-disabled":"Text must be longer to auto-split","auto-split-enabled":"Split into smaller blocks for better generation","drag-handle":"<b>Drag</b> to move<br></br><b>Click</b> to open menu"},"delete-confirm":{"title":"Delete Block","description":"Are you sure you want to delete this block? This action cannot be undone.","cancel":"Cancel","confirm":"Delete","title-multiple":"Delete Blocks","description-multiple":"Are you sure you want to delete {count} blocks? This action cannot be undone."},"status":{"empty":"No audio yet","ready":"Audio generated","stale":"Edited — audio out of date","generating":"Generating audio…"}},"block-copied":"Text copied to clipboard","block-over-limit-unsaved":"Over the {limit} character limit — changes are not saved","block-update-limit-error":"The text is too long, please keep it under {limit} characters","bottom-bar":{"advanced":{"header":"Advanced","title":"Advanced"},"audio":{"header":"Audio","title":"Audio","mobile-unavailable":"This feature is currently unavailable on mobile. Please use a PC to upload and configure custom audio tracks.","ok":"OK"},"block-settings":{"header":"Block Settings"},"chapter":{"header":"Chapters","title":"Chapter"},"export":{"title":"Export"},"voice":{"header":"Voice","title":"Voice"}},"cancel":"Cancel","chapter-sidebar":{"chapter-count":"{count} {count, plural, one {chapter} other {chapters}}","default-chapter":"Default Chapter","delete-dialog":{"cancel":"Cancel","confirm":"Delete","description":"Are you sure you want to delete chapter {chapterTitle}? This action cannot be undone.","title":"Delete Chapter"},"header":"Chapters","new-chapter":"New Chapter","chapter-limit":"A project can have up to {count} chapters.","popup":{"delete":"Delete","rename":"Rename"}},"close":"Close","confirm":"Confirm","collaboration":{"remote-content-applied":"A collaborator updated this block. The latest remote content has been applied."},"project-settings":{"title":"Project Settings","save":"Save","discard":"Don't save","unsaved_title":"Save project changes?","unsaved_description":"You have unsaved project settings. Save them before switching tabs.","save_failed":"Failed to save project settings. Please try again.","default_voice_unavailable":"The default voice is unavailable. It may have been removed or made private. Choose another voice.","apply_existing":"Also apply to existing segments ({count})","generating-stop":"{count, plural, one {# generating now stops; its next take uses these settings.} other {# generating now stop; their next take uses these settings.}}","scene":"Scene mix","scene_hint":"Evens out loudness across voices and adds a shared studio room tone, so multi-voice projects sound like one recording. Off keeps the raw dry output.","scene_off":"Dry","scene_studio":"Studio","project_name":"Project name","advanced":"Advanced","tag_compatible":"Tag Compatible","defaults_heading":"Defaults for new segments"},"create-project":{"buttons":{"cancel":"Cancel","create":"Create","create-new-model":"Select Model"},"dialog-title":"Create project","form":{"backend":{"label":"Backend","placeholder":"Select a backend"},"default-voice":{"label":"Default Voice"},"errors":{"default_voice_required":"Please select a default voice","name_required":"Please enter a project name"},"project-name":{"label":"Project Name","placeholder":"Project Name"},"speech-model":{"label":"Speech Model"}},"title":"Create a advanced audio story"},"download":"Download","editor-status":{"block-update":"Saving content...","chapter-update":"Saving chapter...","content-update":"Saving changes...","last-saved":"Last saved:","online-collaborator-with-devices":"{name} ({count} devices)","online-count":"{count} online","saving":"Saving..."},"editor":{"block-save-failed":"Failed to save changes. Retrying…","nodes":{"break":"Pause","breath":"Breath","cough":"Cough","laugh":"Laughter","lip-smacking":"Lip Smacking","long-break":"Long Pause","sigh":"Sigh"},"paste-save-failed":"Failed to save pasted segments","block-count-limit":"A chapter can have up to {count} segments.","partial-block-create":"Created {created} segments before the upload stopped. Opened the project with {remaining} segments not imported.","block-create-failed":"Failed to create the new segment","retry":"Retry","block-deleted":"Segment deleted","blocks-deleted":"Deleted {count} segments","undo":"Undo","placeholder":"Press `/` to adjust paragraph type or insert tags"},"export-stages":{"block-alignment-missing":"Block subtitle alignment missing: {block_id}","block-audio-missing":"Block audio missing: {block_id}","block-changed":"Block changed, regenerating audio: {block_id}","block-skipped":"Skipped empty block","building-chapter":"Building chapter: {chapter_id}","building-chapter-title":"Building chapter","chapter-missing":"Chapter not found, skipped: {chapter_id}","complete":"Completed","completed":"Completed","concatenated":"Concatenated","concatenating":"Concatenating","concatenating-all-chapters":"Concatenating all chapters","concatenating-block":"Concatenating block: ({idx}/{length})","concatenating-progress":"Audio is being concatenated {progress}%","error":{"block-audio-empty":"The paragraph audio file is empty, execute the cleaning process, please rerun the export process","block-audio-missing":"A paragraph's audio is missing, please rerun the export process","blocks-incomplete":"Contains text that hasn't been converted to audio yet, cannot proceed with the next step","export-in-progress":"Another export of this project is already running. Please wait for it to finish.","failed":"Audio export failed","failed-to-export":"Export failed: {error_msg}","no-files-to-upload":"No audio files to export","out-of-credits":"Out of credits","stream-ended-unexpectedly":"Export stream ended unexpectedly, please try again"},"exporting":"Exporting","failed":"Failed","fetching-audio":"Fetching audio","generate-audio":"Generating audio: {block_id}","generate-audio-failed":"Audio generation failed: {block_id}","generate-audio-finished":"Audio generated: {block_id}","no-files-to-upload":"No audio files to export","preparing":"Preparing","processing-block":"Concatenating block: {block_idx}","progress-fetch-audio":"Fetching audio: {current}/{total}","uploading":"Uploading"},"export":{"already_converted":"Already generated","blocks":"blocks","chapter_not_converted":"contains text that hasn't been converted to audio yet","copied_title":"Copied!","copy_button":"Copy Annotation URL","cost_message":"It will cost {credits} credits to convert the remaining text","cost_review":"Export","download_complete":"Download complete","download_failed":"Download failed, opening in new tab","download_starting":"Starting download...","download_timeout":"Download timed out, opening in new tab","downloading":"Downloading...","empty_blocks_skipped":"{count} empty blocks skipped","empty_chapter":"Cannot export empty chapter","export_whole_subtitles":"Export subtitles","export-progress-details":"Export progress log","exporting":"Exporting","failed":"Audio export failed","fetching_audio":"Fetching audio","generating_audio":"Generating audio","latest_annotate_at":"Latest Annotated at","processing":"Processing","processing_in_background":"Export is still processing in background","project":"Export Project","question":"Extra Question","ready":"ready","select_all":"Select all","select_chapters_to_export":"Select chapters to export","chapter-limit":"Select up to {count} chapters per export.","some_chapters_not_converted":"Some chapters contain ungenerated audio","audio-tracks-excluded":"Chapters with audio tracks can only be exported as a single file","subtitles":"Subtitles","subtitles-require-merge":"Subtitles are only exported when merging into a single file","success":"Audio export success","title":"Export","to_convert":"Need to generate","to_generate":"to generate","credits":"credits","total_cost":"Blocks count","upgrade_required":"Upgrade to export","merge_audio":"Merge into single file","building_zip":"Building archive","tab_export":"Export","tab_history":"History","audio_format":"Audio format","scope_full":"Full project","scope_selected":"Selected chapters","file_structure":"File structure","structure_single":"Single file","structure_split":"Split by segments","on":"On","off":"Off","cost_breakdown":"Cost breakdown by voice:","cost_card_message":"It will cost {credits} credits to generate the remaining paragraphs","estimated_cost":"Estimated cost","default_voice":"Default voice","async_started":"Export started — it will keep running in the background","async_done":"Export completed","history_empty":"No exports yet","history_load_failed":"Couldn't load export history","estimate_failed":"Credit estimate unavailable","async_failed":"Export failed. Please try again.","retry":"Retry","chapters_count":"{count, plural, one {# chapter} other {# chapters}}","blocks_progress":"{generated}/{total} blocks"},"generation-history":{"empty":"No recent audio generated for this block","restore-error":"Restore failed. Please try again.","restore-success":"Restore successfully","restore-tooltip":"Restore this history version","selected":"Selected","text-mismatch-cancel":"Cancel","text-mismatch-confirm":"Restore anyway","text-mismatch-warning-description":"The text of this block has been edited. Restoring this version will overwrite the current text.","text-mismatch-warning-title":"Text has changed","title":"Generation History","preview-tooltip":"Preview text","preview-title":"Preview","takes":"Takes","current":"Current"},"shortcuts":{"title":"Keyboard Shortcuts","group-editor":"Editor","group-timeline":"Timeline","group-general":"General","new-segment":"New segment / split at cursor","insert-menu":"Open insert menu","play-segment":"Play or generate segment","select-all":"Select segment, press again for all","undo":"Undo","redo":"Redo","delete-empty-segment":"Delete empty segment","play-pause":"Play / pause","goto-start-end":"Go to start / end","prev-next-segment":"Previous / next segment","zoom":"Zoom in / out","open-shortcuts":"Show keyboard shortcuts"},"version-history":{"empty":"No version history yet","error":"Failed to load version history.","latest":"Latest","load-more":"Load more","retry":"Retry","source":{"autosave":"Autosave","checkpoint":"Checkpoint","manual":"Manual","publish":"Publish"},"title":"Version History"},"guide":{"advanced-audio-story":{"description":"Effortlessly transform long texts into immersive and expressive audio narratives.","link-text":"Start from scratch","title":"Advanced Audio Story"},"instant-speech":{"description":"Quickly convert short phrases into natural, lifelike speech in an instant","link-text":"Start from scratch","title":"Instant Speech"}},"header":{"created":"Created {time}","export":"Export project"},"how_to_control_emotions":"How to control emotions","login_to_create_project":"Login to create project","my_projects":"My Projects","my-projects":{"empty-state":"You don't have any projects yet. Start with a template!","first-block-guide":"[emphasis] Welcome to Audiobooks! [pause] Edit this text, then press the play button beside it to hear it.","load-failed":"Failed to load projects.","load-more":"Load more","new-project":"New Project","no-results":"No projects found","official-template":"Official Template","refresh-template":"Show another template","retry":"Retry","search":"Search Project","title":"My Project","use-template":"Use template","subtitle":"Audiobooks, podcasts, lessons & narration"},"no_projects_yet":"No projects yet","project_name_update_failed":"Failed to update project name","project-card":{"delete":"Delete project","empty-preview":"No content yet — open to start writing","more-actions":"More project actions","open":"Open project","rename":"Rename project","voice-acting":"Voice acting"},"quick-start":{"advanced":"Advanced","generate":"Generate","generating":"Generating...","instant":"Instant","placeholder":"Edit your text here to be converted to speech. Insert (break) / (long-break) / (breath) / (laugh) to control the speech.","template-created":"Official Template","title":"Quick Start"},"rename-dialog":{"cancel":"Cancel","placeholder":"Project name","save":"Save","success":"Project renamed successfully","title":"Rename Project"},"story_studio":"Audiobooks","timeline":{"context-menu":{"copy":"Copy","copy-error":"Failed to copy","copy-success":"Copied to clipboard","copy-text":"Copy text","delete":"Delete","download":"Download","duplicate":"Duplicate","generate":"Generate","regenerate":"Regenerate","split-at-playhead":"Split at Playhead","trim-left":"Trim Left","trim-right":"Trim Right","view-history":"View History"},"mobile-menu":{"goto-end":"Go to End","goto-start":"Go to Start","lock-off":"Lock Positions","lock-on":"Unlock Positions","next-block":"Next Block","previous-block":"Previous Block","ripple-off":"Enable Ripple Edit","ripple-on":"Disable Ripple Edit","snap-off":"Enable Snapping","snap-on":"Disable Snapping","zoom-in":"Zoom In","zoom-out":"Zoom Out"},"tooltips":{"collapse":"<b>Click</b> to collapse","copy-block":"Copy block","delete-block":"Delete block","expand":"<b>Click</b> to expand","fit-to-window":"<b>Click</b> to fit to window","follow-playhead":"<b>Click</b> to toggle playhead follow","goto-end":"<kbd>End</kbd> go to end","goto-start":"<kbd>Home</kbd> go to start","lock-off":"<b>Click</b> to lock positions","lock-on":"<b>Click</b> to unlock positions","mute":"<b>Click</b> to mute","next-block":"<kbd>→</kbd> next block","play-pause":"<kbd>{keys}</kbd> play/pause","previous-block":"<kbd>←</kbd> previous block","return-to-start":"<kbd>Home</kbd> return to start","ripple-edit-off":"<b>Click</b> to enable ripple edit","ripple-edit-on":"<b>Click</b> to disable ripple edit","snap-off":"<b>Click</b> to enable snapping","snap-on":"<b>Click</b> to disable snapping","split-at-playhead":"Split at playhead","trim-left":"Trim left (keep right)","trim-right":"Trim right (keep left)","unmute":"<b>Click</b> to unmute","zoom-in":"<b>Click</b> to zoom in","zoom-out":"<b>Click</b> to zoom out","play-until-end":"Play until end"},"track-menu":{"delete-track":"Delete Track","delete-track-cancel":"Cancel","delete-track-confirm":"Delete","delete-track-description":"This will delete the track and {count, plural, one {# block} other {# blocks}} on it. This action cannot be undone.","delete-track-title":"Delete Track","lock-track":"Lock Track","move-down":"Move Down","move-up":"Move Up","track-color":"Track Color","unlock-track":"Unlock Track"},"delay-indicator":{"label":"Delay (s)","tooltip":"Delay relative to the previous block in the same track.","decrease":"Decrease","increase":"Increase","apply-to-all-label":"All","apply-to-all-tooltip":"Apply Current Duration to All","apply-to-all-confirm-title":"Confirm Change","apply-to-all-confirm-description":"Apply current duration to all blocks. This operation cannot be undone.","apply-to-all-confirm-cancel":"Cancel","apply-to-all-confirm-confirm":"Confirm","apply-to-all-confirm-close":"Close"},"mixer":{"click-to-edit-volume":"Click to edit volume","main":"Main","title":"Mixer"},"new-track":"New {type} track","toolbar":{"audio-levels":"Audio Levels","hide-mixer":"Hide Mixer","show-mixer":"Show Mixer"},"track-header":{"click-to-rename":"Click to rename","click-to-reset-clip":"Click to reset clip","gain":"Gain","hide-track":"Hide Track","mute-track":"Mute Track","pan":"Pan","reset-to-default":"Reset to default","show-track":"Show Track","sound":"Sound","solo-track":"Solo Track","track-locked":"Track locked","unmute-track":"Unmute Track","unsolo-track":"Unsolo Track","volume":"Volume","width":"Width","rename-track":"Rename Track"},"track-types":{"audio":"Audio","text":"Text","video":"Video"},"waveform-unavailable":"Waveform unavailable"},"untitled-project":"Untitled Project","voice-control":{"aria-labels":{"bookmark":"Bookmark count","like":"Like count","play":"Play count","refresh":"Refresh","share":"Share count"},"create_in_a_minute":"Create in a minute","dont_have_voice_model":"Don't have one?","model_newest":"Newest","model_retiring":"Retiring","model_s1_description":"Retires Dec 31, 2026","model_s2_description":"Legacy","model_s2_1_description":"Versatile pro model for fast, low-latency speech.","model_drama_3_description":"Most expressive model. Direct every line in your own words.","model_title":"Model","model_v15_description":"Stable with least emotion variance","model_v16_description":"Emotion support","title":"VOICE","voice_model":"TTS Model","voice_title":"Voice","voice-in-project":"Voices used in the project","project-voice-limit":"A project can use up to {count} distinct voices.","change-speaker":"Voice","voice-in-section":"Voices used in the selected section","unavailable-toast":"Some voices used in this project are unavailable. They may have been removed or made private.","unavailable-title":"Voice unavailable","unavailable-description":"This voice is no longer available. It may have been removed or made private. Choose another voice to continue.","choose-another-voice":"Choose another voice","add-more-voice":"Add more voice","remove-voice-aria":"Remove {voice} from this project","remove-voice-title":"Remove {voice}?","remove-voice-description":"{count, plural, one {# segment still uses this voice.} other {# segments still use this voice.}} Choose which voice should take them over.","remove-voice-replacement-label":"Replace with","remove-voice-confirm":"Remove","remove-voice-cancel":"Cancel","more-voice":"More voice","propagate-title-voice":"Apply this voice to more paragraph?","propagate-title-model":"Apply this model to more paragraph?","propagate-title-voice-model":"Apply voice & model to more paragraph?","propagate-replace-voice":"Replace {oldVoice} with {newVoice}.","propagate-current-paragraph":"This Paragraph Only","propagate-this-speaker":"This Speaker ({count})","propagate-everywhere":"Everywhere ({count})","propagate-regenerate-hint":"Applied paragraphs will need to be regenerated.","propagate-dismiss":"Dismiss","default-badge":"Default","current-selection":"Current selection","preview-play":"Play voice preview","preview-pause":"Pause voice preview","set-default":"Set as default","set-default-failed":"Failed to set default voice","remove":"Remove","voice-actions":"Voice actions","explore":"Explore voices","search-voices":"Search voices…","voice-change-title":"Change this paragraph’s voice?","voice-change-description":"Use “{newVoice}” for this paragraph only, or replace “{oldVoice}” in the current chapter or all chapters. Other voices will stay the same.","voice-swap-title":"Replace “{oldVoice}”?","voice-swap-description":"Replace “{oldVoice}” with “{newVoice}” in this chapter or all chapters. Other voices will stay the same.","voice-change-this-paragraph":"This paragraph","voice-change-this-chapter":"This chapter ({count})","voice-change-all-chapters":"All chapters ({count})","try_drama_3_action":"Try Drama 3"},"audio":{"title":"Audio","add-audio":"Add Audio","section-title":"Audio","upload":"Upload Audio","upload-hint":"Supports local upload or cloud library","uploading":"Uploading","upload-success":"Audio uploaded successfully","upload-error":"Failed to upload audio","file-too-large":"File size exceeds 16MB limit","unsupported-format":"Unsupported format. Allowed: {formats}","delete-confirm-title":"Delete Audio","delete-confirm-description":"Are you sure you want to delete \"{name}\"?","delete-success":"Audio deleted","rename":"Rename","rename-success":"Audio renamed","rename-error":"Failed to rename audio","rename-dialog":{"title":"Rename Audio","placeholder":"Enter an audio name","cancel":"Cancel","save":"Save"},"cancel":"Cancel","delete":"Delete","empty":"No audio yet","load-more":"Load more","insert":"Insert to timeline","insert-success":"Added to timeline","insert-error":"Failed to add audio to timeline","add-track":"Add track","track-limit-reached":"You can add up to {limit} audio tracks.","import-source-tts":"Import from TTS history","nothing-to-play":"Nothing to play yet — add some text first","tts-dialog-title":"Import from TTS History","tts-dialog-description":"Choose a previously generated TTS audio file to add to this project's audio.","tts-empty":"No TTS history yet","tts-import":"Import","tts-importing":"Importing...","tts-import-success":"Imported to audio","tts-import-error":"Failed to import from TTS history"},"right-panel":{"chapters":"Chapters","properties":"Edit","audio":"Assets","project":"Project","rename-project":"Rename project","voices":"Voices"},"block-insert-menu":{"emotion":"Emotion","delay":"Delay","tts-history":"TTS History","delay-seconds":"Delay in seconds","confirm-delay":"Confirm delay"},"block-type":{"label":"Type","text":"Text","heading1":"H1","heading2":"H2","heading3":"H3"},"chapter-menu":{"search":"Search chapters…","new-chapter":"New chapter","manage-chapters":"Manage chapters","previous-chapter":"Previous chapter","next-chapter":"Next chapter"},"edit-panel":{"view-all":"View all ({count})","ai-tools":"AI Tools","enhance-title":"Enhance text","enhance-description":"Add emotion and pause tags to guide delivery","multi-select-hint":"Changes apply to all {count} selected segments"},"create-modal":{"title":"Create a project","blank":"Blank project","blank-hint":"Start from scratch and write as you go","templates":"Or start from a template","templates-empty":"No templates yet","import":{"entry":"Import a document","entry-hint":"Word, PDF or text — AI splits chapters and speakers","title":"Import a document","upload":"Upload a file","upload-hint":"DOCX, PDF, TXT or Markdown","or-paste":"Or paste text","paste-placeholder":"Paste your story or script here…","back":"Back","errors":{"file-too-large":"This file is too large (15 MB max).","unsupported-file-type":"Unsupported file type — use DOCX, PDF, TXT or Markdown.","too-many-pages":"This document has too many pages (300 max).","empty-document":"We couldn't find any text in this document.","failed":"Import failed. Please try again."},"import":"Import","rewrite":"Rewrite for naturalness","rewrite-hint":"Lightly smooth phrasing for spoken delivery","auto-tags":"Auto-add expression tags","auto-tags-hint":"Emotion and pause tags where the text calls for them"},"use-case":{"audiobook":"Audiobook","documentary":"Documentary","meditation":"Meditation","mystery":"Mystery","reflection":"Reflection","podcast":"Podcast","lesson":"Lesson","narration":"Narration","education":"Education","audio-drama":"Audio drama","story":"Story","asmr":"ASMR","business":"Business","news":"News","wellness":"Wellness","motivation":"Motivation","crime":"Crime"}},"import-review":{"title":"Review the voices","description":"We cast these voices for your imported speakers. Change any of them, or keep the cast.","designed-badge":"AI-designed","change":"Change","keep":"Keep these voices"},"importing":{"banner":"Importing… {percent}%","eta":"about {minutes} min left","failed":"Import failed — the imported part is kept","retry":"Retry","card-badge":"Importing {percent}%","card-failed":"Import failed","success":"Imported {chapters} chapters · {chars} characters","success-short":"Imported {chapters} chapters"},"chapter-heading-prefix":"Chapter:","share":{"button":"Share","open_comments":"{count, plural, one {# open comment} other {# open comments}}","title":"Share","title_label":"Title","link_label":"Share link","copy":"Copy","copied":"Copied","link_copied":"Link copied","copy_failed":"Couldn't copy the link.","anyone_with_link":"Anyone with the link can listen and comment.","open_in_new_tab":"Open in new tab","allow_comments":"Allow comments","comments_on":"Comments turned on","comments_off":"Comments turned off","version":"Version","export_from":"Export from {date}","this_export":"This export: {date}","latest_export":"Latest: {date}","update_to_export":"Update to this export","update_to_latest":"Update to latest export","already_on_export":"Already on this export","already_on_latest":"Already on the latest export","export_every_chapter":"Export every chapter before updating","export_every_scene":"Export every scene before updating","updated":"Share updated.","update_failed":"Couldn't update the share. Try again.","stop":"Stop sharing","stop_title":"Stop sharing this story?","stop_description":"The link will stop working.","cancel":"Cancel","stop_failed":"Couldn't stop sharing. Try again.","stopped":"Sharing stopped","create_failed":"Couldn't share this export. Try again.","line_missing":"This line is no longer in the project.","create_link":"Create share link","up_to_date":"Up to date","plays_export":"Plays the {date} export","update_link":"Update link","update_link_hint":"Same link. Comments stay.","settings":"Settings","comments_disabled":"Comments off"},"review":{"retake":"Re-take","new-take":"New take","take-n":"Take {take}","generating":"Generating","previous-take":"Previous take","next-take":"Next take","not-heard":"Not heard yet","new-take-unheard":"New take not heard yet","switch-failed":"Couldn't switch to that take","retake-failed":"Re-take failed","timed-out":"Drama 3 didn't answer in time. Reload to see whether the take landed.","reviewing":"Reviewing","reviewing-title":"Reviewing · {title}","hints":{"play":"play","new-take":"new take","retake":"re-take","switch":"switch take","keep":"keep","close":"close"},"preroll":{"label":"with previous line","on-title":"Replays start 2 s before the take","off-title":"Replays play just the take"},"tip":{"replaying-from":"replaying from {seconds} s before","back-to-take":"back to Take {take}","back-to-previous":"back to the previous take"},"lead":{"note":"Your note is rewritten for Drama 3","image":"The image is turned into a note for Drama 3"},"composer":{"placeholder":"Tell Drama 3 what to change…","placeholder-role":"Tell {role} what to change…","attach":"Attach an image","attach-title":"Attach an image (or paste / drop one)","attached-image":"Attached image","remove-image":"Remove image","attach-failed":"Couldn't attach the image","two-takes":"2 takes","quick":{"softer":"Softer","slower":"Slower","more-hurt":"More hurt","whisper":"Whisper"}},"sent":"Sent:","sent-image":"Image sent with the note","conflict":{"voice":"another voice","model":"another model","settings":"other audio settings","hint":"Recorded with {label}. Switch back to use it."},"earlier":"Earlier text{voice, select, yes { or voice} other {}}{model, select, yes { or model} other {}}{settings, select, yes { or settings} other {}} ({count})","block":{"needs-drama3":"Directed re-takes need Drama 3.","retaking":"Drama 3 is re-taking it…","fresh":"No note: a fresh take of this paragraph.","applied":"{lead} and applied to Take {take}.","need-take":"Direct a Drama 3 take of this text: make one first (Re-take without a note).","need-take-toast":"Make a Drama 3 take of this text first, then direct it"}},"voice-acting":{"title":"Voice acting","preview-badge":"Drama 3 · Preview","open-failed":"Couldn't open this project.","back-to-studio":"Back to Audiobooks","no-scenes":"No scenes yet","show-guide":"Show guide","scenes":"Scenes","new-scene":"New scene","add-line":"Line","voice":"Voice","scene":{"default-title":"Scene {n}","previous":"Previous scene","next":"Next scene","title-label":"Scene title","lines":"{count, plural, one {# line} other {# lines}}","cast":"Cast","pick-voice":"Pick a voice","add-role":"Role","role-name":"Role name","note-placeholder":"Scene note: where are we, and how do they feel?","note-hint":"Sent with Perform scene ·","voice-for":"Voice for {role}"},"perform":{"action":"Perform scene","running":"Performing…","options":"Perform options","all":"All lines · one pass","missing":"Lines without a take","progress":"{count, plural, one {Drama 3 is performing # line…} other {Drama 3 is performing # lines…}}","hint":"Each character's lines in one take, split where Drama 3 ends each line","done":"{count, plural, one {Scene performed · # new take} other {Scene performed · # new takes}}","partial":"{done} of {total} lines performed · {failed} couldn't be separated — “Lines without a take” retries them","changed":"{done} of {total} lines performed · {failed} changed while performing — “Lines without a take” retries them"},"export":{"scene":"Export scene","clips":"Clips","mix":"Scene mix","all-scenes":"All scenes","scenes":"{count, plural, one {# scene} other {# scenes}}","no-takes":"No takes","format":"Format","format-value":"WAV · 44.1 kHz · 16-bit","no-take":"{count, plural, one {# line without a take} other {# lines without a take}}","changed":"{count, plural, other {# changed}}","scene-limit":"Select up to {count} scenes per export.","deliverables":"{kind, select, mix {Mix} both {Clips + Mix} other {Clips}}","share-needs-mix":"Include Scene mix to share"},"line":{"placeholder":"Write the line…","playing":"playing","play":"Play","play-from":"from {role}","edited":"edited · not performed yet","generating":"Generating","generate":"Generate","changed":"changed since take"},"take":{"pass":"Pass","image":"Image","text":"Text:","original":"Original","another":"Another take","note":"“{note}”","from":"from {take}","position":"Take {position}/{count}","taking":"Taking…","generating-first":"Generating the first take…","none":"No take of this line yet.","pick":"Pick a take, or Re-take.","edited-since":"Edited since Take {take}. Re-take performs the new text, or pick a take to go back.","settings-changed":"The voice or settings changed since Take {take}. Re-take, or pick a take to go back.","play":"Play take","play-preroll":"Play from 2 s before","pause":"Pause"},"helper":{"fresh":"No note: {twice, select, yes {2 fresh takes} other {a fresh take}} of {edited, select, yes {the edited text} other {this line}}.","applied":"{lead} and applied to Take {take}{twice, select, yes {, twice} other {}}.","first-edited":"A fresh take of the edited text comes first.","first-fresh":"A fresh Drama 3 take comes first.","applied-to-it":"{lead} and applied to it{twice, select, yes { twice} other {}}."},"strip":{"play-scene":"Play scene","pause":"{seconds} s pause","pause-delay":"{seconds} s pause · the line's delay","changed-skipped":"changed since take, skipped","no-take-skipped":"no take, skipped","skipped":"Lines without a take of their text are skipped —","perform-them":"Perform them"},"image":{"add":"Add image","add-title":"Add an image of the scene (or drop one on the card)","enlarge":"Enlarge image","remove":"Remove image","describing":"Describing the image for the scene note…","from-image":"From the image:","add-to-note":"Add to scene note","replace-note":"Replace note","dismiss":"Dismiss","scene-image":"Scene image","describe-failed":"Couldn't describe the image"},"errors":{"retake-failed":"Re-take failed","generation-failed":"Generation failed","perform-failed":"Perform failed","play-failed":"Couldn't play this take","busy":"Wait for the current take to finish","in-flight":"Another take is still in flight. Try again in a moment.","changed":"The text changed meanwhile. Try again.","took-too-long":"Drama 3 took too long. Please try again."},"guide":{"scene":{"title":"The scene","body":"The scene note and the cast tell Drama 3 where it is and who speaks."},"perform":{"title":"Perform scene","body":"Every character's lines in one take each, with the whole scene as context. It plays back when done."},"line":{"title":"A line","body":"Click a line to open it, Space plays it. The chips are its takes: click one to switch. Enter sends the Re-take box, Esc closes the line."},"retake":{"title":"Re-take","body":"Write a note, or attach an image: it's rewritten into a director's note and the line's tags are adjusted. An empty box gives another take."},"export":{"title":"Export","body":"Clips, one file per line. Include Scene mix to share it."},"no-lines":{"title":"Add the lines","body":"Write the scene with + Line (Enter at the end of a line starts the next speaker's), or paste a script when you create a project. The guide goes on once there are lines."},"skip":"Skip","back":"Back","next":"Next","done":"Done"},"logs":{"title":"Logs","tooltip":"Logs · what Drama 3 was sent","description":"What Perform, Re-take and scene images sent: the note rewrite, the image description and each Drama 3 chat request, newest first.","refresh":"Refresh","admins-only":"Logs are for admins only","load-failed":"Couldn't load the logs","empty":"No Perform, Re-take or image calls in this project yet.","deleted-scene":"A deleted scene","where":"{title} · {count, plural, one {line} other {lines}} {lines}","kind-perform":"Perform","kind-retake":"Re-take","kind-image":"Image","copy":"Copy JSON","copied":"Log copied as JSON","rewrite":"Note rewrite","vision":"Image description","request":"Chat request {n}","voice":"voice {id}","lines":"{count, plural, one {# line} other {# lines}}","attempt":"attempt {n}","split":"split","segments":"{count, plural, one {# segment} other {# segments}} · {frames} frames","align":"align {seconds}","silent-dropped":"silent segment dropped","fallback":"fallback","retag-rejected":"retag rejected","not-separated":"Not separated","left-without-take":"{count, plural, one {# line} other {# lines}} left without a take: {ids}","system":"System","user":"User","output":"Output","none":"(none)","timings":"Timings","params":"Params","image":"Image"},"home":{"title":"Voice Acting","all":"All scenes","empty":"No scenes yet"},"import":{"entry":"Drop your script","entry-hint":"docx · pdf · txt","drop":"Drop to import","choose":"Choose file","change":"Change","import":"Import","stage":{"reading":"Reading the file","analyzing":"Finding scenes and roles","casting":"Casting voices","slow":"Still working — large script"},"review":{"title":"Review the import","name":"Project name","scenes":"Scenes ({count})","roles":"Roles ({count})","lines":"Lines","col-role":"Role","col-lines":"Lines","col-voice":"Voice","merge-into":"Merge into","merged":"→ {role}","undo":"Undo","suggest-merge":"Same as {role}?","apply":"Apply","auto-cast":"Auto-cast","from-file":"From file","not-imported":"Not imported ({count})","warn-narration":"{count, plural, one {# paragraph wasn't dialogue → narrator} other {# paragraphs weren't dialogue → narrator}}","warn-split":"{count, plural, one {# long line split} other {# long lines split}}","warn-cast-table":"Cast table found · {count} voices applied","warn-unlisted":"{count, plural, one {# line has an unknown role} other {# lines have unknown roles}}","warn-similar":"{count, plural, one {# role looks like a duplicate} other {# roles look like duplicates}}","warn-encoding":"Text encoding was guessed — check the names"},"create":"{count, plural, one {Create # scene} other {Create # scenes}}","creating":"Creating…","done":"Imported {scenes} scenes · {lines} lines","errors":{"file-too-large":"This file is too large (15 MB max).","unsupported-file-type":"Use DOCX, PDF or TXT.","too-many-pages":"Too many pages (300 max).","empty-document":"No text found in this file.","upload-failed":"Upload failed. Try again.","no-dialogue":"No dialogue found.","too-many-lines":"Over 2,000 lines — split the file.","document-too-long":"Over 300,000 characters — split the file.","rate-limited":"Too many imports today. Try again later.","analysis-failed":"AI couldn't read it. Retry picks up where it stopped.","expired":"This import expired. Upload again.","create-failed":"Couldn't create the project. Try again.","cast-incomplete":"Pick a voice for every role.","invalid-voice-id":"A voice can't be used here. Pick another.","failed":"Couldn't read the script."},"actions":{"back":"Back","retry":"Retry","cancel":"Cancel"},"discard":{"title":"Discard import?","keep":"Keep","confirm":"Discard"}},"new":{"sample":"Sample scene","sample-meta":"{roles, plural, one {# role} other {# roles}} · {lines, plural, one {# line} other {# lines}}","blank":"Blank scene","untitled":"Untitled scene","create-failed":"Couldn't create the project. Please try again."}}},"studio-agent":{"session":{"loadFailed":"This session could not be loaded.","disconnected":"Connection lost.","reconnect":"Reconnect","reconnecting":"Reconnecting…","signedOut":"You’ve been signed out. Sign in again to keep going.","signIn":"Sign in","startFailedTitle":"Couldn’t get started","startFailedText":"Your message is still waiting. Send another to start again; they’ll be handled in order.","back":"Back to History","empty":"Nothing here yet. Describe what you want to make.","budgetOverMeta":"{used} used, {over} over","budgetOverText":"Spending went past the auto budget of {limit} credits, so the work paused. Raise it to pick up where it stopped.","budgetRaiseTo":"Raise it to {limit} and continue","readOnly":"This is a teammate's project. You can only view it.","archived":"This project is archived. Restore it to continue."},"memory":{"open":"Memory","drawerTitle":"Memory","groups":{"habits":"Your habits","recent":"Recent work","about":"About you"},"loadFailed":"Couldn't load memory.","saveFailed":"Couldn't save the change. Please try again.","editLabel":"Edit memory","save":"Save","close":"Close","pendingDelete":"Deleted on save","restore":"Restore","changes":"{count, plural, one {# change} other {# changes}}","updated":"Memory updated","fillIn":"Tap to add","approve":"Use","decline":"Ignore","profile":{"brandName":"Brand","category":"Makes","audience":"Audience","platforms":"Platforms","languages":"Languages","tone":"Tone","visualStyle":"Look","aspectRatio":"Ratio","captionStyle":"Captions","musicStyle":"Music","avoid":"Avoid","pronunciations":"Say it as"},"habitsEmpty":"No habits picked up yet. After a little work together, they’ll show here.","notSet":"Not set"},"composer":{"tab":"Agent","placeholder":"Describe what to make (a video, an image, a voiceover) or paste a link to recreate…","followUpPlaceholder":"Keep going — e.g. make the Japanese line more excited","send":"Send","stop":"Stop","sendFailed":"Could not send. Please try again.","signedOut":"You've been signed out. Sign in again to send.","unavailable":"The service is unavailable right now. Please try again in a moment.","archived":"This project is archived, so the message was not sent. Restore it to continue.","conflict":"The project cannot take this message right now. Refresh the page to see its latest state, then try again.","budgetSpent":"This project's budget is used up, so the message was not sent. Raise the budget, then send it again.","recoveryRequired":"This project's workspace could not be brought back, so the message was not sent. Try again in a moment, or continue in a new project.","collapse":"Collapse","attachments":{"remove":"Remove {name}","aFile":"A file","tooMany":"Up to {max} files per message","empty":"{name} is empty","tooLarge":"{name} is larger than {max}","unreadable":"{name} is not a readable picture, video or sound file","changedDuringUpload":"Attachments changed during upload; please retry","uploadFailed":"{name} could not be uploaded","addFailed":"The file could not be added","retryShort":"Upload failed. Tap to retry","documentN":"Document {n}","add":"Add files","hide":"Hide file slots"},"permission":{"autoTitle":"Auto within budget","autoDescription":"Goes ahead while total spend stays under {credits} credits.","confirmTitle":"Confirm before changes","confirmDescription":"Asks before changing existing work or spending credits.","fullTitle":"Fully automatic","fullDescription":"Does everything without asking.","saveFailed":"Couldn't save this setting. Please try again.","budgetLabel":"Budget","budgetChip":"Budget {credits} credits","overBudget":"{used} used so far, {over} over."},"creditsUsedHint":"Credits used","spend":{"model":"Thinking step","image":"{count, plural, one {# image} other {# images}}","video":"{count, plural, one {# video} other {# videos}}","lipsync":"{count, plural, one {# lip sync} other {# lip syncs}}","other":"{count, plural, one {# other generation} other {# other generations}}","total":"Total","used":"{credits} credits"},"documentRefs":"Documents","model":{"flagship":"Flagship","standard":"Standard","economy":"Economy","flagshipDescription":"The most careful with visuals and layout. For work that has to look its best.","standardDescription":"Close to flagship quality, faster, about 70% of its cost.","economyDescription":"Fastest, under a tenth of flagship cost. Plainer visuals; good for trying ideas.","autoEffort":"Quick small edits","autoEffortDescription":"Jev handles small changes and questions faster and cheaper"},"permissions":"Permissions","skills":"Skills","attachedFiles":"Attached files","attachedFilesAndSkills":"Attached files and skills","skillsCount":"Skills {count}","skillAlwaysOn":"Always on","outOfCredits":"You don't have enough credits to send this. Top up to keep going.","notEnabled":"Creative Agent isn't enabled for this project's team. Switch to a team that has it, or ask your team admin.","requestAccess":"Request access","accessRequested":"Request sent. We'll let you know when it's on.","accessRequestFailed":"The request didn't go through. Try again in a moment.","paywall":{"title":"Agent needs a paid membership","description":"Creative Agent is for paid members. The Free plan and free trials don't include it. Subscribe to send, and your draft will be waiting."},"sessionLimit":{"concurrent":"You already have {limit, plural, one {# project} other {# projects}} running, the most at one time. Close another project, or try again later.","concurrentUnknown":"You have the most projects running at one time. Close another project, or try again later.","hourly":"You've started {limit, plural, one {# project} other {# projects}} in the last hour, the most allowed. Try again later.","hourlyUnknown":"You've started the most projects allowed in one hour. Try again later.","global":"Too many projects are running on the service right now. Try again later.","retryAfter":"{reason} You can try again {when}."}},"timeline":{"renderFailed":"This content failed to render.","thinking":"Thinking…","thought":"Thought for {seconds}s","stopped":"Stopped","mediaUnavailable":"Preview unavailable","olderTurns":"{count, plural, one {# earlier turn} other {# earlier turns}}","olderTurnsUncounted":"Earlier turns","media":{"video":"Video","images":"Images","imageCount":"{count, plural, one {# image} other {# images}}","play":"Play {name}","pause":"Pause {name}","audio":"Narration","useInComposer":"Use in message"},"cardClosed":"Closed “{label}”","closeCard":"Close","closeFailed":"Couldn’t close it. Try again.","openInPreview":"Open in preview","failedTitle":"This step didn’t work","failedText":"Something went wrong. What’s done so far is kept.","fault":{"limit":"The model service has reached its usage limit and is paused for now. Try again later; everything made so far is kept.","busy":"The model service is too busy right now. Try again in a moment; everything made so far is kept.","unreachable":"The model service can't be reached right now. Try again shortly; everything made so far is kept.","budgetUser":"You've used up your AI usage allowance, so retrying won't help. Ask your workspace admin to raise it; everything made so far is kept.","budgetUserUntil":"You've used up your AI usage allowance, and retrying won't help until it resets on {date}. To keep going sooner, ask your workspace admin to raise it; everything made so far is kept.","budgetGlobal":"The service is very busy and AI usage is paused for now. Try again later; everything made so far is kept.","budgetGlobalUntil":"The service is very busy and AI usage is paused until {date}. Try again after that; everything made so far is kept.","blocked":"AI usage is paused for this account, possibly because of an unpaid balance. Top up or contact support; everything made so far is kept.","refused":"The model declined this request under its safety policy, so retrying it as is would be declined again. Reword it and send it again; everything already made is still here.","startFailed":"Fish's workspace didn't start. Try again; everything made so far is kept.","startPaused":"Starting is paused for a short while after several failed starts. Wait a moment, then try again.","signinExpired":"Your Fish Audio sign-in has expired. Sign out, then sign in with Fish Audio again.","accountRejected":"This Fish Audio account can't use the agent here. Open it again from fish.audio, or contact support.","fishUnavailable":"Fish Audio can't be reached right now. Try again in a moment.","serviceUnavailable":"The model service is temporarily unavailable. Try again later; everything made so far is kept.","creditsToStart":"Your credits have run out, so Fish couldn't start. Top up, then send your message again to continue.","agentNotEnabled":"Creative Agent isn't enabled for this team, so Fish couldn't start. Switch to a team that has it, or ask your team admin.","planRequired":"This team's plan doesn't include Creative Agent, so Fish couldn't start. Upgrade the plan, then send your message again.","accessDenied":"Fish Audio isn't letting this team run Creative Agent right now, so Fish couldn't start. Check your plan and payment, or contact support.","sessionConcurrent":"You have the most projects running at one time. Close another project, or try again later.","sessionGlobal":"Too many projects are running on the service right now. Try again later.","creditsSpent":"Your credits have run out, so Fish stopped here. Top up, then send your message again to continue; everything made so far is kept."},"stoppedText":"Everything made so far is kept.","retry":"Try again","resendAfterTopUp":"Topped up — send again","continue":"Continue","retryPrompt":"That last step failed. Please try it again.","continuePrompt":"Continue.","budgetSpentTitle":"Budget used up","budgetSpentMeta":"{used} / {limit} used","budgetSpentText":"Spending reached the auto budget, so the work paused. Raise it to pick up where it stopped.","budgetNewLimit":"New budget","budgetRaiseOpen":"Raise budget","budgetRaise":"Double it and continue","budgetNearTitle":"Budget almost used","budgetNearMeta":"{used} used, {left} left","budgetNearText":"{percent} of the auto budget is used. The work pauses when it runs out; add more to keep going.","budgetTopUp":"Add one tier (+{credits})","budgetTopUpLimited":"This month's AI budget allows only {credits} more credits.","budgetMonthlyReached":"This month's AI budget is used up, so nothing more can be added.","budgetTopUpFailed":"Could not add to the budget. Try again.","budgetToppedUp":"Added {credits} credits. The budget is now {limit}.","generation":{"runningFor":"Generating · {time}","stalled":"Status unknown","upgrade":"Upgrade plan","topUp":"Top up","retryPrompt":"“{label}” failed to generate. Please try again.","failure":{"moderation":"Didn’t pass content review","timeout":"Timed out","provider_error":"Generation failed","insufficient_credits":"Not enough credits","plan_required":"Not on your plan","canceled":"Canceled","unknown":"Generation failed"},"batch":{"image":"{count, plural, one {Generating # image} other {Generating # images}}","video":"{count, plural, one {Generating # video} other {Generating # videos}}","audio":"{count, plural, one {Generating # audio clip} other {Generating # audio clips}}","mixed":"{count, plural, one {Generating # item} other {Generating # items}}"},"progress":"{done}/{total} done","retryFailed":"Retry {count} failed","unavailable":"This result can’t be opened right now","meta":{"credits":"{credits} credits","creditsTotal":"{credits} credits total","elapsedSeconds":"took {seconds}s","elapsedMinutes":"took {minutes}m {seconds}s"},"rewrite":"Edit prompt","retryGuideModel":"Retry with recommended model","rewritePrompt":"\"{label}\" didn't pass content review. Please rewrite the prompt in a different way, avoiding what may have triggered review, and generate it again.","retryModelPrompt":"\"{label}\" didn't pass content review. Please generate it again with {model}, keeping the prompt's meaning."},"fishSteps":{"get_credit_balance":"Checking credit balance","list_media_models":"Listing available models","get_media_model":"Checking model details","generate_image":"Generating image","generate_image_edit":"Editing image","generate_video":"Generating video","get_generation_status":"Checking generation progress","get_generation_result":"Fetching the result","text_to_speech":"Generating speech","speech_to_text":"Transcribing speech","search_voices":"Searching voices","get_voice":"Checking voice","create_voice_clone":"Cloning voice","make_music":"Making music","list_my_workspaces":"Listing workspaces","get_upload_url":"Uploading media","create_media_upload":"Uploading media","estimate_image_generation":"Estimating cost","estimate_image_edit":"Estimating cost","estimate_video_generation":"Estimating cost","submit_feedback":"Sending feedback"},"fishSkill":"Running the {name} skill","fishTool":"Using a Fish Audio tool","fishSkillLoad":"Using the {name} skill","fishUpload":"Uploading the result","queued":"Queued. These will be handled in order after the current task.","queuedFor":"Queued for {minutes, plural, one {# minute} other {# minutes}}. They run in order once the current task is done","queuedMore":"{count} more","queuedLess":"Show less","queuedPaused":"Waiting. These will be handled in order once the budget is raised.","steps":{"wait":"Waiting {seconds}s","command":"Running a command","read":"Reading {file}","readAny":"Reading a file","edit":"Editing {file}","editAny":"Editing a file","search":"Looking through files","web":"Opening {host}","webAny":"Opening a web page","webSearch":"Searching the web","plan":"Updating the plan","other":"Using a tool","poll":"Waiting for the generations","fold":"{count, plural, one {# step} other {# steps}}","failed":"{step} · didn’t work","subtask":"Handing off a subtask"},"plan":{"title":"Plan","progress":"{done} / {total}","allDone":"Plan · all {count} done","doneFolded":"{count, plural, =1 {1 step done} other {# steps done}}","paused":"Plan · paused"},"result":{"revise":"Make another version","revisePrompt":"Make another version of “{title}”: "},"memory":{"remembered":"Remembered: {content}","more":"+{count}","view":"View"},"warning":{"reconnected":"Reconnected. Your files and messages are back, so just keep going.","reconnectedLost":"Reconnected, but the earlier work couldn’t be recovered. Send your request again to continue.","provider":"The model service is busy, so this may take a little longer.","stepFailed":"A step didn’t work."},"queuedWithdraw":"Withdraw","queuedWithdrawFailed":"Couldn’t withdraw it — work on it may have started.","contactSupport":"Contact support"},"preview":{"title":"Preview","download":"Download","openInNewTab":"Open in new window","open":"Preview","finalCut":"Final cut v{n}","storyboard":"Storyboard","shotCount":"{count, plural, one {# shot} other {# shots}}","shot":"Shot {n}","projectBundle":"Project bundle","file":"File","maximize":"Maximize preview","maximizeHint":"Maximize (Esc to go back)","restore":"Restore","collapse":"Collapse preview","newResult":"New result","views":{"images":"Images","videos":"Videos","audio":"Audio","docs":"Docs"},"facts":{"label":"Video details","duration":"Duration","resolution":"Resolution","size":"File size","sound":"Has sound"},"audio":{"untitled":"Audio","seek":"Playback position"},"document":{"loading":"Loading document…"}},"projects":{"untitled":"Untitled session","meta":"{count, plural, =0 {Nothing made yet} one {# image or video} other {# images and videos}} · {date}","empty":"No history yet — say what you want to make.","loadFailed":"Couldn't load your history.","retry":"Retry","loadMore":"Load more","search":"Search history","noMatch":"Nothing in your history matches your search.","more":"More","rename":"Rename","archive":"Archive","nameLabel":"Name","save":"Save","actionFailed":"Something went wrong. Please try again.","archived":"Archived “{title}”","undo":"Undo","archivedView":"Archived","archivedEmpty":"No archived projects.","restore":"Restore","restored":"Restored “{title}”","atWorkTitle":"This project is still generating","atWorkText":"Archiving stops the current generation. The works already made stay.","atWorkConfirm":"Stop and archive","atWorkCancel":"Cancel"},"explore":{"empty":{"title":"Describe it, and the Agent makes it","description":"It plans the steps, then makes the images, video and voiceover. Try one:","starter1":"A 15-second vertical ad for a cozy coffee shop, with a warm voiceover","starter2":"A bedtime story video: 4 illustrated scenes and a calm narrator","starter3":"A teaser for new wireless earbuds: 3 product shots and upbeat narration"}},"skillsStrip":{"title":"Skills","subtitle":"Pick one and start making","use":"Use this skill","detailFailed":"Couldn't load this skill.","viewAll":"View all","signedOut":"Sign in to use skills."},"memoryToast":{"usedProfileAndHabits":"Used your brand info and {count, plural, one {# habit} other {# habits}}","usedProfile":"Used your brand info","usedHabits":"Used {count, plural, one {# of your habits} other {# of your habits}}","learned":"{count, plural, one {Remembered a habit} other {Remembered # habits}}","view":"View"},"skills":{"title":"Skills","backToList":"Back to the list","search":"Search skills","filterLabel":"Filter skills","filters":{"all":"All","own":"Yours","fish":"Official","thirdParty":"Third-party"},"add":"Add skill","addUpload":"Upload a skill file","addGithub":"Add from a GitHub link","githubLinkLabel":"GitHub link","addConfirm":"Add","cancel":"Cancel","added":"Skill added","addedCount":"Added {count, plural, one {# skill} other {# skills}}","failed":"That didn't work. Please try again.","pick":"Start new sessions with “{name}”","tray":{"label":"New sessions start with","none":"New sessions start with no skills","count":"{count, plural, one {New sessions start with # skill} other {New sessions start with # skills}}","remove":"Leave out “{name}”","done":"Done"},"uploadErrors":{"wrongType":"Choose a SKILL.md or a .zip of a skill folder.","tooLarge":"That zip is too large.","unreadable":"That file couldn't be read. Skills hold text files only."},"importErrors":{"invalid_link":"Paste a GitHub link to a skill folder or a SKILL.md.","not_found":"There is no public repository or folder at this link.","github_unavailable":"GitHub is not answering. Please try again later.","no_skill":"This folder has no SKILL.md.","multiple_skills":"This repository has {count} skills. Tick the ones to add, then Add:","repository_too_large":"This repository is too large to read.","skill_too_large":"This skill is too large: at most 100 files and 1 MB of text, 256 KB per file.","not_text":"A skill can hold text files only.","invalid_skill":"This SKILL.md is not in the correct format.","name_taken":"A shared skill already has this name. Please use a different name.","skill_exists":"You already have a skill with this name."},"ownRow":"Yours · {description}","thirdPartyRow":"Third-party · {description}","more":"More","download":"Download","delete":"Delete","deleteTitle":"Delete “{name}”?","deleteDescription":"The skill is removed from your library. What was already made with it is not affected.","sourceOwn":"Your skill","sourceFish":"Official","sourceThirdParty":"Third-party · by {author}","empty":"No skills yet.","noMatch":"No skills match.","loadFailed":"Skills couldn't be loaded.","whenToUse":"When to use it","youGet":"What you get","tryAsking":"Try saying","original":"Original text","cover":{"change":"Change cover","shuffle":"Shuffle","choice":"Sand {number}","base":"Base","bases":{"raked":"Raked","half":"Half","flat":"Flat"},"auto":"Reset to default","sources":{"sand":"Sand","works":"My work","upload":"Upload"},"saved":"Cover updated","remove":"Remove picture cover","loadFailed":"Couldn't load. Please try again.","noWorks":"No projects with images or videos yet.","noMedia":"This project has no images or videos yet.","more":"Load more","useThis":"Use as cover","uploadHint":"Upload an image or a video as the cover, up to 100 MB.","choose":"Choose file","uploading":"Uploading {percent}%","wrongType":"Use a PNG, JPG, WebP or GIF image, or an MP4, WebM or MOV video.","tooLarge":"The file is larger than 100 MB."},"builtin":{"viral-remake":{"name":"Viral remake","description":"Remake a viral short's structure and pacing for your own content.","when":"You've seen a Reel, TikTok or Short worth learning from and want its shot rhythm, opening hook and caption style for your own product or topic. It copies the structure, never the original footage, voice or script.","output":"A new vertical short with voiceover and captions.","example":"Follow this video's structure and make a 20-second vertical short for our new earbuds: (paste the link)"},"fish-edit":{"name":"Quick edits","description":"Captions, silence cuts, vertical reframes, beat cuts and clean audio for your footage.","when":"You already have footage or a finished cut and just want it fixed up: word-by-word captions, pauses and filler words removed, landscape reframed to vertical, cuts on the beat, cleaner speech, even loudness.","output":"The edited video, with a subtitle file when needed.","example":"Add English captions to this talking-head clip, cut the pauses, and reframe it to 9:16."},"fish-media":{"name":"Media generation","description":"Images, video and voiceover from Fish Audio, and speech turned into text.","when":"The piece needs new pictures, shots, narration or a transcript. Credits are estimated first, and it generates only within the budget you set. This skill is always on.","output":"Images, video clips, voiceover audio or a transcript.","example":"Generate 3 cyberpunk city night images and a 10-second voiceover to go with them."},"fish-editor":{"name":"Transcript editing","description":"Change what's said in a video by editing its text, with Editor Studio.","when":"You want to fix a wrong word in a video or recording, remove a line, add one in the speaker's own voice, or keep working on a project in Editor Studio.","output":"The edited video or audio, with subtitle files.","example":"In this video, change “launching Friday” to “launching next Monday”, in the same voice."},"fish-motion-director":{"name":"Motion design","description":"Designed motion pieces: launch films, kinetic type, UI demos, title cards.","when":"The piece wins on layout and motion rather than footage: product launch films, kinetic typography, UI and prompt-box demos, title cards, logo stings, counting numbers.","output":"A motion video, landscape or vertical.","example":"Make a 30-second 16:9 launch film for our new feature, clean and restrained."},"talking-character":{"name":"Talking character","description":"Make a character talk: one consistent face, a voice, lip sync and captions.","when":"Short skits and monologues with a character and lines: talking pets, virtual hosts, brand mascots, story bits.","output":"A short video of the character speaking in sync, with voice and captions.","example":"Make a 20-second vertical clip of a talking orange kitten on the phone, complaining its owner keeps putting off the edit, then smugly saying “Done.”"},"onetake":{"name":"One-take motion","description":"One-take product motion films: every beat grows out of the one before.","when":"Launch films, feature demos and teasers that should flow as one unbroken take instead of scenes taking turns.","output":"One continuous product motion video.","example":"Make a 20-second one-take launch film for our new feature, opening out of the prompt box into the finished film."},"fish-preview":{"name":"Preview and handover","description":"Shows drafts and finished cuts next to the chat, with files ready to download.","when":"Used every time something is made; there is nothing to pick. This skill is always on.","output":"Files you can play and download in the preview.","example":"Put the last cut in the preview so I can download it."},"fish-memory":{"name":"Memory","description":"Remembers your brand, your preferences and what you've made, so you don't repeat yourself.","when":"You often make content for the same brand or in the same style. Brand details and habits you mention come along next time.","output":"Saved brand details and habits, which you can view and delete in Memory.","example":"Remember: our brand color is coral, and captions are always white with a black outline."},"save-as-skill":{"name":"Save as skill","description":"Turns how this was made into a skill of your own, ready to reuse.","when":"A workflow turned out well and you want to make more of the same kind.","output":"A new skill under Yours.","example":"Save how we made this product video as a skill called “15-second promo”."},"faceless-explainer":{"name":"Faceless explainer","description":"Turn text into an explainer with no one on camera: type, diagrams and motion.","when":"Topic explainers, concept breakdowns, how-tos and listicles when there is no footage and no one to film.","output":"An explainer video with Fish Audio narration and captions.","example":"Turn this text on how voice cloning works into a 40-second vertical explainer with a female voice-over and captions."},"fish-blender":{"name":"3D renders and animation","description":"3D renders, animations and logo treatments made in Blender, plus 3D file conversion.","when":"The piece needs real 3D: a spinning product or logo, 3D titles, a simple 3D scene, or a model converted between formats such as GLB, FBX, OBJ and STL.","output":"3D renders, an animation, or the converted model file.","example":"Make a 5-second 3D spin of our logo on a dark background."},"fish-blockout":{"name":"Blockout previs","description":"Lock camera moves, angles and cuts with a grey-box model, then make the video from it.","when":"You care where the camera is and when it cuts: a storyboard, set cut times, a chase or fight with several angles. For a plain “make a car chase”, text alone is cheaper.","output":"A grey-box previs clip and shot sheet, then the final video once you approve. Using it as a video reference roughly doubles the generation cost.","example":"A 10-second chase in 3 shots: cut to a side tracking shot at 3 s, then a front close-up at 7 s."},"avatar-design":{"name":"Avatar design","description":"Design an original digital human: one consistent face and a voice to match.","when":"Virtual hosts, AI influencers and brand spokespeople who will speak again and again. For images only, use Portraits & character images.","output":"A reusable avatar (face and voice), with a short talking test clip.","example":"Design a tech virtual host in their mid-20s, sharp-looking with a warm voice."},"character-sheet":{"name":"Character sheet","description":"Lay out one character in the views, expressions or outfits you choose, on one sheet.","when":"Turnarounds, expression sheets and outfit sheets, or locking a character's look before more images and videos.","output":"One multi-panel sheet with the same character in every panel.","example":"Make a sheet of my original character: front, side and back views."},"long-scroll-film":{"name":"Through-the-eras scroll","description":"One hero walks left to right through era after era; the art style changes with each era.","when":"Telling the history of a thing or a brand: how phones changed, the story of coffee, an anniversary look back.","output":"A 30–60 s side-scrolling animation with one line of narration per era.","example":"Make a walk-through-the-eras film about the history of coffee."},"narrated-multiscene-video":{"name":"Narrated multi-scene video","description":"Turn your topic or script into a narrated video told across several scenes.","when":"Stories, history, science explainers and fables that need several scenes and the same characters throughout.","output":"One finished video with narration timed to each scene.","example":"Make a 60-second science video about the water cycle, with narration."},"portrait-avatar":{"name":"Portraits & character images","description":"Create or edit single portraits and character images: a new original person, or the same person in a new outfit, expression or pose.","when":"Headshots, photo shoots and character images, or changing someone's clothes while they stay the same person. For a face with a voice saved as an avatar, use Avatar design.","output":"One or a few portrait images.","example":"Put the person in this photo in a suit; they must stay the same person."},"product-photo-series":{"name":"Product photo series","description":"Turn photos of your real product into studio, usage-scene and detail images.","when":"Store pages, Amazon listings and ads where the product's shape, colors and labels must stay exactly as they are.","output":"A set of product images in your platform's aspect ratio.","example":"Use my water bottle photos to make 3 clean 1:1 images for the product page."},"reference-recreation":{"name":"Video motion recreation","description":"Recreate the moves in your reference video, such as a dance, with the original performer or a character from your image.","when":"Your own character doing the same dance or the same walk, or a new take with the original performer.","output":"A new video whose motion matches the reference.","example":"Make my uploaded character do the dance in this video."},"thumbnail-cover":{"name":"Thumbnail & cover","description":"Design a cover from your video's or post's topic, with a title on it if you like.","when":"YouTube thumbnails, social post covers and short-video covers in landscape, portrait or square.","output":"One or a few cover images.","example":"Make a YouTube thumbnail for my vlog about latte art."},"ugc-product-video":{"name":"UGC product video","description":"Turn photos of your real product into a short faceless promo video.","when":"TikTok-style product promos with no one on camera: product shots or hands-on demos that sell the key points.","output":"A vertical promo short with voiceover.","example":"Make a 15-second unboxing video for my blind-box figure, with voiceover."},"us-teen-drama":{"name":"US teen drama","description":"Live-action American high-school drama shorts with English dialogue.","when":"Story shorts for English-speaking viewers: campus romance, twists, prom drama. Characters and sets stay the same throughout.","output":"A 30–90 s drama short with English dialogue and captions.","example":"Make a 60-second vertical US high-school drama with a twist ending."}}},"question":{"submit":"Confirm","other":"Other","otherPlaceholder":"Write your own…","sendFailed":"Couldn’t send. Try again.","uploadTitle":"Upload files","uploadFailed":"Upload failed. Try again.","pressed":"Chose: {label}","picked":"Chose: {label}","answered":"Confirmed","planConfirmed":"Approved the plan: {title}","planDrafting":"Writing the plan…","expired":"Not answered: “{label}”","selectedCount":"{count} selected","costTotal":"About {credits} credits","costDetail":"Breakdown","costSum":"Total"},"canvas":{"canvas":"Canvas","zoom":"Zoom","zoomOut":"Zoom out","zoomIn":"Zoom in","zoomReset":"Zoom to 100%","fit":"Fit to screen","play":"Play {title}","move":"Drag to move · click to open","newComment":"New comment","commentPlaceholder":"Add a comment","commentAt":"At {time}: what should change?","post":"Post comment","comment":"Comment {n}","commentWithText":"Comment {n}: {text}","commentSent":"Sent: {text}","closeThread":"Close comment","remove":"Delete","overall":"Overall","commentToggle":"Comment","commentToggleCount":"Comment ({count})","commentHint":"Click anywhere on the canvas to leave a comment","sendComments":"Send {count}","sendingComments":"Preparing…","sendCommentsFailed":"Couldn’t send the comments. They’re still here. Try again.","clearSent":"Clear sent","unreadableArrangement":"The arrangement file couldn’t be read, so the board laid itself out.","filesFolder":"View files folder","noFilesYet":"No files yet","lanes":{"input":"References","asset":"Assets","storyboard":"Storyboard","cut":"Final cuts"},"groups":{"references":"References","images":"Images","clips":"Video clips","voice":"Narration","music":"Music & SFX"},"showMore":"Show {count} more","showLess":"Show less","pause":"Pause {title}","failed":"Failed","failedCount":"{count} failed","running":"Generating","upload":"Uploaded reference","prompt":{"intro":"{count, plural, one {I left # review comment in the preview. Please address it and publish the new version to the preview:} other {I left # review comments in the preview. Please address each one and publish the new version to the preview:}}","outro":"The numbered dot in each attached image marks the spot. Change only these places and keep everything else as it is.","track":{"shots":"Shot","texts":"Text","captions":"Caption","audio":"Audio"},"overall":"Overall","figure":"see image {n} ({file})","at":"{x}% from the left, {y}% from the top","quote":"\"{text}\"","sep":", ","colon":": "}},"examples":{"title":"Made with Fish Audio","makeAnother":"Make one like this"},"video":{"play":"Play","pause":"Pause","mute":"Mute","unmute":"Unmute","fullscreen":"Full screen","progress":"Playback position"},"share":{"open":"Share","hint":"Anyone with the link can view.","showInputs":"Show my uploaded reference assets","create":"Create link","copy":"Copy link","copied":"Link copied","update":"Update","updated":"Updated. The link stays the same.","stop":"Stop sharing","stopped":"Sharing stopped. The old link no longer works.","failed":"That did not work. Try again."},"sharePage":{"notFound":"This share does not exist or was withdrawn.","notice":"Someone shared this project. You can view it only.","remix":"Make one like this","backHome":"Go to Agent home"}},"team":{"settings":{"title":"Team Settings","tabs":{"members":"Members","usage":"Usage","plans":"Plans","billing":"Billing","more":"More","seats":"Seats","danger":"Danger","wallet":"Creator earnings"},"summary":{"current-plan":"Current Plan","seats":"Seats","credits-remaining":"Credits Remaining","wallet-balance":"Creator earnings","wallet-settings":"Settings","wallet-stripe-connected":"Stripe Connect linked","wallet-stripe-not-connected":"Stripe Connect not linked","next-billing":"Next Billing: {date}","next-credit-refresh":"Next Credit Refresh: {date}","next-refresh":"Next Refresh: {date}","need-more-seats":"Need more seats?","upgrade-to-pro-max":"Upgrade to Pro or Max","enterprise-term-end":"Contract term ends: {date}","seats-occupied":"{occupied} occupied / {included} included","seats-occupied-suffix":"occupied / {included} included"}},"wallet-stripe":{"title":"Creator earnings payouts","description":"Manage the Stripe Connect account used for team wallet payouts.","stage":{"not-started":{"headline":"No Stripe account linked yet","body":"Link a Stripe account and complete onboarding to withdraw the team wallet balance to a bank account. The button below creates the account and opens Stripe onboarding — it only takes a few minutes."},"onboarding":{"headline":"One step left: finish Stripe onboarding","body":"Your Stripe account is created, but onboarding isn't finished yet, so payouts are still unavailable. Finish filling in your details on Stripe, then come back here — the status updates automatically."},"action-required":{"headline":"Stripe needs more information","body":"Stripe requires additional details (such as a bank account or business information) before payouts can be enabled. Continue on Stripe to provide them."},"reviewing":{"headline":"Under review by Stripe","body":"All onboarding details are submitted and Stripe is reviewing the account. Payouts will be enabled automatically once the review passes — no action needed."},"ready":{"headline":"Setup complete","body":"Your Stripe account is linked and verified. The team wallet balance can be withdrawn to this account."}},"checklist":{"account-created":"Account created","details-submitted":"Details submitted","charges-enabled":"Charges enabled","payouts-enabled":"Payouts enabled"},"connect":"Link Stripe account","resume":"Finish onboarding","fix-requirements":"Provide details on Stripe","disconnect":"Unlink","close":"Close","refresh":"Refresh status","retry":"Retry","disconnect-confirm-title":"Unlink Stripe account?","disconnect-confirm-body":"Unlinking the Stripe account also invalidates any onboarding details already submitted. The team won't be able to receive payouts until you link and complete onboarding again.","disconnect-confirm-cancel":"Cancel","disconnect-confirm-action":"Unlink account","onboarding-link":"Onboarding link","onboarding-link-hint":"If the Stripe page didn't open automatically, copy the link below or open it in a new tab.","copy-link":"Copy onboarding link","open-link":"Open onboarding link","copied":"Copied","popup-blocked":"The Stripe onboarding page was blocked by the browser. Use the link below to continue.","status-load-failed":"Failed to load Stripe Connect status.","connect-failed":"Failed to connect Stripe.","disconnect-failed":"Failed to disconnect Stripe.","disconnect-success":"Stripe Connect disconnected."},"seats":{"title":"Team Seats","occupied":"Occupied Seats","included":"Included Seats","shared-info":"Shared teams start with 0 included seats. Pro unlocks 3 seats and Max unlocks 10 seats for the team.","team-label":"Team:","role-label":"Role:","subscription-label":"Subscription:","period-ends":"Current period ends at {date}","billing-unavailable":"Team billing data is unavailable for the current context."},"upgrade":{"pro-required":"Pro plan required","pro-required-admin":"Shared teams start with 0 included seats. Subscribe this team to Pro or Max before inviting or activating members.","pro-required-member":"Shared teams start with 0 included seats. Ask your team owner or admin to subscribe this team to Pro before inviting or activating members.","multi-seat-required":"Multi-seat plan required","multi-seat-admin":"This team currently includes one seat. Upgrade the team plan before inviting or activating more members.","multi-seat-member":"This team currently includes one seat. Ask your team owner or admin to upgrade the team plan before inviting or activating more members.","no-seats":"No team seats available","no-seats-admin":"All included team seats are currently in use. Remove or disable existing members before inviting new ones.","no-seats-member":"All included team seats are currently in use. Ask your team owner or admin to free up a seat before inviting new members.","required":"Upgrade required","required-admin":"Upgrade your subscription before inviting or activating more members.","required-member":"Ask your team owner or admin to upgrade the subscription before inviting or activating more members.","upgrade-plan":"Upgrade plan"},"members":{"title":"Team Members","add-placeholder":"User ID or Email","add-button":"Add Member","readonly":"You are in read-only mode. Only team owner/admin can manage members.","header-member":"Member","header-role":"Role","header-status":"Status","header-actions":"Actions","disable":"Disable","activate":"Activate","current-owner":"Current owner","pending":"Pending acceptance","remove":"Remove","empty":"No team members found.","invitation-sent":"Invitation sent.","member-activated":"Member activated.","member-disabled":"Member disabled.","role-updated":"Member role updated.","role-update-failed":"Failed to update member role.","member-removed":"Member removed.","table":{"user-id":"User ID","email":"Email","role":"Role","status":"Status","actions":"Actions"},"pagination":{"rows-per-page":"Rows per page","range":"{start}-{end} of {total}"},"search-placeholder":"Search User ID or Email","invite-member":"Invite Member","upgrade-button":"Upgrade","invite-dialog":{"title":"Invite New Members","description":"Invite members to your team with roles.","close":"Close invite dialog","identifier":"User ID or Email","role":"Role","placeholder":"jane@example.com","add-more":"Add More","invite":"Invite"},"resend":"Resend","invitation-resent":"Invitation email resent.","invitation-revoked":"Invitation revoked.","invite-failed":"Failed to invite members. Please try again.","resend-failed":"Failed to resend the invitation. Please try again.","revoke-failed":"Failed to revoke the invitation. Please try again.","roles":{"owner":"Owner","admin":"Admin","billing":"Billing","member":"Member"}},"danger":{"title":"Danger Zone","personal-info":"Your personal team is permanent infrastructure and cannot be deleted.","owner-only":"Only the team owner can delete this shared team.","delete-warning":"Deleting a team permanently removes its memberships, workspaces, billing record, package state, credits, and team-scoped API settings.","cancel-subscription-first":"Cancel the team's paid subscription first. Shared teams with an active paid plan cannot be deleted.","delete-button":"Delete team","delete-confirm-title":"Delete this team?","delete-confirm-description":"This action permanently deletes {teamName} and removes every team-scoped membership and billing record tied to it.","cancel":"Cancel","disabled-tooltip":"This button stays disabled until the shared team is back on the Free plan.","team-deleted":"Team deleted.","delete-failed":"Failed to delete team."},"transfer":{"title":"Transfer Ownership","description":"Transfer this team to another active member. After transfer, you will be downgraded to admin.","select-member":"Select new owner","button":"Transfer Ownership","confirm-title":"Transfer team ownership","confirm-warning":"This action is irreversible. You will lose owner access and become an admin.","confirm-team-name-label":"Enter team name to confirm","confirm-team-name-placeholder":"Team name","confirm-email-label":"Enter your email to confirm","confirm-email-placeholder":"Your email","confirm-button":"Confirm Transfer","cancel":"Cancel","success":"Team ownership transferred successfully.","error":"Failed to transfer ownership."},"banner":{"shared":"Shared team","personal":"Personal team","current-team":"Current team","description":"Manage this team's subscription, seats and members."},"create":{"title":"Create Team","description":"Shared teams start with 0 included seats. Subscribe this team to Pro or Max before inviting collaborators.","name-label":"Team name","name-placeholder":"Design Ops","info":"Every account already has one personal team. Create a shared team only when you need separate billing and members.","cancel":"Cancel","submit":"Create team","success":"Team created.","error":"Failed to create team."},"rename":{"button":"Rename team","title":"Rename Team","description":"Update the current team name. The new name will be reflected in the active team workspace immediately.","name-label":"Team name","name-placeholder":"Audio Operations","info":"Team members, billing scope, seats, and workspaces stay unchanged. This only updates the displayed team name.","cancel":"Cancel","save":"Save","success":"Team renamed.","error":"Failed to rename team."},"switcher":{"select-placeholder":"Select team","create-team":"Create team","create-team-new":"Create New Team","teams-title":"Teams","settings-title":"Team settings","settings-aria":"Open team settings"},"invitation":{"page-title":"Accept Invitation","success-title":"You've joined the team!","error-title":"Invitation failed","loading-title":"Accepting invitation","success-description":"Your team access is ready.","error-default":"Failed to accept the invitation.","loading-description":"Please wait while we process your invitation.","go-to-team":"Go to team","token-missing":"Invitation token is missing."},"subscription":{"title":"Subscription","description":"Manage the subscription and credits for your current billing context here.","free-label":"Free","legacy-premium-label":"Legacy Premium","choose-plan":"Choose a plan","choose-plan-description":"Pick the subscription that should apply to the current billing context.","no-permission-manage":"You don't have permission to manage this subscription.","no-permission-billing":"You can view this subscription here, but you don't have permission to upgrade or manage billing.","free-plan-owner-shared":"Upgrade to Pro before inviting collaborators or using additional seats.","free-plan-owner-personal":"This subscription is currently on the Free plan. Choose a subscription below.","free-plan-member-shared":"This subscription needs Pro before additional collaborator seats can be used.","free-plan-member-personal":"This subscription is currently on the Free plan. You don't have permission to manage it.","coming-soon":"Coming soon","max-plan-title":"Max Plan","max-plan-description":"For larger collaborative setups that need more seats and a higher operating ceiling.","max-plan-seats":"5 seats","max-plan-reserved":"This plan is reserved for the next rollout.","admin-gifted-title":"Admin-granted Pro plan","admin-gifted-description":"This shared team is on a manually granted Pro plan. Contact an administrator if you need to change it.","admin-gifted-expires":"Access ends at {date}","admin-gifted-readonly":"This shared team is on a manually granted Pro plan. Billing changes are read-only here."},"usage":{"periods":{"1d":"1d","7d":"7d","30d":"30d"},"chart":{"window-limited":"The chart is based on at most the {count} most recent usage records."},"upgrade-button":"Upgrade","table":{"time":"Time","user":"User","source":"Source","model":"Model","memo":"Memo","credits-used":"Credits Used"},"states":{"loading":"Loading usage data...","error":"Failed to load usage data.","empty":"No usage records found in this period."},"pagination":{"rows-per-page":"Rows per page","range":"{start}-{end} of {total}","previous-page":"Previous page","next-page":"Next page","window-limited":"available window"},"sources":{"package-top-up":"Package Credit Top-up","task-tts":"TTS Task","voice-design":"Voice Design","voice-changer":"Voice Changer","speech-to-text":"Speech to Text","preset":"Preset","video-tts":"Video TTS","studio":"Audiobooks","audio-separation":"Stem Splitter","sound-effect-generation":"Sound Effect Generation","sound-effect-prompt-optimize":"Sound Effect Prompt Optimization","sound-effect-prompt-suggestion":"Sound Effect Prompt Suggestion","asr":"ASR","music-generation":"Music Generation","credit-pack-purchase":"Credit Pack Purchase","credit-link-claim":"Credit Link Claim","affiliate-credit-grant":"Affiliate Reward","package-refresh-balance":"Package Refresh","package-refresh-downgrade":"Package Downgrade","package-plan-change":"Plan Change","package-subscription-sync":"Subscription Sync","wallet-package-consume":"Manual Package Consume","wallet-package-refund":"Manual Package Refund","image-generation":"Image Generation","video-generation":"Video Generation","lip-sync":"Lip Sync","media-generation":"Media Generation","editor-studio":"Editor Studio","editor-revoice":"Editor Studio revoice","editor-extend":"Editor Studio extend"},"memos":{"studio-generation":"Audiobooks generation","tts-generation":"TTS generation","stt-transcription":"STT transcription","voice-design-generation":"Voice Design generation","sound-effect-prompt-optimize":"Sound effect prompt optimization","sound-effect-prompt-suggestion":"Sound effect prompt suggestion","voice-changer":"Voice changer","audio-separation":"Stem splitting","sound-effect-generation":"Sound effect generation","admin-package-grant":"Admin package grant","admin-package-downgrade":"Admin package downgrade","admin-package-top-up":"Admin package top-up","admin-package-top-up-permanent":"Admin package top-up (permanent)","editor-revoice":"Editor Studio revoice","editor-extend":"Editor Studio extend","package-plan-change":"Package plan change","package-subscription-sync":"Package subscription sync","stripe-subscription-activation":"Stripe subscription activation"},"models":{"audio-import":"Audio Import"}},"upgrade-dialog":{"a11y":{"title":"Upgrade Modal","description":"Choose a plan and confirm your upgrade.","close":"Close upgrade dialog"},"header":{"title":"Upgrade","team-name":"My Team","description":"Elevate your experience with enhanced team seating options and expanded limits."},"price":{"month-suffix":"/ month","year-suffix":"/ year"},"contact":{"prefix":"Need more seats?","business-prefix":"Need more capabilities for your business?","link":"Contact Sales"},"plan":{"pro":{"name":"Pro","subtitle":"For power users and teams","save-tag":"Save $1350","popular-tag":"Popular","billed-annually":"$450 billed annually","highlights":{"credits":"2,000,000 credits monthly","seats":"3 team seats"},"features":{"up-to-characters":{"prefix":"Up to ","emphasis":"30,000 characters","suffix":" per generation"}}},"max":{"name":"Max","subtitle":"For larger teams with higher limits","save-tag":"Save $1500","billed-annually":"$900 billed annually","highlights":{"credits":"12,000,000 credits monthly","seats":"5 team seats"},"features":{"up-to-characters":{"prefix":"Up to ","emphasis":"30,000 characters","suffix":" per generation"}}},"enterprise":{"name":"Enterprise","gate-description":"Your team is on an enterprise agreement. Plan limits are set by your contract — contact your account manager to raise them.","subtitle":"For organizations with compliance needs","custom-price":"Custom","price-hint":"volume pricing billed annually","highlights":{"pay-as-you-go":"Pay as you go"},"features":{"everything-in-max":"Everything in Max, and:","zero-data-retention":"Zero Data Retention","on-premise":"On-Premise Deployment","soc2":"SOC2 Compliance","more-discount":"More Discount","custom-sso":"Custom SSO"}},"common":{"features":{"unlimited-voice-slots":"Unlimited public & private voice slots","priority-generation":"Priority generation on our latest models","enhanced-cloning":"Enhanced voice cloning","commercial-use":"Commercial use allowed","api-access":"API access (pay-as-you-go)","money-back":"7 days money back guarantee"}}},"billing":{"title":"Billing options","monthly":{"title":"Pay monthly","price":"$150 / month"},"annually":{"title":"Pay annually","price":"$37.5 / month","save-tag":"Save $1500"}},"confirm":{"title":"Confirm upgrade","disclaimer":"Your subscription will auto-renew each year at the above price + taxes unless canceled. Cancel via the Billing tab prior to renewal to avoid future charges."},"buttons":{"upgrade-pro":"Upgrade to Pro","upgrade-max":"Upgrade to Max"}},"wallet":{"tabs":{"income":"Income","withdraw":"Withdrawals","balance":"Balance History"},"table":{"time":"Time","amount":"Amount","remark":"Remark","status":"Status","source":"Type","balance-after":"Balance After"},"status":{"pending":"Pending","processing":"Processing","approved":"Approved","rejected":"Rejected"},"source":{"income":"Income","withdraw":"Withdrawal","withdraw_reject":"Withdrawal Rejected (Refund)"},"states":{"empty":"No records yet.","error":"Failed to load records."},"withdraw":{"button":"Withdraw","title":"Withdraw Funds","description":"Withdrawals are reviewed and then transferred to the team's Stripe account. The minimum amount is {min}.","available":"Available balance","invalid-amount":"Please enter a valid whole-dollar amount of at least {min}","connect-required":"Connect a Stripe account to withdraw","min-hint":"Minimum withdrawal is {min}","success":"Withdrawal request submitted","failed":"Failed to submit withdrawal request","confirm":"Confirm","cancel":"Cancel","max":"Max"}},"enterprise_plan_credit":"Enterprise plan credit"},"telephony":{"actions":"Actions","admin_required_hint":"Only team owners and admins can manage phone numbers.","agent_picker_hint":"Only numbers bound to an agent can answer calls.","agent_updated":"Agent binding updated","all_numbers":"All numbers","area_code_optional":"Area code (optional)","back":"Back","buy":"Buy","buy_a_number":"Buy a number","buy_billing_note":"Numbers are {price}/month, billed daily (prorated) from your team's API credit balance. Free trial minutes cover rental days first — one rental day uses 60 trial seconds. You can release the number at any time.","buy_description":"Search for an available phone number and purchase it for your workspace.","buy_success":"Purchased {number}","buy_title":"Buy a number","cancel":"Cancel","col_action":"Action","col_agent":"Agent","col_label":"Label","col_provider":"Provider","col_status":"Status","country":"Country","country_ca":"Canada","country_us":"United States","credentials_pair_error":"Enter both a username and a password.","edit_config":"Edit configuration","edit_description":"Update the trunk configuration for {number}. Saving replaces the current settings.","edit_submit":"Save","edit_success":"Configuration updated","edit_title":"Edit SIP configuration","empty_description":"Buy a new number or import an existing Twilio number to let your agents answer phone calls.","empty_title":"No phone numbers yet","import_description":"Bring a number you already own. Point your carrier's SIP trunk at Fish Audio. The number stays with your carrier, with no monthly rental fee.","import_number_title":"Import number","import_label_optional":"Label (optional)","import_label_placeholder":"e.g. Support line","import_submit":"Import","import_success":"Imported {number}","inbound_addresses_hint":"One IP address or CIDR range per line, up to 32.","inbound_addresses_label":"Allowed source addresses","inbound_auth_description":"How we verify calls arriving from your trunk. Set digest credentials, allowed source addresses, or both.","inbound_auth_required_error":"Set digest credentials and/or allowed source addresses.","inbound_auth_title":"Inbound authentication","inbound_password_label":"Digest password","inbound_username_label":"Digest username","list_description":"Manage phone numbers and connect them to your agents.","no_agent":"No agent","no_numbers_found":"No numbers found. Try a different area code.","number_type":"Number type","number_type_local":"Local","numbers_count":"{count, plural, one {# number} other {# numbers}}","password_keep_placeholder":"Leave blank to keep unchanged","phone_number_error":"Enter the number in international format, like +14155550123.","phone_number_label":"Phone number","provider":"Provider","release_confirm":"Release","release_description_livekit":"{number} will be released and stop receiving calls. Charges for the current month are not refunded.","release_number":"Release number","release_success":"Phone number released","release_title":"Release this number?","search":"Search","search_numbers":"Search numbers","status_active":"Active","status_error":"Error","status_provisioning":"Provisioning","termination_auth_requires_uri_error":"Termination credentials require a termination URI.","termination_description":"Optional. Point us at your trunk's termination so this number can place outbound calls and warm transfers. Leave it empty for an inbound-only number.","termination_headers_label":"Custom SIP headers","termination_headers_hint":"Optional. One header per line as X-Name: value, up to 20. Added to every outbound call and warm transfer placed through this trunk.","termination_headers_error":"Enter one header per line as Name: value. Names must start with X- (X-Fish- is reserved) or be a supported standard SIP header, values must be printable ASCII, and there can be at most 20 headers.","termination_headers_require_uri_error":"Custom SIP headers require a termination URI.","termination_password_label":"Auth password","termination_title":"Outbound calling (termination)","termination_transport_label":"Transport","termination_uri_hint":"Bare hostname, without the sip: prefix.","termination_uri_label":"Termination URI","termination_username_label":"Auth username","title":"Phone numbers","transport_auto":"Auto","verify_configuration":"Verify configuration","twilio_preset":"Twilio Elastic SIP Trunking preset","twilio_preset_hint":"Fills Twilio's signaling IP ranges and sets the transport to TCP.","twilio_transfer_note":"To use cold transfer, also turn on Call Transfer (SIP REFER) on this Twilio trunk and allow transfers to phone numbers (PSTN).","twilio_transfer_link":"How to set it up","origination_uri_title":"Origination URI","origination_uri_description":"Point your carrier's trunk origination at this address so inbound calls reach Fish Audio.","copy":"Copy","copied":"Copied","caller_id_title":"Transfer caller ID","caller_id_option_agent_number":"Agent’s number","caller_id_option_agent_number_description":"Whoever answers sees {number}, the number the caller dialed.","caller_id_option_original_caller":"Caller’s number","caller_id_option_original_caller_description":"Whoever answers sees the caller’s own number and can call back.","caller_id_hint":"Applies to cold and warm transfers. Binding or unbinding an agent does not change this setting. Changes take effect for new calls right away, no publish needed.","caller_id_pending":"Applying setting…","caller_id_failed":"Setting has not been applied. Retry or wait for automatic synchronization.","caller_id_retry":"Retry synchronization","caller_id_carrier_managed":"Managed by your carrier. Contact your SIP provider to change transfer caller ID.","termination_uri_error":"Enter a hostname such as example.pstn.twilio.com, optionally followed by a port. Do not include sip:, a path, or parameters.","add_number":"Add number","rent_new_number":"Rent a new number","import_third_party":"Import third party","import_number":"Import number","rent_a_number":"Rent a number","whatsapp":{"webhook_verified":"Verified","webhook_pending":"Pending","webhook_setup_title":"Point your Meta app at Fish Audio","webhook_setup_description":"Calls reach your agent only after your Meta app's WhatsApp webhook is configured with these values. The badge turns green once Meta verifies them.","callback_url_label":"Callback URL","callback_url_unavailable":"The callback URL is not configured on this deployment yet. Ask Fish Audio support for it.","verify_token_label":"Verify token","copy":"Copy","copied":"Copied","webhook_step_1":"In the Meta developer console open your app → WhatsApp → Configuration → Webhook, and click Edit.","webhook_step_2":"Paste the callback URL and the verify token, then save. Meta verifies the URL immediately.","webhook_step_3":"Under Webhook fields, subscribe to calls (and messages, for the upcoming messaging support).","connect_description":"From your own Meta app: the app ID and secret, the WhatsApp Business Account ID, the phone number ID, and a System User access token with the whatsapp_business_management and whatsapp_business_messaging permissions.","app_id_label":"App ID","app_secret_label":"App secret","app_secret_hint":"Verifies Meta's webhook signatures for this account.","app_secret_placeholder":"Paste your App Secret here","waba_id_label":"WhatsApp Business Account ID","phone_number_id_label":"Phone number ID","access_token_label":"System User access token","access_token_hint":"Stored encrypted and never shown again.","access_token_placeholder":"Paste your WhatsApp Auth Token","phone_number_hint":"The phone number associated with your WhatsApp Business account.","number_mismatch":"Meta reports this number as {connected}, not {typed}. The number from Meta was connected.","pin_label":"Two-step verification PIN (optional)","pin_hint":"Only needed when the number is not yet registered for the Cloud API.","pin_placeholder":"Enter 6-digit PIN","pin_error":"The PIN is six digits.","label_optional":"Label (optional)","agent_label":"Agent","no_agent":"No agent","required_error":"This field is required.","connect_success":"Connected {number}"}},"text-to-speech":{"remove_voice":"Remove voice","advanced_settings":"Advanced Settings","advanced_settings_tips":"Advanced settings are only available to premium users","advanced-features":"Access to advanced features and future updates","ai-enhancement":"Premium AI-powered quality enhancement","audio_generated":"AI Generated Audio","bytes":"bytes","characters":"characters","collection_action":"Collection","control_tips":"When using 1.6 control (beta), you can insert (break) / (long-break) / (breath) / (laugh) to control the speech.","copied_title":"Copied to clipboard","create":"Create","create_in_a_minute":"Create in a minute","create-voice-collection":"Create Voice Collection","creating_voice":"Creating Voice","daily-generations":"Generate up to 1,000 outputs every day","default_voices":"Default Voices","delete-confirm-audio":{"cancel":"Cancel","confirm":"Delete","success":"Audio deleted successfully","tips":"Are you sure you want to delete this audio? ","title":"Delete Audio"},"delete-confirm":{"cancel":"Cancel","confirm":"Delete","success":"Project deleted successfully","tips":"Are you sure you want to delete this project? This action cannot be undone.","title":"Delete Project"},"description":"SOTA Open Source English, Chinese, and Japanese text-to-speech system.","disabling_share_link":"Disabling share link...","download":"Download","download_failed":"Download Failed","download_source_error":"Download Source Error","download_text_error":"Download Text Error","download_your_voice_tips":"Your voice is ready to download.","draft-migration":{"cancel":"Ignore","confirm":"Restore","description":"We found a draft from before you signed in. Restore it to this account?","title":"Restore your draft"},"zero-state-guide":{"title":"Get started with","use-case":{"character":"Character voice","storytelling":"Storytelling","documentary":"Documentary","ads":"Ads","social-media":"Social media","educational":"Educational","narration":"Narration","conversation":"Conversation","entertainment":"Entertainment","customer-service":"Customer support"}},"model-entry-override":{"description":"You already have a draft in progress. Do you want to keep editing it or replace it with this model's default text?","keep":"Keep draft","replace":"Replace draft","title":"Replace your current draft?"},"enter_voice_description":"The text to be converted to speech","error-network":"Connection failed. Check your internet connection and try again.","error-captcha-failed":"Captcha failed, please try again later.","error-empty-speaker":"Please choose a voice.","speaker-quality-warning":"Adding more than 4 voices may reduce audio quality.","speaker-limit-error":"You can use up to 32 distinct speakers in one text-to-speech session.","error-empty-text":"Text cannot be empty.","error-short-text":"Text is too short.","error-long-text":"Text is too long, please keep it under 1000 characters.","error-unknown":"Unknown error, please try again later.","bookmarked":"Bookmarked","explore":"Explore","failed_to_disable_share_link":"Failed to disable share link","failed_to_fetch_share_url":"Fail to fetch task share url, please try again","feedback":{"fuzzy_sound":"Fuzzy Sound","incompleted":"Incompleted","incorrect":"Incorrect","label":"Feedback Type","long_blank":"Long Blank","multi_speaker":"Multiple Speakers","noise":"Noise","placeholder":"Please select feedback type","reverberation":"Reverberation","select_at_least_one":"Please select at least one feedback option","submit":"Submit Feedback","submit_error":"Failed to submit feedback","submit_success":"Feedback submitted successfully","title":"Audio Quality Feedback"},"fetching_share_url":"Fetching task share url...","generate_and_play":"Generate & play","generate_speech":"Generate Speech","generate_voice_tips":"Voice quality depends on the model. For best results, use a high-quality model.","generated_audio_will_appear_here":"Generated Audio Will Appear here","generating":"Generating...","go_to_my_library":"Go To My Library","history":"History","later":"Later","latest_activity":"Latest Activity","load_more":"Load more","load_older_history":"Load older history","login_to_create_project":"Login to create project","long_text_prompt":{"dismiss":"Dismiss","dont_show_again":"Don't show again","message":"Long text works best in Audiobooks.","studio":"Open in Audiobooks"},"model_unavailable":"Model unavailable","my_voice":"My Voices","new_conversion":"New Conversion","new_feature_description":"Effortlessly transform long texts into immersive and expressive audio narratives.","new_feature_title":"Advanced Audio Story","no_history_record":"No history record","no_model_tips":"Don't have a model? ","no_projects_yet":"No projects yet","no_result_yet":"No result yet","open-source":"Proudly Open Sourced at ","open-source-and":" and ","pick-voice-in-explore":"Pick a voice in explore","placeholder":"Edit your text here to be converted to speech.","placeholder2":"Type your text with audio tags like [laughs] to turn into expressive speech...","premium":"Premium","refresh":"Refresh","history_range_last_7_days":"Last 7 days","history_range_last_30_days":"Last 30 days","history_range_last_90_days":"Last 90 days","history_range_all_time":"All time","privacy":"Privacy Policy","progress_analyzing":"Analyzing Text...","progress_finalizing":"Finalizing...","progress_generating":"Generating Voice...","progress_processing":"Processing Voice Model...","random_voice":"Random Voice","recaptcha":"This site is protected by reCAPTCHA and the Google <link1>{privacy}</link1> and <link2>{terms}</link2> apply.","recent_used":"Recently Used","regenerate":"Regenerate","edit":"Edit","save_to_my_conversion":"Save to My Conversion","search":"Search","select_voice":"Select Voice","select_voice_model":"Select Voice Model","settings":"Settings","share":"Share","share_link_disabled":"Share link disabled","share_model_only":"Share model only","share_with_current_text":"Share with current text","sort":{"count":"Recommended","new":"Newest","title":"Sort by","trending":"Trending"},"speaker-option-random":"Random","speaker-placeholder":"Speaker","add-speaker":"Add Speaker","select-speaker":"Choose a voice","voice-empty-state":{"title":"Choose a voice to get started","description":"Pick a voice, type your text, then hit Generate to hear it."},"tab-hint":{"recently-used":"Voices you've recently generated with.","explore":"Community voices shared by creators.","default-voices":"Curated voices that work well out of the box.","my-voice":"Voices you've created or cloned.","bookmarked":"Voices you've bookmarked for quick access."},"my-voice-empty-cta":"Create your own voice","speed":"Speed","speed_hint":"Adjust based on the reference audio","stable_mode":"High Quality Mode","stable_mode_hint":"Produces higher quality audio with increased latency","synthesize":"Synthesize","tags":"Tags","task_does_not_exist":"Task does not exist","terms":"Terms of Service","text_to_long":"Text too long","text_to_speech":"Text to Speech","textarea-placeholder":"Enter your text here","title":"Turn Your Text into Speech","tokens_progress":{"bytes":"bytes","characters":"characters","credits_left":"{balance} credits left","credits_remaining":"{credits} credits remaining","credits_used_cycle":"Credits used this cycle:","free_plan_usage":"Free plan usage","generations_left":"{balance} credits left","legacy_note":"Remaining credits on the legacy Premium plan combine API and subscription balances. New plans separate them.","legacy_note_cta":"Learn more","premium_unlimited_tooltip":"Premium plan has unlimited generations","remaining_credits":"Remaining: {credits} credits remaining","remaining_credits_free":"Remaining: {balance}/{total} credits","remaining_generations":"Remaining: {balance}/{total} credits","unlimited_generations":"unlimited generations"},"tokens":{"audio_effects":"Audio Effects","emotional_tone":"Emotional Tone","emotions":"Emotions","learn_more":"Learn how to use emotion control tags","no_results":"No tags found","s2_hint":"S2 supports open-domain audio tags. Try typing [laugh] to generate expressive speech.","search_tag":"Search Tag","special":"Special","speed":"Speed","tone":"Tone"},"try_it_now":"Try now","try_new_feature":"Try our new feature","upgrade":"Upgrade","upgrade_now":"Upgrade Now","upgrade_tips":"Premium users get a word limit of 5,000 chars. Upgrade now to enjoy this benefit!","upgrade_title":"Upgrade to Premium","unshare":"Unshare","unshare_confirm_cta":"Disable","unshare_confirm_title":"Disable share link?","unshare_confirm_body":"Anyone with the existing link will no longer be able to open this audio. Re-sharing later will create a new link.","voice_model":"Voice Model","voice-creation":"Create unlimited custom voices for any project","volume":"Volume","volume_hint":"Adjust based on the reference audio","your_text":"Your Text","enhance_error":"Failed to enhance script. Please try again.","enhance_script":"Enhance","auto_tag":"Auto Tag","auto_tag_all":"Auto Tag All","enhancing":"Enhancing...","keep_enhance":"Keep","undo_enhance":"Undo","add_more_voice":"Add another voice","select_voice_action":"Select","added":"Added","more_voice":"More voices","change_voice":"Change voice","voice_not_used":"Not used","remove_segment":"Remove segment","model_label":"Model","newest":"Newest","try":"Try","model_description_expressive":"Our most expressive model","model_description_versatile":"Our most versatile model","tags_tooltip":"Explore audio tags to help guide speech","enhance_tooltip":"Adds audio tags to make speech more expressive","generate_speech_tooltip":"{shortcut}","candidate_label":"Sample {label}","dual_gen_tip":{"message":"To provide higher quality, we're generating two audio samples for you at no extra cost","dont_show_again":"Don't show again","dismiss":"Got it"},"drama_guide_angle_hint":"Paired tags direct only the words inside. Select text, then choose a scoped tag from Tags.","drama_guide_autotag_hint":"Need a starting point? Auto Tag adds directions to your script.","drama_guide_cta":"Try It Now","drama_guide_intro":"More stable, more expressive.","drama_guide_square_hint":"Add a sound, emotion, or pause where you want it.","drama_guide_title":"Drama 3 just got better","s1_retirement_notice":"S1 retires on December 31, 2026 and will switch to S2.1 Pro automatically.","rating_prompt":"Which generation is better? It helps us improve the model.","rating_take_better":"Take {number} is better","rating_both_good":"Both are good","rating_both_bad":"Both are bad","rating_thanks":"Thanks — this helps us improve the model.","drama_guide_events_title":"Add a little performance","drama_guide_event_tag":"sigh","drama_guide_event_text":"Alright, let’s try again.","drama_guide_natural_title":"Describe it in your own words","drama_guide_natural_tag":"warm and relaxed, like talking to an old friend","drama_guide_natural_text":"It’s been a while.","drama_guide_natural_hint":"Try natural-language directions, beyond the preset tags.","drama_guide_scoped_title":"Choose exactly which words change","drama-tags-language-note":"Write tags and directions in English or your own language.","scoped-tags-title":"Control selected words","scoped-tags-description":"Paired tags apply only to the words you select.","scoped-tags-select-text":"Select a few words in one paragraph first. Keep the range free of other tags.","scoped-tags-whisper":"Whisper","scoped-tags-emphasis":"Emphasis","scoped-tags-stress":"Stress","scoped-tags-forceful":"Forceful","scoped-tags-soft":"Soft","scoped-tags-fast":"Faster","scoped-tags-slow":"Slower","scoped-hint-title":"Control exactly which words change","scoped-hint-description":"Select words, then choose a scoped tag from Tags. Paired tags apply the direction only to the text inside.","scoped-hint-example-whisper":"Keep this between us.","scoped-hint-example-emphasis":"This part matters.","scoped-hint-dismiss":"Got it","scoped-hint-guide":"See examples","inpaint_failed":"Could not generate the partial edit. The fully regenerated result has been kept."},"video-editor":{"agents":{"admin":{"agent_type":"Agent Type ID","agent_type_placeholder":"external-agent-identifier","create":"Create Agent Type","created":"Agent type created","default_params":"Default Parameters (JSON)","delete":"Delete Agent Type","delete_confirm":"Are you sure you want to delete this agent type? This action cannot be undone.","deleted":"Agent type deleted","description":"Description","description_placeholder":"Describe what this agent does...","edit":"Edit Agent Type","preview_video":"Preview Video","slug":"Slug","slug_placeholder":"my-agent-type","sort_order":"Sort Order","style_presets":"Style Presets (comma-separated)","style_presets_placeholder":"cinematic, documentary, social-media","thumbnail":"Thumbnail","title":"Video Editor Agents","updated":"Agent type updated","upload_preview":"Upload Preview","visibility":"Visibility"},"cancel":"Cancel Job","cancel_confirm":"Are you sure you want to cancel this job?","cancelled":"Job cancelled","complete_description":"Your AI-generated video project is ready to edit.","complete_title":"Video Ready!","create_another":"Create Another","date_created":"Date Created","duration":"Duration","edit_in_editor":"Edit in Video Editor","elapsed":"Elapsed: {time}","error_retry":"Retry","form_submit":"Generate Video","generating_description":"This usually takes 1-2 minutes","generating_title":"Generating Your Video...","last_modified":"Last Modified","loading":"Loading agent...","no_broll":"No background videos available","open_in_editor":"Open in Video Editor","orientation":"Orientation","orientation_horizontal":"Horizontal","orientation_vertical":"Vertical","platform":"Platform","preview_title":"Preview","progress_label":"Progress","project_name":"Project Name","project_name_placeholder":"My Video Project","prompt":"Prompt","prompt_placeholder":"Describe the video you want to create...","section_title":"Video Agents","select_broll":"Select Background Video","select_broll_hint":"Choose a video to use as the background","sort_by":"Sort by","style":"Style","target_duration":"Duration (seconds)","target_platform":"Platform","usage_count":"{count} uses"},"breadcrumb":{"project-fallback":"Project {id}...","title":"Video Editor"},"common":{"apply":"Apply","cancel":"Cancel","clear":"Clear","close":"Close","custom":"Custom","delete":"Delete","done":"Done","export":"Export","more":"More","save":"Save"},"errors":{"could-not-get-canvas-context":"Could not get canvas context","could-not-load-image":"Could not load image","could-not-load-media":"Could not load media","could-not-load-video":"Could not load video","failed-to-process-file":"Failed to process file","opfs-not-supported":"OPFS is not supported in this browser"},"export":{"aspect-ratios":{"1:1":"1:1 (Square)","16:9":"16:9 (Widescreen)","21:9":"21:9 (Ultrawide)","4:3":"4:3 (Standard)","4:5":"4:5 (Portrait)","9:16":"9:16 (Vertical)"},"audio-bitrate":"Audio Bitrate","audio-bitrates":{"128":"128 kbps (Low)","192":"192 kbps (Standard)","256":"256 kbps (High)","320":"320 kbps (Best)"},"audio-channels":{"mono":"Mono","stereo":"Stereo"},"audio-codec":"Audio Codec","audio-codecs":{"aac":"AAC (Best compatibility)","flac":"FLAC (Lossless compressed)","mp3":"MP3 (Universal)","opus":"Opus (Smaller size)","vorbis":"Vorbis (Open source)","wav":"WAV (Lossless)"},"audio-sample-rates":{"22050":"22.05 kHz (Low)","44100":"44.1 kHz (CD Quality)","48000":"48 kHz (Standard)","96000":"96 kHz (High Resolution)"},"automatic":"Automatic","background-colors":{"black":"Black","blue":"Blue","dark-gray":"Dark Gray","green-screen":"Green Screen","transparent":"Transparent","white":"White"},"bitrate-auto":"Auto","cancel-export":"Cancel Export","codec":"Codec","color-spaces":{"bt2020":"BT.2020 (HDR/4K)","bt709":"BT.709 (Standard HD)","srgb":"sRGB (Web)"},"custom":"Custom","details":{"audio-bitrate":"Audio Bitrate","audio-codec":"Audio Codec","duration":"Duration","file-size":"File Size","filename":"Filename","format":"Format","frame-rate":"Frame Rate","resolution":"Resolution","video-codec":"Video Codec"},"download-again":"Download Again","duration-hint":"Export {duration} of video","empty-timeline":"Add content to your timeline to export","errors":{"empty-timeline":"Timeline is empty","failed-canvas-context":"Failed to create canvas context","no-audio":"No audio to export","unknown":"Unknown export error"},"estimated-size":"~{size}","export-alpha":"Export with alpha (transparency)","export-audio":"Export Audio","export-button":"Export Video","filename":"Filename","filename-placeholder":"my-video","format":"Format","frame-rate":"Frame Rate","generic-error":"Export failed","hide-details":"Hide details","include-audio":"Include audio","keyframe-intervals":{"1":"1 second (Best seeking)","2":"2 seconds (Recommended)","5":"5 seconds (Smaller file)","10":"10 seconds (Smallest file)"},"keyframe-options":{"every-10-seconds":"Every 10s","every-2-seconds":"Every 2s (default)","every-5-seconds":"Every 5s","every-frame":"Every frame","every-half-second":"Every 0.5s","every-second":"Every 1s"},"keyframes":"Keyframes","network-optimization":"Network optimization (fast start)","platform-variants":{"1080p":"","4k":"","720p":"","feed":"","reels":"","stories":"","vertical":""},"presets":{"adts":"","audio":"Audio","custom":"Custom","lossless":"","matroska":"","mp4":"","ogg-audio":"","quicktime":"","webm":""},"project-fps":"Project ({fps} fps)","project-resolution":"Project ({width}×{height})","quality":"Quality","quality-high":"High","quality-low":"Low","quality-medium":"Medium (Recommended)","quality-very-high":"Very High","quality-very-low":"Very Low","queued":"Queued, waiting for server...","resolution":"Resolution","resolutions":{"1080p":"1080p (1920×1080)","2k":"2K (2560×1440)","480p":"480p (854×480)","4k":"4K (3840×2160)","720p":"720p (1280×720)","square":"Square (1080×1080)","vertical":"Vertical (1080×1920)"},"restrict-to":"Restrict to","scaling-algorithms":{"bicubic":"Bicubic (Balanced)","bilinear":"Bilinear (Fastest)","lanczos":"Lanczos (Best quality)"},"server-render":"Server Render","stages":{"cancelled":"Export cancelled","completed":"Export complete!","encoding":"Encoding...","failed":"Export failed","idle":"Ready to export","mixing-audio":"Mixing audio...","preparing":"Preparing...","rendering-video":"Rendering video..."},"submitting-job":"Submitting render job...","title":"Export Video","unknown-error":"Unknown error","uploading-media":"Uploading media...","video-bitrate":"Max Bitrate","video-bitrates":{"1":"1 Mbps (Web)","2":{"5":"2.5 Mbps (480p)"},"5":"5 Mbps (720p Standard)","8":"8 Mbps (720p High)","10":"10 Mbps (1080p Low)","15":"15 Mbps (1080p Standard)","25":"25 Mbps (1080p High)","40":"40 Mbps (4K Standard)","50":"50 Mbps (4K High)"},"video-codecs":{"h264":"H.264 (Best compatibility)","hevc":"H.265/HEVC (Better compression)","vp9":"VP9 (WebM)"},"view-details":"View details"},"features":{"feature1":{"description":"Trim, split, crop, merge, and rearrange clips on a professional multi-track timeline. All the core editing tools you'd expect from a desktop editor, running in your browser.","title":"Full Editing Toolkit"},"feature2":{"description":"Generate natural-sounding voiceovers from text using 2M+ voices. Pick a voice, paste your script, and add studio-quality narration directly to your timeline.","title":"AI Voiceover Generation"},"feature3":{"description":"Generate original sound effects that enhance your video. Describe what you want and get a royalty-free track in seconds, no licensing headaches.","title":"AI Sound Effects Generation"},"feature4":{"description":"Layer video, voice, music, and sound effects across multiple tracks. Drag and drop to arrange, with real-time preview as you edit.","title":"Multi-Track Timeline"},"feature5":{"description":"No downloads, no installs, no waiting. Open a tab and start editing. Your projects live in the cloud and work on any device.","title":"100% Browser-Based"},"feature6":{"description":"Import MP4, MOV, WebM, and all major formats. Export in up to 4K with customizable quality, codec, and audio settings.","title":"Import & Export Anything"},"subtitle":"Everything you need to edit, enhance, and export, powered by AI where it matters","title":"Full Video Editor, AI Built In"},"guidelines":{"center":"Center","margins":"Margins","thirds":"Thirds"},"introduction":{"description":"All the video editing tools you expect: trimming, splitting, multi-track timeline, transitions, text overlays, running entirely in your browser. Then add AI on top: generate voiceovers from text, create background music, and more.","title":"Video Editing Meets AI","tryFree":"Try It Free"},"labels":{"audio-suffix":"{name} (audio)","copy-suffix":"{label} (copy)","left-suffix":"{label} (left)","right-suffix":"{label} (right)","unknown":"Unknown","untitled":"Untitled"},"landing":{"new-project":"New Project","welcome-description":"Create, edit, and export professional videos with our powerful timeline-based editor. Import media, arrange clips, and bring your vision to life.","welcome-title":"Welcome to Video Editor"},"layout":{"layout":"Layout","presets":{"daw":{"description":"Audio-only timeline view with embedded mixer","name":"DAW"},"default":{"description":"Classic 3-column layout with timeline at bottom","name":"Default"},"media":{"description":"Large asset browser for media-heavy projects","name":"Media Focus"},"minimal":{"description":"Distraction-free editing with focus on preview","name":"Minimal"},"vertical":{"description":"Optimized for 9:16 vertical video editing","name":"Vertical Video"}},"reset-layout":"Reset Layout"},"media-browser":{"add-more":"Add more","adding":"Adding...","click-to-browse":"or click to browse","click-to-relink":"Click to relink","cloud-storage":"Cloud storage","coming-soon":"Coming soon...","drop-hint":"Drop media files here","files-count":"{count} {count, plural, one {file} other {files}}","local-storage-hint":"Local browser storage (includes metadata)","not-found":"Not Found","processing":"Processing...","relink-file":"Relink File","stored-in-cloud":"Stored in cloud","stored-locally":"Stored locally","tabs":{"effects":"Effects","media":"Media","text":"Text"},"title":"Media Browser"},"media":{"video-preview-alt":"Video preview"},"missing-media":{"all-relinked-description":"All missing media files have been successfully relinked.","all-relinked-title":"All Media Relinked","description":"{count} media {count, plural, one {file} other {files}} could not be found. Upload replacement files to restore your timeline.","media-types":{"audio":"Audio","image":"Image","video":"Video"},"relink":"Relink","relink-failed":"Failed to relink media file","skip":"Skip for Now","timeline-ready":"Your timeline is ready to use.","title":"Missing Media Files"},"panels":{"media-browser":"Media Browser","preview":"Preview","properties":"Properties","timeline":"Timeline","unknown-panel":"Unknown panel: {panel}"},"project":{"cancel":"Cancel","confirm-delete":"Delete","create":"Create Project","create-description":"Enter a name for your new video project.","create-title":"Create New Project","delete":"Delete project","delete-description":"Are you sure you want to delete this project? This action cannot be undone and all associated media files will be removed.","delete-error":"Failed to delete project","delete-title":"Delete Project","deleted":"Project deleted successfully","name-label":"Project Name","name-placeholder":"My Video Project","name-required":"Project name is required","new":"New","no-projects":"No projects yet. Create your first project to get started.","rename":"Rename","rename-placeholder":"Project name","rename-success":"Project renamed successfully","rename-title":"Rename Project","sync-failed":"Sync failed","synced-multiple":"{count} projects were updated from another device","synced-single":"\"{name}\" was updated from another device","title":"Your Projects"},"properties":{"audio-properties":"Audio Properties","brightness":"Brightness","color":"Color","contrast":"Contrast","fill":"Fill","fit":"Fit","flip-horizontal":"Flip Horizontal","flip-vertical":"Flip Vertical","media-properties":"Media Properties","no-selection":"No element selected","no-selection-hint":"Select an element on the timeline to edit its properties","opacity":"Opacity","position":"Position","reset":"Reset","rotate":"Rotate","saturation":"Saturation","scale":"Scale","text-properties":"Text Properties","title":"Properties","transform":"Transform","volume":"Volume"},"remote-media":{"all-downloaded-description":"All remote media files have been downloaded successfully.","all-downloaded-title":"All Media Downloaded","description":"{count} media {count, plural, one {file needs} other {files need}} to be downloaded for thumbnails and export support.","download-failed":"Failed to download remote media","downloading-background":"Downloading in background...","preview-may-differ":"Preview may not be fully accurate while media is downloading","timeline-ready":"Thumbnails and export are now available.","title":"Remote Media Available"},"restore":{"blocks-count":"{count} blocks","no-preview":"No preview","restoring":"Restoring..."},"settings":{"background":"Background","backgrounds":{"black":"Black","dark-gray":"Dark Gray","transparent":"Transparent","white":"White"},"fps":{"24":"24 fps","30":"30 fps","60":"60 fps"},"frame-rate":"Frame Rate","resolution":"Resolution","resolutions":{"1080x1080":"Square (1080×1080)","1080x1920":"Vertical (1080×1920)","1280x720":"720p (1280×720)","1920x1080":"1080p (1920×1080)","2560x1440":"2K (2560×1440)","3840x2160":"4K (3840×2160)","720x1280":"Vertical 720p (720×1280)"}},"sync":{"click-to-retry":"Click to retry","hours-ago":"{count}h ago","just-now":"Just now","last-saved":"Last saved {time}","local":"Local","local-description":"Not synced to cloud","minutes-ago":"{count}m ago","never-synced":"Never synced","offline":"Offline","offline-description":"Changes will sync when online","remote-update-description":"Editing the same project on multiple devices simultaneously may cause conflicts. Please use one device at a time.","remote-update-warning":"Project updated from another device","saved":"Saved {time}","saving":"Saving...","saving-description":"Changes will be saved","sync-failed":"Sync failed","synced":"Synced","syncing":"Syncing changes..."},"templates":{"boxed":"Boxed","cinematic":"Cinematic","classic":"Classic","dynamic":"Dynamic","glow":"Glow","highlight":"Highlight","modern":"Modern","pop":"Pop","retro":"Retro","speaker":"Speaker","timestamp":"Timestamp","title":"Title"},"text":{"add":"Add","add-text":"Add Text","alignment-label":"Alignment","alignment":{"center":"Center","left":"Left","right":"Right"},"animation":"Animation","animation-duration":"Animation Duration","animations":{"fade":"Fade","none":"None","slide-down":"Slide Down","slide-up":"Slide Up"},"background":"Background","color-label":"Color","custom-style":"Custom Style","drag-to-timeline":"Drag to timeline","edit-text":"Edit Text","font":"Font","keyboard-hint":"Press","keyboard-hint-to-submit":"to submit","no-saved-styles":"No saved styles","placeholder":"Enter your text...","position-label":"Position","positions":{"bottom-center":"Bottom Center","bottom-left":"Bottom Left","bottom-right":"Bottom Right","center":"Center","center-left":"Center Left","center-right":"Center Right","top-center":"Top Center","top-left":"Top Left","top-right":"Top Right"},"save-as-style":"Save as Style","save-style":"Save style","save-style-title":"Save Style","save-text-style":"Save Text Style","saved":"Saved","size":"Size","style":"Style","style-name-placeholder":"Style name...","templates":"Templates","text-content":"Text Content","update":"Update","your-text":"Your Text"},"timeline":{"missing":"Missing","mixer":{"click-to-edit-volume":"Click to edit volume","main":"MAIN","title":"Mixer"},"new-track":"New {type} track","toolbar":{"audio-levels":"Audio Levels","hide-mixer":"Hide Mixer","show-mixer":"Show Mixer"},"track-header":{"click-to-rename":"Click to rename","click-to-reset-clip":"Click to reset clip indicators","hide-track":"Hide track","mute-track":"Mute track","pan":"Pan","reset-to-default":"Reset to default","show-track":"Show track","solo-track":"Solo track","track-locked":"Track is locked","unmute-track":"Unmute track","unsolo-track":"Unsolo track","width":"Width"},"track-types":{"audio":"Audio","text":"Text","video":"Video"},"waveform-unavailable":"Waveform unavailable for long files"},"title":"Video Editor","topBar":{"cta":"Start Editing Free","pricingButton":"View Pricing","stat1":"AI Voices","stat2":"Languages","stat3":"Export Quality","subtitle":"A free browser-based video editor with all the editing essentials, plus AI built right in. Add voiceovers from 2M+ voices, generate background music, and create clips without ever leaving your browser.","title":"Add <highlight>AI Voiceovers</highlight> to Any Video in Minutes"},"tts":{"active":"Active","add_block_with_voice":"Add Block with Voice","add_blocks_with_voice":"Add {count} Blocks with Voice","add_text":"Add Text","add_text_block":"Add Text Block","add_text_blocks":"Add {count} Text Blocks","backends":{"speech-1":{"5":"V1.5","6":"V1.6","5-description":"Legacy","6-description":"Legacy"}},"block-label":"TTS: {text}...","blocks":"blocks","cancel":"Cancel","done":"Done","empty-text-error":"Text content is empty","enter_text_placeholder":"Enter your text here...","errors":{"generation-failed":"Generation failed","queue-already-running":"Queue is already running"},"failed":"Failed","failed_tasks":"Failed Tasks","generate":"Generate Speech","generated-success":"TTS generated successfully","generating":"Generating...","generating_speech":"Generating Speech","generation_complete":"Generation Complete","generation_complete_with_errors":"Generation Complete (with errors)","generation-failed":"Failed to generate TTS","generation-history":"Generation History ({count})","model_version":"Model Version","model-version":"Model Version","pending":"Pending","regenerate":"Regenerate","remove":"Remove TTS","removed":"TTS removed","retry_failed":"Retry Failed","segments":"segments","select-voice":"Select Voice Model","select-voice-error":"Please select a voice model first","skip_voice":"Text only (no voice)","split_mode":"Split Mode","split-modes":{"auto":"Auto","auto-description":"Split by newlines","manual":"Manual","manual-description":"Only split on explicit markers (---)","none":"None","none-description":"Keep as single block"},"switched-version":"Switched to previous generation","text_content":"Text Content","text_only_description":"Add text blocks without generating audio","title":"Text to Speech","versions-count":"{count} versions","voice":"Voice","voice-model":"Voice Model"},"usecases":{"contentCreation":{"button":"Start Creating","description":"Edit and publish directly from your browser. Trim clips, add AI voiceovers, generate background music, and export optimized for any platform, YouTube, TikTok, Instagram, or Shorts.","title":"YouTube & Social Media"},"elearning":{"button":"Build a Course","description":"Turn slides and screen recordings into polished video lessons. Add clear AI narration, background music, and text overlays without any recording equipment.","title":"E-Learning & Courses"},"marketing":{"button":"Create an Ad","description":"Produce scroll-stopping video ads with AI voiceovers and generated music. Iterate fast, swap voices, test scripts, and re-export without reshooting a single frame.","title":"Marketing & Ads"},"personal":{"button":"Start Editing","description":"No watermarks, no paywalls for basic features. Edit vacation clips, make meme videos, or piece together a podcast, the full editor is free and always available.","title":"Personal & Side Projects"},"subtitle":"From YouTube shorts to course content, one free tool does it all","title":"Built for Every Video Creator"},"version-history":{"no-backups":"No previous versions","not-synced":"Sync to cloud to enable version history","recent":"Recent Versions","restore":"Restore","restore-description":"A backup of your current project will be created first.","restore-success":"Project restored successfully","restore-title":"Restore this version?","title":"Version History","trigger-auto":"Auto backup","trigger-manual":"Manual backup","trigger-pre-restore":"Pre-restore backup","view-all":"View all versions"}},"voice-design":{"title":"Voice Design","compose":{"continue":"Continue"},"step1":{"heading":"Describe the voice you want","helper":"Describe age, gender, accent, tone, pacing, and mood. The more specific, the better.","placeholder":"e.g. A warm, slightly raspy middle-aged narrator with a soft American accent. Calm, deliberate pace, great for late-night audiobooks.","tryStarter":"Try a starter prompt:","starter":{"radioHost":"Warm late-night radio host","documentary":"Documentary narrator","storyteller":"Children's storyteller"},"starterPrompt":{"radioHost":"A warm, intimate late-night radio host in their late 30s with a soft, husky voice. Relaxed, unhurried pacing with occasional gentle chuckles, like they're speaking to a single listener in a quiet room.","documentary":"A measured, authoritative documentary narrator with crisp diction and a slightly grave tone. Confident and unhurried, suited for nature, history, or science films.","storyteller":"A gentle, animated children's storyteller with bright, expressive intonation and clear enunciation. Warm and reassuring, perfect for picture books and bedtime tales."},"generate":"Generate Samples","regenerate":"Re-generate Samples","setPreviewText":"Set preview text","hidePreviewText":"Hide preview text","creditsPerGeneration":"{credits} credits per generation","freeForLimitedTime":"Free for a limited time","previewText":{"label":"Preview text","optional":"Optional","helper":"Leave this blank to let the system write a short in-context sample.","placeholder":"Welcome to the future of audio — where every voice, every character, every moment can be shaped by a single line of text."}},"step2":{"heading":"Pick a voice","select":"Select","selected":"Selected","pagination":"{current}/{total}","aria":{"playSample":"Play sample","pauseSample":"Pause sample","previousBatch":"Previous sample batch","nextBatch":"Next sample batch","seek":"Seek within sample"}},"step3":{"heading":"Voice Details","field":{"name":{"label":"Voice Name","placeholder":"Name your voice here"},"cover":{"label":"Cover","uploadAria":"Upload cover image","previewAlt":"Voice cover preview"},"description":{"label":"Description"},"gender":{"label":"Gender","female":"Female","male":"Male","neutral":"Neutral"},"age":{"label":"Age","young":"Young","middleAged":"Middle-Aged","elderly":"Elderly"},"useCases":{"label":"Use Cases","audioBook":"Audio book","podcast":"Podcast","animation":"Animation","ads":"Ads","eLearning":"E-learning","film":"Film"},"style":{"label":"Voice Style","warm":"warm","soothing":"soothing","calm":"calm","wise":"wise","energetic":"energetic","dramatic":"dramatic","friendly":"friendly","showMore":"Show More","showLess":"Show Less"},"type":{"label":"Type","public":{"label":"Public","description":"This voice will be visible in the Voice Library and can be seen and used by everyone."},"unlisted":{"label":"Unlisted","description":"This voice model will not appear in the discover page, but can be shared with specific users via a link."},"private":{"label":"Private","description":"This voice model is only visible to the creator and cannot be shared and will not appear in the discover section"},"upgradeHint":"Upgrade to choose this visibility"}},"compliance":{"label":"I confirm this voice does not impersonate a real, identifiable person and complies with Fish Audio's usage policy."},"back":"Back","create":"Create Voice"},"errors":{"promptMin":"Description must be at least 20 characters.","promptMax":"Description must be at most 1000 characters.","nameRequired":"Name is required.","previewTextMin":"Preview text must be at least 5 characters.","previewTextMax":"Preview text must be at most 150 characters.","complianceRequired":"Please confirm","genderRequired":"Select a gender.","ageRequired":"Select an age group."},"home":{"previewTextLabel":"preview text","previewTextPlaceholder":"Input Negative Prompt","viewInVoiceDesign":"View in Voice design","generating":"Generating...","playError":"Unable to play this sample.","starter":{"warm":"Warm & Conversational","professional":"Authoritative & Professional","energetic":"Crisp & Energetic"},"starterPrompt":{"warm":"A warm, conversational adult voice with gentle confidence, natural pacing, and a friendly tone that feels close and human.","professional":"An authoritative professional narrator with crisp articulation, steady pacing, and a composed tone for business presentations.","energetic":"A crisp, energetic speaker with bright delivery, clear pronunciation, and upbeat momentum for short promotional clips."}}},"landings":{"aiVoiceGenerator":{"hero":{"title":"Free AI voice over generator for videos, ads and more","subtitle":"Create realistic AI voice overs from any script in seconds. Choose from 2,000,000+ voices, direct the delivery with emotion tags, and generate voice overs up to 30,000 characters long on Pro and Max plans.","notes":{"n1":"No credit card required","n2":"83 languages","n3":"Commercial use requires an eligible plan and voice and content rights."},"metrics":{"voices":{"value":"2M","unit":"+","label":"voices in the library"},"languages":{"value":"83","label":"languages supported"},"characters":{"value":"30,000","label":"characters per generation · Pro & Max"},"latency":{"value":"~90","unit":"ms","label":"time to first audio · Standard API"}},"trusted":"Trusted by teams building the next generation of voice products"},"useCases":{"title":"AI voice overs for every kind of video","subtitle":"YouTube videos, ads, explainers, courses and games. Pick a format to hear a voice over built for it.","items":{"youtube":{"title":"YouTube & social videos","description":"Voice overs that keep viewers watching to the end","sample":"A Day in 60 Seconds","voice":"Ethan","style":"Quick-cut storyteller"},"ads":{"title":"Ads & commercials","description":"Persuasive reads for video ads and promos","sample":"Made to Share","voice":"Laura","style":"Bright commercial"},"games":{"title":"Games & animation","description":"Character voice overs with real personality","sample":"The Quest Begins at Dawn","voice":"Sarah","style":"Playful adventurer"},"explainers":{"title":"Explainers & product demos","description":"Clear walkthroughs for SaaS and product videos.","sample":"Your First Great Shot","voice":"Adrian","style":"Confident product guide"},"elearning":{"title":"eLearning & training","description":"Authoritative narration for courses and onboarding.","sample":"Make Every Word Count","voice":"Hannah","style":"Engaging instructor"}}},"steps":{"title":"How to make a voice over using AI","items":{"s1":{"title":"Paste your script","description":"Type or paste up to 30,000 characters on Pro and Max plans. Add emotion tags like [excited] where the delivery should change.","art":{"label":"Your script","lines":{"l1":"Welcome to the story. Paste here.","l2":"A new adventure starts here."},"count":"54 / 500 characters"}},"s2":{"title":"Pick a voice","description":"Choose from 2,000,000+ voices by gender, age, accent and style, or clone your own from 10–30 seconds of clear audio.","art":{"label":"Choose a voice","voices":{"v1":{"name":"Avery","detail":"Warm · Natural"},"v2":{"name":"Luna","detail":"Expressive · Selected"}}}},"s3":{"title":"Generate and download","description":"Generate your voice over, adjust speed and volume, then download the audio for your video editor.","art":{"label":"Voiceover ready","duration":"00:12","format":"MP3 · High quality","download":"Download"}}}},"spotlights":{"items":{"s1":{"title":"Direct your voice over\nlike a real voice actor","description":"Drop tags like [excited], [whispering] or [laughing] into your script and the voice over changes delivery mid-sentence, the way you would direct a voice actor in the booth. No re-recording. Shape emotion and delivery with natural-language directions.","cta":"Read the voice control guide","art":{"label":"Script","lines":{"l1":"I told you not to open it.","l2":"Now look at this mess!","l3":"Okay, fine, it is kind of funny."}}},"s2":{"title":"Voice overs in your own voice","description":"Clone your voice from 10–30 seconds of clear audio, then narrate every video, course and ad in your own voice without stepping up to a mic again. Keep the clone private or share it with the community.","cta":"Try voice cloning","art":{"label":"Recorded Voice","name":"My Cloned Voice","meta":{"language":"English","gender":"Female","age":"Young"}}},"s3":{"title":"2,000,000+ voices for every voice over","description":"Find the right voice over voice by gender, age, accent and style, across 83 languages including English, Japanese, Korean, Chinese, French, German, Arabic and Spanish. No casting calls, no booking, no waiting on retakes.","cta":"Explore the voice library","art":{"label":"Millions of\nvoices"}}}},"features":{"title":"Everything you need for professional voice overs","subtitle":"Studio-quality AI voice overs, built on Fish Audio Drama 3.","items":{"f1":{"title":"Natural voices","description":"Ultra-realistic speech that sounds like a real person."},"f2":{"title":"Emotional control","description":"Add emotion and expression with inline tags."},"f3":{"title":"Long scripts, one pass","description":"Generate up to 30,000 characters per voice over on Pro and Max plans."},"f4":{"title":"Multilingual","description":"Voice overs in 83 languages with native-sounding accents."},"f5":{"title":"Pro controls","description":"Fine-tune speed, volume and model parameters."},"f6":{"title":"Studio quality","description":"Professional-grade audio for any use case."}}},"faq":{"q1":{"question":"Is there a free AI voice over generator?","answer":"Yes. Fish Audio lets you generate AI voice overs for free with 8,000 credits per month and up to 500 characters per generation. Plus supports 15,000 characters; Pro and Max support 30,000. See pricing for plan details."},"q2":{"question":"How do I make a voice over using AI?","answer":"Paste your script, add emotion tags where the delivery should change, pick a voice from the library or clone your own, then generate and download the audio for your video editor."},"q3":{"question":"Can I use AI voice overs on YouTube and in ads?","answer":"Commercial use requires an eligible paid plan and the rights to the voice and content you use. Free-plan audio is for personal, non-commercial use."},"q4":{"question":"Can I make a voice over in my own voice?","answer":"Yes. Upload 10–30 seconds of clear audio and Fish Audio creates a voice clone you can use for every voice over. Use your own voice or a voice you have permission to clone."},"q5":{"question":"What languages can I create voice overs in?","answer":"Create voice overs in 83 languages, including English, Japanese, Korean, Chinese, French, German, Arabic and Spanish. Availability varies by model, so test your target language and voice before production."},"q6":{"question":"How much does an AI voice over cost compared to hiring a voice actor?","answer":"Fish Audio offers a free plan and paid plans with different credit allowances. See pricing for current rates. AI voice overs are generated in seconds, and changing a line means editing text rather than booking another session."}},"cta":{"title":"Make your first AI voice over free","subtitle":"Paste a script, pick a voice and hear it in seconds. No credit card needed.","primary":"Start Free Now","secondary":"Explore the API"}},"audiobooks":{"hero":{"title":"AI audiobook narration\nwith feeling","subtitle":"Choose from thousands of voices for your narrators and characters. Create audiobook narration in 83 languages and preview each passage as you go.","sample":"“Oh, little prince! Bit by bit I came to understand the secrets of your sad little life . . . For a long time you had found your only entertainment in the quiet pleasure of looking at the sunset. I learned that new detail on the morning of the fourth day, when you said to me: “I am very fond of sunsets. Come, let us go look at a sunset now.” “But we must wait,” I said. “Wait? For what?” “For the sunset. We must wait until it is time.” At first you seemed to be very much surprised. And then you laughed to yourself. You said to me: “I am always thinking that I am at home!””","sampleLabel":"Book Excerpt","action":"Create an audiobook"},"spotlights":{"title":"Studio-quality text to speech for audiobooks","subtitle":"Choose your cast, listen to each passage, and refine the narration.","items":{"s1":{"title":"Give narration and dialogue distinct, expressive voices","description":"Choose a voice for your narrator and each character. Preview each passage and refine the delivery before publishing.","art":{"eyebrow":"CHAPTER FOUR","title":"The sunset","lines":{"l1":"The little planet was quiet.","l2":"The sky turned gold at dusk.","l3":"And the story went on..."}}},"s2":{"title":"Narrate in your audience’s language","description":"Create narration in 83 languages. Preview your chosen voice in the target language and review pronunciation before publishing.","art":{"languages":{"l1":"English","l2":"German","l3":"Spanish"},"more":"More..."}},"s3":{"title":"Refine your audiobook as you listen","description":"Complete full-length audiobooks in hours instead of weeks. Make revisions instantly without scheduling studio time. Scale your audiobook catalog faster than ever before.","art":{"title":"Your audiobook","steps":{"s1":"01  Introduction","s2":"02  The road","s3":"03  At sunset"},"ready":"Ready to download"}}}},"faq":{"q1":{"answer":"Fish Audio's AI analyzes your text and generates natural-sounding narration with appropriate pacing, emotion, and emphasis using advanced neural networks trained on human speech.","question":"How does AI text-to-speech work for audiobooks?"},"q2":{"answer":"Yes! Fish Audio's voices convey a wide range of emotions and can be adjusted for dramatic scenes, emphasis, and dynamic narration that keeps listeners engaged.","question":"Can AI voices sound expressive and emotional for storytelling?"},"q3":{"answer":"Yes! You can clone your own voice or create custom voice models by uploading voice samples to train a personalized model.","question":"Can I use my own voice or a custom voice model?"},"q4":{"answer":"Yes! You can assign different voices to different characters and adjust each character's emotional tone and speaking style to create distinct personalities throughout your audiobook.","question":"Do AI audiobooks support conveying multiple different characters and their personalities in dialogue?"},"title":"Frequently asked questions"},"cta":{"title":"Get started with the most expressive voices for free","subtitle":"Choose your cast, listen to each passage, and refine the narration.","primary":"Create an audiobook","secondary":"Hear narration samples"}},"audioConverter":{"conversionCta":{"primaryButton":"CONVERT {inputFormat} TO {outputFormat}","secondaryButton":"VIEW ALL FORMATS","subtitle":"Fast, free, browser-based conversion with optimal encoding quality","title":"Convert {inputFormat} to {outputFormat} in seconds","trust1":"100% free","trust2":"No software installation","trust3":"Optimal encoding settings"},"conversionFaq":{"q1":{"answer":"Upload your {inputFormat} file using the converter above. We'll automatically convert it to {outputFormat} format. Once complete, download your converted file — no software installation required.","question":"How do I convert {inputFormat} to {outputFormat}?"},"q2":{"answer":"Quality depends on the formats involved. Converting between lossless formats preserves full fidelity, while converting to a lossy format involves some compression. We use optimal encoding to deliver the best {outputFormat} quality from your {inputFormat} source.","question":"Will I lose quality converting {inputFormat} to {outputFormat}?"},"q3":{"answer":"Common reasons include device compatibility, reducing file size, meeting platform requirements, or preparing audio for editing software. {outputFormat} may offer better compatibility or smaller file sizes depending on your needs.","question":"Why convert {inputFormat} to {outputFormat}?"},"q4":{"answer":"We support over 20 audio and video formats. Visit our <mainPage>audio converter</mainPage> to explore all supported format combinations, including MP3, WAV, FLAC, M4A, OGG, and many more.","question":"What other format conversions are available?"},"title":"Frequently asked questions"},"cta":{"primaryButton":"CONVERT NOW","subtitle":"Support for 20+ audio and video formats with optimal encoding quality","title":"Convert any audio file instantly","trust1":"100% free","trust2":"No sign-up required","trust3":"No file size limits"},"faq":{"q1":{"answer":"We support over 20 audio and video formats including MP3, WAV, FLAC, M4A, OGG, AIFF, WMA, OPUS, WEBM, AVI, MOV, and more. Convert between any combination of supported formats.","question":"What audio formats does the converter support?"},"q2":{"answer":"Yes, our audio converter is completely free with no watermarks or quality limitations. Convert as many files as you need.","question":"Is the audio converter free to use?"},"q3":{"answer":"Converting between lossless formats (WAV, FLAC, AIFF) preserves full quality. Converting to lossy formats (MP3, OGG) involves some compression inherent to the format. We use optimal encoding settings to minimize any quality loss.","question":"Will converting my audio affect its quality?"},"q4":{"answer":"We support large audio files for conversion. For very large files, we recommend using lossless formats to maintain the best quality throughout the process.","question":"Is there a file size limit for conversion?"},"q5":{"answer":"Beyond conversion, we offer <audioSeparation>audio separation</audioSeparation> to isolate instruments and vocals, <sttPage>speech-to-text</sttPage> transcription, and <translatePage>audio translation</translatePage> to translate speech across languages.","question":"What else can I do with my audio?"},"title":"Frequently asked questions"}},"audioSeparation":{"cta":{"primaryButton":"TRY IT FREE","secondaryButton":"VIEW PRICING","subtitle":"Upload any track and isolate vocals, drums, bass, and more in seconds","title":"Ready to separate audio like a pro?","trust1":"Free tier available","trust2":"No software install needed","trust3":"Up to 9 stems supported"},"faq":{"q1":{"answer":"AI audio separation uses deep neural networks to isolate individual sound sources — such as vocals, drums, bass, and guitar — from a mixed audio track. Our technology analyzes spectral patterns to cleanly extract each stem, even from complex mixes.","question":"What is AI audio separation and how does it work?"},"q2":{"answer":"We support all major audio and video formats including MP3, WAV, FLAC, M4A, OGG, and more. If your file is in an unsupported format, use our <audioConverter>audio converter</audioConverter> to convert it first.","question":"What audio formats can I upload for stem separation?"},"q3":{"answer":"You can isolate up to 9 individual stems: vocals, drums, bass, piano, guitar, wind instruments, strings, percussion, and keys.","question":"How many stems can I separate from a single track?"},"q4":{"answer":"Yes, we offer free audio separation with generous monthly limits. For higher volumes and priority processing, check our <pricingPage>pricing plans</pricingPage>.","question":"Is AI audio separation free to use?"},"q5":{"answer":"Audio separation is used for creating karaoke tracks, remixing music, isolating vocals for sampling, removing background music from podcasts, extracting instrument parts for music education, and producing clean stems for DJs and producers. For more flexible prompt-based isolation, try <samAudioPage>SAM Audio</samAudioPage>.","question":"What are common use cases for audio separation?"},"title":"Frequently asked questions"},"trackCta":{"primaryButton":"ISOLATE {track} NOW","secondaryButton":"VIEW ALL STEMS","subtitle":"AI-powered {track} isolation with near studio-grade quality","title":"Extract {track} from any audio track","trust1":"Free to try","trust2":"Browser-based processing","trust3":"High-quality output"},"trackFaq":{"q1":{"answer":"Our AI specifically targets {track} frequencies and patterns in your audio, using trained neural networks to cleanly separate {track} from all other instruments and sounds in the mix.","question":"How does {track} isolation work?"},"q2":{"answer":"Isolated {track} tracks are perfect for remixing, sampling, karaoke, music education, and content creation. You can also combine isolated {track} with other separated stems to create custom mixes.","question":"What can I do with isolated {track}?"},"q3":{"answer":"We use state-of-the-art AI models trained on thousands of hours of music. The {track} isolation quality is near studio-grade, preserving clarity and detail while minimizing artifacts from other instruments.","question":"How good is the {track} separation quality?"},"q4":{"answer":"Yes! We support isolating vocals, drums, bass, piano, guitar, wind, strings, percussion, and keys. Visit our <mainPage>audio separation page</mainPage> to explore all available stems. For open-ended isolation using text prompts, try <samAudioPage>SAM Audio</samAudioPage>.","question":"Can I separate other instruments besides {track}?"},"title":"Frequently asked questions"}},"characterVoices":{"hero":{"title":"AI character voices\nwith personality","subtitle":"Create <b>unique</b>, <b>expressive</b> voices for games, animation, and AI companions. Give NPCs distinct personalities through tone and delivery.","sample":"[excited] Let's go on an adventure together! [nervous] Ooooh I heard there are monsters up ahead though... [confident] But I'm sure we can conquer this realm!","sampleLabel":"Fantasy Dialogue","action":"Create a character voice"},"spotlights":{"title":"Bring your cast into the story","subtitle":"Choose a voice for each role and shape the delivery of each line.","items":{"s1":{"title":"A recognizable voice for every character","description":"Create distinctive character voices that maintain consistent personality traits, vocal quirks, and emotional range across all interactions.","art":{"name":"Mira","traits":"Curious · brave · warm","line":"The gate is open. Stay close."}},"s2":{"title":"Streaming text to speech for games","description":"Real-time voice generation with our low-latency API, enabling real-time conversations and dynamic interactions in your applications.","art":{"label":"LIVE SCENE","messages":{"m1":"Mira, is the path safe?","m2":"Only if we move quietly.","m3":"I will lead the way.","m4":"Follow me."}}},"s3":{"title":"Endless character possibilities","description":"Create hundreds of unique character voices from a single platform. Scale your cast of characters without the logistics of coordinating multiple voice actors.","cta":"Explore Voices","art":{"title":"A cast for every story","members":{"m1":{"name":"Hero","traits":"Brave · bright"},"m2":{"name":"Guide","traits":"Warm · wise"},"m3":{"name":"Villain","traits":"Cool · dark"}}}}}},"faq":{"q1":{"answer":"Fish Audio's neural networks analyze your text and generate natural-sounding character speech with consistent personality, emotion, and vocal characteristics that remain stable across all interactions.","question":"How does AI character voice generation work?"},"q2":{"answer":"Yes! Fish Audio's character voices can express a wide range of emotions from joy and excitement to sadness and anger, making them perfect for creating believable, engaging characters in any interactive experience.","question":"Can AI character voices convey different emotions and personalities?"},"q3":{"answer":"Yes! You can clone existing voices or create entirely custom voice models by uploading voice samples. This is perfect for creating unique character identities or matching specific vocal requirements.","question":"Can I create custom character voices or clone existing ones?"},"q4":{"answer":"Yes! Fish Audio provides robust APIs for real-time voice generation, making it easy to integrate into game engines, chatbot platforms, AI companion apps, and any other interactive media requiring dynamic character voices.","question":"Can I integrate character voices into my game or application?"},"title":"Frequently asked questions"},"cta":{"title":"Start creating character voices for free","subtitle":"Choose a voice for each role and shape the delivery of each line.","primary":"Create a character voice","secondary":"Explore character voices"}},"conversationalChatbots":{"hero":{"title":"Make your AI voice agents feel human","subtitle":"Power your AI assistants, customer support agents, and companion apps with natural-sounding voices. Create engaging voice experiences with ultra-low latency and enterprise-grade reliability.","sample":"[delighted] Hi there! How can I help you today? [helpful] I can assist with orders, returns, or product questions. [warm] Just let me know what you need!","sampleLabel":"Order Support","action":"Get an API key"},"spotlights":{"title":"Natural voices for conversational chatbots","subtitle":"Explore streaming text-to-speech and plan your integration for production.","items":{"s1":{"title":"Get natural, flowing conversations without awkward pauses","description":"Start playback before the full response is ready. The standard API has a published time-to-first-audio reference of about 90ms.","art":{"label":"VOICE CONVERSATION","messages":{"m1":"Where is my order?","m2":"It is on its way to you.","m3":"Can I track it?","m4":"Yes. Here's the <u>link</u>."},"note":"~90ms TTFA"}},"s2":{"title":"Built for the demands of enterprise scale","description":"Handle thousands of simultaneous conversations without quality degradation. Whether you're serving 10 or 10,000 concurrent users, Fish Audio maintains consistent voice quality and response times.","art":{"title":"Concurrency for your workload","session":"Live {n}"}},"s3":{"title":"Reach users in their preferred language","description":"Create voice experiences in 83 languages with native-level pronunciation. Serve global customers in their preferred language with authentic-sounding voices.","art":{"messages":{"m1":"Español","m2":"How can I return this item?","m3":"Te ayudo con la devolución.","m4":"Where should I send the item?"}}}}},"faq":{"q1":{"answer":"Fish Audio's neural networks generate natural-sounding speech in real-time with ultra-low latency, enabling smooth back-and-forth conversations. Our API processes text and returns high-quality audio in milliseconds, perfect for live customer interactions.","question":"How does real-time voice generation work for chatbots?"},"q2":{"answer":"Yes! Fish Audio voices can convey warmth, empathy, professionalism, and enthusiasm. Your chatbot can adapt its tone based on context—reassuring for support issues, upbeat for sales, and friendly for casual interactions.","question":"Can chatbot voices sound natural and emotionally appropriate?"},"q3":{"answer":"Yes! You can clone your brand's voice or create custom voice models that match your company's identity. Train a unique voice that becomes the consistent audio presence across all your customer touchpoints.","question":"Can I create a custom voice that matches my brand?"},"q4":{"answer":"Yes! Fish Audio provides robust APIs with WebSocket support for real-time streaming, making it easy to integrate into any chatbot platform, call center system, or custom application. Works with popular frameworks and supports multiple audio formats.","question":"Can I integrate Fish Audio into my existing chatbot platform?"},"title":"Frequently asked questions"},"cta":{"title":"Build voice-enabled chatbots for free","subtitle":"Explore streaming text-to-speech and plan your integration for production.","primary":"Get an API key","secondary":"Read the streaming guide"}},"samAudio":{"cta":{"primaryButton":"TRY SAM AUDIO FREE","secondaryButton":"VIEW PRICING","subtitle":"Describe what you want to extract and get clean, high-quality audio in seconds","title":"Isolate any sound with a text prompt","trust1":"Free tier available","trust2":"No software install needed","trust3":"Natural language prompts"},"faq":{"q1":{"answer":"SAM Audio is an AI-powered audio separation model that uses natural language prompts. Describe the sound you want to isolate, like \"extract the vocals\" or \"remove background music\", and the AI will separate it from the rest of the audio.","question":"What is SAM Audio and how does it work?"},"q2":{"answer":"You can isolate virtually any identifiable sound: vocals, individual instruments, speech, sound effects, ambient noise, and more. If you can describe it in words, SAM Audio can target it.","question":"What kinds of sounds can I isolate with SAM Audio?"},"q3":{"answer":"We support all major audio formats including MP3, WAV, FLAC, M4A, and more. If your file is in an unsupported format, use our <audioConverter>audio converter</audioConverter> to convert it first.","question":"What audio formats does SAM Audio support?"},"q4":{"answer":"Traditional <audioSeparation>stem separation</audioSeparation> splits audio into fixed categories like vocals, drums, and bass. SAM Audio uses open-ended text prompts, so you can target any sound you describe, not just predefined stems.","question":"How is SAM Audio different from stem separation?"},"q5":{"answer":"SAM Audio is used for music production (isolating specific instruments), video post-production (extracting dialogue or removing unwanted sounds), speech enhancement (cleaning up recordings for <sttPage>transcription</sttPage> or <translatePage>translation</translatePage>), and creative remixing.","question":"What are common use cases for SAM Audio?"},"title":"Frequently asked questions"}},"soundEffects":{"categoryCta":{"primaryButton":"GENERATE {category} SOUNDS","secondaryButton":"BROWSE ALL CATEGORIES","subtitle":"Describe the exact {category} sound you need and generate it instantly with AI","title":"Create custom {category} sound effects","trust1":"Free to try","trust2":"AI-generated in seconds","trust3":"Infinite variations"},"categoryFaq":{"q1":{"answer":"Describe the {category} sound you want in the text prompt. Be specific about qualities like intensity, duration, and environment for the best results. Our AI will generate a custom {category} effect in seconds.","question":"How do I generate {category} sound effects?"},"q2":{"answer":"Yes! Adjust your text prompt to fine-tune the output. Add details like \"soft\", \"intense\", \"distant\", or \"close-up\" to shape the {category} sound. Generate multiple variations and pick the one that fits your project.","question":"Can I customize {category} sounds?"},"q3":{"answer":"Creators use {category} sounds in video production, podcasts, game development, app design, and multimedia presentations. They're also popular for social media content, theatrical productions, and educational materials.","question":"What are common uses for {category} sound effects?"},"q4":{"answer":"Yes! We offer a wide library of sound effect categories. Browse our <mainPage>full sound effects library</mainPage> to discover more options and generate effects across different categories. You can also <audioSeparation>extract sounds from existing audio</audioSeparation> using our separation tools.","question":"Can I browse more sound effect categories?"},"title":"Frequently asked questions"},"cta":{"primaryButton":"CREATE SOUND EFFECTS","secondaryButton":"VIEW PRICING","subtitle":"Describe the sound you need and get a high-quality audio clip in seconds","title":"Generate any sound effect from text","trust1":"Free tier available","trust2":"Unlimited creative possibilities","trust3":"Commercial rights on paid plans"},"faq":{"q1":{"answer":"Our AI generates sound effects from text descriptions. Simply type what you want to hear — like \"thunder rolling in the distance\" or \"footsteps on gravel\" — and the model creates a realistic, high-quality audio clip in seconds.","question":"How does AI sound effect generation work?"},"q2":{"answer":"You can generate virtually any sound effect: nature sounds, urban ambience, mechanical noises, sci-fi effects, musical stingers, UI sounds, animal sounds, weather effects, and much more.","question":"What types of sound effects can I create?"},"q3":{"answer":"Yes, sound effects generated on paid plans include full commercial rights for use in videos, games, podcasts, apps, and other projects. Check our <pricingPage>pricing page</pricingPage> for details.","question":"Can I use generated sound effects commercially?"},"q4":{"answer":"Generated sound effects can be downloaded in common formats including MP3 and WAV. Need a different format? Use our <audioConverter>audio converter</audioConverter> to convert to any supported format.","question":"What audio formats are available for download?"},"q5":{"answer":"Absolutely. Use <audioSeparation>audio separation</audioSeparation> to extract elements from existing audio, then layer in generated sound effects. For narration, pair effects with our <ttsPage>text-to-speech</ttsPage> tool.","question":"Can I combine sound effects with other tools?"},"title":"Frequently asked questions"}},"stt":{"cta":{"primaryButton":"TRANSCRIBE NOW","secondaryButton":"VIEW PRICING","subtitle":"Upload any audio file and get accurate text transcription in seconds","title":"Transcribe audio to text with AI accuracy","trust1":"Multi-language support","trust2":"Handles long-form audio","trust3":"Free tier available"},"faq":{"title":"Frequently asked questions","q1":{"question":"How does speech to text AI work?","answer":"Fish Audio speech to text AI analyzes your audio using a deep learning ASR model. It detects phonemes, words and sentence boundaries, then outputs a formatted transcript with punctuation and optional timestamps. In the web app, speaker labels and automatic tags are added as well. That is what speech to text software does; the difference is the model behind it."},"q2":{"question":"What languages does Fish Audio speech to text AI support?","answer":"Speech recognition supports 80+ languages, with English, Mandarin, Cantonese, Japanese and Korean the most thoroughly tested through the API. The language is detected automatically, and mixed-language audio with code-switching is handled without manual configuration. Need the transcript in another language? Use Fish Audio's <translatePage>audio translation</translatePage> tool after transcribing."},"q3":{"question":"How accurate is Fish Audio speech to text AI?","answer":"Accuracy depends on audio quality, background noise and speaker clarity. With clean audio, Fish Audio achieves high accuracy rates, and the model is optimized for conversational, multi-speaker audio. For noisy recordings, run the file through <samAudioPage>SAM Audio</samAudioPage> first to isolate speech."},"q4":{"question":"Can I transcribe long audio files with AI?","answer":"Yes. Fish Audio speech to text AI handles long-form audio: full meetings, lectures, podcast episodes and interviews. Through the API, each request accepts files up to 20 MB and 60 minutes; longer recordings split into chunks and stitch back together using the segment timestamps."},"q5":{"question":"What audio formats does Fish Audio speech to text AI support?","answer":"All major audio and video formats: MP3, WAV, FLAC, M4A, OGG, MP4, MOV and more. Upload the raw file with no pre-processing. For unsupported formats, use our <audioConverter>audio converter</audioConverter> first."},"q6":{"question":"Is there a free AI speech to text tool?","answer":"Yes. Fish Audio offers AI speech to text free every month with 8,000 credits included. Speaker labels, automatic tags, timestamps and SRT, VTT and JSON export are all part of the web app's free tier."},"q7":{"question":"How do I transcribe audio to text using AI?","answer":"Upload your audio file or record live in your browser. Fish Audio AI transcribes it in real time, and the web app adds speaker labels, timestamps and automatic tags. Then copy your transcript or download it as SRT, VTT or JSON."},"q8":{"question":"What is speech to text AI?","answer":"Speech to text AI converts spoken audio into written text using automatic speech recognition and deep learning. Fish Audio's speech to text AI transcribes in real time, adds speaker labels, timestamps and automatic tags in the web app, supports 80+ languages with code-switching, and accepts every major audio and video format."}},"formatCta":{"primaryButton":"TRANSCRIBE {format}","secondaryButton":"VIEW ALL FORMATS","subtitle":"Upload your {format} file and get accurate transcription without any format conversion","title":"Convert {format} files to text instantly","trust1":"Native {format} support","trust2":"Multi-language detection","trust3":"Free to try"},"formatFaq":{"q1":{"answer":"Upload your {format} file using the tool above. Our speech recognition AI will process the audio and deliver an accurate text transcription — no software installation or format conversion required.","question":"How do I convert {format} files to text?"},"q2":{"answer":"Yes, we handle {format} files natively with high accuracy. Transcription quality depends primarily on speech clarity and recording quality, not the file format. For noisy audio, try <audioSeparation>audio separation</audioSeparation> to isolate speech first.","question":"Is {format} transcription accurate?"},"q3":{"answer":"Yes! We support English, Mandarin, Cantonese, Japanese, and Korean. Upload your {format} file and the AI will automatically detect the spoken language. Need to translate the transcribed text? Try our <translatePage>audio translation</translatePage> tool.","question":"Can I transcribe {format} files in multiple languages?"},"q4":{"answer":"We support all major audio and video formats including MP3, WAV, FLAC, M4A, OGG, and more. Visit our <mainPage>speech-to-text page</mainPage> for the full list of supported formats.","question":"What other formats can I transcribe?"},"title":"Frequently asked questions"}},"students":{"hero":{"title":"Voice AI for students, educators, and hackers","subtitle":"Create professional voiceovers for class projects, startup demos, and hackathon apps\nwith <b>free credits</b> for verified students.","sample":"Today we're going to learn about the fascinating world of voice synthesis. This technology allows us to create natural-sounding speech from text, opening up incredible possibilities for accessibility, content creation, and education.","sampleLabel":"Class Lecture","action":"Apply for student credits"},"audiences":{"title":"Voices for every project","subtitle":"Fish Audio empowers students to create authentic voice content for learning, building, and competing, with professional-grade technology. Bring voice AI to learning, creative work, and hackathon demos. Free credits are available to eligible students.","items":{"a1":"Students","a2":"Educators","a3":"Hackathon teams"}},"spotlights":{"title":"Build with voice AI","subtitle":"Create narration and voice demos for educational, non-commercial projects.","items":{"s1":{"title":"Text to speech for student projects","description":"Transform written content into professional narration. Add voiceovers to class presentations, group projects, student films, and startup pitch demos with natural-sounding AI voices.","art":{"slide":"VOICE PROJECT\nSTORYTELLING","notesLabel":"Speaker notes","notes":"Today we will explore how sound brings stories to life."}},"s2":{"title":"Voice cloning for creative content","description":"Clone voices with just 10 seconds of audio to build custom voice identities for student organizations, school mascots, and creative projects.","art":{"title":"Use your own voice","steps":{"s1":"01  Record a sample","s2":"02  Review your recording","s3":"03  Create your voice"},"ready":"Create a voice clone"}},"s3":{"title":"Free credits for students","description":"Apply with a .edu email and complete verification. Approved credits support eligible educational, non-commercial projects.","cta":"Get Started","art":{"title":"Credits for your next idea","identity":{"title":"Verified student","subtitle":"School email confirmed"},"credits":{"title":"Voice AI credits","items":"✓ Explore Drama 3\n✓ 83 languages supported\n✓ Voice cloning for your projects\n✓ Educational, non-commercial use\n✓ Discord community support"}}}}},"build":{"title":"What you can build","subtitle":"Explore ideas for class presentations, student films, and hackathon demos.","action":"Explore examples","items":{"f1":{"title":"Academic Projects","description":"Presentations, audio essays, language practice"},"f2":{"title":"Hackathon Apps","description":"Voice assistants, accessibility tools, AI apps"},"f3":{"title":"Content Creation","description":"Podcasts, videos, audiobooks, character voices"}}},"ambassador":{"title":"Become a Student Ambassador","subtitle":"Represent Fish Audio at your campus. Get exclusive perks, extra credits, and help fellow students discover the power of AI voice technology.","primary":"Apply to be an ambassador","secondary":"Join the Discord community","perks":{"p1":{"title":"Exclusive Credits","description":"Get bonus credits each month to fuel your projects and demos"},"p2":{"title":"Community Leadership","description":"Host workshops, hackathons, and events at your campus"},"p3":{"title":"Early Access","description":"Be the first to try new features and provide feedback"}}},"faq":{"q1":{"answer":"Any student with a valid .edu email address can apply for free credits. This includes undergraduate and graduate students at accredited universities and colleges.","question":"Who qualifies for free student credits?"},"q2":{"answer":"Yes! We encourage students to use their credits for hackathons, class projects, startup demos, and competitions. Many award-winning hackathon projects have been built using Fish Audio's voice technology.","question":"Can I use student credits for hackathons and competitions?"},"q3":{"answer":"Student Ambassadors represent Fish Audio at their campus by hosting workshops, sharing resources, and helping fellow students discover voice AI technology. Apply by emailing us with your background, campus, and ideas for spreading the word about Fish Audio.","question":"How do I become a Student Ambassador?"},"title":"Frequently asked questions"},"cta":{"title":"Get started with free voice AI credits for students","subtitle":"Create narration and voice demos for educational, non-commercial projects.","primary":"Apply for student credits","secondary":"Check eligibility"}},"translateAudio":{"cta":{"primaryButton":"TRANSLATE AUDIO NOW","secondaryButton":"VIEW PRICING","subtitle":"AI-powered speech recognition and translation in one step","title":"Transcribe and translate audio to any language","trust1":"5 languages supported","trust2":"Transcription + translation","trust3":"Free tier available"},"faq":{"q1":{"answer":"We use <sttPage>automatic speech recognition (ASR)</sttPage> to transcribe your audio into text in its original language, then translate that text into your chosen target language. Upload an audio file or recording and get translated text back.","question":"How does AI audio translation work?"},"q2":{"answer":"We support translation between English, Mandarin, Cantonese, Japanese, and Korean, and are continuously expanding language support. For text-based content, try our <ttsPage>text-to-speech</ttsPage> which supports 8 languages.","question":"What languages are supported for audio translation?"},"q3":{"answer":"You can translate any audio recording or file — podcasts, meetings, interviews, lectures, voice memos, and more. For best results, use recordings with clear speech and minimal background noise.","question":"What types of audio can I translate?"},"q4":{"answer":"Accuracy depends on audio clarity and the language pair. We use state-of-the-art speech recognition and translation models. For noisy recordings, try <audioSeparation>audio separation</audioSeparation> to isolate speech before translating.","question":"How accurate is the translation?"},"q5":{"answer":"Upload audio in any major format including MP3, WAV, FLAC, M4A, and more. Need to convert your file first? Use our <audioConverter>audio converter</audioConverter>.","question":"What audio formats can I upload for translation?"},"q6":{"answer":"No — we automatically detect the spoken language in your audio file. Just upload your recording, choose a target language, and the AI handles the rest.","question":"Do I need to specify the language of my audio?"},"title":"Frequently asked questions"},"translationCta":{"primaryButton":"TRANSLATE {from} TO {to}","secondaryButton":"VIEW ALL LANGUAGES","subtitle":"Transcribe {from} speech and translate it into accurate {to} text","title":"Translate {from} audio to {to} text instantly","trust1":"Free to try","trust2":"Automatic transcription","trust3":"High accuracy translation"},"translationFaq":{"q1":{"answer":"Upload your {from} audio file above. We'll transcribe the {from} speech into text and then translate it into {to}. No extra steps needed — just upload and get your translated text.","question":"How do I translate audio from {from} to {to}?"},"q2":{"answer":"Our {from} to {to} translation uses advanced AI models optimized for this language pair. Accuracy is highest with clear speech and minimal background noise. For noisy recordings, try <audioSeparation>audio separation</audioSeparation> to isolate speech first.","question":"How accurate is {from} to {to} translation?"},"q3":{"answer":"Any audio containing {from} speech — recordings, podcasts, interviews, voice memos, lectures, and more. We transcribe the {from} speech and translate the text into {to}.","question":"What types of {from} audio can I translate to {to}?"},"q4":{"answer":"We support translation between English, Mandarin, Cantonese, Japanese, and Korean in any combination. Explore all available pairs on our <mainPage>audio translation page</mainPage>.","question":"What other language pairs are available?"},"q5":{"answer":"No, we automatically detect whether the audio is in {from} or another supported language. Just upload your file and select {to} as the target — the AI identifies the spoken language for you.","question":"Do I need to specify the source language?"},"title":"Frequently asked questions"}},"tts":{"cta":{"primaryButton":"OPEN TEXT-TO-SPEECH","secondaryButton":"VIEW PRICING","subtitle":"Join thousands of creators producing studio-quality voiceovers, audiobooks, and podcasts","title":"Start creating with the most expressive AI voices","trust1":"Free tier available","trust2":"No credit card needed","trust3":"8 languages supported"}},"voiceChanger":{"cta":{"primaryButton":"OPEN VOICE CHANGER","secondaryButton":"VIEW PRICING","subtitle":"Transform any recording into a new voice with Fish Audio's AI voice changer","title":"Become any voice in seconds","trust1":"Free tier available","trust2":"No software installation","trust3":"Works in 13 languages"},"faq":{"title":"Frequently asked questions","q1":{"question":"What is a voice changer?","answer":"A voice changer converts the speaker in an audio recording into a different voice. Fish Audio's AI voice changer uses neural audio models rather than pitch shifting, so the converted file keeps your original timing, emotion and pacing while speaking in the target voice."},"q2":{"question":"How does the Fish Audio voice changer work?","answer":"Upload a clip, pick a target voice, and Fish Audio generates a new audio file in seconds. The target can be a community voice from the library or a custom voice you cloned. The output preserves the original performance: the pacing, the pauses, the emotion."},"q3":{"question":"Is there a free voice changer online?","answer":"Yes. The Fish Audio voice changer demo runs in your browser with no sign-in and no download, and accepts clips up to 30 seconds. For longer audio, sign in and use the full voice changer free plan in your browser, which includes 8,000 monthly credits."},"q4":{"question":"Can I use it as a girl voice changer or change into any specific voice?","answer":"Yes. Pick any target voice from the library: female voices, deep male voices, character voices, or a custom voice you cloned. Your recording is converted into that voice while keeping your original delivery."},"q5":{"question":"Can I create a custom target voice?","answer":"Yes. Signed-in users can upload a short reference clip on the <voiceClonePage>voice cloning</voiceClonePage> page to create a custom target voice, then select it in the voice changer. About 10 seconds of clean audio is enough."},"q6":{"question":"Is my audio private?","answer":"Your audio is processed only to generate the output. Files are not shared, and demo clips are discarded shortly after processing. Cloned voices can be kept fully private."},"q7":{"question":"What's the difference between a voice changer and text to speech?","answer":"Text to speech generates audio from a written script. The voice changer keeps your original recorded performance and only swaps the voice. Use <ttsPage>text to speech</ttsPage> when you have a script; use the voice changer when you have a take you like."},"q8":{"question":"What languages does the voice changer support?","answer":"The voice changer works across 13 languages, including English, Chinese and Japanese. Conversion keeps your original delivery in whichever language you recorded."}}},"voiceClone":{"cta":{"title":"Clone a voice that moves rooms","subtitle":"10 seconds of audio. One API call. Voices ready for comedy clips, reaction channels, parody podcasts, and multilingual memes.","primaryButton":"START CLONING FREE","secondaryButton":"SEE PRICING","trust1":"Free tier, no card","trust2":"10-second reference is enough","trust3":"Open-source S2 model"},"faq":{"title":"Frequently asked questions","q1":{"question":"What makes Fish Audio voice cloning different?","answer":"Fish Audio S2 clones from a 10-second sample, ships sub-300ms streaming, and produces zero-shot cross-lingual output across 13 languages — and the model itself is open-source. Try it on the <voiceClonePage>voice cloning</voiceClonePage> page."},"q2":{"question":"How much audio do I need to clone a voice?","answer":"Ten seconds of clean speech is enough. Longer samples can help with very expressive voices, but most public-figure clips, podcast cuts, or phone-quality recordings work on the first try."},"q3":{"question":"Can I clone a voice in a language the speaker doesn't know?","answer":"Yes. S2 is zero-shot cross-lingual across 13 languages. Clone an English speech once and ship the same voice in Spanish, Japanese, Arabic, or any supported language without retraining."},"q4":{"question":"What should I know before cloning a public figure's voice?","answer":"You are responsible for confirming you have the rights, consents, and disclosures required for any voice you clone, and for complying with applicable laws — including those covering name, likeness, and AI-generated content in your region. Fish Audio does not pre-clear individual use cases and may remove content or accounts that violate our terms or applicable law."},"q5":{"question":"Can I use cloned voices commercially or via API?","answer":"Yes. Paid plans include commercial rights, and the streaming API serves cloned voices directly into your apps, agents, and dubbing pipelines. See <pricingPage>pricing</pricingPage> for tier details."}}},"voiceLibrary":{"cta":{"primaryButton":"EXPLORE VOICES","secondaryButton":"VIEW PRICING","subtitle":"Browse over 2,000,000 community-uploaded voices across 8 languages","title":"Find the perfect voice for your project","trust1":"2M+ voices available","trust2":"Preview any voice instantly","trust3":"Use via app or API"},"faq":{"q1":{"answer":"We host over 2,000,000 community-uploaded voices spanning 8 languages. The library grows daily as creators upload new voice models for a wide range of use cases.","question":"How many voices are available in the voice library?"},"q2":{"answer":"Browse by category, filter by gender, age, tone, and use case, or search by keyword. You can preview any voice instantly before using it in your project.","question":"How do I find the right voice for my project?"},"q3":{"answer":"Commercial usage rights depend on your plan. Paid plans include full commercial rights for generated audio. Check our <pricingPage>pricing page</pricingPage> for details on commercial licensing.","question":"Can I use voice library voices commercially?"},"q4":{"answer":"Yes! Clone your voice with as little as 10 seconds of audio using our <voiceClonePage>voice cloning</voiceClonePage> tool. Your custom voice model will be available in the library for your use.","question":"Can I create and upload my own voice?"},"q5":{"answer":"Use any voice for <ttsPage>text-to-speech</ttsPage> narration, audiobook production, video voiceovers, character dialogue, chatbot responses, and more. Voices work across all our tools and the API.","question":"What can I do with voices from the library?"},"title":"Frequently asked questions"},"tagsCta":{"primaryButton":"BROWSE {tags} VOICES","secondaryButton":"VIEW ALL VOICES","subtitle":"Select any {tags} voice and generate natural-sounding audio in seconds","title":"Start using {tags} voices today","trust1":"Preview before using","trust2":"Free tier available","trust3":"API access included"},"tagsFaq":{"q1":{"answer":"Our library includes a wide selection of {tags} voices uploaded by the global community. Preview any voice instantly and use it for <ttsPage>text-to-speech</ttsPage>, <voiceClonePage>voice cloning</voiceClonePage>, and more.","question":"What {tags} voices are available?"},"q2":{"answer":"Select any {tags} voice, then use it with our <ttsPage>text-to-speech</ttsPage> tool or via the API. Simply enter your text and the voice will generate natural-sounding audio in seconds.","question":"How do I use a {tags} voice in my project?"},"q3":{"answer":"Yes! Combine {tags} with additional filters like gender, age, tone, and language to narrow down results. Our tagging system helps you find the exact voice you need.","question":"Can I filter {tags} voices further?"},"q4":{"answer":"Yes! Use our <voiceClonePage>voice cloning</voiceClonePage> tool to create a custom voice with {tags} characteristics. Upload a short audio sample and we'll generate a personalized voice model. Explore all voice categories in our <mainPage>voice library</mainPage>.","question":"Can I clone a {tags} style voice?"},"title":"Frequently asked questions"}},"voiceover":{"hero":{"title":"Breathe life into your voiceovers","subtitle":"Create professional voiceovers for your videos, podcasts, and ads in minutes.\nChoose a voice, then direct its tone, emotion, and pacing.","sample":"Just beneath the surface, a hidden world comes to life. Follow the movement of the water and discover the stories waiting below.","sampleLabel":"Nature Narration","action":"Create a voiceover"},"spotlights":{"title":"Voiceovers that fit your project","subtitle":"Shape the delivery, compare takes, and prepare audio for your video.","items":{"s1":{"title":"Narration that fits your scene","description":"Choose a library voice or use voice cloning for your own narration. Guide the delivery from a calm explainer to an energetic ad.","art":{"title":"Project · Brand film","meta":"Scene 02","duration":"00:30"}},"s2":{"title":"Direct tone, emotion, and pacing","description":"Use natural-language directions to shape each line, then compare takes and refine the performance.","art":{"line":"Make every moment count."}},"s3":{"title":"Super-speed audio generation","description":"Transform scripts into audio in seconds. Generate hours of audio content in minutes. Create as much as you need, whenever you need it.","art":{"title":"Voiceover generation","steps":{"s1":"Script checked","s2":"Voice selected","s3":"Audio generated"},"ready":"Ready to download"}}}},"faq":{"q1":{"answer":"Fish Audio state-of-the-art neural networks generate natural-sounding voiceovers with appropriate tone, pacing, and emphasis.","question":"How does AI voiceover generation work?"},"q2":{"answer":"Yes, Fish Audio's voices can convey a wide range of emotions and tones, from energetic and upbeat to calm and authoritative, perfect for any video or audio project.","question":"Can AI voices sound natural and engaging for video content?"},"q3":{"answer":"Yes, you can clone your own voice or create custom voice models by uploading voice samples to train a personalized model that matches your brand.","question":"Can I use my own voice or a custom voice model?"},"q4":{"answer":"Yes, Fish Audio supports multiple output formats and can be easily integrated into your video editing workflow, podcast production, or any other audio/video project.","question":"Can I use AI voiceovers for different types of video and audio projects?"},"title":"Frequently asked questions"},"cta":{"title":"Get started with professional voiceovers for free","subtitle":"Shape the delivery, compare takes, and prepare audio for your video.","primary":"Create a voiceover","secondary":"Browse voices"}},"s2":{"topBar":{"title":"Fish Audio S2","subtitleLine1":"The most expressive","subtitleLine2":"voice AI ever made,","subtitleLine3":"now open-source.","subtitle":""},"tryNow":"Try Now","scrollToExplore":"Scroll to Explore","clickToPlay":"Click on a card to play audio","audioSamples":{"sectionTitle":"Hear the difference","card1":{"speaker":"Alex","text":"[clears throat] I believe cryptocurrency is purely speculative from a financial perspective.","audio":"/audio/s2/sample-1.mp3"},"card2":{"speaker":"Sarah","text":"[clears throat] I believe cryptocurrency is purely speculative from a technological perspective.","audio":"/audio/s2/sample-2.mp3"},"card3":{"speaker":"James","text":"[clears throat] I believe cryptocurrency is purely speculative from an economic perspective.","audio":"/audio/s2/sample-3.mp3"},"card4":{"speaker":"Emily","text":"[clears throat] I believe cryptocurrency is purely speculative from a regulatory perspective.","audio":"/audio/s2/sample-4.mp3"},"card5":{"speaker":"David","text":"[clears throat] I believe cryptocurrency is purely speculative from a market perspective.","audio":"/audio/s2/sample-5.mp3"},"card6":{"speaker":"Lisa","text":"[clears throat] I believe cryptocurrency is purely speculative from an investment perspective.","audio":"/audio/s2/sample-6.mp3"}},"features":{"title":"What makes S2 different","subtitle":"Built from the ground up for expressiveness, speed, and openness.","latency":{"title":"Ultra-Low Latency","description":"Under 150ms response time enables real-time conversational AI, live dubbing, and interactive voice applications. Production-ready performance without compromising quality."},"openDomain":{"title":"Open Domain Control & Multi-Speaker","description":"Control emotions, paralanguage, and more with natural text instructions. Add laughter, whispers, sighs, and any expressive element. Seamless multi-speaker conversations — switch between speakers naturally within a single generation."},"openSource":{"title":"Fully Open-Source","description":"Both inference code and model weights are fully open-source. Run S2 on your own infrastructure, fine-tune on your data, and integrate without vendor lock-in. Built for transparency and community-driven innovation."},"instruction":{"description":"","title":""},"multiSpeaker":{"description":"","title":""}},"api":{"title":"Build with the Fish Audio S2 API","subtitle":"Generate lifelike speech in 80+ languages with emotion, direction, and multi-speaker control."},"cta":{"title":"Generate Unbelievably Realistic Speech","button":"Try Fish Audio S2 Now"},"faq":{"title":"Frequently asked questions","q1":{"question":"What is Fish Audio S2 Pro?","answer":"Fish Audio S2 Pro is a leading text-to-speech model with fine-grained inline control of prosody and emotion. Trained on over 10M+ hours of audio data across 80+ languages, it combines reinforcement learning alignment with a Dual-Autoregressive (Dual-AR) architecture — a 4B-parameter Slow AR for semantic prediction and a 400M-parameter Fast AR for acoustic detail. The release includes model weights, fine-tuning code, and an SGLang-based streaming inference engine."},"q2":{"question":"How does fine-grained inline control work?","answer":"S2 Pro enables localized control over speech generation by embedding natural-language instructions directly within the text using [tag] syntax. Rather than relying on a fixed set of predefined tags, S2 Pro accepts free-form textual descriptions — such as [whisper in small voice], [professional broadcast tone], or [pitch up] — allowing open-ended expression control at the word level. Over 15,000 unique tags are supported, including [pause], [emphasis], [laughing], [excited], [whisper], [singing], and many more."},"q3":{"question":"What is the streaming performance of S2 Pro?","answer":"On a single NVIDIA H200 GPU, S2 Pro achieves a Real-Time Factor (RTF) of 0.195, time-to-first-audio of ~100ms, and throughput of 3,000+ acoustic tokens per second while maintaining RTF below 0.5. The SGLang-based inference engine inherits all LLM-native serving optimizations — including continuous batching, paged KV cache, CUDA graph replay, and RadixAttention-based prefix caching."},"q4":{"question":"How many languages does S2 Pro support?","answer":"S2 Pro supports 80+ languages. Tier 1 languages (highest quality) include Japanese, English, and Chinese. Tier 2 languages include Korean, Spanish, Portuguese, Arabic, Russian, French, and German. Many additional languages are supported including Swedish, Italian, Turkish, Dutch, Hindi, Thai, Vietnamese, and more."},"q5":{"question":"What is the license for S2 Pro?","answer":"S2 Pro is licensed under the Fish Audio Research License. Research and non-commercial use is permitted free of charge. Commercial use requires a separate license from Fish Audio — contact business@fish.audio for details."}}},"videoEditor":{"cta":{"primaryButton":"START EDITING FREE","secondaryButton":"VIEW PRICING","subtitle":"Add AI voiceovers, narration, and multilingual dubbing to any video in minutes","title":"Turn any video into a professional production","trust1":"Free tier available","trust2":"No recording equipment needed","trust3":"8 languages supported"},"faq":{"q1":{"answer":"Fish Audio's video editor lets you add AI-generated voiceovers, narration, and dubbing to any video. Upload your video, write or paste a script, choose from over 2 million AI voices, and the editor syncs everything to your timeline automatically.","question":"How does the AI video editor work?"},"q2":{"answer":"You can choose from over 2,000,000 community-uploaded voices, or <voiceClonePage>clone your own voice</voiceClonePage> from as little as 10 seconds of audio. Every voice in the Fish Audio library is available directly in the video editor.","question":"What voices can I use for my video voiceovers?"},"q3":{"answer":"Yes! The video editor supports dubbing into 8 languages using our <translatePage>audio translation</translatePage> technology. The AI preserves the original speaker's tone and emotion while generating natural-sounding speech in the target language.","question":"Can I dub my video into other languages?"},"q4":{"answer":"The editor supports all major video formats including MP4, MOV, and WebM for import. You can export in MP4 (H.264) with customizable resolution and quality settings. Audio tracks can also be exported separately.","question":"What video formats are supported?"},"q5":{"answer":"Absolutely. Our <ttsPage>text-to-speech</ttsPage> engine generates studio-quality voiceovers that sound natural and expressive. Combined with the timeline editor, you get broadcast-ready audio perfectly synchronized to your video.","question":"Is the AI voice quality good enough for professional videos?"},"q6":{"answer":"Yes! Fish Audio offers a generous free tier so you can try the video editor at no cost. For higher volume usage and commercial projects, check our <pricingPage>pricing page</pricingPage> for available plans.","question":"Is the video editor free to use?"},"title":"Frequently asked questions"}},"voiceAgent":{"cta":{"primaryButton":"BUILD YOUR FIRST AGENT","secondaryButton":"VIEW PRICING","subtitle":"Design, test, and deploy conversational voice agents with 2M+ AI voices and real-time WebRTC streaming","title":"Ship voice-powered AI experiences in minutes","trust1":"Free tier available","trust2":"Real-time voice streaming","trust3":"No code required"},"faq":{"q1":{"answer":"A voice agent is a conversational AI that listens to users via microphone, understands their intent, and responds with a natural human voice in real-time. Fish Audio's voice agents combine speech recognition, language understanding, and our <ttsPage>text-to-speech</ttsPage> technology into a single deployable unit.","question":"What is a voice agent?"},"q2":{"answer":"Use the visual flow editor to design your agent's conversation logic, upload documents to its knowledge base, select a voice from our library of 2M+ voices (or <voiceClonePage>clone your own</voiceClonePage>), and deploy with a single URL. No code is required for basic agents.","question":"How do I create a voice agent?"},"q3":{"answer":"Voice agents connect via WebRTC for browser-based voice calls or WebSocket for server-to-server integration. This means you can embed agents in web apps, mobile apps, phone systems, or any platform that supports real-time audio streaming.","question":"How do voice agents connect to my application?"},"q4":{"answer":"Yes! Agents can invoke external APIs and tools during conversations — look up databases, book appointments, process payments, trigger webhooks, and more. Configure tools in the agent settings and the AI decides when to call them based on conversation context.","question":"Can voice agents call external APIs and tools?"},"q5":{"answer":"Every agent gets a built-in test suite. Define conversation scenarios with expected function calls and run automated tests to validate behavior. You can also test with live voice calls directly from the dashboard before deploying to production.","question":"How do I test my voice agent before deploying?"},"q6":{"answer":"Voice agents are billed at 20 credits per second of active conversation. During the beta period, all costs are reduced by 50%. Check our <pricingPage>pricing page</pricingPage> for credit packages and plans.","question":"How much do voice agents cost?"},"title":"Frequently asked questions"}},"elevenlabsAlternative":{"meta":{"title":"ElevenLabs Alternative — Same Voices, 70% Less Cost | Fish Audio","description":"Looking for an ElevenLabs alternative? Fish Audio delivers studio-grade AI voices and instant cloning at ~70% lower cost, with a sub-300ms streaming API and 83 languages. Compare, migrate in 3 steps, start free."},"hero":{"title":"ElevenLabs Alternative: Why Creators & Dev Teams Choose Fish Audio","subtitle":"Looking for an ElevenLabs alternative? Fish Audio gives you the same studio-grade voices and instant cloning at ~70% lower cost — with a sub-300ms streaming API and 83 languages.","primaryCta":"Start free — no credit card","secondaryCta":"Hear the difference ↓","trust1":"Start free — no credit card","trust2":"<300ms latency","trust3":"83 languages","trust4":"60+ emotion tags"},"audio":{"title":"Hear the difference","subtitle":"Compare Fish Audio and ElevenLabs on the same prompts using the existing side-by-side samples."},"personas":{"title":"Who it's for","subtitle":"Fish Audio is built for teams that need expressive voices, real-time delivery, and predictable usage costs.","items":{"conversational":{"title":"Conversational AI / agent teams","pain":"Usage-based bills can climb fast, while latency can vary in live sessions.","solution":"Real-time streaming API with end-to-end latency under 300ms."},"gaming":{"title":"Indie games / character voiceovers","pain":"High-quality character voice production can strain a game budget.","solution":"About 70% lower cost plus 60+ emotion tags for character reads."},"multilingual":{"title":"Global / multilingual content","pain":"Non-English voice performance can be the deciding factor for localization.","solution":"Expressive multilingual output across 83 languages."},"scale":{"title":"Scale / high-usage teams","pain":"As volume grows, subscription quotas and overages can make spend hard to plan.","solution":"About 70% lower unit cost with a pay-as-you-go API."}}},"comparison":{"title":"ElevenLabs vs Fish Audio: Comparison","subtitle":"A structured view of the tradeoffs that matter when switching providers.","dimension":"Dimension","asOf":"Comparison as of {date}.","note":"Pricing values are reused from the current Fish Audio vs ElevenLabs configuration.","neutralLink":"See the full neutral comparison →","colFish":"Fish Audio","colCompetitor":"ElevenLabs","rows":{"freeTier":{"label":"Starting price / free tier","fish":"Start free, no credit card required","competitor":"Limited free tier"},"pricing":{"label":"Price (per character / minute / hour)"},"cloneSpeed":{"label":"Voice cloning speed","fish":"Instant, usable in seconds","competitor":"Instant"},"sampleLength":{"label":"Cloning sample required","fish":"10 seconds of audio","competitor":"Several minutes of audio"},"latency":{"label":"Real-time streaming latency","fish":"< 300ms","competitor":"Higher"},"languages":{"label":"Languages","fish":"83","competitor":"70+ (TTS)"},"emotion":{"label":"Emotion control","fish":"60+ emotion tags","competitor":"Limited"},"billing":{"label":"Billing model","fish":"Pay-as-you-go","competitor":"Subscription + quotas"},"apiSdk":{"label":"API & SDK"},"migration":{"label":"Migration cost","fish":"Low: voice ID / 10s sample + endpoint change","competitor":"—"}}},"whySwitch":{"title":"Why switch to Fish Audio","subtitle":"If your ElevenLabs bill is rising with usage, Fish Audio keeps the same core workflow while lowering production cost and latency-sensitive delivery risk.","heading":"Why choose Fish Audio over ElevenLabs?","secondaryCta":"See the neutral comparison","metrics":{"savings":{"value":"$1,000 → ~$300","label":"Approximate monthly spend at the same usage"},"clone":{"value":"10s","label":"Voice cloning from a short reference sample"},"latency":{"value":"<300ms","label":"Streaming API latency for real-time use cases"}},"items":{"savings":"$1,000/mo on ElevenLabs can be roughly ~$300/mo on Fish Audio for the same output.","clone":"Clone and launch from a 10-second sample instead of preparing long reference recordings.","migration":"Switch with a voice ID or short sample and update one API endpoint.","scale":"Works for solo creators and product teams building real-time conversational experiences."}},"migration":{"title":"Migrate from ElevenLabs in 3 steps","subtitle":"Keep the workflow simple: bring a voice reference, test the output, then move traffic gradually.","step1":{"title":"Create your Fish Audio account","description":"Start free without a credit card, then choose the playground or API path for your workflow."},"step2":{"title":"Clone or select a voice","description":"Use an existing voice ID or upload a 10-second reference sample to create a production-ready voice."},"step3":{"title":"Switch the endpoint","description":"Update the API endpoint, verify latency and output quality, then ramp usage as you compare results."}},"faq":{"title":"ElevenLabs alternative FAQ","q1":{"question":"Is Fish Audio a good ElevenLabs alternative?","answer":"Yes, if you want studio-grade AI voices, instant cloning, lower usage cost, and a streaming API for real-time products. The best fit is teams that care about expressiveness, latency, and pay-as-you-go economics."},"q2":{"question":"How does Fish Audio compare to ElevenLabs?","answer":"Fish Audio focuses on lower unit cost, fast cloning from short samples, sub-300ms streaming, and 60+ emotion tags. ElevenLabs remains a strong hosted TTS platform, so compare the workflow details that matter most for your team: pricing model, cloning inputs, latency, and voice controls."},"q3":{"question":"Is Fish Audio cheaper than ElevenLabs?","answer":"Using the existing comparison data, Fish Audio is about 70% lower on the listed character, minute, and hour estimates. The exact bill depends on your usage mix and any plan terms."},"q4":{"question":"Is it hard to migrate from ElevenLabs to Fish Audio?","answer":"Migration is usually light for API teams: create or choose a Fish Audio voice, map the voice ID or upload a short reference sample, then update the endpoint and test output quality before ramping traffic."},"q5":{"question":"Who should choose Fish Audio instead of ElevenLabs?","answer":"Creators, game teams, conversational AI teams, and high-usage products should consider Fish Audio when they need expressive voices, real-time streaming, and lower pay-as-you-go costs."},"q6":{"question":"When should you NOT choose Fish Audio?","answer":"You may not choose Fish Audio if your core workflow depends on ElevenLabs-only products, or if your team has already standardized review, tooling, and production processes around ElevenLabs and price is not a constraint. In that case, staying with ElevenLabs can be the better fit."}},"finalCta":{"title":"Try Fish Audio before your next ElevenLabs invoice","subtitle":"Generate a sample, test a cloned voice, and compare the output in the same workflow your team already uses."}},"ttsMigration":{"shared":{"getApiKey":"Get your free API key","noCard":"No credit card required: <code>fish-audio/s2.1-pro-free</code> costs $0 through November 30, 2026.","source":"Source","language":"Language","copy":"Copy code","copied":"Copied","added":"Added line","removed":"Removed line","setup":"Needs the official OpenAI SDK (<code>pip install openai</code> or <code>npm install openai</code>) and your Fish API key in <code>FISH_API_KEY</code>.","voiceLibrary":"Voice Library","browseVoices":"Browse the Voice Library","faqTitle":"Frequently asked questions","pricing":{"colModel":"Model","colPrice":"Price","colNotes":"Notes","per":{"bytes":"{price} / 1M UTF-8 bytes","characters":"{price} / 1M characters"},"checked":"Prices from the official pricing pages, checked October 29, 2026:","notes":{"fishFree":"Free through November 30, 2026, under fair-use limits. Same model as S2.1-Pro, without latency (TTFA) or DPA guarantees; requests may be used to improve the model.","fishPro":"For production. Pay as you go, no subscription.","tts1":"Removed from the OpenAI API on January 6, 2027.","tts1Hd":"Removed from the OpenAI API on January 6, 2027."}}},"openai":{"meta":{"title":"OpenAI TTS Alternative: Migrate Off tts-1 | Fish Audio","description":"OpenAI removes tts-1, tts-1-hd and gpt-4o-mini-tts on January 6, 2027. Point the OpenAI SDK at Fish Audio's compatible API and try S2.1-Pro free."},"docsLabel":"Read the migration guide","hero":{"notice":"OpenAI removes tts-1, tts-1-hd and gpt-4o-mini-tts from its API on January 6, 2027.","title":"OpenAI TTS alternative: keep the SDK, change the base URL","subtitle":"Fish Audio serves the same /v1/audio/speech call. Point your OpenAI client at Fish, pick the free model, and your speech code keeps running after OpenAI's TTS models are gone."},"code":{"title":"Two lines move the client","description":"base_url and api_key point the official OpenAI SDK at Fish. In the call, set a Fish model and voice. The new code runs as-is on a fresh account with a $0 balance."},"caveats":{"title":"What else changes","voice":"<code>voice</code> takes a Fish voice ID. OpenAI preset names such as <code>nova</code> return a 400; an empty string uses the model's default voice.","format":"<code>response_format</code> defaults to <code>pcm</code> on Fish, not <code>mp3</code>. Set it explicitly.","instructions":"<code>instructions</code> is not supported and returns a 400. Write delivery cues into the text instead, such as <code>[whispering]</code>.","aliases":"<code>tts-1</code>, <code>tts-1-hd</code> and <code>gpt-4o-mini-tts</code> still work as model names. They map to the paid <code>fish-audio/s2.1-pro</code>."},"voices":{"title":"Pick a voice","description":"OpenAI's preset voices don't exist on Fish. Pass the ID of any voice in the Fish Voice Library, or of a voice you clone. An empty string uses the model's default voice."},"pricing":{"title":"Pricing","description":"S2.1-Pro bills by UTF-8 bytes of input text. In English one character is one byte, so it costs the same as tts-1 and half as much as tts-1-hd. Most Chinese, Japanese and Korean characters take 3 bytes."},"faq":{"q1":{"question":"When does OpenAI shut down its text-to-speech models?","answer":"OpenAI's deprecations page lists tts-1, tts-1-hd and gpt-4o-mini-tts for removal from the API on January 6, 2027. Its recommended replacement, gpt-realtime-2.1-mini, runs on the Realtime API rather than /v1/audio/speech."},"q2":{"question":"Do I have to rewrite my code?","answer":"No. Fish Audio's OpenAI-compatible API accepts the same /v1/audio/speech request from the official Python and Node SDKs. Change base_url and api_key, set a Fish model, and pass a Fish voice ID."},"q3":{"question":"Is fish-audio/s2.1-pro-free really free?","answer":"Yes, through November 30, 2026, under fair-use limits. It is the same model as S2.1-Pro, without guarantees on time to first audio (TTFA) or a DPA, and requests may be used to improve model quality. Use it to test and prototype, then switch to fish-audio/s2.1-pro for production."},"q4":{"question":"Does speech-to-text move the same way?","answer":"Yes. /v1/audio/transcriptions accepts whisper-1, gpt-4o-transcribe and gpt-4o-mini-transcribe as aliases for fish-audio/transcribe-1. Chat-completions audio and a Realtime WebSocket are supported too; /v1/audio/translations is not."},"q5":{"question":"What does not carry over?","answer":"instructions, the sse stream format and the aac and flac output formats return a 400. OpenAI preset voice names are not available, and the compatible API does not list Fish voices; browse them in the Voice Library."}},"closing":{"title":"Switch before January 6, 2027","subtitle":"Create a free key, change two lines, and keep shipping speech."}},"hume":{"meta":{"title":"Hume TTS Alternative: Migrate Before November 13 | Fish Audio","description":"Hume's TTS API shuts down on November 13, 2026. Move your Octave calls to Fish Audio's OpenAI-compatible speech API and try S2.1-Pro free."},"docsLabel":"Read the API guide","hero":{"notice":"Hume ends access to its TTS and EVI APIs on November 13, 2026, then deletes account data.","title":"Hume TTS alternative: replace Octave with one API call","subtitle":"Fish Audio's speech API uses the OpenAI request shape, so one call replaces your Hume request and your next switch is a config change. Try it free with fish-audio/s2.1-pro-free."},"code":{"title":"The call that replaces Hume","description":"Fish serves the OpenAI speech API, so you can call it with the official OpenAI SDK. This code runs as-is on a fresh account with a $0 balance."},"mapping":{"title":"Map your Hume request","description":"Each part of a Hume TTS request has a counterpart in the Fish call above.","colCompetitor":"Hume TTS","colFish":"Fish Audio","rows":{"endpoint":"The response body is the audio.","auth":"Your Fish API key, sent as a Bearer token.","text":"One request per utterance. Join texts that share a voice.","voice":"A Fish voice ID. An empty string uses the model's default voice.","description":"Write acting instructions into the text as bracket cues, such as <code>[whispering]</code>.","speed":"Speed multiplier.","format":"<code>mp3</code>, <code>wav</code>, <code>opus</code> or <code>pcm</code>. Defaults to <code>pcm</code>, so set it explicitly."}},"voices":{"title":"Bring your voices","description":"Hume deletes account data after November 13, 2026, so sort out your voices before then.","items":{"clone":{"title":"Your cloned voices","description":"Keep the original recordings. Fish clones a voice from clips of 10 seconds or more."},"library":{"title":"Hume library voices","description":"Pick a close match in the Fish Voice Library and pass its ID as the voice."},"acting":{"title":"Acting instructions","description":"Write them into the text as bracket cues, such as [whispering] or [warm and happy]. Any natural-language cue works."}}},"pricing":{"title":"Pricing","description":"Pay as you go, with no subscription or monthly minimum. S2.1-Pro bills by UTF-8 bytes of input text; 1M bytes is roughly 180,000 English words."},"faq":{"q1":{"question":"When does Hume's TTS API shut down?","answer":"Hume's changelog says access to its TTS and EVI APIs ends on November 13, 2026 at 12:01 a.m. EST. Both stay supported until then, and data in your account is permanently deleted afterwards."},"q2":{"question":"Does Fish Audio have a Hume-compatible API?","answer":"No. Fish Audio has its own REST and WebSocket API and an OpenAI-compatible endpoint. The OpenAI-compatible one is the shortest path: official SDKs, one request shape, and your next provider switch is a base URL change."},"q3":{"question":"How do Octave acting instructions carry over?","answer":"Write them into the text as bracket cues, such as [whispering] or [excited]. S2.1-Pro reads natural-language cues, so you are not limited to a fixed set."},"q4":{"question":"Can I keep my cloned voice?","answer":"Hume deletes account data after November 13, 2026, so keep your original recordings. Fish clones a voice from clips of 10 seconds or more; a minute or two of clear, single-speaker speech improves fidelity."},"q5":{"question":"Is fish-audio/s2.1-pro-free really free?","answer":"Yes, through November 30, 2026, under fair-use limits. It is the same model as S2.1-Pro, without guarantees on time to first audio (TTFA) or a DPA, and requests may be used to improve model quality. Use it to test and prototype, then switch to fish-audio/s2.1-pro for production."}},"closing":{"title":"Move before November 13, 2026","subtitle":"Create a free key and replace one call."}}},"creativeShared":{"browseExplore":"Browse Explore","models":{"subtitle":"Switch models in one click. No extra accounts, no separate subscriptions.","groups":{"image":"AI Image Models","video":"AI Video Models","lipsync":"Lip Sync and Avatar Models"},"more":"More AI Models"},"mcp":{"description":"Connect the Fish Audio MCP and generate images, videos, and voiceovers without leaving your agent. Same models, same credits.","button":"Read the MCP Guide"},"more":{"title":"Explore More AI Creative Tools","avatar":{"title":"AI Avatar Generator","description":"Make any photo talk with lip sync AI and expressive AI voices."},"video":{"title":"AI Video Generator","description":"Generate AI videos from text or images with Seedance, Kling, Veo, and WAN."},"image":{"title":"AI Image Generator","description":"Generate and edit AI images in up to 4K with GPT Image, Nano Banana Pro, and Seedream."},"tts":{"title":"Text to Speech","description":"The most natural and human sounding AI voice generator."}},"startCreating":"Start creating","step":"Step {index}","carousel":{"prev":"Previous","next":"Next"},"alt":{"138fc2a4ff6140e8a6f884aae28923b6":"Anime-style businessman presenting a project progress chart in a Tokyo meeting room","aab4bbb50a1f43eea09fb589925f8a44":"Japanese real estate agent in a navy suit showing a bright living room","dd9af47cc93643f29b94c9b3bbeb4f15":"Finance creator in a green jacket explaining stock charts at her desk","0cad11656122440bb0b0c25b3bfaf47f":"Korean skincare creator with long dark hair looking into the camera","b47063d5698249cabcf50c0fea3d9e1b":"Woman with curly hair and glasses in a yellow shirt talking to the camera","c83c50ac42095bdcabef65f5e77731d8":"Young woman with a blonde bob and red hair clips smiling in a bright apartment","0d06ec3c4f9c4240a5186b7a7a4fa2f9":"Two people leaping between rooftops above a night city skyline","4481d19e5e72458aa50d96e0c7d8e46b":"Man with short curly hair in a brown leather jacket talking to the camera","cb789f71400b4221a15886ede148d340":"Older woman with long gray hair holding a black tote bag against a mint wall","0a9691eaadf743de8d33e4987091dd3d":"Woman in a striped sweater holding a serum bottle in her bedroom","ac340bca46474e5890d3fddce58c85b7":"Man in a blue track jacket holding wireless earbuds at his desk","ffb92cf641934d1db7295479e1aa7ec0":"Anime runner in a dark hoodie chasing another figure under a highway at sunset","df4d2f47755d53d88154d4ff6ce88001":"Woman with short curly hair in a white blazer inside a steel elevator","ecf6afa7105f45e88f7efc1e261de204":"Woman with a hair bun leaning on a wall in a historic Spanish alley","d5ab924e4329561bb793115c4d84c7a3":"Woman with a bob haircut in a cream blouse in a warm kitchen","e353dc1208bc4213a9145971bc658a60":"Woman with long wavy hair taking a selfie in a car at golden hour","4281afe9b5844b34b97c1d58535ef21d":"Smiling woman holding a lavender tumbler in a sunny kitchen","80f8582613cc49c7a48bff3cb395f873":"Woman in a yellow top and short skirt posing in a bedroom","bb21bd7cc52f4ec7bb32176399310abb":"Young man in a white linen shirt by a bright window","9679405ee98648a7a226b2c2835f05bf":"Male model in a black suit standing against a white wall","76ddd71c87234789a3bedfc3bee5b5f4":"Woman with a short black bob and a white turtleneck on a beige background","62dc4e602e805cef98c89c9690c5aaf7":"Gray-bearded man in a brown blazer in a dim wood-paneled bar","7e648f9b502348d2a1bef71dbac811c0":"Smiling woman with shoulder-length brown hair in a cream blazer","bf2065fd769b4746baee858805ec9ac4":"Man in a navy shirt talking in a cafe with bottles behind him","552c4ff4308a435ab34ed9cb3b8d5e77":"News anchor in a navy suit at a studio desk","a43d96f570c94a2a90c28d647bd7d1d7":"Podcast host wearing headphones speaking into a studio microphone","ade9cd79338a4b42a031e1c5c4e0367f":"Chef in a white jacket holding a wooden spoon in a bright kitchen","695bf29dd52d4c8db64d088f717ba13a":"Marathon volunteer in a blue cap and yellow vest on a city street at night","c6685634535752ad8860f054c3ef9b14":"Anime schoolgirl with long black hair under cherry blossoms","3da7bf38283442d6a66721fbbd99d684":"Anime girl with white hair and fox ears in a blue kimono at a lantern festival","04c6a4b8d4084b16853af93726457564":"Anime boy with orange fox ears in a cream hoodie","6e69260f481d4b0a95da0802b82ad80a":"Anime boy in a black jacket gesturing in a shopping mall","5234c1b3034c4a8b92398526fe08b215":"Friendly blue 3D dragon holding a latte at a wooden counter","f0b050194d7b4f6daf5a42965fc2f79c":"Capybara wearing glasses and a beige suit at a desk","1015de47b5bb4ed7b6c79ab3e3846b38":"Cartoon llama with round glasses in a yarn shop","5c402cbe06b04573a56b6172a731ef20":"Astronaut waving inside a white space station hall","f61a22610a29482d9c86877b9943013e":"Elderly man in a flat cap with a gray mustache","fa121759645f40af85851a393edcc19f":"Elderly man with silver hair in a brown cardigan by a window","e6bc37e825215c1aa1de2e07d71d9e2c":"Japanese woman in a navy apron inside a small restaurant","7b7da4bbf57148728edee4736139aa9a":"Older woman with a silver bob closing her eyes in a bright living room","37502aa2da3b49d98a913ac2d53160e9":"Woman with a towel around her neck talking to the camera in a bright gym","e0670f3092c045038f27a76a5f1eb185":"Athletic woman in a sports bra doing a gym workout","2e9f64f3fff84813bb252ccad9a71374":"Smiling man in a white linen shirt with a coastal town behind him","817d777268c94127a29a34d295fca686":"Rider on a giant dragon flying through storm clouds","f75f4a51ff884b85a3b721263e825518":"Blue clipboard with an orange brush stroke from an anime title sequence","e62602adf52d479a854edd810c015d7a":"Young woman drinking water on a rooftop above a Korean neighborhood","ab493bd490384631b20be2c7b20d6170":"Four women seen from below against a teal background in a beauty commercial","482d08ab17714e15908e4342aa3ce40d":"Coconut water bottle beside a halved coconut in jungle mist","c510eaa5ea934c5599d8c53c65773945":"Cacao pod hanging from a tree in warm jungle light","e5073cd997f059378fbc656fbcfecf90":"White flower with water droplets on a dark leaf in sunbeams","f2039dbf51c45d4c9d4235b11725e34b":"Samurai kneeling with a sword in a rainy bamboo forest, anime style","39d624e2fb0a4dbc9c5f5bdc04d7036b":"Anime postal worker in uniform wiping her eyes at a desk in an old post office","a17700ba90d84e0ebb11f099ac784d12":"White snow creature ice skating on a frozen lake","e9f3eb7a31b34c2dbec3baa80c36ee74":"3D animated girl pilot in goggles above the clouds","8179ec460ae54d58af9a06fd599c8abb":"3D animated bear family baking a cake in a kitchen","b260907b76b543e6b8066a2352c70d6d":"3D animated boy running through a lawn sprinkler at sunset","f136bc16baba4852977852dab8b68d5e":"Two cats on a sunny windowsill with red flowers, 3D animation","f8115d2f2c564dc8b72fc3eb3b29da6a":"Raccoon holding a red sock in a laundromat","0c1f86a91fb24356be5fb76fbbef269f":"Kitten playing guitar on a tree stump for forest animals","4489784e951e45c2b51d6fdc19817603":"Baby in a yellow duck costume sitting beside a white cat","e306c357950153f99a815811ffa4c3e5":"Close-up of a golden omelette on a plate","5ae48fc1a3f146578c79988d9d1efafc":"Tilt-shift miniature crane lifting a piece of raw salmon","fae6dc989b655c6a85264a0d0b1bd0ac":"Orange cat behind a coffee shop counter at night","5dc6c28d75804688885fd6b216533a0d":"Boy at a table with plates of food in a family reel","f6fd2fb51a3056968dc86fb8f9ff9a25":"Red dragon sprinting across a snowy tundra","d9b47d7b8b9448d19cd2c61540f7cce6":"First-person motorcycle ride through a neon city street","664cc51abba8495e8ce1108d89d36d80":"Silhouette in front of a wall of green monitors in a dark control room","44286bab63c3413b83db8931f7dd4ca9":"Chase through a crowded Jaipur market lane under yellow awnings","98d942dba3fd47f68291344f0e26c56b":"Aerial view of the Manhattan skyline and the Empire State Building at golden hour","ea4003e67fa44da5ba1406b97430e975":"Las Vegas Strip at night with fireworks and a welcome sign","91a291711f2f4a93aead04ee1574824c":"Aerial view down a canyon of skyscrapers in a busy city","6045bf80388f4e8ebd42134e107aef95":"Profile of a woman with a natural afro and gold hoop earrings at night","7ba5bbc02cbc5ab8b267554993155630":"Woman in a black suit holding a camera among mirror reflections, black and white","bfae65fe72b3515da6b067c09782ab22":"Model in a beige suit and hat beside a tall white monolith in a desert","8404178f805441b3a6baffc4a1d4078d":"Editorial portrait of a woman with windswept black hair in a cream coat on cobalt blue","ce6ce50b802842fab8adc82000834b45":"Seagulls flying in front of Haussmann buildings along the Seine","9d90aec9a297454eb6ee7580fab0a84a":"Silver and black over-ear wireless headphones on a light background","bf420de224b943b29c42aa21176dbaf9":"Anime close-up of a girl's eye with a pink star-shaped highlight","286dbedec99b4396ba684954cf9299c8":"Night flash portrait of a woman in orange sunglasses and a leather jacket in a parking lot","034293e317454df3a1ef89cc496dd041":"Beauty portrait of a woman in a blue hood with gold eyeshadow on black","f395f411df2a473185990c76ba6e67f4":"Young woman biting into honey toast in a soft Japanese magazine portrait","db53066a42cb43bcbcee2c86c5368a9e":"Slim smartphone with a red lanyard floating above a reflective surface","f0ed68605e31460b84e99fa7450f4743":"Perfume bottle balanced on an orange and a lemon beside pink dahlias","18992a3473514a6591428bb517b19851":"Matcha bar advertisement with whipped green matcha and a bamboo whisk","67247747eb114b2cbe6a4375e1729d45":"Top-down view of a woman carrying a basket of fresh herbs, bread and flowers","9f2037145f784c75b0c0c15ce2bbb158":"Dutch Golden Age style still life of fruit with a pixelated pomegranate","d4dfe0f58f8e4ae8ba73432733537512":"Woman biting a croissant at a Paris cafe with video cover captions","f4dbda4d8550462c83605190c5637fd9":"Summer receipt on a yellow beach towel with peaches and sunglasses","2241011dd07249249b1c1d8e8cad1188":"Retro line illustration of a woman in a tracksuit sitting by a lake with a white dog","f1040d84c65744b3926b468528c94334":"Anime girl with long wavy orange hair leaning on a blue balcony railing","c1fdc10aa5ce4eabbbac0d816e0dc7aa":"Woman sitting on a giant crescent moon sculpture above a city at dusk","8145e0df570e432d9826965e94da2317":"Stop-motion chef figure pouring syrup over a stack of pancakes","8fad9052fa154f25800989bf6d11aa6e":"Stop-motion astronaut planting a flag on a chocolate cake","5705960b84084f4bab1473f57550efc1":"Tiny felt frog in a cowboy hat riding a toy horse on a wooden table","d1ba4a402e9640b0a79e4dc5df690824":"Girl in headphones recording a podcast in a blanket fort with plush toys","001f9f869eae49ab976ffa1ff6e47f36":"1950s housewife holding a red jelly mold on a retro video cover","9f51f2af243c49aa9f3e3219b49cdba3":"Night Shift film poster with a man's face over a rainy city street and diner","c757ad4b7d6f44ce92ce895cd03290f4":"Going Nowhere road movie poster with a yellow drawn car on a desert highway","8ad3ca21af424201b341710a14d32396":"La Fièvre art-film poster with a black and white portrait","abc04132bea94fd0876bc53e54ed3031":"Two green metal garden chairs beside a fountain in a Paris garden","a5fc48bbad604dd7a374d86b163e8b5a":"Old Paris metro carriage doors with the Eiffel Tower in the window","da6a5816243549e4a018a7f28f1a781e":"Mid-century living room with a teal sofa, walnut shelves and a geometric rug","ce79bf9258ab4657ac499fe72014efa4":"Woman sitting in a bouclé armchair while a giant hand with chrome nails touches it","cef2bc39c9ff4a2ba839c08a2c704344":"Cartoon egg in a plaid scarf sleeping beside a red alarm clock","8f8b8a9442eb4c2eb23d1a13ba9a7670":"Weather Report film poster with a lone figure and red umbrella on a mirror-like salt flat","b12defd136e5429fbe10b46fe5a94eed":"Retro TV ad for The Sofa with a woman lounging on a blue sofa"},"altTemplate":{"image":"{description}, AI image made with {model}","video":"{description}, AI video made with {model}","lipsync":"{description}, talking avatar video made with {model}"}},"aiAvatarGenerator":{"meta":{"title":"AI Avatar Generator: Talking Photo & Lip Sync AI | Fish Audio","description":"AI avatar generator from a photo. Make any photo talk with lip sync AI, a script, and 2,000,000+ AI voices. Built for UGC ads and spokesperson videos."},"hero":{"title":"AI Avatar Generator","subtitle":"Make any photo talk. Turn a photo into a talking avatar video with lip sync AI and the most expressive AI voices","pickLabel":"Pick an avatar and hear it speak","poweredBy":"Powered by Fish Audio S2.1 Pro, Creatify, HeyGen, Infinitalk, and more","reelLabel":"Talking avatar and lip sync AI examples made on Fish Audio","madeWith":"Made with {model}","remix":"Remix in Image & Video","soundOff":"Tap for sound","soundOn":"Sound on","openStudio":"Open Image & Video","cta":"Create an Avatar"},"plays":{"title":"What You Can Make with AI Talking Avatars","subtitle":"Eight popular talking avatar formats, each with real examples from the community. Hover to watch, click to remix.","promptIdea":"Prompt idea:","tryStyle":"Try This Style","remix":"Remix this","items":{"ugcAds":{"name":"UGC Ads","description":"An AI UGC video generator for ads that look shot on a phone by a creator, without hiring one.","prompt":"Okay, I have to show you this. I've been using it for two weeks and…"},"spokesperson":{"name":"Spokesperson","description":"An AI spokesperson video generator for product explainers, landing pages, and paid social.","prompt":"Hi, I'm Maya. In the next thirty seconds, I'll show you how this works."},"experts":{"name":"Experts","description":"Talking head videos for training, company updates, and thought leadership, from one photo and a script.","prompt":"Here is the one number from this quarter that everyone on the team should know."},"hosts":{"name":"Hosts","description":"AI news anchors, podcast hosts, and show presenters with a studio look.","prompt":"Good evening. Here are the three stories you need to know tonight."},"animeCharacters":{"name":"Anime","description":"Make anime and illustrated characters talk, for VTuber clips, fan dubs, and visual novels.","prompt":"Hi everyone! I have a very special announcement for you today."},"mascots":{"name":"Mascots","description":"Talking 3D mascots and animal characters for brands, kids' content, and explainers.","prompt":"Good morning! I've had exactly one coffee, so let's keep this simple."},"storytellers":{"name":"Storytellers","description":"Warm, lived-in talking photos for audiobooks, documentaries, and bedtime stories.","prompt":"When I was a boy, this street looked very different. Let me tell you about it."},"lifestyle":{"name":"Lifestyle","description":"AI talking head videos for coaches, beauty creators, and lifestyle channels on TikTok and Reels.","prompt":"Three moves, ten minutes, no equipment. Let's go."}},"sampleAlt":"{name} talking avatar example made with {model}"},"howTo":{"title":"How to Make a Photo Talk with AI","s1":{"title":"Pick an avatar or upload a photo","description":"Choose a face from the avatar library, upload a photo of yourself, or generate a new AI avatar from text with an image model."},"s2":{"title":"Add a script or your own audio","description":"Type a script and pick from 2,000,000+ AI voices, clone your own voice, or upload finished audio to lip sync."},"s3":{"title":"Generate the talking avatar video","description":"The lip sync AI matches every syllable and expression. Download the video and publish it anywhere."}},"spotlight":{"title":"AI Lip Sync with the Most Expressive AI Voices","subtitle":"A talking avatar is only as good as its voice. Same face, same script — change one tag and the whole performance changes.","f1":{"title":"2,000,000+ voices","description":"Pick from the voice library, clone your own voice, or upload a finished recording, song or dubbed track."},"f2":{"title":"Auto tag the script","description":"Let AI add emotion and pause tags for you, then fine-tune any line by hand."},"f3":{"title":"30+ languages","description":"Speak English, Japanese, Korean, Chinese, French, German, Arabic, Spanish and more with native accents."},"f4":{"title":"Any style of face","description":"Photoreal presenters, anime characters, 3D mascots and illustrations all work as talking avatars."}},"models":{"title":"Lip Sync AI Models: Creatify Aurora, HeyGen Avatar 4, and Infinitalk","m1":"Turn a portrait and a voice track into a clean talking-avatar clip.","m2":"Generate a polished presenter avatar from an image and speech.","m3":"Prompt-guided avatar speech with a more expressive generated look.","m4":"Create a presenter avatar from an image and speech with minimal setup."},"usecases":{"title":"AI Talking Avatar Use Cases","subtitle":"From ad teams to solo creators, see who uses AI avatars and what they make","u1":{"title":"UGC Ads and Spokesperson Videos","description":"For marketers and agencies. Launch AI UGC ads and spokesperson videos in every market, and test ten hooks in an afternoon without booking a shoot.","button":"Create an Avatar"},"u2":{"title":"Explainers and Training Videos","description":"For educators and course creators. Turn scripts into presenter-led lessons and product walkthroughs, and update them by editing text instead of reshooting.","button":"Try It Now"},"u3":{"title":"Characters and Mascots","description":"For VTubers, storytellers, and brands. Give anime characters, narrators, and mascots a face, a voice, and a performance that match their personality.","button":"Start Creating"}},"mcp":{"title":"Create Talking Avatars from Claude, Codex, and Any MCP Client"},"cta":{"title":"Put a Face on the Most Expressive AI Voices","subtitle":"8 lip sync AI models, a ready-made AI avatar library, and 2,000,000+ AI voices in one talking avatar generator.","primary":"Create an Avatar"},"faq":{"title":"AI Avatar Generator FAQ","q1":{"question":"What is an AI avatar generator?","answer":"An AI avatar generator turns a single photo into a talking video. You provide a face, a script or audio, and a voice, and a lip sync AI model animates the mouth, expressions, and head motion to match every word."},"q2":{"question":"How do I make a photo talk with AI?","answer":"Upload a front-facing photo or pick one from the avatar library, type your script or upload your own audio, and choose a Fish Audio voice. Generate, and download the finished talking photo video a few minutes later."},"q3":{"question":"What is lip sync AI?","answer":"Lip sync AI matches a face's mouth movements to an audio track. Fish Audio offers 8 lip sync models, so you can sync a photo, an avatar, or an existing video to a new voice, a song, or a dubbed language."},"q4":{"question":"What is the best AI avatar generator for realistic talking avatars?","answer":"Realism depends on two things: the lip sync model and the voice. Fish Audio pairs models like Creatify Aurora and HeyGen Avatar 4 with AI voices that carry emotion, pauses, and emphasis."},"q5":{"question":"Can I create an AI avatar of myself with my own voice?","answer":"Yes. Upload your photo, clone your voice from as little as 10 seconds of audio, and generate talking head videos of yourself from text."},"q6":{"question":"Can I make AI UGC ads and spokesperson videos?","answer":"Yes. Pick or create a presenter, write the hook, and generate. Teams use it as an AI UGC video generator to test many ad variations without booking creators or a studio."},"q7":{"question":"Which plans include the AI avatar generator?","answer":"Browsing Explore and studying every example is free, and the Free plan includes daily AI image generations for creating avatar portraits. Talking avatar and lip sync video generation is included in the Plus, Pro, and Max plans."},"q8":{"question":"Can I use AI avatar videos commercially?","answer":"Paid plans include commercial use, so you can run your AI avatar videos as ads, publish them on monetized channels, and use them in client work. Content made on the Free plan is for personal, non-commercial use."},"q9":{"question":"Can I make an AI avatar online from text?","answer":"Yes. The AI avatar generator runs online in your browser, so there is nothing to install. Pick an avatar or upload a photo, type your script, choose an AI voice, and Fish Audio turns your text into a talking avatar video."}},"voices":{"tones":{"excited":"[Excited]","whispering":"[Whispering]","sad":"[Sad]"}}},"aiVideoGenerator":{"meta":{"title":"AI Video Generator with Voice: Seedance, Kling, Veo | Fish Audio","description":"AI video generator from text, image, or photo. Create videos with voice and sound using Seedance 2.5, Kling O3, Veo 3.1, and WAN 3.0."},"hero":{"title":"AI Video Generator","subtitle":"Generate AI videos from text, images, or photos with Seedance 2.5, Kling, Veo 3.1, and WAN, complete with voice and sound","pickLabel":"Pick a prompt and see the real result","poweredBy":"Powered by Seedance, Kling, Veo, WAN, MiniMax, and more","reelLabel":"AI video examples made with Seedance, Kling, and Veo on Fish Audio","madeWith":"Made with {model}","remix":"Remix in Image & Video","soundOff":"Tap for sound","soundOn":"Sound on","openStudio":"Open Image & Video"},"plays":{"title":"What You Can Make with the AI Video Generator","subtitle":"Eight popular AI video styles, each with real examples from the community. Hover to watch, click to remix.","promptIdea":"Prompt idea:","tryStyle":"Try This Style","remix":"Remix this","items":{"productAds":{"name":"Products","description":"An AI product video generator for commercials and ads, with macro shots, slow motion, and studio lighting.","prompt":"Premium coconut water commercial, slow push-in through jungle mist, droplets on the bottle"},"anime":{"name":"Anime","description":"An AI anime video generator with cel-shaded characters, dramatic lighting, and hand-drawn motion.","prompt":"Anime samurai kneeling in a bamboo forest at night, rain, wind in his hair, cel-shaded"},"cartoon3d":{"name":"Cartoon","description":"An AI cartoon video generator in a 3D animated film style, made for kids' stories and mascots.","prompt":"3D animated film style, a fluffy snow creature learns to ice skate on a frozen lake"},"animalStories":{"name":"Animals","description":"Funny and heartwarming AI animal videos that travel well on TikTok, Reels, and Shorts.","prompt":"A raccoon doing laundry at a late-night laundromat, handheld camera, deadpan comedy"},"food":{"name":"Food","description":"AI food videos with sizzling close-ups, pours, and appetizing slow motion for menus and ads.","prompt":"Extreme close-up of a soft omelette being sliced open, steam rising, warm restaurant light"},"sciFi":{"name":"Sci-Fi","description":"AI sci-fi and fantasy videos with dragons, mechs, and neon cities. Shots that would be impossible to film.","prompt":"A red dragon sprinting across a frozen tundra, snow exploding under its claws, tracking shot"},"travel":{"name":"Travel","description":"Aerial and drone-style AI videos of skylines, streets, and landscapes, generated from text.","prompt":"Aerial shot circling a Manhattan skyscraper at golden hour, haze over the skyline"},"cinematic":{"name":"Cinematic","description":"Cinematic AI video portraits for trailers, music videos, and title sequences.","prompt":"Close-up of a woman turning toward the camera at night, bokeh city lights, 85mm, shallow focus"}},"sampleAlt":"{name} AI video example made with {model}"},"howTo":{"title":"How to Make an AI Video from Text or an Image","s1":{"title":"Write a prompt or upload a photo","description":"Generate an AI video from text, turn an image or photo into a video, or set start and end frames."},"s2":{"title":"Pick an AI video model","description":"Choose Seedance, Kling, Veo, or WAN, then set the aspect ratio, resolution, and duration. Generate several takes at once."},"s3":{"title":"Upscale and add voice","description":"Sharpen the keeper with the AI video upscaler, then add an AI voiceover or lip sync with any Fish Audio voice."}},"spotlight":{"title":"Direct Every Shot with the AI Video Generator","subtitle":"Text to video and image to video with real camera control, and every clip ready for voice and sound.","r1":{"eyebrow":"Image to video","title":"Reference Control","description":"Guide each shot with reference images and video so characters and scenes match the picture in your head.","p1":"Reference images and video keep characters and scenes consistent","p2":"Negative prompts to rule out what you don't want","p3":"Several takes per run, compared side by side"},"r2":{"eyebrow":"Camera control","title":"Every format for YouTube and social","description":"Pick the aspect ratio, resolution and duration per shot, and copy motion from a reference clip when you need an exact move.","p1":"16:9, 9:16, 1:1, 4:3 and 21:9 for YouTube, TikTok, Reels and Shorts","p2":"Match video copies an exact motion; Match image adds new motion","p3":"Upscale the final cut with an AI video upscaler"},"f1":{"title":"Batch Takes","description":"Generate several takes in a single run, up to 8 on Pro and Max, compare them side by side, and keep the best."},"f2":{"title":"AI Video with Voice and Sound","description":"Seedance 2.5 generates native audio, and any clip can get narration, character voices, or lip sync from 2,000,000+ AI voices."},"f3":{"title":"Every Top AI Video Model","description":"Seedance 2.5, Kling O3, Veo 3.1, WAN 3.0, MiniMax H3, and more in one AI video generator. New releases land here fast."},"f4":{"title":"Text to Video and Image to Video","description":"Generate AI video from text, animate a photo or still image, or set start and end frames and let the model fill the gap."}},"models":{"title":"AI Video Models: Seedance 2.5, Kling O3, Veo 3.1, and WAN 3.0","m1":"Latest Seedance generation with mixed media references, native audio, and clips up to 30 seconds.","m2":"Up to 7 reference images keep characters and scenes consistent.","m3":"Premium Google video for realistic motion and scene consistency.","m4":"Generate 2 to 30 second videos from text, frames, or media references."},"usecases":{"title":"AI Video Generator Use Cases","subtitle":"From ad teams to solo creators, see who uses AI video and what they make","u1":{"title":"AI Video Ads and Product Videos","description":"For marketers and e-commerce brands. Turn a product photo into a video ad, generate teasers and B-roll in any aspect ratio, and test variations without a reshoot.","button":"Try It Now"},"u2":{"title":"Short Films and Animation","description":"For filmmakers and animators. Previsualize scenes, build animatics, and produce anime and 3D cartoon shots, then give every character its own voice.","button":"Start Creating"},"u3":{"title":"YouTube, TikTok, Reels, and Shorts","description":"For YouTubers and social creators. Make scroll-stopping animal stories, food clips, and cinematic shorts, complete with an AI voiceover.","button":"Get Started"}},"mcp":{"title":"Generate AI Videos from Claude, Codex, and Any MCP Client"},"cta":{"title":"Create with the Best AI Video Generator Models","subtitle":"Seedance 2.5, Kling O3, Veo 3.1, WAN 3.0, and more, a community feed to remix, and 2,000,000+ AI voices to bring it to life.","primary":"Start Creating"},"faq":{"title":"AI Video Generator FAQ","q1":{"question":"What is the best AI video generator?","answer":"It depends on the shot, which is why Fish Audio puts every top model in one AI video generator. Use Seedance 2.5 or Kling O3 for cinematic motion, Veo 3.1 for realism, and WAN 3.0 or MiniMax H3 for fast drafts, and compare them on the same prompt."},"q2":{"question":"How do I generate an AI video from text?","answer":"Describe the scene, the camera move, and the style in the prompt box, pick a text to video model, and generate. Most AI videos are ready in a few minutes."},"q3":{"question":"Can I make an AI video from an image or a photo?","answer":"Yes. Upload an image or photo as a reference or a first frame, describe the motion, and generate. Some image to video models also accept an end frame, so you control where the shot lands."},"q4":{"question":"Can the AI video generator create videos with voice and sound?","answer":"Yes. Seedance 2.5 generates video with native audio, and you can add an AI voiceover, character voices, or lip sync to any clip with Fish Audio voices, including your own cloned voice."},"q5":{"question":"Which AI video models are available on Fish Audio?","answer":"Seedance 2.5, 2.0, and 1.5 Pro, Kling O3 Pro, V3 Pro, and 2.6 Pro, Veo 3.1, WAN 3.0, MiniMax H3 and H3 Max, and Gemini Omni Flash. New models are added shortly after they launch."},"q6":{"question":"How long can AI generated videos be?","answer":"It depends on the model. Most generate clips of a few seconds up to around 10 seconds, and Seedance 2.5 and WAN 3.0 support clips up to 30 seconds."},"q7":{"question":"Which plans include the AI video generator?","answer":"Browsing Explore and studying every prompt is free, and the Free plan includes daily AI image generations. AI video generation is included in the Plus, Pro, and Max plans, with credits shared across voice, image, and video."},"q8":{"question":"Can I use AI generated videos commercially, for example on YouTube?","answer":"Paid plans include commercial use, so you can put your AI videos in ads, monetized YouTube channels, client work, and products. Content made on the Free plan is for personal, non-commercial use."},"q9":{"question":"Can I make an AI video online from text, an image, or another video?","answer":"Yes. The AI video generator runs online in your browser, with no software to install. Start from a text prompt, an image, or a photo, and with models that accept a reference video you can build a new clip from an existing one."},"q10":{"question":"Can I use the AI video generator for YouTube videos and Shorts?","answer":"Yes. Generate in 16:9 for YouTube or 9:16 for Shorts, add an AI voiceover, and publish. Commercial use, including monetized channels, needs a paid plan."}}},"aiImageGenerator":{"meta":{"title":"Free AI Image Generator: GPT Image & Nano Banana | Fish Audio","description":"AI image generator from text or image with GPT Image 2.5, Nano Banana Pro, and Seedream 5.0, up to 4K. Free daily generations for posters and thumbnails."},"hero":{"title":"AI Image Generator","subtitle":"Generate AI images from text or from an image with GPT Image, Nano Banana Pro, and Seedream, up to 4K","pickLabel":"Pick a prompt and see the real result","poweredBy":"Powered by GPT Image, Nano Banana, Seedream, and more","reelLabel":"AI image examples made with GPT Image, Nano Banana, and Seedream on Fish Audio","madeWith":"Made with {model}","remix":"Remix in Image & Video","soundOff":"Tap for sound","soundOn":"Sound on","openStudio":"Open Image & Video"},"plays":{"title":"What You Can Make with the AI Image Generator","subtitle":"Eight popular AI image styles, each with real examples from the community. Click any image to remix it.","promptIdea":"Prompt idea:","tryStyle":"Try This Style","remix":"Remix this","items":{"portraits":{"name":"Portraits","description":"An AI portrait generator for fashion editorials with magazine-grade lighting and styling.","prompt":"Editorial portrait of a drummer under a single warm spotlight, dark background, 85mm"},"productShots":{"name":"Products","description":"AI product photography for e-commerce, ads, and packaging concepts, without a studio day.","prompt":"Luxury perfume bottle inside a glowing ring of light, black background, smoke, studio product shot"},"foodPhotography":{"name":"Food","description":"AI food photography with commercial styling and appetizing detail for menus and ads.","prompt":"Classic American diner breakfast, pancakes, eggs, and coffee on a chrome counter, overhead light"},"animeArt":{"name":"Anime","description":"An AI anime art generator with painterly skies and cinematic framing.","prompt":"Anime illustration of a girl sitting on a giant crescent moon above a city at dusk"},"characters3d":{"name":"3D","description":"An AI character generator for 3D characters, toys, and mascots in an animated film style.","prompt":"Tiny 3D chef character pouring syrup over a giant stack of pancakes, warm morning light"},"posters":{"name":"Posters","description":"An AI poster maker and YouTube thumbnail maker with readable text, collages, and character sheets.","prompt":"Editorial collage poster with bold red circles, torn newspaper textures, and blank headline blocks"},"interiors":{"name":"Interiors","description":"AI interior design and architectural visualization for mood boards and pitches.","prompt":"Mid-century living room with a teal sofa, walnut shelves, and soft afternoon light"},"surreal":{"name":"Surreal","description":"Surreal and sci-fi AI art for covers, key art, and concept design.","prompt":"A giant stone ring portal standing in a misty desert valley, tiny figure for scale"}},"sampleAlt":"{name} AI image example made with {model}"},"howTo":{"title":"How to Generate AI Images from Text","s1":{"title":"Describe your image","description":"Write a text to image prompt in any language, or upload an image to generate a new one from it."},"s2":{"title":"Pick an AI image model","description":"Choose GPT Image, Nano Banana Pro, or Seedream, set the aspect ratio and resolution, and generate several variations at once."},"s3":{"title":"Edit, upscale, and animate","description":"Use the AI photo editor to refine details, upscale to 4K, and turn the image into a video or a talking avatar."}},"spotlight":{"title":"AI Image Generator and Photo Editor","subtitle":"Text to image, image to image, and reference-driven editing — from the first draft to the 4K final.","r1":{"eyebrow":"Image to image","title":"Edit with references, not guesswork","description":"Upload up to 9 reference images and mention them with @ in your prompt. Change outfits, backgrounds and details while keeping what matters.","p1":"Mix a face, an outfit and a location in one prompt","p2":"Use any result as the next reference with one click","p3":"Recreate or upscale a favorite without starting over"},"r2":{"eyebrow":"Typography","title":"Text that actually reads correctly","description":"Posters, YouTube thumbnails, packaging and social graphics with clean, readable text — so you can ship the image, not fix it in another tool.","p1":"Nano Banana Pro for text-heavy, structured layouts","p2":"Any aspect ratio from 1:1 to 21:9","p3":"Generate at 1K, 2K or 4K"},"f1":{"title":"Up to 4K","description":"Generate at 1K, 2K or 4K, and upscale finished work with a built-in AI upscaler."},"f2":{"title":"Batch generation","description":"Generate several variations in a single run, compare them side by side, and keep the best."},"f3":{"title":"Image to video","description":"Send any image to an AI video model and animate it with start and end frames."},"f4":{"title":"Make it talk","description":"Use a portrait in Lip sync and give it a voice from 2,000,000+ AI voices."}},"models":{"title":"AI Image Models: GPT Image 2.5, Nano Banana Pro, and Seedream 5.0","m1":"Fast generation and editing for everyday images and quick iterations.","m2":"Quick idea drafts and reference edits for everyday visuals.","m3":"Best for text-heavy, structured images and precise reference edits.","m4":"Sharper output for detailed scenes, products, and stylized concepts."},"usecases":{"title":"AI Image Generator Use Cases","subtitle":"From design teams to solo creators, see who uses AI images and what they make","u1":{"title":"Product Photos and Ad Creatives","description":"For marketers and e-commerce brands. Generate product shots, lifestyle scenes, and ad variations in any aspect ratio, from 1:1 to 21:9, without a studio day.","button":"Try It Now"},"u2":{"title":"Key Art, Characters, and Mood Boards","description":"For designers and art directors. Explore directions fast at up to 4K, then animate a character with video models or give it a voice with the AI Avatar Generator.","button":"Create a Character"},"u3":{"title":"YouTube Thumbnails, Posters, and Social","description":"For YouTubers and social creators. Make thumbnails, posters, and social graphics with text that actually reads correctly.","button":"Start Creating"}},"mcp":{"title":"Generate AI Images from Claude, Codex, and Any MCP Client"},"cta":{"title":"Create with the Best AI Image Generator Models","subtitle":"GPT Image, Nano Banana Pro, Seedream, and more, free daily generations, a community feed to remix, and a direct path to video and voice.","primary":"Generate Images"},"faq":{"title":"AI Image Generator FAQ","q1":{"question":"Can I generate AI images without a paid plan?","answer":"Yes. The Fish Audio Free plan includes daily AI image generations, and browsing Explore is always free. Paid plans add more credits, more images per run, and commercial use."},"q2":{"question":"What is the best AI image generator?","answer":"It depends on the job, which is why Fish Audio puts every top model in one AI image generator. GPT Image is strong at text and layout, Nano Banana at fast edits, and Seedream at photoreal detail. Run the same prompt across models and compare."},"q3":{"question":"How do I generate an AI image from text?","answer":"Describe the subject, style, and lighting in the prompt box, pick a text to image model, and generate. You can create several variations at once and keep the best."},"q4":{"question":"Can I generate an AI image from another image or edit a photo?","answer":"Yes. Upload one or more reference images, describe the change, and the AI photo editor changes outfits, backgrounds, and details while keeping the rest."},"q5":{"question":"Which AI image models are available on Fish Audio?","answer":"GPT Image 2.5 and GPT Image 2, Nano Banana 2, Nano Banana 2 Lite, Nano Banana Pro, and Seedream 5.0 and 4.5, plus Topaz for AI image upscaling."},"q6":{"question":"What resolutions and aspect ratios are supported?","answer":"Up to 4K depending on the model, in ratios from 1:1 and 4:3 to 16:9 and 21:9, which covers YouTube thumbnails, posters, and product photos."},"q7":{"question":"Can I turn an AI image into a video or a talking photo?","answer":"Yes. Send any image to an AI video model to animate it, or to the AI Avatar Generator to make a portrait talk with a Fish Audio voice."},"q8":{"question":"Can I use AI generated images commercially?","answer":"Paid plans include commercial use, so you can put your AI images in ads, thumbnails, client work, and products. Content made on the Free plan is for personal, non-commercial use."},"q9":{"question":"Is there an online AI image generator that works on my phone?","answer":"Yes. The AI image generator runs online in your mobile browser at fish.audio, so there is no app to install. Describe an image or upload one to edit, then download the result."}}},"drama3":{"meta":{"title":"Drama 3 – Direct Every Line of AI Voice | Fish Audio","description":"Drama 3 is Fish Audio's directable text-to-speech model. Describe the performance in your own words, add sounds and pauses where you want them, and control exactly which words change."},"hero":{"title":"Direct the performance,","titleAccent":"not just the words.","subtitle":"Tell Drama 3 how a line should feel, in your own words. Add a sound, emotion, or pause where you want it, and control exactly which words change.","primary":"Try Drama 3 for free"},"player":{"play":"Play take","pause":"Pause take"},"director":{"characterCount":"{count, plural, one {# character} other {# characters}}","eyebrow":"One line, five directions","tryLine":"Try this line","tabs":{"plain":{"label":"No direction","description":"Plain text. Drama 3 reads it the way the words suggest."},"direction":{"label":"Describe it","description":"A direction at the start sets the whole read. Write it the way you would brief an actor."},"sounds":{"label":"Add sounds","description":"Square-bracket tags drop a breath, a laugh, or a pause exactly where you put them."},"scoped":{"label":"Pick the words","description":"Paired tags apply only to the words you select. Here, only the last sentence is whispered."},"language":{"label":"Any language","description":"Write tags and directions in English or your own language."}}},"roast":{"title":"Try a roast with Uncle Roger","description":"Uncle Roger's licensed voice, directed by Drama 3. Pick a kitchen crime, hear his verdict, then write your own roast.","tabs":{"ketchup":"Ketchup fried rice","microwave":"Microwave steak","oliveOil":"Olive oil in a wok"},"licensed":"Licensed voice","tryRoast":"Try this roast","writeOwn":"Write your own roast"},"cast":{"title":"More from Uncle Roger","subtitle":"Every take on this page is a Drama 3 generation of the exact text shown."},"techniques":{"title":"Five ways to direct, one script","subtitle":"Mix them freely in the same line. Every direction is plain text you can read, edit, and reuse.","describe":{"title":"Describe it in your own words","description":"Try natural-language directions, beyond the preset tags: emotion, intent, pacing, who they're talking to."},"events":{"title":"Add a sound, emotion, or pause","description":"Put a sigh, a laugh, a breath, or a short pause where you want it, and nowhere else."},"scoped":{"title":"Control exactly which words change","description":"Select a few words and pick a scoped tag. Paired tags apply only to the words you select.","menuTitle":"Control selected words","tags":{"whisper":"Whisper","emphasis":"Emphasis","soft":"Soft","fast":"Faster","slow":"Slower","stress":"Stress","forceful":"Forceful"}},"language":{"title":"Direct in your own language","description":"Write tags and directions in English or your own language. The performance follows the direction, whatever language it's written in."},"autotag":{"title":"Start with Auto Tag","description":"Need a starting point? Auto Tag adds directions to your script. Keep what works and rewrite the rest.","button":"Auto Tag"}},"scene":{"title":"Write the scene. Auto Tag directs it.","description":"Give each speaker a voice, write plain dialogue, and let Auto Tag add the directions. Drama 3 performs the whole scene in one pass.","button":"Write a scene","plain":"Your script","autoTagged":"After Auto Tag","slugline":"Int. Interrogation room – Night","cast":"Detective: Adrian · Suspect: Delia · Generated in one pass","speakers":{"s0":"Detective","s1":"Suspect"}},"api":{"title":"Direct from the API","description":"Set the model header to drama-3 and send your script as it is. Directions, sounds, and paired tags all work in API requests.","copy":"Copy code"},"cta":{"title":"Your script deserves a performance","subtitle":"Drama 3 is available now in Text to Speech.","button":"Try Drama 3 for free"},"faq":{"title":"Drama 3 FAQ","q1":{"question":"What is Drama 3?","answer":"Drama 3 is a text-to-speech model from Fish Audio built for direction. Alongside your script you can describe how a line should be performed, add sounds and pauses, and limit an effect to specific words."},"q2":{"question":"How do I write directions?","answer":"Put a direction or a sound in square brackets where it should happen, for example [sigh] or [barely holding it together]. To change only some words, select them and pick a scoped tag such as Whisper or Slower from the Tags menu; the editor wraps them in a paired tag."},"q3":{"question":"Can I write directions in other languages?","answer":"Yes. Write tags and directions in English or your own language."},"q4":{"question":"Does Drama 3 support multiple speakers?","answer":"Yes. Add speakers in the Text to Speech editor, give each one a voice, and Drama 3 generates the whole dialogue together."},"q5":{"question":"Can I use Drama 3 through the API?","answer":"Yes. Call the Text to Speech API with the model header set to drama-3. The same tags work in API requests."}}},"agents":{"meta":{"title":"Voice Agents – Real-Time AI Agents for Phone and Web | Fish Audio","description":"Build real-time voice agents with the most expressive AI voices. Answer your support line, book appointments and call customers back, on the web, in your app or over the phone."},"meta_live3":{"title":"Live 3: Full-Duplex Real-Time Voice Model for Voice Agents | Fish Audio","description":"Live 3 is Fish Audio’s full-duplex real-time voice model. It listens while it speaks, handles interruptions naturally and powers voice agents for phone and web.","ogTitle":"Full-duplex real-time voice"},"hero":{"title":"Voice agents that do more than talk","subtitle":"Build, deploy, and monitor AI voice agents that sound human, talk naturally, and get things done.","badge":"Introducing","badgeModel":"Live 3","build":"Build agent for free","sales":"Talk to Sales"},"demo":{"label":"Example calls","buildThis":"Build this agent","outcome":"Call outcome"},"scenes":{"title":"An agent for every call","description":"Support, bookings, orders, research and reminders, handled from first ring to final outcome."},"scenarios":{"support":{"label":"Customer support","tab":"Support","prompt":"You are Aria, a friendly support agent. Help callers with billing and account questions, check their details before you answer, and offer to connect them with a person when you can't resolve something. Keep replies under three sentences.","lines":{"l1":"AetherFlux support, this is Aria. How can I help?","l2":"Hi, I think I was charged twice this month.","l3":"I can see two $12 charges on May 3. I’ve refunded the duplicate, it’ll be back on your card in 3 to 5 days.","l4":"Perfect, thank you."},"result":"Refund issued · $12","impact":"Resolved on the first call, no handoff"},"booking":{"label":"Appointment booking","tab":"Booking","prompt":"You are Mia, the receptionist for a physiotherapy clinic. Help callers book, move or cancel appointments: ask the reason for the visit, offer two available times, and read back the date and time before you finish. Keep replies short and warm.","lines":{"l1":"Northside Physio, this is Mia. How can I help?","l2":"I’d like to book a follow-up for my knee.","l3":"Sure. I have Thursday at 9:30 or Friday at 4. Which works better?","l4":"Thursday morning, please.","l5":"Done, Amara. I’ll text you a reminder the day before."},"result":"Booked · Thu 9:30","impact":"6 hrs a week of scheduling, handed off"},"restaurant":{"label":"Restaurant reservations","tab":"Reservations","prompt":"You are the host for a restaurant. Take table reservations: ask for the date, time and party size, suggest the closest available time if the request is full, and confirm the booking with the caller's name. Keep replies short and welcoming.","lines":{"l1":"Good afternoon, Osteria Lina. How can I help?","l2":"A table for four on Saturday, around half past seven?","l3":"7:30 is full, but I can do 7:15 by the window. Shall I hold it for you?","l4":"Lovely, yes please."},"result":"Table for 4 · Sat 7:15","impact":"No missed calls during the dinner rush"},"orders":{"label":"Order support","tab":"Orders","prompt":"You are an order support agent for an online store. Help callers track orders and sort out missing or damaged items: confirm the order, explain what happens next, and arrange a replacement or refund when it is warranted. Keep replies clear and brief.","lines":{"l1":"Hi, you’ve reached Northwind Home. What can I do for you?","l2":"My order arrived, but the lamp shade is missing.","l3":"Sorry about that. I’ve sent a replacement shade, arriving Thursday. No need to return anything.","l4":"Great, that was quick."},"result":"Replacement sent","impact":"Solved in 36 seconds, no ticket opened"},"research":{"label":"Customer research","tab":"Research","prompt":"You are Ava, calling customers for quick feedback. Introduce yourself, ask whether they have two minutes, then ask one question at a time and note each answer. If they are busy, thank them and end the call politely.","lines":{"l1":"Hi Ingrid, it’s Ava from Lumen. Do you have two minutes for some quick feedback?","l2":"Sure, go ahead.","l3":"How easy was it to set up your team last week, from 1 to 5?","l4":"A four. Setup was smooth, billing was confusing."},"result":"Feedback logged","impact":"100 customers surveyed by 5pm"},"reminders":{"label":"Appointment reminders","tab":"Reminders","prompt":"You are Grace, calling patients to confirm tomorrow's appointment. Confirm the date and time, offer to reschedule if it no longer works, and offer to text directions. Keep the call under a minute.","lines":{"l1":"Hello Mr. Okafor, this is Grace from Riverside Clinic, calling about your check-up tomorrow at 10.","l2":"Oh yes, I’ll be there.","l3":"Wonderful. Would you like a text with directions?","l4":"That would be helpful, thank you."},"result":"Confirmed · Tue 10:00","impact":"One less no-show tomorrow"}},"wiring":{"title":"Serve every customer, at any scale, with the team you have.","description":"Every call is answered, understood and acted on in your own tools.","inbound":{"title":"Inbound calls","description":"Customers call your number"},"outbound":{"title":"Outbound calls","description":"Reaching out to customers"},"web":{"title":"Web and app","description":"Customers talk on your site or app"},"apis":{"title":"Your APIs","description":"Looks up orders, issues refunds"},"calendar":{"title":"Calendar and CRM","description":"Books slots, logs every call"},"team":{"title":"Your team","description":"Hands off with full context"},"events":{"inbound":"00:12","inboundCall":"refund()","outbound":"calling","outboundCall":"book()","web":"widget","webCall":"handoff ✓"},"customers":"Your customers","business":"Your business","agents":"Voice Agents","steps":{"listens":{"title":"Listens","description":"every caller, any language"},"understands":{"title":"Understands","description":"using your docs"},"acts":{"title":"Acts","description":"through your tools"}},"columns":{"answer":{"title":"Every customer gets an answer.","description":"Answered in seconds, day or night, in the caller’s language. Get issues resolved before they reach human."},"scale":{"title":"Scale without the wait.","description":"Handle a few calls or hundreds at the same time. No queue at peak hours, no new hires for the busy season."},"team":{"title":"Free your team for what matters.","description":"The agent screens every call and hands over a summary, so your team spends its time on the conversations worth having."}}},"pricing":{"title":"Simple, transparent pricing","rate":{"includes":"Includes Live 3, our full-duplex model","value":"$0.07","unit":"/ min","tag":"Base price","offerValue":"$0.035","offerTag":"50% off","offerEnds":"Limited-time offer, ends {date}","originalPrice":"Original price","duplex":"Full-duplex or cascaded, both supported","natural":"The most natural experience","observe":"Observe call quality and improve from conversations","tests":"Simulation tests, version history, and post-call analysis","start":"Start free","credit":"$5 credit, no card needed"},"addons":{"premiumLlm":"Premium LLM","premiumLlmDescription":"Switch to a larger model for complex reasoning. Billed at that model’s own token rate.","premiumLlmPrice":"+ token rate","phone":"Phone calls","phoneDescription":"Inbound and outbound calls over a phone number.","phonePrice":"+ $0.01 / min","phoneNumber":"Phone numbers","phoneNumberDescription":"A dedicated number for your agent. Bring your own carrier at no extra cost.","phoneNumberPrice":"$1.20 / mo"},"enterprise":{"eyebrow":"Enterprise","title":"Built to pass your security review.","zdr":"Zero data retention","sales":"Talk to sales","logos":"Fish Audio voices power products at"}},"spotlights":{"title":"Sounds human. Gets it right.","voice":{"title":"Build the agent you want, in minutes","p1":"2,000,000+ Fish Audio voices, including your own clone","p2":"Natural conversation experience with fine-tuning options","p3":"Interruption handling, silence re-engagement and response eagerness","action":"Open the builder","voices":"2,000,000+ voices","promptLabel":"System prompt","promptHint":"Personality, goals and guardrails that steer every reply.","promptIntro":"You are Lily, a warm and concise voice support agent for Fish Audio.","promptGreet":"• Greet the caller, then listen and identify their issue.","promptAnswer":"• Answer using the attached knowledge base. If you are unsure, say so and offer to connect a human. Keep replies under three sentences an…","firstMessageLabel":"First message","firstMessage":"Hi! Thanks for calling Fish Audio — how can I help you today?","names":{"ethan":"Ethan","lily":"Lily","aber":"Aber","sarah":"Sarah"}},"monitor":{"title":"Gets better with every call","p1":"Live monitor with recordings and turn-by-turn transcripts","p2":"Latency breakdown across end-of-utterance, LLM and speech","p3":"Automatic summaries, data extraction and success criteria","action":"View a sample conversation","agent":"Aria","live":"Live","updated":"Updated 2h ago","escalated":"Escalated","resolved":"Resolved","time":"14:00","agentGreeting":"Hi, welcome to Fish Audio customer support!","caller":"Hello. I’m a short-video creator and I just signed up for the free tier.","agentReply":"Our advanced voice cloning is available on the Creator/Pro plan, but you can preview our standard high-quality AI voices right now on the free tier!"},"tests":{"title":"Ship changes with confidence","action":"See how testing works","agent":"Voice Agent","agentHint":"Your real-time app","addTest":"Add Test","qa":"Q&A","toolCall":"Tool Call","followUps":"Follow-ups","assertions":"Assertions","description":"From single-turn checks to full simulated calls, test every change, keep every version, and ship knowing it works."}},"capabilities":{"title":"Everything a production voice agent needs","voices":{"title":"Expressive voices","description":"2,000,000+ voices in 30+ languages, with expressive mode, speaking speed and three model tiers."},"knowledge":{"title":"Knowledge base","description":"Upload PDFs, Markdown and URLs once, share them across agents, and keep answers grounded."},"tools":{"title":"Tools and webhooks","description":"Call your APIs mid-conversation. Import endpoints from cURL, add arguments and mock responses."},"tests":{"title":"Tests before every release","description":"Single-turn, multi-turn and tool-call tests, judged by an LLM against your success examples."},"telephony":{"title":"Phone numbers and transfer","description":"Rent or import numbers, take inbound and outbound calls, and transfer warm or cold to your team."},"analysis":{"title":"Analysis on every call","description":"Automatic summaries, structured data fields and success criteria, delivered by webhook and API."}},"tryAgent":{"open":"Talk to Fish Audio’s support agent","name":"Aria · Fish Audio support","connecting":"Connecting…","connected":"Connected · {time}","listening":"Listening…","mute":"Mute","unmute":"Unmute","end":"End call","close":"Close","micDenied":"Microphone access is blocked. Allow it in your browser to talk to the agent.","failed":"We couldn’t connect the call. Try again in a moment.","retry":"Try again"},"cta":{"title":"Give your product a voice today","subtitle":"Pick a template, make a test call in the browser, and publish to web, phone or API.","primary":"Start building free","secondary":"Talk to sales"},"faq":{"title":"Voice Agents FAQ","q1":{"question":"What is Voice Agents?","answer":"Voice Agents is a platform for building real-time voice agents. You configure an agent with a prompt, a voice, knowledge and tools, test it in the browser, and deploy it to your website, your app, the API or a phone number."},"q2":{"question":"How fast can I get a voice agent live?","answer":"Most teams make their first test call within minutes. Start from a template or a short description, try it in the browser, then publish it to the web, your app or a phone number."},"q3":{"question":"Which voices and languages are supported?","answer":"Agents can use any of the 2,000,000+ voices in the Fish Audio library across 30+ languages, or a voice you clone yourself. Expressive mode, speaking speed and model tier are set per agent."},"q4":{"question":"Can my agent use my own data and systems?","answer":"Yes. Upload PDFs, Markdown and URLs to a knowledge base for grounded answers, and connect tools that call your APIs during the conversation, such as refunds, bookings or CRM updates."},"q5":{"question":"How do I deploy an agent?","answer":"Add the website widget with two lines of HTML, build a custom experience with the React SDK, connect your own clients over WebRTC, or attach a phone number for inbound and outbound calls."},"q6":{"question":"Can calls be transferred to a human?","answer":"Yes. Agents can warm-transfer a call to your team and pass along the context, so the caller does not have to repeat themselves."},"q7":{"question":"How do I know my agent is working well?","answer":"Every call comes with a recording, a transcript, per-turn latency and an automatic summary. Define success criteria and run tests before each release to catch regressions."},"q8":{"question":"How much does it cost?","answer":"Speech recognition, the LLM and voice are billed together per minute, with add-ons such as premium LLMs and phone calls only when you use them. See the <pricingPage>pricing page</pricingPage> for current rates."}},"getStarted":{"title":"Get started in minutes.","tabs":{"phone":"Phone","website":"Website","sdk":"Web SDK","webrtc":"WebRTC"},"phone":{"description":"Rent a number on Fish Audio and connect it in one click. No code needed.","docs":"Phone setup docs"},"website":{"description":"Drop two lines of HTML on any page. No build step.","docs":"Widget docs"},"sdk":{"description":"Run the call inside your own UI with the browser SDK.","docs":"Web SDK docs"},"webrtc":{"description":"Bring your own client with the realtime protocol.","docs":"Protocol docs"},"copy":"Copy code","copied":"Copied","readDocs":"Read the docs","apiKey":"Get an API key"},"liveDemo":{"tabsLabel":"Pick an example","locked":"End the call to switch scenarios","tabs":{"company":"Your company","driveThru":"Drive-thru","retail":"Retail support","flight":"Flight change","phoneOrder":"Phone order","clinic":"Clinic"},"scenarios":{"driveThru":{"role":"Order taker","story":"You’re starving at a burger drive-thru. You want a double cheeseburger and a cola, but you’re on a diet, so hold the sauce.","keywords":["double cheeseburger","cola","hold the sauce"],"greeting":"Welcome to Harbor Burger! What can I get for you today?"},"retail":{"role":"Support agent","story":"You ordered a black hoodie, but now you’d rather have it in white. It hasn’t shipped yet. You’re Eric Brown, zip 50232.","keywords":["black hoodie","in white","Eric Brown"],"greeting":"Hi, thanks for calling Fernway support. How can I help with your order?"},"flight":{"role":"Reservations agent","story":"Your flight to New York tonight was just cancelled, and your friend’s wedding is tomorrow. Get on the next flight out. You’re Sarah Miller.","keywords":["New York","cancelled","next flight","Sarah Miller"],"greeting":"Northstar Air, rebooking desk. What’s the name on your booking?"},"phoneOrder":{"role":"Order taker","story":"Dinner’s on you tonight. Order two cheeseburger meals and 6 nuggets for pickup. You’re Alex, 415-555-0132.","keywords":["two cheeseburger meals","6 nuggets","Alex","415-555-0132"],"greeting":"Thanks for calling Harbor Burger! What can I get started for you?"},"clinic":{"role":"Front desk","story":"You’ve had a sore throat and a fever for three days. Book the earliest appointment you can. You’re Maria Lopez, born March 4, 1990.","keywords":["sore throat","earliest appointment","Maria Lopez","March 4, 1990"],"greeting":"Maple Street Family Clinic, front desk. How can I help you?"}},"language":"English (US)","call":"Start call","end":"End call","connecting":"Connecting…","ended":"Call ended  {time}","sales":"Talk to sales","share":{"label":"Share","copy":"Copy link","title":"Share {name}","post":"Talk to {name}, a voice agent built with Fish Audio.","story":"Story","more":"More","close":"Close","storyCall":"Talk to {name}","storyCopied":"Link copied. Add it to your story with a link sticker.","slackCopied":"Link copied. Paste it in Slack.","companyTitle":"AI voice agent","companyStory":"It answers like {company}’s own team. Talk to it on a live call.","companyCardTitle":"Your company’s AI agent, in seconds","companyCardText":"Enter your work email and talk to a voice agent that answers like your own team.","copyFailed":"Couldn't copy the link."},"retry":"Try again","openInBrowser":"Open in browser","copyLink":"Copy link","linkCopied":"Link copied","errors":{"inAppBrowser":"This app's built-in browser can't use the microphone. Open this page in your browser to talk to the agent.","micDenied":"Microphone access is blocked. Allow it in your browser to talk to the agent.","failed":"We couldn't connect the call. Try again in a moment."},"company":{"agent":"Your agent","support":"{company} support","askEmail":"Enter your work email. We’ll build an agent that answers like your own team.","askEmailLinked":"Enter your work email to talk to an agent that answers like {company}’s own team.","askCompany":"That’s a personal address. Which company should the agent work for?","emailPlaceholder":"Your work email","emailLabel":"Work email","companyPlaceholder":"Company website or name","companyLabel":"Company","build":"Build my agent","building":"Building","privacy":"We’ll use your email to follow up about Fish Audio. See our <link>privacy policy</link>.","invalidEmail":"Enter a valid work email.","invalidCompany":"Enter a company website, like acme.com, or its name.","steps":{"lookup":"Looking up {domain}…","search":"Searching the web…","read":"Reading {domain}…","brief":"Writing the briefing…","voice":"Finding the right voice for {company}…"},"ready":"Your agent for {company} is ready. Ask about free shipping, returns or store hours.","readyTopics":"Your agent for {company} is ready. Ask about {topics}.","readyKeywords":["free shipping","returns","store hours"],"change":"Change","fail":"We couldn’t find enough about {company}.","tryAnother":"Try another company"},"phone":{"call":"or call <n>{number}</n>","copied":"Copied"}}},"solutionShared":{"badgeTag":"NEW","playSample":"Play sample","pauseSample":"Pause sample","faqTitle":"Frequently asked questions"},"creativePublishing":{"meta":{"title":"Publish Your AI Images and Videos | Fish Audio Creative","description":"Publish your AI images and videos on Fish Audio Creative. We review each work before it appears on Explore, and you can earn credits when other people create from it."},"hero":{"title":"Publish your work, earn credits","description":"Put your Creative images and videos on Explore with your name on them. When other people recreate your work, you earn credits.","cta":"Publish a work"},"howTo":{"title":"How publishing works","s1":{"title":"Make something you like","description":"Create an image or a video in Creative. Any model and any mode can be published."},"s2":{"title":"Select Share","description":"Open the work, select Share, and keep Publish to Explore on. The share link works right away, and the work goes to review for Explore."},"s3":{"title":"Earn when people recreate it","description":"After approval, the work appears on Explore with your name. Each new person who recreates it counts toward your credit rewards."}},"credit":{"eyebrow":"Your name","title":"Your name on every work you publish","description":"Published works show who made them, on Explore and on your profile.","p1":"The work page shows your name and avatar","p2":"Your profile collects every work you have published","p3":"Creator partners get a badge next to their name"},"rewards":{"eyebrow":"Rewards","title":"When people recreate it, you earn credits","description":"When another person recreates your work or uses it as a reference, we record it for you.","p1":"One-click recreates and reference images both count","p2":"Works that many people recreate get a Popular mark","p3":"We pay rewards in credits and settle them periodically"},"visual":{"creatorBadge":"Creator partner","hot":"Popular","recreated":"Recreated","credits":"Credits"},"rules":{"title":"What we approve","description":"We review each work before it appears on Explore. If we do not approve it, you see the reason and can appeal once.","approvedTitle":"Works that do well","approved":{"original":"Your own original work","clear":"A clear subject and a finished, clean image","prompt":"A prompt that other people can learn from and reuse","fit":"Content that suits a general audience"},"rejectedTitle":"Works we do not approve","rejected":{"adult":"Sexual content or nudity","violence":"Graphic violence, hate, or harassment","realPeople":"Real people without their consent, or content that misleads about real events","copyright":"Characters, logos, or other content that you do not have the rights to","personalInfo":"Personal information, such as phone numbers or addresses","lowQuality":"Broken, very low-quality, or repeated works"}},"faq":{"title":"Publishing FAQ","q1":{"question":"Who can publish?","answer":"Anyone with a Fish Audio account can publish the images and videos they make in Creative. Every work is reviewed before it appears on Explore."},"q2":{"question":"Is my prompt public?","answer":"Yes. People who open your published work can see its prompt and reuse it. That is how recreates work."},"q3":{"question":"How are rewards calculated?","answer":"When another person recreates your work or uses it as a reference, we record it. If the same person recreates the same work more than once, only the first time counts. We pay rewards in credits and settle them periodically. Uses by you or your own workspace do not count. Reward amounts and settlement dates can change."},"q4":{"question":"Can I share my work before it is approved?","answer":"Yes. The share link works as soon as you publish, also while the review is in progress."},"q5":{"question":"What happens if my work is not approved?","answer":"Open the work and select Share. The Share and publish panel shows the reason, and you can appeal the decision once. The share link keeps working."},"q6":{"question":"Can I stop sharing a work?","answer":"Yes. Open the work, select Share, then select Stop sharing."}},"closing":{"title":"Ready to publish?","description":"Make an image or a video in Creative, then select Share.","cta":"Open Creative"}},"mobileApp":{"title":"Download\nFish Audio for Mobile","description1":"Turn words into natural-sounding speech with expressive AI voices.","description2":"Create voice clips for videos, podcasts, audiobooks, stories, and more.","description3":"Explore voices, shape delivery with tone and emotion, and save or share your audio projects wherever you create.","qrAlt":"QR code to download Fish Audio for {platform}","heroAlt":"Fish Audio mobile app text-to-speech screen with emotion tags"}},"enterprise":{"title":"Enterprise","access":{"title":"Access","loading":"Checking access…","load_failed":"Couldn't load your access.","retry":"Retry","denied_capability":"You don't have the {capability} permission.","denied_scope":"Your {capability} permission doesn't cover this customer.","denied_not_principal":"You don't have enterprise access.","denied_generic":"You don't have permission to do this.","denied_channel":"{capability} isn't available through this sign-in method.","denied_api_key":"This API key can't use {capability}.","denied_api_key_forbidden":"{capability} can't be used with an API key.","denied_api_key_policy_required":"{capability} needs an enterprise key policy on this API key.","denied_api_key_policy_disabled":"This API key's enterprise key policy is disabled.","denied_api_key_policy_mismatch":"This API key's enterprise key policy belongs to another user.","denied_api_key_expiry_invalid":"{capability} needs this API key to expire within 90 days of its key policy.","denied_api_key_scope":"This API key's policy doesn't include {capability}.","denied_admission_required":"{capability} needs the Finance permission on your account.","locked_title":"Explicit grant required","locked_body":"Viewing this requires {capability}.","open_access_tab":"Go to Access","required_capability":"Requires {capability}","required_either":"Requires {first} or {second}","needs_one":"Needs this access: {description}","needs_any":"Needs one of these:","locked_admission":"Your grant includes this, but your account doesn't have the Finance permission.","gate":{"requires_any":"Requires one of {capabilities}"},"tab":{"load_failed":"Couldn't load this section.","save_failed":"Couldn't save the change.","refresh":"Refresh","never":"Never","no_expiry":"No expiry","prev":"Previous","next":"Next","page_label":"Page {page}","page_of":"Page {page} of {pages}","scope_all":"All customers","scope_owned":"Owned customers","scope_customers":"{count, plural, one {# customer} other {# customers}}","scope_none":"No customers","channel_session":"Session","channel_api_key":"API key"},"my":{"title":"My access","channel":"Channel","super_admin":"Super-admin","legacy_implicit":"Legacy implicit","families":"Families","no_families":"No families","scope":"Scope","capabilities_count":"{count, plural, one {# capability} other {# capabilities}}","other_family":"Other","withheld":"Not in effect","withheld_admission":"Your grants include these, but your account doesn't have the Finance permission."},"family":{"read":"Enterprise reads","confidential_read":"Confidential documents","finance_read":"Billing reads","draft":"Drafting","legal":"Contracts & signing","billing":"Billing operations","config":"Configuration","agent":"Customer agent","selfhost":"Self-hosting","senior":"Senior overrides","grant":"Access management","finance":"Finance data","engineering":"Engineering views","offboard":"Offboarding"},"keys":{"title":"My API keys","description":"Your platform API keys and their key policy.","empty":"You have no platform API keys.","col_key":"Key","col_expiry":"Expiry","col_policy":"Key policy","col_last_used":"Last used","edit":"Edit policy","dialog_title":"Edit key policy","expires_on":"Expires {date}","expired_on":"Expired {date}","no_expiry":"No expiry","policy_valid":"policy valid","policy_beyond_window":"expiry beyond the 90-day policy window","policy_cannot_apply":"policy cannot apply","policy_disabled":"policy disabled","no_policy":"no policy","policy_none":"No policy","disabled_badge":"Disabled","no_scopes":"No scopes","not_held":"Not in your access","key_forbidden":"Not usable with API keys","scopes_families":"Scopes: families","scopes_capabilities":"Scopes: capabilities","search_capabilities":"Search capabilities","no_options":"Nothing to choose from.","selected_count":"{count, plural, =0 {No scopes selected} one {# scope selected} other {# scopes selected}}","disabled_label":"Disabled for admin access","note":"Note","saved_toast":"Key policy saved."},"grants":{"title":"Grants","new_grant":"New grant","filter_principal":"Principal","all_principals":"All principals","filter_status":"Status","status_all":"All statuses","status_active":"Active","status_pending_entry":"Pending entry","status_revoked":"Revoked","status_expired":"Expired","col_principal":"Principal","col_access":"Role / families","col_scope":"Scope","col_expiry":"Expiry","col_status":"Status","col_granted_by":"Granted by","col_reason":"Reason / request","empty":"No grants.","revoke":"Revoke","revoke_title":"Revoke grant","revoke_summary":"{principal} · {access}","revoked_line":"Revoked: {reason}","revoked_toast":"Grant revoked.","created_toast":"Grant created.","created_pending_toast":"Grant created — pending until the user holds the enterprise or finance permission.","created_pending_admission_toast":"Grant created — it takes effect once the user has the Finance permission.","legacy_label":"Legacy implicit","legacy_on":"On","legacy_off":"Off","legacy_turn_on":"Turn on legacy implicit","legacy_turn_off":"Turn off legacy implicit","legacy_on_title":"Turn on legacy implicit","legacy_off_title":"Turn off legacy implicit","legacy_on_summary":"{principal} gets Admin access to all customers.","legacy_off_summary":"{principal} keeps only their explicit grants.","legacy_changed_toast":"Legacy implicit updated.","create_title":"New grant","create_submit":"Create grant","principal":"Principal","principal_placeholder":"Choose a user","principal_search":"Search by email or user ID","principal_empty":"No matching users.","principal_manual":"Enter a user ID instead","principal_roster":"Choose from the roster instead","user_id":"User ID","user_id_placeholder":"User ID","user_check":"Check","user_found":"Found: {email}","user_missing":"No user with this ID.","role":"Role","role_none":"No role","family_in_role":"Included in {role}","beyond_own_access":"Beyond your own access: {items}","badge_needs_finance":"Needs the Finance permission","families":"Families","families_empty":"No families.","scope":"Scope","scope_all":"All customers","scope_customers":"Selected customers","scope_owned":"Owned customers","scope_fixed_all":"All customers — finance access can't be narrowed to selected customers.","customers":"Customers","customers_search":"Search customers","customers_empty":"No customers.","expiry":"Expiry date (UTC)","request_ref":"Request reference","reason":"Reason","summary":"Grants:","summary_capabilities":"{count, plural, one {# capability} other {# capabilities}}","error_principal":"Choose a principal.","error_access":"Choose a role or at least one family.","error_customers":"Choose at least one customer.","error_expiry":"Choose today or a later date.","error_reason":"Enter a reason of at least 8 characters.","error_exceeds":"Beyond your own access: {missing}","error_scope_not_applicable":"Finance access can only be granted for all customers."},"review":{"title":"Access review","export_csv":"Export CSV","generated":"Generated {time}","principal_count":"{count, plural, one {# principal} other {# principals}}","anomaly_count":"{count, plural, one {# principal with anomalies} other {# principals with anomalies}}","empty":"No principals.","col_principal":"Principal","col_platform":"Platform permissions","col_families":"Effective families","col_legacy":"Legacy implicit","col_scope":"Scope","col_expiry":"Earliest grant expiry","col_keys":"API key policies","col_last_used":"Last use","col_anomalies":"Anomalies","badge_service":"Service","badge_deleted":"Deleted","badge_no_entry":"No entry permission","grant_count":"{count, plural, =0 {No grants} one {# grant} other {# grants}}","key_active":"Active","key_disabled":"Disabled","key_expired":"Key expired","key_missing":"Key deleted","key_scopes":"{count, plural, one {# scope} other {# scopes}}","last_event":"Last grant event {time}","anomaly_grant_without_entry":"Grant without entry","anomaly_entry_without_grant":"Entry without grant","anomaly_policy_orphan":"Key policy without key"},"events":{"title":"Grant history","empty":"No grant events.","escalation":"Escalation","by":"By","kind_grant_created":"Grant created","kind_grant_revoked":"Grant revoked","kind_grant_expired":"Grant expired","kind_grant_activated":"Grant activated","kind_principal_legacy_implicit_changed":"Legacy implicit changed","kind_apikey_policy_changed":"Key policy changed","kind_platform_permissions_changed":"Platform permissions changed","kind_platform_impersonation":"Impersonation"},"log":{"title":"Access log","filter_who":"Rows","who_mine":"Mine","who_everyone":"Everyone","filter_actor":"Actor user ID","filter_capability":"Capability","filter_from":"From (UTC)","filter_to":"To (UTC)","filter_channel":"Channel","channel_all":"All channels","filter_status":"Status","status_all":"All statuses","status_2xx":"Success (2xx)","status_4xx":"Refused (4xx)","status_5xx":"Error (5xx)","empty":"No access log rows.","col_time":"Time","col_actor":"Actor","col_channel":"Channel","col_capability":"Capability","col_route":"Route","col_customer":"Customer","col_status":"Status","col_ip":"IP"},"preview":{"view_as":"View as","self":"My access","roles_failed":"Couldn't load the roles.","banner":"Previewing as {role} — UI only: data and requests still use your own access","banner_loading":"Loading the {role} preview…","banner_failed":"Couldn't load the {role} preview.","exit":"Exit preview","write_blocked":"Preview mode — nothing was sent."}},"landing":{"banner":{"apiOffer":"Drama 3 API <b>80% off</b>","message":"New enterprise customers get 1 month free, or 3 if switching. Sign by 10/31.","terms":"Terms","contactSales":"Contact Sales"},"hero":{"title":{"line1":"Enterprise","line2":"voice infrastructure"},"subtitle":"Built for teams shipping voice at scale. The voice model behind applications where getting it right, every time, matters.","ctaSales":"Talk to sales","ctaModel":"Hear the model","ctaPricing":"See pricing"},"demo":{"tryIt":"Try it","code":"Code","sampleLine":"Suddenly, the door burst open!","sampleTag":"","language":"English","voice":"Chris","playLabel":"Play demo","footnote":"S2 Pro running live. Pick a voice, type a line, hear it back. The same model behind production teams with no signup, no sales call, no demo environment."},"stats":{"languages":{"value":"8M","suffix":"+","label":"Builders"},"voices":{"value":"4.6M","suffix":"","label":"Requests per day"},"rate":{"value":"26","suffix":"%","label":"Lower word error rate"},"latency":{"value":"<70","suffix":"ms","label":"Latency"}},"trusted":{"title":"Trusted by teams building voice in production"},"reasons":{"titlePrefix":"Why teams ","titleEmphasis":"build with us.","description":"Most TTS sounds fine in a demo. Fish is built for what comes after — production traffic, edge-case pronunciation, multilingual code-switching, sovereign deployments, and the kind of total cost that lets you scale instead of just survive.","items":{"1":"Production-tested across enterprise scale.","2":"The most expressive voice AI. Direct it, don't just pick it.","3":"80+ languages, with native Asian-language depth.","4":"2 million voices, one of the largest ecosystems in voice AI.","5":"Self-host the model, on your infrastructure.","6":"Built for how you actually grow."},"diagram":{"panels":{"production":{"description":"S2 Pro is listed on the Artificial Analysis voice leaderboard and powers production deployments at HeyGen, Retell, and Sanas — handling real traffic, edge-case pronunciation, and the kind of multi-region load that surfaces what benchmarks miss.","top":{"title":"Production","description":"Listed on Artificial Analysis · public methodology"},"right":{"title":"Pronunciation","description":"Custom dictionaries · numbers, names, domain terms"},"left":{"title":"Benchmarks","description":"Powering HeyGen, Retell, Sanas, FinalRound"}},"direction":{"description":"15,000+ natural-language direction tags. Describe what you want — '{warm, conversational, slight Boston accent, ending on a soft falling tone}' — and Fish renders it. S2 Pro passes the Audio Turing Test with a published 0.515 score: listeners cannot reliably distinguish it from human speech. Methodology and raw audio are public.","top":{"title":"Direction tags","description":"15,000+ natural-language controls"},"right":{"title":"Code-switching","description":"Real-time, mid-sentence, no model swap"},"left":{"title":"Audio Turing","description":"0.515 published score · methodology open"}},"language":{"description":"Native-quality Mandarin, Japanese, Korean, and Cantonese — with instant code-switching across English, Mandarin, Japanese, Spanish, and Arabic. The APAC coverage other voice vendors are still promising for next quarter ships in production today.","top":{"title":"Tier 1","description":"EN · ZH · JA · KO · ES · PT · DE · FR"},"right":{"title":"APAC depth","description":"Cantonese · Thai · Bahasa · Vietnamese · Tagalog"},"left":{"title":"Code-switching","description":"Real-time, mid-sentence, no model swap"}},"clone":{"description":"Browse 2M+ creator-trained voices ready to use today — or clone your own from 30 seconds of audio. No slot quotas, no per-voice fees. Voice cloning with consent verification built into the workflow.","top":{"title":"Browse","description":"Filter by language, age, persona, use case"},"right":{"title":"Clone","description":"30s reference · instant voice cloning"},"left":{"title":"Consent","description":"Voice verification on every clone"}},"deployment":{"description":"For regulated workloads, sovereign deployments, and teams that need full control of the model running in production — Fish offers self-hosting as a premium enterprise tier. Run on your VPC, your air-gapped environment, or your data center. The architecture procurement asks for and rarely gets.","top":{"title":"Setup","description":"From $10K platform fee · one-time"},"right":{"title":"Minimum spend","description":"$10K/mo · 12-month commit"},"left":{"title":"Deployment","description":"VPC · on-prem · air-gapped · sovereign cloud"}},"pricing":{"description":"$15 per million characters — flat, predictable, the same per-character rate from your first API call to your billionth. Volume discounts compound as you scale, across multiple tiers, all negotiated with one team. No seat fees. No surprise gatekeeping for production rates.","top":{"title":"List price","description":"$15 / 1M characters"},"right":{"title":"Volume discounts","description":"Apply at scale · commitment-based"},"left":{"title":"Bundling","description":"TTS + ASR + self-host cross-product discounts"}}}}},"supportSection":{"title":"Premium support.","subtitle":"Because your customers are always listening.","cards":{"production":{"title":"24/7 production support","description":"Get direct access to voice AI experts with response commitments for issues that impact your customer experience."},"account":{"title":"Technical account manager","description":"Access a dedicated team that understands your voice stack, helps resolve complex issues, and supports you as you scale."},"sla":{"title":"99% uptime SLA","description":"Rely on infrastructure commitments designed to keep your voice applications available, responsive, and ready for every interaction."},"custom":{"title":"Custom services","description":"Work with our engineers on architecture reviews, integrations, performance tuning, and bringing production voice experiences to life."}}},"results":{"titlePrefix":"Production results, ","titleEmphasis":"not demo wins.","description":"The headline isn't quality. It's what teams achieved after they switched. Each story is a quantified outcome, written by the customer.","readCaseStudy":"Read the case study","previous":"Previous customer story","next":"Next customer story","cards":{"heygen":{"before":"Selected ","emphasis":"3-to-1 over alternatives","after":" for voice cloning with non-American English accents."},"pictoria":{"before":"Powering ","emphasis":"character-level expressiveness","after":" for Japanese AI characters inside Picto VOICE."},"dubbing":{"before":"Real-time Voice Agent TTS for ","emphasis":"10M+ users","after":" - naturalness, emotion, latency, multilingual."},"retell":{"before":"Production voice agents with ","emphasis":"real-time orchestration","after":" for enterprise conversations."},"finalRound":{"before":"","emphasis":"25%+ longer engagement on AI interviews","after":" · ~10x lower voice cost with Fish Audio"},"befreed":{"before":"BeFreed builds AI-powered audio lessons that sound like real conversations","emphasis":"","after":""},"reverie":{"before":"Reverie AI builds entertainment that talks back with Fish Audio","emphasis":"","after":""}}},"categories":{"titleLine1":"Six categories of voice product,","titleEmphasis":"shipping in production today.","description":"From avatar video to multilingual customer support - every category below is a real enterprise deployment running on Fish, not a roadmap promise.","cards":{"agent":{"title":"Voice for AI agent"},"companion":{"title":"Character & companion apps."},"avatar":{"title":"Avatar & Video Voiceover"},"support":{"title":"Multilingual customer support.","description":"Mandarin · Japanese · Korean · Cantonese"},"cloning":{"title":"Voice cloning at scale.","description":"2M-voice ecosystem · 30-sec clone"},"translation":{"title":"Audio translation & dubbing.","description":"Across all 80+ languages · code-switching"}}},"stack":{"title":"Plugs into the voice-agent stack you already use.","description":"Drop-in support for the orchestration, telephony, and infrastructure tools voice teams ship with today. SDKs for every major language. WebSocket streaming, REST, and inbound webhook patterns documented.","cards":{"pipecat":"Real-time pipelines","livekit":"WebRTC infrastructure","n8n":"Workflow automation","vapi":"Voice agent platform","twilio":"Telephony · SIP · SMS","retell":"Voice agent orchestration"}},"customerCall":{"title":"The boring things that matter on a customer call.","description":"Start at the Enterprise tier for production deployments. Volume discounts apply at higher commitment levels - talk to sales for the pricing that matches your traffic profile. For sovereign deployments, the premium self-host tier is available with a separate setup and commitment structure.","metrics":{"sla":{"prefix":"Up to","value":"99","suffix":"%","label":"UPTIME SLA","note":"Available on premium enterprise tier"},"latency":{"prefix":"<","value":"150","suffix":"ms","label":"FIRST AUDIO (CLOUD)","note":"Verified across US, EU, APAC regions"},"streams":{"value":"Custom","label":"CONCURRENT STREAMS","note":"50+ at High Volume · custom at Enterprise tier"},"languages":{"value":"80","suffix":"+","label":"LANGUAGES","note":"With native-quality voices and code-switching"}}},"pricing":{"title":"Built for how you actually grow.","descriptionLeft":"One enterprise tier. Flat per-character pricing. Volume discounts that compound across multiple tiers as you scale - negotiated with one team, in one contract.","descriptionRight":"Start at the Enterprise tier for production deployments. Volume discounts apply at higher commitment levels - talk to sales for the pricing that matches your traffic profile. For sovereign deployments, the premium self-host tier is available with a separate setup and commitment structure.","columns":{"inclusions":"Plan Inclusions","enterprise":"Enterprise Plan","notes":"Terms & Notes"},"rows":{"starting":{"label":"Starting Price","value":"From $999 / month","note":"Volume discounts at higher commitment tiers"},"s2":{"label":"TTS · S2 Pro","value":"$15 / 1M characters","note":"Billed in UTF-8 bytes · about 180K English words per 1M"},"asr":{"label":"ASR · transcribe-1","value":"$0.36 / audio hour","note":"Duration rounded up to the nearest second"},"concurrency":{"label":"Concurrency","value":"Custom","note":"50+ at High Volume tier · custom at Enterprise"},"voices":{"label":"Voices","value":"Unlimited","note":"No slot quotas · no per-voice fees"},"rollover":{"label":"Rollover","value":"90 days","note":"Unused credits roll forward 90 days"},"sla":{"label":"SLA","value":"Up to 99%","note":"Available on premium enterprise tier"},"support":{"label":"Support","value":"Dedicated Slack channel","note":"Compliance SOC2 / HIPAA upon requests"},"selfHost":{"label":"Self-host premium","value":"From $10K setup + $10K / month","note":"12-month commit · VPC · on-prem · air-gapped · sovereign cloud"}},"footnote":"Volume discounts available across multiple tiers - contact sales for pricing that matches your traffic profile. Public pricing reflects Enterprise tier entry. Larger commitments unlock further discounts on a per-customer basis."},"cta":{"title":"Ready when you are.","description":"Talk to our team about your deployment. We'll come prepared.","sales":"Talk to sales","review":"Book a technical review"},"faq":{"title":"Frequently asked questions","rows":{"dataResidency":{"question":"Where is my data stored? Do you support U.S., EU, and APAC residency?","answer":"By default your data stays in the United States, hosted on Google Cloud with Cloudflare R2 storage, and inference runs from edge regions in the U.S. and Asia-Pacific (Tokyo) so your users get low latency wherever they are. For compliance-bound workloads, enterprise contracts can switch on Zero Data Retention, which means request text and audio are never written to disk. And if your data has to stay inside a specific country or region, the self-hosted enterprise tier runs fully inside your own infrastructure, so nothing ever leaves your environment."},"scale":{"question":"Can you support large-scale deployments and traffic spikes?","answer":"Yes, and at serious volume. Capacity is provisioned as concurrent generations that scale with your contract, and we already have production customers running more than 1,000 concurrent generations. A Rust edge gateway serves inference across multiple GPU regions, so when your traffic surges our team can lift your limits the same day. You scale up without ever queuing behind a support ticket."},"security":{"question":"What security certifications do you have?","answer":"Security runs through every layer of the platform. Our SOC 2 Type II audit is currently underway, and the report will be available to customers under NDA once it is complete. Zero Data Retention is available on enterprise contracts, so request payloads are never persisted, and the self-hosted tier keeps every byte of your data inside your own environment. We also support HIPAA-aligned configurations and can sign a BAA for qualifying healthcare workloads, and independent penetration testing runs as part of our ongoing compliance program."},"engineering":{"question":"Do you offer engineering support for custom deployments?","answer":"Absolutely. Enterprise customers get a direct line to our engineering team, not a ticketing queue, on whatever channel suits how your team works. We ship integration-specific features and protocol extensions for individual customers on a regular basis, and we stand up self-hosted deployments with you end to end, from first setup through go-live."},"sso":{"question":"Do you support SSO and RBAC?","answer":"Yes, with fine-grained control from day one. Role-based access control lets you assign owner, admin, and member roles at the team level, plus manager, contributor, and viewer roles at the workspace level, so everyone has exactly the access they should. Single sign-on works today through Google and GitHub OAuth."},"customModels":{"question":"Can we fine-tune models on our data, or use our own voices?","answer":"Both, and on your terms. You can spin up private voice clones from as little as 10 seconds of reference audio, 30 seconds or more for the best results, instantly through the API or the web UI, and they stay fully private to your team. For deeper engagements, we also fine-tune custom models on your own data."},"migration":{"question":"What about migration from another voice vendor?","answer":"Migrating to Fish Audio is straightforward, and most teams are surprised how quickly it goes. Your existing voices come across by recreating them from reference audio, our Python, TypeScript, and Go SDKs and WebSocket streaming API cover the integration patterns you already rely on, and our engineering team runs the cutover alongside you so production never skips a beat."}}}},"tabs":{"contracts":"Contracts","customers":"Customers","invoices":"Invoices","dashboard":"Dashboard","onboarding":"Onboarding","templates":"Templates","audit":"Audit","proposals":"Proposals"},"dashboard":{"active_contracts":"Active contracts","customer_count":"{count, plural, =1 {# enterprise customer} other {# enterprise customers}}","workflow_queue":"Workflow queue","workflow_queue_subtitle":"Legal, signature, onboarding, and draft work","open_invoice_value":"Open invoice value","open_invoice_subtitle":"Draft, sent, overdue, and partially paid invoices","onboarding_links":"Onboarding links","total_links":"{count, plural, =1 {# total link} other {# total links}}","needs_attention_title":"Needs attention","needs_attention_description":"Overdue invoices, billing holds, suspended bypasses, and contract workflow — most urgent first.","nothing_needs_attention":"Nothing needs attention.","group_overdue_invoices":"Overdue invoices","group_invoice_holds":"Invoice holds","group_suspended_bypasses":"Suspended overdraft bypasses","group_contract_workflow":"Contract workflow","invoice_number":"Invoice #{number}","overdue":"Overdue","days_overdue":"{days, plural, =1 {# day overdue} other {# days overdue}}","deadline":"deadline {date}","awaiting_manual_usage":"Awaiting manual usage","suspended_at":"Suspended {date}","bypass_suspended":"402 bypass suspended","updated_at":"updated {date}","billing_operations_title":"Billing operations","billing_operations_description":"Manual controls for invoice generation and rollover expiry.","generate_cycle_invoices":"Generate cycle invoices","generate_invoices_confirm_title":"Generate cycle invoices?","generate_invoices_confirm_description":"This runs the enterprise billing job for active billing cycles. It may create invoice records and should only be run after checking current open invoices and billing dates.","confirm_invoice_generation":"Confirm invoice generation","run_credit_rollover":"Run credit rollover","rollover_confirm_title":"Run credit rollover?","rollover_confirm_description":"This checks enterprise credit expiry and may deduct expired rollover credits from customer API balances. Run it only after confirming rollover policy and current usage data.","confirm_rollover_run":"Confirm rollover run","upcoming_billing_title":"Upcoming billing","upcoming_billing_description":"Active subscriptions by next billing date.","no_upcoming_billing":"No active subscription billing cycles.","bills_on":"bills {date}","commit_amount":"{amount} commit","payg":"PAYG","scheduled_activations_title":"Scheduled activations","scheduled_activations_description":"Parked contracts that go live automatically on their effective date.","scheduled_activates_on":"activates {date}","scheduled_trial_until":"trial until {date}","toast_generated_invoices":"{count, plural, =1 {Generated # invoice.} other {Generated # invoices.}}","toast_checked_contracts":"{count, plural, =1 {Checked # contract.} other {Checked # contracts.}}","billing_held":{"title":"{count, plural, =1 {# contract was left out of this run} other {# contracts were left out of this run}}"},"action_items":{"title":"Action items","hint":"Cross-system checks — Mercury pairing, invoice flow, and QuickBooks.","groups":{"mercury_unpaired":"No Mercury pairing","email_out_of_sync":"Billing email out of sync","team_unbound":"No team bound","draft_unsent":"Unsent draft invoices","pending_adjustments":"Pending adjustments","amount_mismatch":"Amount mismatch vs Mercury","invoice_holds":"Invoice holds","qbo_payment_error":"QuickBooks payment errors","qbo_payment_review":"QBO payments needing review","legacy_qbo_open":"Open legacy QuickBooks invoices","signature_requested":"Customer requested signing","change_requested":"Customer change requests","assessment_due":"Assessment due","assessment_renewal_minimums":"§3.9 renewal minimums","assessment_shortfall_streak":"§8.4 shortfall streak (alert only)","commitment_release_window":"Evaluation opt-out window open","team_mismatch":"Customer bound to a team its contracts don't meter on","team_move_pending":"Team moves pending or failed","unclassified_money_terms":"Money-bearing paper terms without an owner","usage_outside_billing":"Usage outside contract billing","commitment_level_review":"Quarterly commitment reviews","incorporated_document_capture":"Incorporated documents to capture","covered_tts_new_backend":"New TTS model on covered contract","sla_credit_pending_approval":"SLA credits awaiting approval","sla_chronic_termination_right":"SLA termination right open","sla_record_changed_after_credit":"SLA record changed after credit","settlement_refund_pending":"Settlement refunds pending","post_close_unclaimed_events":"Post-close usage not invoiced","overdue_30_days":"Invoices 30+ days overdue","term_end_notice":"Term ending within 60 days","legacy_debit_restore_attention":"Legacy debit restores needing attention","overdraft_trip_requests":"Hard stop requests","runtime_signals_red":"Runtime alerts","runtime_signals_amber":"Runtime warnings","level_up_retroactive_correction":"Level-up retroactive corrections","amendment_approval_required":"Signed amendments awaiting approval","team_setting_pending":"Team settings to apply","model_coverage_decision":"Model outside the contract — rate to decide","import_engineering_questions":"Import terms sent to engineering"},"group_hints":{"assessment_renewal_minimums":"Renewal-term minimums the engine derived from the trailing two-quarter average — verify each against the paper. BLOCKED rows could not be derived and need a minimum_assessment amendment.","assessment_shortfall_streak":"Two consecutive quarters below the alert threshold, not cured by banked excess. Informational only — no automatic contract change; the notice window is in the text.","commitment_release_window":"The customer may still terminate with the Commitment released. An opt-out is recorded from the contract's Terminate card (evaluation opt-out).","unclassified_money_terms":"Paper fees or rates the billing engine does not charge on its own. Each is classified on the contract's Unsupported terms card (engine handles, manual process with owner and cadence, or waived); BLOCKED rows are pending activation and cannot go live until then.","usage_outside_billing":"Last month's package-credit and agent consumption on contract teams that contract invoices do not include. Package credits may be customer-funded (self-serve top-ups or plan credits), so \"not in contract billing\" does not mean unbilled. An item retires once a matching money-bearing paper term is classified.","model_coverage_decision":"A customer used a model its contract doesn't list. The invoice that bills it waits for the rate decision.","import_engineering_questions":"Terms an import review could not hold as written and sent to engineering. Each still needs a handling before create."},"item_blocked":"Blocked","mercury_unreachable":"Mercury unreachable","empty":"All clear","load_error":"Couldn't load action items.","signal_kind":{"overdraft_exposure":"Exposure threshold","overdraft_cap_exceeded":"Cap exceeded","agent_usage_uncovered_contract":"Agent usage without coverage decision","excluded_family_usage_settled":"Excluded family usage settled","excluded_family_asset_present":"Excluded family asset present","unpriced_sku":"Usage without a rate","free_window_exposure":"Free-period exposure","media_duration_fallback":"Video duration from quote","media_quantity_unknown":"Media quantity unknown","mapped_sku_unavailable":"Mapped model unavailable","agent_ledger_mismatch":"Agent ledger mismatch","decision_version_unknown":"Unknown decision version","media_contract_resolver_degraded":"Media agreement lookup degraded","import_parity_failed":"Import parity failed","import_canary_failed":"Import deploy canary failed","renewal_term_invalid":"Renewal length can't renew the term","scheduled_amendments_failed":"Scheduled amendments stopped part-way","billing_held_by_amendment":"Billing held: amendment not applied","agent_admission_held":"Agent sessions no longer admitted","import_engineering_question":"Term sent to engineering from the import","import_rate_decision_waiting":"Model price waits for its second approver","import_after_create_step_for_person":"Step after create left to a person"},"acknowledge":"Acknowledge","system":"System","team_setting_kind":{"team_setting_pending":"Not applied","team_setting_mismatch":"Changed since applied"}},"start_import_signed":"Import signed contract"},"invoices_coming_soon":"Invoices coming soon.","invoices":{"quickbooks_title":"Billing integration — QuickBooks ledger","quickbooks_description":"QuickBooks is the accounting LEDGER mirror only — collection runs through Mercury (per-customer virtual accounts). This connection powers the automatic mirror copies.","connected":"Connected","not_connected":"Not connected","needs_reconnect":"Reconnect required","environment":"Environment","realm_id":"Realm ID","access_token_expires_at":"Access token expires","refresh_token_expires_at":"Refresh token expires","last_refreshed_at":"Last refreshed","connect":"Connect QuickBooks","reconnect":"Reconnect QuickBooks","refresh_access_token":"Refresh access token","clear_filters":"Clear filters","check_invoices":"View invoices","customer_id":"Customer ID","load_error":"Failed to load QuickBooks status.","connected_toast":"QuickBooks connected.","failed_toast":"QuickBooks connection failed.","refresh_token_toast":"QuickBooks access token refreshed.","refresh_token_error":"Failed to refresh QuickBooks access token.","generate_test":"Generate test invoice","test_dialog_title":"Generate test invoice","test_dialog_description":"Pick a customer and contract to create a draft test invoice for QuickBooks validation.","test_customer_label":"Customer","test_customer_select":"Select a customer...","test_contract_label":"Contract","test_contract_select":"Select a contract...","test_contract_empty":"No contracts are available for the selected customer.","manual_create_non_mercury_hint":"This customer's contracts are not billed via Mercury — manual invoices are Mercury-only.","test_generated_toast":"Test invoice generated.","test_generate_error":"Failed to generate test invoice.","next_title":"Next backend milestones","next_description":"This foundation is ready. The next slice will add monthly billing generation, overdue checks, and invoice and usage APIs.","next_billing":"Monthly billing cron and invoice generation","next_overdue":"Overdue, paid, and void lifecycle sync","next_usage":"Invoice list and usage overview APIs","status_labels":{"draft":"Draft","sent":"Sent","paid":"Paid","partially_paid":"Partially paid","overdue":"Overdue","void":"Void","write_off":"Write off","settled_by_credit":"Settled by credit"},"sync_labels":{"pending":"Pending sync","synced":"Synced","failed":"Sync failed","skipped":"Skipped","mercury_pending":"Awaiting Mercury send","mercury_not_linked":"Not on Mercury"},"generate_monthly":"Generate monthly invoices","generated_toast":"Generated {count} invoices.","generate_error":"Failed to generate monthly invoices.","list_title":"Invoices","list_description":"{count, plural, =1 {# invoice loaded} other {# invoices loaded}}","list_error":"Failed to load invoices.","empty":"No invoices yet.","table":{"customer":"Customer","period":"Billing period","status":"Status","total":"Total","quickbooks":"Ledger (QBO)","actions":"Actions","number":"Invoice #"},"detail_title":"Invoice details","detail_customer":"Customer","detail_due_date":"Due date","detail_actual_usage":"Actual usage","detail_total":"Invoice total","products_title":"Product breakdown","products_service":"Service","products_count":"Quantity","products_runtime":"Runtime","products_invoice":"Invoice","backends_title":"Backend breakdown","backends_service":"Service","backends_backend":"Backend","backends_count":"Quantity","backends_runtime":"Runtime","backends_invoice":"Invoice","no_usage_breakdown":"No usage breakdown recorded for this invoice.","no_backend_breakdown":"No backend breakdown recorded for this invoice.","resync":"Resync QuickBooks","bind_quickbooks":"Bind QuickBooks invoice","mark_paid":"Mark paid","void":"Void invoice","resynced_toast":"Invoice resynced.","resync_error":"Failed to resync invoice.","bind_quickbooks_prompt":"Enter the existing QuickBooks invoice ID to link this manually-settled invoice (avoids creating a duplicate).","bind_quickbooks_toast":"Invoice linked to QuickBooks.","bind_quickbooks_error":"Failed to bind QuickBooks invoice.","mark_paid_toast":"Invoice marked as paid.","mark_paid_error":"Failed to mark invoice as paid.","create_manual":"Create invoice","manual_dialog_title":"Create manual invoice","manual_dialog_description":"Creates a draft invoice on the selected contract. It flows through the standard Mercury review pipeline — nothing reaches the customer until you send it.","manual_amount_label":"Amount (USD)","manual_description_label":"Description","manual_description_hint":"Customer-visible — becomes the single line item on the invoice (min 8 characters).","manual_due_date_label":"Due date (optional)","manual_created_toast":"Draft invoice created.","manual_create_error":"Failed to create the invoice.","mark_paid_outside_mercury":"Mark paid (outside Mercury)…","mark_paid_outside_mercury_title":"Mark paid outside Mercury?","mark_paid_outside_mercury_description":"This payment was collected outside Mercury. The linked Mercury invoice will be cancelled so it can no longer be paid, then this invoice will be marked paid.","mark_paid_outside_mercury_confirm":"Cancel Mercury invoice & mark paid","voided_toast":"Invoice voided.","void_error":"Failed to void invoice.","date_range_separator":"to","team_title":"Team invoices","team_description":"Review enterprise invoices generated for the current team.","team_list_title":"Invoices","team_list_description":"{count, plural, =1 {# invoice available} other {# invoices available}}","team_list_error":"Failed to load team invoices.","team_detail_title":"Invoice details","team_due_date":"Due date","team_paid_amount":"Paid amount","open_usage":"Open usage","open_invoices":"Open invoices","usage_title":"Billable usage","usage_description":"Review usage accumulated in the current billing cycle. Product totals use cumulative tier pricing; if the final tier has a cap, units above that cap are billed at the standard published price.","usage_error":"Failed to load billable usage.","usage_empty":"No billable usage data available.","usage_summary_title":"Current cycle","usage_estimated_total":"Estimated billable total","usage_contract_id":"Contract","usage_pricing_model":"Pricing model","usage_products_description":"Product-level usage and estimated invoice amounts after cumulative tier pricing for the active billing cycle.","usage_backends_description":"Backend-level allocations for audit and invoice review. Cumulative tier amounts are allocated proportionally back to each backend.","line_items_title":"Invoice line items","line_items_service":"Service","line_items_description":"Description","line_items_units":"Quantity","line_items_unit_price":"Unit price","line_items_amount":"Amount","download_pdf":"Download PDF","download_pdf_error":"Failed to download the invoice PDF.","mark_sent":"Mark sent","mark_sent_toast":"Invoice marked as sent","mark_sent_error":"Failed to mark sent","import_dialog":{"btn_import_invoices":"Import invoices","title":"Import historical invoices","description":"Upload past invoice files. An agent extracts the fields and matches the customer + contract — review and confirm each before it's recorded. Nothing is saved until you click Import.","choose_files":"Choose invoice files (PDF / DOCX / image)","analyzing":"Analyzing…","analyze_failed":"analyze failed","pick_contract_first":"Pick a contract for this invoice first.","imported_toast_with_name":"Imported {name} #{number}","imported_toast":"Imported #{number}","import_failed":"import failed","badge_imported":"Imported","match_method_domain":"domain","no_customer_match":"No customer match","label_invoice_number":"Invoice #","label_amount_usd":"Amount (USD)","label_invoice_date":"Invoice date","label_period_start":"Period start","label_period_end":"Period end","label_description":"Description","label_contract":"Contract","pick_contract_placeholder":"Pick a contract…","btn_import":"Import"},"qb_direct_title":"Legacy QuickBooks records","qb_direct_description":"Read-only tracking of historical direct QuickBooks artifacts. New invoices are created in Mercury only.","qb_direct_unsent_notice":"Creating an invoice here does not send it — sending is always a manual step inside QuickBooks. This invoice will not appear in the system invoice list.","qb_direct_create":"Create QuickBooks invoice","qb_direct_create_description":"Create a manual invoice directly in QuickBooks.","qb_direct_qb_customer_id_label":"QuickBooks customer ID","qb_direct_qb_customer_id_placeholder":"QuickBooks customer ID, e.g. 42","qb_direct_amount_label":"Amount (USD)","qb_direct_amount_invalid":"Amount must be greater than 0.","qb_direct_description_label":"Description (shown on the invoice)","qb_direct_private_note_label":"Private note (internal)","qb_direct_min_chars":"At least {min} characters.","qb_direct_txn_date_label":"Transaction date (defaults to today)","qb_direct_due_date_label":"Due date (defaults to the transaction date)","qb_direct_customer_label":"Linked enterprise customer (optional)","qb_direct_customer_hint":"Linking a customer enables tracking here, and the invoice becomes visible on the customer's billing page once you confirm it was sent.","qb_direct_customer_none":"No linked customer","qb_direct_customer_select":"Select a customer...","qb_direct_created_toast":"QuickBooks invoice created (not sent).","qb_direct_create_error":"Failed to create QuickBooks invoice.","qb_direct_result_title":"Invoice created — not sent","qb_direct_result_description":"Copy the identifiers below. To deliver the invoice, open it in QuickBooks and send it manually.","qb_direct_qb_invoice_id":"QuickBooks invoice ID","qb_direct_copy":"Copy","qb_direct_copied_toast":"Copied to clipboard.","qb_direct_void":"Void QuickBooks invoice","qb_direct_void_description":"Void a QuickBooks invoice that has no system record. Paid invoices, zero-amount invoices, and invoices linked to a system invoice are rejected.","qb_direct_void_note_label":"Void note","qb_direct_void_expected_doc_label":"Expected doc number (optional)","qb_direct_void_expected_doc_hint":"If set, the void is rejected when the invoice's doc number does not match.","qb_direct_void_confirm_title":"Void this QuickBooks invoice?","qb_direct_void_confirm_description":"This voids invoice {id} directly in QuickBooks and cannot be undone.","qb_direct_void_confirm":"Void invoice","qb_direct_voided_toast":"QuickBooks invoice voided.","qb_direct_void_error":"Failed to void QuickBooks invoice.","qb_direct_register":"Register existing invoice","qb_direct_register_title":"Register existing QuickBooks invoice","qb_direct_register_description":"Register an invoice that was already issued manually in QuickBooks so it is tracked here.","qb_direct_register_customer_label":"Enterprise customer","qb_direct_registered_toast":"QuickBooks invoice registered for tracking.","qb_direct_register_error":"Failed to register QuickBooks invoice.","qb_direct_tracked_title":"Tracked direct invoices","qb_direct_tracked_description":"Manual QuickBooks invoices that are tracked by the system.","qb_direct_tracked_empty":"No tracked direct invoices yet.","qb_direct_tracked_error":"Failed to load tracked direct invoices.","qb_direct_filter_customer_placeholder":"Filter by customer ID","qb_direct_table_doc_number":"Doc number","qb_direct_table_amount":"Amount","qb_direct_table_dates":"Dates","qb_direct_table_status":"Status","qb_direct_table_actions":"Actions","qb_direct_mark_sent":"Mark sent","qb_direct_mark_sent_title":"Confirm this invoice was sent?","qb_direct_mark_sent_description":"Only confirm after invoice {doc} has been sent from QuickBooks. Once confirmed, the customer will see this invoice on their billing page.","qb_direct_mark_sent_note_label":"Note (optional)","qb_direct_mark_sent_confirm":"Confirm sent","qb_direct_mark_sent_toast":"Invoice marked as sent.","qb_direct_mark_sent_error":"Failed to mark invoice as sent.","qb_direct_mark_paid":"Mark paid","qb_direct_mark_paid_title":"Mark this invoice as paid?","qb_direct_mark_paid_description":"Confirm that payment for invoice {doc} has been received.","qb_direct_mark_paid_toast":"Invoice marked as paid.","qb_direct_mark_paid_error":"Failed to mark invoice as paid.","qb_direct_detail_title":"Direct invoice detail","qb_direct_detail_lines_title":"Line items","qb_direct_detail_description":"Description","qb_direct_detail_total":"Total","qb_direct_detail_qbo_title":"QuickBooks status","qb_direct_detail_balance":"Balance","qb_direct_detail_email_status":"Email status","qb_direct_detail_txn_date":"Transaction date","qb_direct_detail_due_date":"Due date","qb_direct_detail_tracking_title":"Tracking","qb_direct_detail_created_at":"Created","qb_direct_detail_sent_at":"Sent confirmed","qb_direct_detail_qbo_unavailable":"Could not reach QuickBooks — showing the locally tracked summary.","qb_direct_detail_unavailable":"Full detail is not available yet — showing the tracked summary.","qb_direct_detail_error":"Failed to load invoice detail.","qb_direct_sent_confirmed_at":"Sent confirmed","detail_number":"Invoice #{number}","detail_number_pending":"Invoice number pending","draft_unnumbered":"Unnumbered draft · {id}","unnumbered":"No invoice number · {id}","type_id_prefix":"No invoice number yet — type the first 8 characters of the invoice ID ({id}) to confirm","mercury_send":"Send via Mercury","mercury_send_confirm":"Create the invoice in Mercury and email it to the customer now? This also creates the QuickBooks mirror invoice.","mercury_sent_toast":"Invoice sent via Mercury","mercury_send_error":"Failed to send via Mercury","mercury_send_blocked_qbo":"A QuickBooks invoice is already linked — void it first","mercury_link":"Link Mercury invoice","mercury_link_prompt":"Mercury invoice ID to adopt (amount must match this invoice):","mercury_link_toast":"Mercury invoice linked","mercury_link_error":"Failed to link Mercury invoice","mercury_cancel":"Cancel in Mercury","mercury_cancelled_toast":"Cancelled in Mercury","mercury_cancel_error":"Failed to cancel in Mercury","mercury_cancel_paid_blocked":"Payment already received — let the reconciler settle it instead of cancelling","mercury_status":"Mercury","mercury_payment_link":"Payment link","mercury_settled":"Settled","mercury_qbo_payment_error":"QuickBooks payment error","will_deliver_to":"Will deliver to: {email}","will_deliver_unpaired_hint":"not paired yet — sending is blocked until the pairing is confirmed","mercury_sync":"Sync to Mercury (no send)","mercury_sync_confirm":"Create this invoice in Mercury WITHOUT sending it? The customer gets nothing — you review and click Send inside Mercury. The same-numbered QuickBooks mirror is created now.","mercury_synced_toast":"Synced to Mercury (unsent) — review and send it there","mercury_sync_error":"Failed to sync to Mercury","mercury_synced_badge":"Synced to Mercury — awaiting send there","mercury_amount_mismatch_warning":"Amount differs from Mercury: remote ${remote} vs ours ${ours} (edited in Mercury?) — reconcile before settlement","mercury_zero_blocked":"Zero-amount invoice — Mercury refuses these; nothing to collect","adjustments_title":"Adjustments","adjustments_hint":"Manual discounts / corrections on this draft. Within 20% of the pre-adjustment total they apply immediately; beyond that they need approval from an adjustment.approve_over_threshold holder.","adjustments_add":"Add adjustment","adjustments_submit":"Save adjustment","adjustments_added":"Adjustment saved","adjustments_removed":"Adjustment removed","adjustments_approve":"Approve","adjustments_approved":"Adjustment approved","adjustments_pending_badge":"Awaiting approval","adjustments_pending_notice":"Over the 20% self-serve threshold — an adjustment.approve_over_threshold holder must approve it before this invoice can be sent.","adjustments_blocking_send":"An adjustment is awaiting approval — approve or remove it before sending.","adjustments_error":"Adjustment action failed","adjustments_form_incomplete":"Enter an amount and a customer-visible reason.","adjustments_kind_label":"Adjustment type","adjustments_mode_label":"Amount type","adjustments_mode_amount":"Fixed amount (USD)","adjustments_mode_percent":"Percent of total","adjustments_reason_placeholder":"Customer-visible reason (appears on the invoice line)","adjustments_note_placeholder":"Internal note (optional, never shown to the customer)","adjustments_threshold_hint":"Negative = discount, positive = surcharge. Percent converts to a fixed amount against the pre-adjustment total.","adjustment_kind_discount":"Discount","adjustment_kind_correction":"Billing correction","adjustment_kind_goodwill":"Goodwill credit","adjustment_kind_sla_credit":"SLA credit","adjustment_kind_promo":"Promotional discount","adjustment_kind_surcharge":"Additional charge","adjustment_kind_other":"Adjustment","mercury_revert":"Revert to draft","mercury_revert_hint":"Cancel the Mercury invoice and return this record to an editable draft (amounts kept) — adjust or fix the billing email, then send again.","mercury_revert_confirm":"Cancel the Mercury invoice and revert this record to a draft? The customer's payment link dies; amounts are kept. Re-sending will issue a NEW invoice number — Mercury permanently retires a cancelled invoice's number.","mercury_revert_toast":"Reverted to draft — adjust and re-send when ready","mercury_revert_error":"Revert failed","usage_detail_title":"Usage detail (internal)","usage_detail_hint":"Internal reference only — the customer receives the two-line invoice (minimum commitment + overage). Use Preview PDF to see exactly what goes out.","usage_detail_hint_locked":"Internal reference only — the customer receives the two-line invoice (minimum commitment + overage).","usage_detail_live_hint":"Live usage for this activation period as of {time} — reconciles on the next cycle invoice, not billed here.","preview_pdf":"Preview PDF","preview_pdf_error":"Loading the PDF preview failed","preview_dialog_title_mercury":"Invoice {number} — Mercury PDF (exactly what the customer sees)","preview_dialog_title_system":"Invoice {number} — system PDF (pre-sync view)","preview_dialog_title_system_draft":"Draft {id} — system PDF (invoice number assigned when issued)","overdue_badge":"Overdue","qbo_ledger_title":"QuickBooks ledger","qbo_ledger_bound":"QBO invoice #{number} · id {id}","qbo_ledger_none":"No QuickBooks record bound.","qbo_ledger_pending_hint":"The QBO mirror is created at Mercury send.","unmark_sent":"Revert to draft","unmark_sent_hint":"Return this sent invoice to an editable draft (no remote copies exist).","unmark_sent_confirm":"Return this invoice to draft? Amounts are kept; it can go out via Mercury after the customer is paired.","unmark_sent_toast":"Invoice returned to draft","unmark_sent_error":"Failed to revert the invoice to draft","pairing_required_hint":"Customer is not paired to a Mercury AR record — confirm the pairing before sending.","pairing_blocked_title":"Mercury sending is blocked — customer not paired","pairing_blocked_description":"This customer has no confirmed Mercury AR pairing. Confirm or create the pairing first; the invoice will deliver to {email}.","open_pairing":"Open pairing","qb_direct_status_labels":{"created":"Created","sent":"Sent","paid":"Paid","void":"Void"},"filter_any":"Any","filter_search":"Type to search…","filter_no_match":"No matches.","period_prepay":"Prepay","period_usage":"Usage","period_role_advance":"Commit + usage","period_role_arrears":"Usage settlement","period_role_catch_up":"Catch-up commit","period_role_activation":"Activation commit","period_role_one_time":"One-time prepaid","period_role_final":"Final settlement","period_role_payg":"PAYG usage","period_role_manual":"Manual","manual_usage_chip":"Off-platform usage","manual_usage_chip_tip":"This contract's usage is entered manually — invoices only include what has been recorded.","manual_usage_send_warning":"This invoice settles usage for a contract whose usage is entered manually. Confirm the settlement window's usage is fully recorded before sending.","manual_usage_commit_only_note":"Commit-only invoice: manually entered usage settles on the next boundary invoice.","void_confirm_title":"Void this invoice?","void_effect_record":"The invoice (and its QuickBooks mirror, if any) becomes void.","void_effect_pool":"Manual usage and prepaid-offset amounts it consumed return to the unbilled pool for the replacement invoice.","void_revoke_credit_label":"This invoice already granted credits — also claw them back from the wallet.","mark_paid_confirm_title":"Mark this invoice paid?","mark_paid_confirm_description":"This settles the invoice as if money arrived: deferred credit grants release, revenue share accrues, and there is no undo. Proceed only when payment is actually confirmed.","period_role_test":"Test (internal)","manual_amount_source_label":"Amount source","manual_amount_source_placeholder":"e.g. billing-reconciliation-summary output 2026-08 / settlement doc","manual_amount_source_hint":"Optional for your role — cite the source when you have one.","enter_manual_usage":"Enter off-platform usage","due_label":"Due","readiness_ready":"Ready to send","readiness_zero":"$0 — not sendable","readiness_adjustment":"Adjustment pending approval","readiness_unpaired":"Mercury customer not paired","ids_title":"Identifiers","id_invoice":"Invoice ID","id_contract":"Contract ID","id_team":"Team ID","id_copied":"Copied","composition_title":"Total breakdown","composition_commit":"Minimum commitment","composition_overage":"Overage","composition_surcharge":"Surcharge","past_due_draft_chip":"Past due · still unsent","chip_past_due_drafts":"{count, plural, =1 {# past-due draft with a fixed due date} other {# past-due drafts with a fixed due date}}","mark_paid_will_grant":"Marking paid releases a {amount} credit grant into the team wallet.","mark_paid_no_grant":"No credit grant is tied to this settlement.","mark_paid_type_number":"Type the invoice number {number} to confirm","mark_paid_draft_blocked":"This draft was never sent — settling it requires the settled-without-delivery acknowledgement inside the confirmation.","mark_paid_no_undo":"No undo from this screen — reversing a mistaken settlement requires invoice.unmark_paid.","void_customer_holds_copy":"The customer already holds {number} ({status}). Void is irreversible — the customer's copy cannot be recalled; the only way forward is a reissue.","void_customer_holds_copy_unnumbered":"The customer already holds this invoice ({status}). Void is irreversible — the customer's copy cannot be recalled; the only way forward is a reissue.","void_customer_holds_copy_quickbooks":"The QuickBooks mirror {doc} is voided remotely — QuickBooks has no un-void.","void_type_number":"Type the invoice number {number} to confirm the void","void_revoke_credit_amount":"This invoice granted {amount} on {date} — also claw it back from the wallet.","void_mercury_live_hint":"This invoice has a live Mercury payment page — use Cancel Mercury invoice (or Cancel & revert) instead of Void.","mercury_cancel_confirm_title":"Cancel this invoice in Mercury?","mercury_cancel_effect_remote":"The customer's Mercury payment page is cancelled and the invoice number is retired — this cannot be undone.","mercury_cancel_type_number":"Type the invoice number {number} to confirm the cancellation","mercury_revert_confirm_title":"Cancel in Mercury & revert to draft?","mercury_revert_customer_holds_copy":"The customer already holds {number} ({status}). Their payment link dies now; re-sending issues a new invoice number.","mercury_revert_customer_holds_copy_unnumbered":"The customer already holds this invoice ({status}). Their payment link dies now; re-sending issues a new invoice number.","mercury_revert_type_number":"Type the invoice number {number} to confirm the revert","adjustments_direction_label":"Direction","adjustments_direction_reduce":"Reduces the invoice","adjustments_direction_increase":"Increases the invoice","adjustments_total_preview":"Total {previous} → {next}","adjustments_total_preview_held":"Held for approval — total stays {previous} until approved (would become {next}).","adjustments_amount_hint":"Enter the amount without a sign. Discounts, goodwill and promos always reduce the invoice; surcharges always increase it; corrections and other take the direction toggle. Percent converts to a fixed amount against the pre-adjustment total.","adjustments_sign_problem":"The sign you typed contradicts the selected direction. Enter the amount without a sign, or change the direction.","manual_amount_source_required":"Cite where the amount comes from (at least 12 characters) — required unless you hold manual_invoice.sourceless.","manual_amount_source_approval_hint":"Amounts without an engine cross-check need approval from an invoice.approve_manual holder before the invoice can be sent.","manual_due_date_default":"Defaults to {date} (net {days}) from the contract's payment terms.","preview_loading":"Loading preview…","ledger_advanced_title":"The ledger has moved past this grant — it can no longer be clawed back.","ledger_advanced_hint":"Use a credit memo or a wallet adjustment instead (audited). There is no override.","ledger_blockers":{"ledger_record_after_seed":"A later rollover record sits on top of the activation seed","expiration_after_grant":"An expiration row was written after the grant","tranche_partly_expired":"Part of the granted tranche has already expired","cycle_invoice_after_payment":"A cycle invoice was generated after the payment","grant_rehomed_by_team_move":"A team move re-homed the grant rows","one_time_term_closed":"The one-time pool was closed by the term-end sweep or a termination"},"void_blocked_generic":"Void is not available for this invoice.","void_blocked_inline":"Void is not available: {reason}","void_effect_quickbooks":"The QuickBooks mirror {doc} is voided remotely.","void_effect_manual_usage":"{count, plural, =1 {# manual usage row is} other {# manual usage rows are}} returned to the contract.","void_effect_prepaid_offset":"The {amount} prepaid offset is restored to the pool.","void_revoke_credit_preview":"This invoice granted {granted} on {date}; {revocable} is still in the wallet — also claw it back.","void_revoke_blocked":"Claw-back is not available: {reason}","mark_paid_blocked_void":"This invoice is void — it cannot be settled.","mark_paid_approval_pending":"This manual invoice still needs approval from an invoice.approve_manual holder — it cannot be settled yet.","mark_paid_grant_held":"The {amount} credit grant will NOT be released — it is held for a manual decision ({reason}). Marking paid records the money only.","grant_skip_reasons":{"terminal_state_requires_manual":"the contract closed with no successor to govern the credits","settled_against_undelivered_grant":"the covered cycle was already billed against an undelivered grant","contract_not_found":"the contract could not be found","already_granted_at_activation":"credits were already granted at activation","already_granted":"credits were already granted","non_positive_amount":"no credit amount","deferred_to_send":"credits are granted on send","deferred_to_payment":"credits are granted on payment"},"mark_paid_revenue_share":"Accrues {amount} revenue share ({units} units) on settlement.","mark_paid_one_time_fulfillment":"May flip the one-time contract to fulfilled if the prepaid wallet is already drained.","mark_paid_undo_blocked":"No undo afterwards: {reason}","mark_paid_settled_without_delivery":"I confirm the customer settled this invoice without ever receiving it (never-sent draft).","unmark_paid":"Unmark paid","unmark_paid_title":"Reverse this settlement?","unmark_paid_description":"Reverses everything the payment released and returns the record to its pre-payment status. Audited.","unmark_paid_preview_failed":"The reversal preview could not be loaded — the money this reversal moves is not shown. The reversal stays available; the api still refuses a blocked one.","unmark_paid_blocked":"Reversal is not available: {reason}","unmark_paid_effect_restore":"The invoice returns to {status}.","unmark_paid_effect_grant":"Claws back the {amount} credit grant the payment released ({count, plural, =1 {# ledger record} other {# ledger records}}).","unmark_paid_effect_no_grant":"The payment released no credit grant — nothing to claw back.","unmark_paid_effect_seed":"Pops the {amount} activation rollover seed (a real payment restores it).","unmark_paid_effect_revenue_share":"Deletes the {amount} revenue share still accrued.","unmark_paid_effect_reopen":"Reopens the fulfilled one-time contract.","unmark_paid_settled_by":"Settled by: {source}","unmark_paid_qbo_verification":"This invoice is linked to QuickBooks — the reversal first asks QuickBooks to confirm no payment is booked there.","unmark_paid_qbo_ack":"Break-glass: proceed even if QuickBooks cannot answer (audited; only for a record an operator settled by hand).","unmark_paid_type_number":"Type the invoice number {number} to confirm the reversal","unmark_paid_reason_label":"Reason (at least 8 characters, recorded in the audit log)","unmark_paid_toast":"Settlement reversed","unmark_paid_error":"Failed to reverse the settlement","credit_grant_held_badge":"Credit grant held","credit_grant_held_line":"{amount} of credits were not delivered on payment — held for a manual decision ({reason}) since {date}.","reconcile_undelivered_badge":"Billed against delivered credits","reconcile_undelivered_line":"This cycle was settled against the credits actually delivered ({delivered}) instead of the {expected} activation grant ({reason}).","reconcile_preview_title":"Cycle-1 reconcile","reconcile_preview_done":"Already reconciled.","reconcile_preview_done_undelivered":"Already reconciled against the credits actually delivered — {reason}.","reconcile_preview_pending":"The next cycle invoice seeds {seed} of rollover and bills {overage} of overage for the activation period.","reconcile_preview_deferred":"Deferred — {reason}. The figures above are what the reconcile will apply once the grant lands.","reconcile_deferred_reasons":{"grant_held":"the activation grant is held for a manual decision","grant_clawed_back_by_unmark_paid":"an unmark-paid clawed the activation grant back and the invoice was not re-paid","grant_deferred_to_send":"the activation grant is released on send and the invoice is still unsent","grant_deferred_to_payment":"the activation grant is released on payment and the invoice is still unpaid"},"batch_send":{"button":"{count, plural, =1 {Review 1 ready invoice for Mercury} other {Review # ready for Mercury}}","title":"Send all ready invoices via Mercury","description":"{total, plural, =1 {1 invoice in the current list is a draft paid via Mercury with no Mercury invoice yet} other {# invoices in the current list are drafts paid via Mercury with no Mercury invoice yet}}: {count, plural, =0 {none will be sent} =1 {1 will be sent} other {# will be sent}}, {blocked, plural, =0 {none skipped} =1 {1 skipped (customer not paired)} other {# skipped (customers not paired)}}. Each one goes out exactly like the single action — the customer is emailed the moment it lands.","description_request":"{total, plural, =1 {1 invoice in the current list is a draft paid via Mercury with no Mercury invoice yet} other {# invoices in the current list are drafts paid via Mercury with no Mercury invoice yet}}: {count, plural, =0 {none will be submitted} =1 {1 will be submitted for approval} other {# will be submitted for approval}}, {blocked, plural, =0 {none skipped} =1 {1 skipped (customer not paired)} other {# skipped (customers not paired)}}. Nothing is emailed until each request is approved.","warning":"Sent one after another. A refusal (already sent, QuickBooks copy alive, matching Mercury invoice open, pairing missing…) is shown on its row and never retried; the batch continues with the next invoice.","warning_request":"Submitted one after another. A refusal (already sent, QuickBooks copy alive, matching Mercury invoice open, pairing missing…) is shown on its row and never retried; the batch continues with the next invoice.","number_note":"Invoice numbers are assigned as each invoice is sent — the drafts below do not carry one yet.","table_number":"Number","table_customer":"Customer","table_contract":"Contract","table_amount":"Amount","table_due":"Due","table_status":"Result","note_label":"Note for this batch","note_placeholder":"Why this batch goes out now (optional)","note_help":"Shown in the summary only — the API records no note on the invoices.","typed_label":"Type the count ({count}) to confirm","typed_mismatch":"Type exactly {count}","confirm":"{count, plural, =1 {Send 1 invoice} other {Send # invoices}}","progress":"Sending {current} of {total}…","progress_request":"Submitting {current} of {total}…","row_pending":"Waiting","row_sending":"Sending…","row_submitting":"Submitting…","row_sent":"Sent","row_refused":"Refused","summary_title":"Batch finished","summary":"{sent, plural, =1 {1 sent} other {# sent}} · {refused, plural, =1 {1 refused} other {# refused}}","summary_sent":"{count, plural, =1 {# invoice sent} other {# invoices sent}}","summary_refused":"{count, plural, =1 {# refused} other {# refused}}","close":"Close","done_toast":"Mercury batch finished: {sent} sent, {refused} refused","table_delivery":"Delivery","delivery_resolving":"Resolving…","delivery_unpaired":"Not paired — skipped","delivery_unverified":"Pairing not verified — Mercury resolves the address at send","dual_badge":"2 invoices · +{pct}% card","line_split":"{commitment} commitment + {overage} overage","row_blocked":"Skipped","blocked_note":"{count, plural, =1 {1 invoice is skipped: its customer is not paired to a Mercury AR record.} other {# invoices are skipped: their customers are not paired to a Mercury AR record.}}","resolving_note":"Resolving where each invoice will be delivered…","none_sendable":"Nothing to send — pair the customers first.","summary_blocked":"{count, plural, =1 {# skipped} other {# skipped}}","description_resolving":"{total, plural, =1 {1 invoice in the current list is a draft paid via Mercury with no Mercury invoice yet} other {# invoices in the current list are drafts paid via Mercury with no Mercury invoice yet}}; resolving where each one will be delivered…","confirm_none":"Nothing to send","request_confirm":"{count, plural, =1 {Request 1 send} other {Request # sends}}","row_proposed":"Submitted for approval","summary_with_proposed":"{sent, plural, =1 {1 sent} other {# sent}} · {proposed, plural, =1 {1 submitted for approval} other {# submitted for approval}} · {refused, plural, =1 {1 refused} other {# refused}}","summary_proposed":"{count, plural, =1 {# submitted for approval} other {# submitted for approval}}","done_toast_proposed":"Mercury batch finished: {sent} sent, {proposed} submitted for approval, {refused} refused"},"due_projected_label":"Due if issued today","detail_due_date_projected_note":"Projected for issuing today — finalized when the invoice is sent.","detail_settled_by":"Settled by","unmark_paid_refused_prepaid_offset":"Settled by the prepaid balance — it can't be unmarked. Use Void invoice (or Request void) on this invoice to return the offset to the pool, then reissue.","settled_by_labels":{"operator":"Operator","system":"System","mercury_reconciler":"Mercury reconciliation","qbo_snapshot":"QuickBooks snapshot","prepaid_offset":"Prepaid balance"},"early_access_chip":"early access","early_access_detail":"Early access from {access}, folded into the first billing period (paper period start {paper}).","past_due_draft_chip_hint":"The fixed due date from its synced or delivered document has passed, and the invoice is still unsent.","status_settled_by_credit":"Settled by credit","status_closed_zero":"Closed · $0","due_on_receipt_sent_ago":"Due on receipt · sent {days, plural, =0 {today} one {# day ago} other {# days ago}}","composition_offset_prepaid_offset":"Customer's prepaid balance applied","composition_offset_promo":"Promotional waiver","composition_offset_discount":"Discount","composition_offset_goodwill":"Goodwill credit","composition_offset_sla_credit":"SLA credit","composition_offset_correction":"Correction","composition_offset_surcharge_adjustment":"Surcharge adjustment","composition_offset_other":"Other adjustment","composition_offset_unexplained":"Other credits / offsets","rate_per_million_utf8_bytes":"{rate} per 1M UTF-8 bytes","rate_per_million_units":"{rate} per 1M units","quantity_utf8_bytes":"{count} UTF-8 bytes","quantity_units":"{count} units","request_mark_paid":"Request mark paid","request_mark_paid_outside_mercury":"Request mark paid (outside Mercury)…","request_mark_paid_outside_mercury_confirm":"Request Mercury cancel & mark paid","request_mercury_send":"Request Mercury send","request_void":"Request void","void_paid_notice":"{amount} was received on this invoice ({status}) — voiding removes that payment from the books.","void_paid_ack":"I confirm the received money has been reversed elsewhere (refund or credit memo).","void_paid_reason_label":"Reason (required, recorded in the audit log)","void_paid_detected":"This invoice has received money on record — the void needs the confirmation and reason above.","void_request_invalid":"This void can't be filed for approval as it stands.","void_refusal_details":"Details","mercury_cancel_paid_notice":"{amount} was received on this invoice ({status}) — cancelling it voids the invoice and removes that payment from the books.","mercury_revert_paid_notice":"{amount} was received on this invoice ({status}) — reverting it cancels the Mercury invoice and removes that payment from the books.","mercury_cancel_void_paid_required":"Cancelling this Mercury invoice would remove a received payment from the books — that needs {capability}. Nothing was cancelled.","mercury_revert_void_paid_required":"Reverting this Mercury invoice would remove a received payment from the books — that needs {capability}. Nothing was reverted.","rate_per_million_audio_seconds":"{rate} per 1M audio seconds","model_rate_pending_chip":"Rate pending","model_rate_pending_tip":"A line may be corrected once the rate is decided.","model_rate_pending_detail":"Billed {models} at Fish Audio's published price; a line may be corrected once the rate is decided.","model_rate_pending_link":"Open the rate decision","period_role_fee":"One-time fee","fee_detail":"Bills: {fees}"},"common":{"load_more":"Load more","window_limited":"Only records within the accessible admin window are shown.","refresh":"Refresh","cancel":"Cancel","create":"Create","save":"Save","open":"Open","apply":"Apply","view":"View","delete":"Delete","edit":"Edit","close":"Close","loading":"Loading...","none":"—","more_info":"More information","preview_open_new_tab":"Open in a new tab"},"contracts":{"title":"Contracts","count":"{count, plural, =1 {# contract} other {# contracts}} loaded","filters":"Filters","filters_description":"Narrow the list by team or lifecycle status.","team_id":"Team ID","status":"Status","new_contract":"New Contract","create_draft":"Create Draft","create_dialog_title":"New Enterprise Contract","create_dialog_description":"Search by email to find the team, then create a draft contract.","search_by_email":"Search by Email","no_user_found":"No user found for this email","no_teams_found":"No teams found for this user","search_error":"Failed to search teams","team_select":"Select a team...","team_found":"Team ({count} found)","customer_select":"Select a customer...","customer_required":"Customer","no_customers_yet":"No customers yet. Create one first in the Customers tab.","created_success":"Draft contract created","created_error":"Failed to create contract","empty":"No contracts match the current filters.","load_error":"Failed to load enterprise contracts.","all_statuses":"All statuses","table":{"customer":"Customer","team":"Team","status":"Status","type":"Type","pricing":"Pricing","term":"Term","documents":"Documents","open":"Open","min":"Min {amount}","generated_docx_ready":"Generated DOCX ready","generated_docx_none":"Generated DOCX —","signed_pdf_ready":"Signed PDF ready","signed_pdf_none":"Signed PDF —","monthly_commit":"Monthly commit {amount}","template_version":"Template v{version}","template_manual":"Manual","no_billing":"Invoices and credits skipped","one_time_amount":"One-time {amount}","payg_rate":"PAYG · {rate}","assessment_commit":"Quarterly minimums · {first} → {last} · {total} over {quarters} quarters","fees_total":"{count, plural, one {# fee} other {# fees}} · {amount}"},"status_labels":{"draft":"Draft","active":"Active","fulfilled":"Fulfilled","suspended":"Suspended","terminated":"Terminated","expired":"Expired","deleted":"Deleted","onboarding_sent":"Onboarding sent","customer_info_completed":"Customer info completed","legal_review":"Legal review","ready_for_signature":"Ready for signature","sent_for_signature":"Sent for signature","signed":"Signed","signed_needs_start_date_review":"Signed - start date review","pending_activation":"Pending activation","trialing":"Trialing","superseded":"Superseded"},"badge_skip_credit":"Skip credit","badge_no_sweep":"No sweep","replaces_contract":"replaces {id}","type_labels":{"subscription":"Subscription","one_time":"One-time","fee_only":"Fees only"},"pricing_model_labels":{"minimum_commitment":"Monthly commit","payg":"Pay as you go","one_time_purchase":"One-time purchase","monthly_bonus":"Monthly bonus","month_to_month":"Month-to-month","non_billing":"Non-billing"},"payment_term_labels":{"net_30":"Net 30","net_15":"Net 15","due_on_receipt":"Due on receipt"},"payment_method_labels":{"quickbooks":"QuickBooks","stripe":"Stripe","mercury":"Mercury","prepaid":"Prepaid (in-platform)"},"module_labels":{"credit_rollover":"Credit rollover","auto_renewal":"Auto-renewal","resale":"Resale","termination_for_convenience":"Termination for convenience","end_customer_access":"End customer access","model_hosting":"Model hosting"},"signing_entity_labels":{"hanabi_ai":"Hanabi AI, Inc. dba Fish Audio","39ai_us":"39 AI, Inc. dba Fish Audio","39ai_jp":"39 AI G.K. dba Fish Audio"},"company_signer_labels":{"qingyan_cao":"Qingyan Cao","shijia_liao":"Shijia Liao","pinghan_xu":"Pinghan Xu"},"product_labels":{"tts":"TTS","asr":"ASR","voice-design":"Voice Design"},"module_policy":{"unlimited":"Unlimited","capped":"Cap {amount}","minimum":"Minimum {amount} / 1M"},"template":"Template","all_templates":"All templates","legal_carrier_badge":"Legal — {label}","legal_document":"Legal document","legal_signed_on":"Signed {date}","contract_type_fallback_labels":{"order_form":"Order Form","dpa":"DPA","msa":"MSA","baa":"BAA","nda":"NDA","sow":"SOW"},"billing_model_labels":{"advance":"Advance billing (commitment at period start + prior-period overage)","arrears":"Arrears billing (commitment + overage at period end)"},"billing_mode_labels":{"advance":"Advance commit + overage","arrears":"Postpay (arrears)","payg_invoice":"PAYG · invoiced","payg_platform":"PAYG · platform prepaid","one_time":"One-time package","non_billing":"Non-billing"},"term_until_terminated":"Until terminated","name_search_placeholder":"Search company or agreement…","term_renews_notice_by":"Auto-renews · notice by {date}","term_renews":"Auto-renews","term_no_renewal":"No auto-renewal","ended_badge":"Ended {date}","ended_badge_hint":"The paper end date has passed, but the record has not been closed, so it still reads active.","payment_term_net_days":"Net {days}","rollover_expires_after":"Included credits expire {days} days after grant","rollover_never":"Included credits never expire","rollover_term_end":"Credits do not roll over past the term end","rollover_term_end_dated":"Credits do not roll over past the term end ({date})","credit_expiry_cycle_end":"Included credits do not roll over — unused credits expire at the end of each billing cycle","credit_expiry_contract_year_end":"Included credits expire at the end of each contract year","credit_expiry_term_end":"Included credits expire at term end","credit_expiry_policy_options":{"per_tranche_days":"Days after grant (rollover days)","cycle_end":"End of each billing cycle (no rollover)","contract_year_end":"End of each contract year","term_end":"End of the term"},"billing_model_labels_usage":{"advance":"Advance billing (prior-period usage at period start)","arrears":"Arrears billing (usage at period end)"},"fees_only_pricing":"One-time fees only"},"customers":{"title":"Customers","count":"{count, plural, =1 {# customer} other {# customers}}","new_customer":"New Customer","company_name":"Company name","company_name_required":"Company name is required","company_address":"Address","signer":"Signer","signer_name":"Signer name","signer_title":"Signer title","signer_email":"Signer email","billing_email":"Billing email","contact_email":"Contact email","billing_address_line1":"Address Line 1","billing_address_line2":"Address Line 2","billing_city_state_zip":"City, State, ZIP","billing_contact_name":"Billing Contact","defaults_to_signer":"Defaults to signer if empty","notes":"Notes","empty":"No customers yet.","load_error":"Failed to load customers.","created_success":"Customer created successfully.","created_error":"Failed to create customer.","deleted_success":"Customer deleted.","deleted_error":"Failed to delete customer.","import_zip":{"trigger":"Import signed contract","title":"Import a signed contract","description":"The signed contract as PDFs or one zip, with past invoices if there are any. The AI reader sorts the files, matches the template and customer, and reads the invoices. Nothing is saved until you create the agreement or import an invoice.","dropzone":{"selected":"{name} — choose other files to start over","choose":"Drop the signed contract here — PDFs or one zip — or click to choose files","chosen":"{name} — not read yet"},"match_badge":{"domain":"{label} · domain","percent":"{label} · {percent}%"},"contract_label":"{name} · {status}","no_match":"no match","files":{"heading":"Files ({count})","reanalyze":"Re-analyze","hint":"Misclassified? Fix the roles and re-analyze — your choices override the filename guesses.","roles":{"contract":"Contract","invoice":"Invoice","skip":"Skip","msa":"MSA"},"amendment_like":"Amendment","amendment_like_tip":"Looks like an amendment to an existing contract. It was not analyzed — record it on the contract detail page (Amendments card). Override the role only if this really is a standalone contract or an invoice."},"contract":{"heading":"Contract","created":"Contract created","created_with_pdf":"Contract created · signed PDF attached","open_contract":"Open contract","not_pdf_hint":"The contract file isn't a PDF — convert it and upload the signed copy on the contract page.","sig_detected":"E-signature detected","sig_none":"No e-signature evidence — verify this is the executed version","sig_scan":"Scanned PDF — signature can't be machine-verified","next_steps_attached":"Next: approve the actions the agent proposes below (for example an activation credit or, when the paper grants it, <b>Activate contract</b>) — or open the contract to review and activate there. Activation drafts the first invoice and grants credits; nothing runs until you approve it.","next_steps_unattached":"Next: attach the signed PDF — the agent then reads it and proposes actions below (for example an activation credit or, when the paper grants it, <b>Activate contract</b>) — or open the contract to review and activate there. Activation drafts the first invoice and grants credits; nothing runs until you approve it.","additional_heading":"Other documents in this zip","review_and_create":"Review & create contract","none_found":"No contract document found in the zip — re-role a file above if one was misclassified.","msa_heading":"Customer MSA","msa_version":"v{version}","msa_signed":"signed {date}","msa_date_unknown":"Signature date unreadable — the order form's effective date is recorded as a placeholder; correct it on the customer's legal profile.","msa_staged":"Creating the order form registers this MSA on the customer's legal profile — no input needed.","msa_needs_register":"Not registered yet — once the order form exists, register the MSA from here.","msa_skipped":"The order form was created, but the MSA was not registered — retry below.","msa_carrier_diverged":"The legal profile now names this newer MSA, but the governing MSA record still holds the older paper — if this is a new agreement, split or unlink it and carve a new MSA record.","msa_register_btn":"Register MSA","msa_register_failed":"Could not register the MSA","msa_profile_filled":"MSA registered on the customer's legal profile.","msa_profile_replaced":"MSA registered — it replaces the older MSA on the customer's legal profile.","msa_profile_kept":"MSA registered and linked — the legal profile keeps its recorded MSA (this paper is not newer)."},"invoices":{"heading":"Invoices ({count})","imported":"Imported","import":"Import","extract_failed":"extract failed","fields":{"number":"Invoice #","amount":"Amount (USD)","date":"Invoice date","period_start":"Period start","period_end":"Period end","description":"Description"},"pick_contract_placeholder":"Pick a contract…"},"mercury_prompt":{"title":"Next step: pair this customer with Mercury AR","hint":"Invoices can't go out through Mercury until the customer is paired.","open_workspace":"Open customer workspace"},"toast":{"pick_contract_first":"Pick a contract for this invoice first.","invoice_imported":"Imported invoice #{number}","import_failed":"Import failed","contract_file_not_found":"Contract file not found in the zip.","mixed_selection":"Pick either one zip OR loose PDFs — not both. The PDFs get zipped for you automatically."},"actions":{"title":"Proposals","description":"Once the signed PDF is on the contract, the customer agent reads it and proposes the one-off / transition actions it grants. Nothing runs until you approve it — here or later on the contract page; closing this dialog does not stop the run."},"start":{"ready":"{count, plural, one {Ready to read {name}} other {Ready to read # files: {name}}}","cost":"A reading takes several minutes and costs money; it starts only on Start reading.","cancel":"Cancel","button":"Start reading"}},"import_analysis":{"running_title":"Reading the signed contract","stage_uploading":"Uploading {name}","stage_reading":"The AI reader is reading {name}","still_running":"Still running. This window no longer updates on its own.","failed":"The reading did not finish.","upload_timed_out":"The upload got no answer in time.","resumed":"Your last import: {name}, read on {time}.","file_missing":"The uploaded files are not in this tab. Choose them again to attach them.","trace_show":"View reader trace","trace_hide":"Hide reader trace","trace_cost":"Cost {amount}","stage_queued":"{name} is waiting for the AI reader to start: in the queue, or its pages being prepared","queued_for":"Waiting for {time}","reading_for":"Reading for {time} · waited {waited} before it started","start_new":"Start a new import"},"legal_profile":{"trigger":"Legal Profile","title":"Legal profile — {company}","msa_section_title":"Customer MSA profile","version":"Version","version_options":{"b":"Version B (Standard)","c":"Version C (Convenience)","d":"Version D (Monthly-friendly)","e":"Version E (2026-06 revision)"},"signed_date":"Signed Date","clauses":"Clauses","params":{"rollover_days":"Rollover days","max_rollover_amount":"Max rollover amount","minimum_resale_price":"Minimum resale price","overage_rate":"Overage rate","price_lock_months":"Price lock months"},"msa_document":{"title":"MSA document","description":"Customer-level master agreement file","attach":"Attach MSA record","open":"Open MSA record"},"dpa":{"section_title":"Customer DPA legal packet","section_description":"DPA is generated with the customer legal packet; attachments here are signed or supplemental customer records.","include_in_packet":"Include DPA in customer legal packet","signed_date":"Customer DPA signed date","save_profile":"Save customer DPA profile","generated_title":"Generated customer DPA legal packet","generated_description":"Generated from structured customer legal profile fields.","generate_document":"Generate DPA document","open_generated":"Open generated customer DPA","generated_on":"Generated {date}","attach_record":"Attach customer DPA record","open_record":"Open customer DPA record","history_required":"required","history_not_required":"not required","history_unsigned":"unsigned"},"history":"History","history_version":"v{version}","save_msa_profile":"Save MSA profile","toasts":{"signed_date_required":"Signed date is required","msa_updated":"MSA updated","msa_update_error":"Failed to update MSA","choose_msa_document":"Choose an MSA document first","msa_uploaded":"MSA document uploaded","msa_upload_error":"Failed to upload MSA","msa_open_error":"Failed to open MSA document","dpa_updated":"DPA requirement updated","dpa_update_error":"Failed to update DPA","dpa_required_before_generate":"Mark DPA as required before generating the legal packet","dpa_generated":"Customer DPA legal packet generated","dpa_generate_error":"Failed to generate customer DPA legal packet","dpa_generated_open_error":"Failed to open generated customer DPA legal packet","choose_dpa_attachment":"Choose a DPA attachment first","dpa_attached":"DPA attachment saved to customer legal profile","dpa_attach_error":"Failed to attach DPA","dpa_open_error":"Failed to open DPA attachment"},"version_source":"Recorded from"},"order_form":{"title":"New Agreement","description":"Create a customer-scoped agreement from the latest customer/MSA state and a registered template.","primary_account":"Primary account: {value}","primary_team":"Primary team: {value}","missing":"Missing","unbound_notice":"Unbound — this customer has no API team yet. You can create the agreement now; bind the account in the <b>Workspace</b> before activation (usage is metered per team).","created":{"title":"Agreement is ready for review","open_contract":"Open contract"},"created_success":"Agreement created from customer record.","template":{"label":"Standard template *","placeholder":"Choose an agreement template","load_failed":"Failed to load agreement templates"},"type_notes":{"billing":"Billing terms will be configured on this agreement.","non_billing":"Non-billing agreement: invoices, credits, and pricing fields are skipped."},"pricing_help":{"payg":"PAYG creates no activation invoice or credits; monthly billing uses prior natural-month API usage.","monthly_bonus":"Monthly commit is the invoice amount; included credits may be higher, with refund rate computed from commit / credits.","one_time":"One-time purchase invoices once and grants the configured credits; it is excluded from monthly billing.","default":"Minimum-commit and month-to-month agreements invoice at activation, grant included credits, then follow the start-date billing anchor."},"purchase_amount":"Purchase amount","payg_per_unit_rate":"PAYG per unit rate (TTS, $ per 1M UTF-8 bytes)","discount":{"label":"Discount % off live list (follows-list)","follows_list_help":"Rates derive from the live price list × (1 − discount%); the frozen per-unit rate is ignored. List changes propagate on resync.","frozen_rate_help":"Leave 0 to use a frozen per-unit rate below; set a discount to bill at a % off the live list instead."},"membership":{"label":"Membership granted on activation","pro":"Pro","max":"Max","none":"None (no membership grant)","help":"The bound team's owner gets this membership for the contract term.","none_help":"No membership is granted on activation — the bound team keeps whatever plan it already has."},"overdraft_credits_title":"Overdraft & credits","effective_date_help":"Legal start date shown on the contract and the day-of-month billing anchor. Safe to backdate for historical imports — monthly billing only ever generates the current cycle, never past months.","backdated_warning":"Backdated: activation will draft a first invoice covering {date} onward. If that period was already imported as a historical invoice, void the duplicate before marking anything paid (paying both would grant credits twice).","term_months":"Term (months)","clauses_note":"Clauses are inherited from the selected template and the customer MSA settings. Edit template text through the template/fork workflow, not this agreement dialog.","create_button":"Create agreement","errors":{"choose_template":"Choose an agreement template first.","create_failed":"Failed to create agreement"},"per_unit_rate_scope_help":"Applies to TTS usage only (billed per 1M UTF-8 bytes). Other products bill at platform metered pricing unless the contract sets a per-product / per-model pricing tier.","included_credits_help":"Usage credits granted EVERY billing cycle. Leave 0 to grant the monthly commit. A one-time service credit drawn against invoices does NOT belong here — record it after creation via the contract's Prepaid offset card.","included_above_commit_warning":"This grants more than the monthly commit every cycle — only monthly-bonus deals do that (and they use the monthly_bonus pricing model). For a one-time service credit, use the prepaid offset after creation. The API will reject this value.","rollover_days_label":"Rollover expiry (days)","rollover_days_help":"Unused cycle credits expire this many days after they are granted. 0 turns aging off — included credits never expire. An analyzed order form that says nothing about rollover is stamped \"End of each billing cycle\" in the credit expiry selector above.","term_one_time_hint":"Order term in months — one-time credits expire at term end (30-day PoC = 1).","assessment":{"title":"Quarterly minimum assessment","enable":"Add schedule","help":"For reseller-style contracts with quarterly minimums: monthly invoices bill pure consumption, and shortfalls settle via quarterly true-up invoices. Leave empty for normal monthly-commit contracts.","from_q":"From quarter","to_q":"To quarter","amount":"Quarterly minimum ($)","add_row":"Add row","remove":"Remove","trueup_quarters":"True-up credit quarters","renewal_months":"Renewal term (months)","renewal_rule":"Renewal minimum rule (§3.9)","renewal_rule_fixed":"Fixed — every quarter is written on the paper","renewal_rule_trailing":"Trailing two-quarter average (engine-derived)","renewal_rule_help":"With the trailing rule the engine appends each renewal term's minimum from the average of the last two assessed quarters, bounded by the floor and cap; rows written on the paper always win. The §8.4 threshold only raises a dashboard alert.","renewal_floor":"Renewal minimum floor ($, optional)","renewal_cap":"Renewal minimum cap ($, optional)","floor_cap_error":"The renewal minimum floor must not exceed the cap.","shortfall_pct":"§8.4 shortfall alert threshold (%)","release_window_title":"Evaluation opt-out window (optional)","release_window_help":"If the paper lets the customer exit an evaluation period with the Commitment released, record the last day of that window (UTC) and the clause. It can also be set later under Termination terms.","release_until":"Window closes (UTC)","release_reason":"Basis / clause","commit_note":"With a quarterly schedule the monthly commit stays 0 — monthly invoices bill consumption only.","title_period":"Period minimum assessment","from_period":"From period","to_period":"To period","amount_period":"Period minimum ($)"},"unsupported_gate":{"title":"{count, plural, =1 {This template carries # term the engine cannot represent — acknowledge it before creating:} other {This template carries # terms the engine cannot represent — acknowledge each before creating:}}","tick_label":"Acknowledge this unsupported term","hint":"These clauses stay in the contract text, but billing will not enforce them. Ticking records your acknowledgement on the contract; handle them outside the system (side letter, manual ops, or escalation).","server_required":"{count, plural, =1 {The server requires acknowledging # unsupported term of this template — it is now listed under the template.} other {The server requires acknowledging # unsupported terms of this template — they are now listed under the template.}}"},"operational":{"title":"Operational terms","help":"The entitlements and terms this agreement is created with. The note under each field says where its value came from; confirm template and system defaults against the executed paper before creating.","source_template":"Template default","source_default":"System default","auto_renew_help":"Renews for another term unless a non-renewal notice is recorded at least the notice period before the term ends.","source_from_term":"Days implied by the payment term","source_from_days":"Nearest term to the stated payment days","source_manual":"Entered manually"},"credit_expiry_label":"Credit expiry","credit_expiry_help":"How unused included credits expire. Rollover days count only under \"Days after grant\"; the other policies ignore them.","free_months":"Free months","end_date":"End date","order_term_starts":"Order term starts","term_summary":"{term} months · {free} free · ends {end}","commitment_period_months":"Commitment period (months)","free_months_inside":"Free months count toward the term: {free} free + {paid} billed = {term} months.","free_months_after":"The term starts after the free months: {free} free + {term} billed = {total} months."},"workspace":{"description":"Customer workspace","onboarded":"Onboarded","not_onboarded":"Not onboarded","account_bound_success":"Account bound — the customer's API team is now linked.","bind_account_error":"Failed to bind account","open_legal_document_error":"Failed to open customer legal document","no_team_title":"No API team bound yet — you can draft the agreement now; bind before activation (usage is metered per team).","no_team_title_has_agreement":"No API team bound yet — the agreement is drafted; bind the usage team before activation (usage is metered per team).","no_team_description":"Bind an existing account by email (its personal team is used by default). No account yet? Send an onboarding link instead. Activation stays blocked until a team is bound.","bind_account":"Bind account","primary_account":"Primary account","primary_team":"Primary team","customer_dpa":"Customer DPA","latest_invoice":"Latest invoice","signed":"Signed","signed_with_date":"Signed · {date}","required":"Required","not_required":"Not required","agreements":"Agreements","view_all":"View all","loading_contracts":"Loading contracts","no_contracts":"No contracts yet.","agreement":"Agreement","open_contract":"Open contract {id}","loading_invoices":"Loading invoices","period":"Period","legal_profile":"Legal profile","msa_version":"MSA version","signed_date":"Signed date","enabled_clauses":"Enabled clauses","msa_history":"MSA history","versions_count":"{count, plural, one {# version} other {# versions}}","dpa_document":"DPA document","customer_dpa_record":"Customer DPA record","attached":"Attached","customer_dpa_history":"Customer DPA history","events_count":"{count, plural, one {# event} other {# events}}","open_msa_record":"Open MSA record","open_generated_customer_dpa":"Open generated customer DPA","open_customer_dpa_record":"Open customer DPA record","generated_dpa_document":"Generated DPA document: {key}","runtime_state":"Runtime state","open_invoices":"Open invoices","pro_membership":"Pro membership","enabled":"Enabled","zero_retention":"Zero retention","concurrency":"Concurrency","auto_recharge":"Auto recharge","support_context":"Support context","open_support_tickets":"Open support tickets","support_search_email":"Support search email","support_user_id":"Support user id","structured_customer_info":"Structured customer info","company_address":"Company address","billing_address":"Billing address","title":"Title","billing_contact":"Billing contact","recent_customer_audit":"Recent customer audit","loading_audit":"Loading audit","no_audit_logs":"No customer audit logs.","legal_agreements":"Signed legal agreements","combined_document":"(combined document)","msa_combined_hint":"No standalone MSA record — for imported customers the MSA is typically part of the signed MSA + Order Form (see Agreements).","preview":"Preview","preview_error":"Couldn't load the preview.","preview_signed":"Signed document","preview_render":"Generated render (unsigned)","next_steps_title":"Next steps","step_bind":"Bind usage account (before activation)","step_agreement":"Create agreement from signed PDF","step_activate":"Activate contract","step_invoice":"First invoice drafted","bind_create_if_missing":"Create the account if it doesn't exist.","bind_create_if_missing_help":"The customer takes over via password reset — nothing is emailed.","archive":"Archive","unarchive":"Unarchive","archive_title":"Archive this customer?","archive_warning":"{company} will be hidden from customer lists and pickers, and no new onboarding links, account bindings, or agreements can be created for it until it is unarchived. Nothing is deleted and archiving is reversible. The system refuses to archive while any contract is still in progress or active.","archive_cancel":"Cancel","archive_confirm":"Archive customer","archive_done":"Customer archived.","unarchive_done":"Customer restored.","credit_expiry":"Credit expiry","platform_guarantees":"Platform-enforced guarantees"},"new_agreement":"New Agreement","active_contracts":"Active contracts","onboarding":"Onboarding","onboarding_completed":"Completed","onboarding_not_started":"Not started","onboarding_invite_sent":"Invite sent","onboarding_manual":"Manually imported","open_actions_for":"Open actions for {name}","view_contracts":"View Contracts","view_invoices":"View Invoices","view_legal_profile":"View Legal Profile","edit_customer":"Edit Customer","resend_onboarding":"Re-send Onboarding","send_onboarding_link":"Send Onboarding Link","resend_onboarding_title":"Re-send onboarding?","resend_onboarding_description":"This customer has already completed onboarding. Re-sending will collect updated customer information and may overwrite the customer record used for future agreements.","continue":"Continue","view_as_user":"View as user","view_as_user_error":"Failed to open the customer's account view","signals_title":"Billing signals","signals_description":"Live cycle usage vs. commitment for every active billing contract — spot churn risk and upsell opportunities.","signals_empty":"No active billing contracts.","signals_load_error":"Failed to load billing signals.","signals_pct_of_minimum":"{pct}% of minimum","signals_usage_no_allowance":"Usage this cycle","signals_overage":"Overage so far","signals_projected_invoice":"Projected invoice","signals_pace":"Cycle pace","signals_prev_cycle":"Previous cycle","signals_cycle":"Current cycle","signals_term_end":"Term ends","signals_term_end_days":"in {days} days","signal_churn_risk":"Churn risk","signal_upsell":"Upsell","signal_renewal_60d":"Renewal ≤ 60d","signal_usage_drop":"Usage drop","signal_offset_pool_active":"Credit pool active","signals_expl_churn_risk":"Fires when ≥30% of the cycle has elapsed and the projected pace is below half the minimum. Pace {pace} vs. {allowance} allowance.","signals_expl_upsell_overage":"Usage already exceeds the included allowance — {overage} of billable overage so far this cycle.","signals_expl_upsell_pace":"Projected pace {pace} exceeds 120% of the {allowance} allowance — commitment may be undersized.","signals_expl_renewal_60d":"Contract term ends in {days} days — time to start the renewal conversation.","signals_expl_usage_drop":"Projected pace {pace} is below half of the previous cycle's {prev}.","signals_expl_offset_pool_active":"A prepaid/settlement credit pool is still offsetting this customer's invoices — cash already collected.","signals_trend_title":"Daily platform usage — last {days} days","signals_trend_series":"Usage","signals_trend_open":"View usage trend","signals_trend_empty":"No platform usage recorded in this window.","billing_mode":"Billing mode","signal_balance_low":"Low balance","signals_expl_balance_low":"Wallet balance {balance} covers less than half a month at the current burn ({pace}/mo) — time to top up or move to contract billing.","signals_wallet_balance":"Wallet balance","signals_summary_tracked":"{count, plural, =1 {# tracked billing contract} other {# tracked billing contracts}}","usage_this_cycle":"Cycle usage","commit_pct":"Commit %","signals":"Signals","updated":"Updated","toggle_details":"Toggle billing details for {name}","lifecycle_winding_down":"Winding down · {date}","lifecycle_churned":"Churned","create_primary_email_label":"Primary email (optional)","create_primary_email_help":"The account the customer will use for API usage. Not on the contract? Leave it blank — you can create/bind the account later in the customer workspace.","create_company_placeholder":"Company legal name","show_archived":"Show archived","hide_archived":"Hide archived","archived_badge":"Archived","dossier":{"title":"Dossier","description":"What the system cannot derive: decisions and their rationale, verbal agreements, the verification log, one-off actions with their audit ids, open questions. Status, balances and invoices stay live above and are never copied in.","version":"v{version}","version_none":"No dossier yet","by_human":"Human","by_agent":"Agent","updated_by":"Updated by {actor}","drift_none":"No drift","drift_count":"{count, plural, =1 {# unresolved citation} other {# unresolved citations}}","drift_checked":"Citations checked {date}","drift_never_checked":"Citations never checked","check_drift":"Check drift","checking_drift":"Checking…","drift_checked_toast":"Citations re-resolved","drift_check_error":"Drift check failed","citations_summary":"{count, plural, =1 {# cited id} other {# cited ids}}","unresolved_ids":"unresolved","versions":"Versions","load_error":"Could not load the dossier: {error}","retry_load":"Retry","sections":{"identity_paper":"Identity & paper","commercial_summary":"Commercial summary","lifecycle_timeline":"Lifecycle timeline","unstructured_terms":"Unstructured terms","one_off_actions":"One-off actions","verification_log":"Verification log","open_questions":"Open questions"},"empty_section":"Nothing recorded yet.","edit":"Edit","cancel":"Cancel","save":"Save","retry_save":"Retry save","markdown_placeholder":"Markdown. Cite ids (contract, invoice, audit row) so the drift check can follow them.","reason_label":"Reason for this change","reason_placeholder":"Why this changes — at least {min} characters","reason_too_short":"At least {min} characters","saved":"Section saved as v{version}","save_error":"Could not save: {error}","save_error_generic":"Save failed","conflict_notice":"Someone else saved v{version} while you were editing. The dossier was reloaded — review your text against it, then retry.","versions_title":"Dossier versions","versions_description":"Newest first. Open a version to compare it with the current text; restoring writes it back as a new version.","versions_empty":"No versions yet — the dossier has never been saved.","versions_error":"Could not load versions: {error}","current_marker":"current","select_version":"Select a version to compare it with the current dossier.","diff_vs_current":"Diff vs v{version}","snapshot":"Snapshot","unchanged_all":"Identical to the current dossier.","restore":"Restore v{version}","restore_confirm":"Write v{version} back as v{next}? All seven sections are replaced at once.","restore_confirm_action":"Confirm restore","restore_reason_placeholder":"Reason (optional)","restore_done":"Restored as v{version}","restore_error":"Restore failed: {error}","restore_error_generic":"the server refused","restore_forbidden":"Restoring a version needs customer.dossier.restore — it rewrites all seven sections at once.","conflict_section_changed":"This section also changed on the server — red lines are v{version}'s text your draft would erase, green lines are yours.","conflict_section_unchanged":"This section is unchanged on the server (other sections moved), so retrying keeps your text.","conflict_view_diff":"Diff vs server","conflict_view_server":"Server text (v{version})","conflict_use_server":"Use server text","save_over":"Save mine over v{version}","unclassified_count":"{count, plural, =1 {# unclassified id} other {# unclassified ids}}","unclassified_ids":"unclassified","unclassified_hint":"Ids that resolve nowhere and that the text does not name — informational, not drift.","citation_kinds":{"customer":"Customer","contract":"Contract","invoice":"Invoice","amendment":"Amendment","template":"Template","team":"Team","user":"User","audit":"Audit","team_move":"Team move","import_job":"Import job","agent_run":"Agent run","action_proposal":"Action proposal","credit_record":"Credit record","manual_usage":"Manual usage","unclassified":"Unclassified","unknown":"Unknown"}},"agent":{"title":"Ask the agent","description":"The customer agent reads the live facts and the dossier, answers your question, may update dossier sections and files action proposals for review — it never executes a change itself.","threads":"Threads","new_thread":"New thread","no_threads":"No threads yet — ask the first question.","thread_untitled":"Untitled thread","thread_turns":"{count, plural, =1 {# turn} other {# turns}}","load_error":"Could not load: {error}","retry":"Retry","previous_turns":"{count, plural, =1 {# earlier turn} other {# earlier turns}}","question_label":"Question (starts a new thread)","question_label_continue":"Follow-up on this thread","question_placeholder":"e.g. What did we verify on the signed paper and what is still open?","ask_hint":"Ctrl/⌘ + Enter to send. A run takes one to a few minutes.","ask":"Ask","asking":"Sending…","attached_in_flight":"This thread already has a run in progress — showing it; your question stays in the box for after it finishes.","enqueue_failed":"The worker queue refused the run (recorded as failed): {error}","ask_error":"Could not ask: {error}","ask_error_generic":"the server refused","status_pending":"Queued","status_running":"Running","status_completed":"Completed","status_failed":"Failed","status_cancelled":"Cancelled","cancel":"Cancel run","cancel_requested":"Cancelling…","cancel_done":"Cancellation requested","cancel_error":"Could not cancel: {error}","answer_pending":"Working — the answer appears here when the run completes.","no_answer":"No answer was recorded.","error_label":"Error:","usage":"{requests, plural, =1 {# model request} other {# model requests}} · {tool_calls, plural, =1 {# tool call} other {# tool calls}}","dossier_changes":"Dossier sections updated","proposals":"Action proposals filed","proposal_open_contract":"Open contract","proposal_open_customer":"Open customer","trace":"{count, plural, =0 {Trace} =1 {Trace (# row)} other {Trace (# rows)}}","trace_round":"Turn {n}","trace_waiting":"Waiting for the first trace rows…","trace_empty":"Nothing was recorded for this run.","trace_truncated":"Trace capped — later rows were not recorded.","trace_error":"Trace unavailable: {error}"},"signal_one_time_past_end":"Past term end","signal_guarantee_expired":"Guarantee expired","signals_expl_one_time_past_end":"One-time order form still live after its term ended ({date}) — the team keeps the contract's entitlements until it is closed.","signals_expl_guarantee_expired":"A paper guarantee on this contract expired in the last 30 days; the platform stopped enforcing it and left the team's settings unchanged.","import_review":{"title":"Review the signed import","back":"Customers","documents":"Documents to create","document_fallback":"Document {index}","document_created":"Agreement created","reading":{"complete":"Read in full","partial":"Partly read","needs_reanalysis":"Needs a new analysis"},"show_paper":"Show the signed paper","paper_title":"Signed paper","resize":"Resize the paper and the table","summary_show":"Show summary","summary_hide":"Hide summary","effects_title":"What the system will do","find":"Find a parameter","create":"Create agreement","not_found":"This review was not found. Only the person who ran the import can open it.","no_access":"You don't have access to this import.","expired":"This import has expired. Import the signed files again.","load_failed":"The review did not load.","running":"Still reading the signed files. This page updates on its own.","failed":"The reading did not finish. Import the signed files again.","empty":"Nothing in this import can become an agreement.","import_again":"Import again","needs_reanalysis_title":"This document needs a new analysis","partial_title":"Part of the signed files was not read","reasons":{"old_reader":"It was read the earlier way, which does not record where each value came from.","reader_sheet_missing":"The AI reader's record of this file was not kept.","document_unread":"The AI reader could not read this file.","remap_failed":"The reading could not be laid out as a parameter table.","run_incomplete":"The AI reader stopped before the end; some terms may be missing.","documents_not_read":"Some files in the upload were not read.","other":"This reading cannot be reviewed here."},"rows_title":"Read from the paper","rows_empty":"The AI reader found no terms on this paper.","collapsed":"{count, plural, one {# more parameter follows the system default} other {# more parameters follow the system defaults}}","value_on":"On","value_off":"Off","state":{"unchecked":"Not checked","checked":"Checked","edited":"Edited","deleted":"Removed","added":"Added","decision":"Your decision","approximate":"Wording differs","not_located":"Not located","checked_with_page":"Checked with page {page}","blocks_create":"Stops create"},"source_page":"p. {page}","source_default":"System default","paper":{"pending":"The page images are being prepared.","not_rendered":"This import has no page images. Import the files again to see the paper.","failed":"The page images could not be prepared.","no_access":"Viewing the signed paper needs access to signed documents.","expired":"The page images have expired. Import the files again to see the paper.","load_failed":"The signed paper did not load.","text_only":"This file is shown as text.","unavailable":"This file cannot be shown.","none":"No signed paper belongs to this document.","pages":"{count, plural, one {# page} other {# pages}}","page_alt":"Page {page} of {name}","term":"A term","legend":{"title":"Legend","reader":"Read by the AI","edited":"Edited","added":"Added by you","removed":"Removed","approximate":"Wording differs","must_handle":"Amount with no term","reminder":"Number with no term"},"page_of":"Page {page} of {count}","zoom_in":"Zoom in","zoom_out":"Zoom out","zoom_fit":"Fit to width","strip":"Pages","go_to_page":"Go to page {page}","page_level":"{count, plural, one {# term not placed on this page} other {# terms not placed on this page}}","unplaced":"{count, plural, one {# quote not found on this paper} other {# quotes not found on this paper}}","scanned_quotes":"Quotes read from page {page}","unread_page":"This page could not be read.","text_quotes":"The quotes read from it:","no_quotes":"No terms were read from it.","tab_terms":"{count, plural, one {# term} other {# terms}}","tab_to_check":"{count, plural, one {# money term to check} other {# money terms to check}}","open_probes":"{count, plural, one {# amount has no term} other {# amounts have no term}}","probe":{"label_must_handle":"Amount with no term: {text}","label_reminder":"Number with no term: {text}","label_handled":"Marked as not a term: {text}","state_must_handle":"No term on the sheet uses this amount, duration or percentage.","state_reminder":"No term on the sheet uses this number.","state_mapped":"A term on the sheet uses it.","state_not_a_term":"Marked as not a term.","map":"Map to a parameter","not_a_term":"This number is not a term","reason_title":"Why is it not a term?","reasons":{"example":"Example or explanation","date_or_number":"Date or reference number","other":"Other","historical_version":"From an earlier version","included_elsewhere":"Already part of another term"},"note":"Note (optional)","pick_row":"Which term includes it?","record":"Record","show_row":"Show the term","back":"Back","pick_row_missing":"Choose the term that includes this number."},"bubble":{"title":"Which term does this passage set?","words":"p. {page} · {count, plural, one {# word} other {# words}}","area":"p. {page} · area of a scanned page","typed_label":"The passage as printed","search":"Search the parameters","type_first":"Suggestions appear once the passage is typed.","matching":"Matching the passage…","failed":"The suggestions did not load.","retry":"Try again","empty":"No parameter matches this passage.","keyword":"Keyword match","confidence":"Confidence {value}","on_sheet":"Already on the sheet","follow_up":"Record as a term handled by hand","not_a_term":"Not a contract term","results":"Suggestions","add":"Add","none_are_terms":"{count, plural, one {This number is not a term} other {None of these # numbers are terms}}","add_all":"Add all {count}","add_both":"Add both","add_field":"Add a field","engine_cannot":"Part of this the system cannot run; it is also recorded as a term handled by hand.","fill_in":"Fill in “{name}”.","not_in_passage":"A number on this card is not in the selected passage. Select the passage that states it.","on_sheet_reanchor":"This term is already on the sheet; its row will point at this passage.","record_follow_up":"Record as handled by hand","relied_on":"Relied on:","update_entry":"Update the entry","updates_entry":"Updates the entry already on the sheet.","use_for_row":"Use this passage for the row"},"page_check":{"button":"Check all values on this page","waiting":"{count, plural, one {# value waiting} other {# values waiting}}","all_checked":"Every value on this page is checked","list_title":"Checks {count, plural, one {# value} other {# values}} on page {page}","page":"Page {page}","cancel":"Cancel","confirm":"Confirm {count, plural, one {# value} other {# values}}","not_seen":"{count, plural, one {# value waiting} other {# values waiting}} · page not viewed yet","below":"{count, plural, one {# more below} other {# more below}}","show_all":"Show all","retry":"Retry {count, plural, one {# value} other {# values}}"}},"result":{"audit":{"added":"{count, plural, one {# added from the paper} other {# added from the paper}}","answered":"{count, plural, one {# question answered} other {# questions answered}}","by_hand":"{count, plural, one {# term handled by hand} other {# terms handled by hand}}","checked":"{count, plural, one {# row checked} other {# rows checked}}","decisions":"{count, plural, one {# value of yours, not on the paper} other {# values of yours, not on the paper}}","edited":"{count, plural, one {# row changed} other {# rows changed}}","not_terms":"{count, plural, one {# number marked not a term} other {# numbers marked not a term}}","removed":"{count, plural, one {# row removed} other {# rows removed}}"},"audit_title":"What the agreement keeps from this review","back_to_zip":"Back to the zip for its invoices","created_at":"Created {date}","detail":{"attach_declined":"Not attached. Upload the signed file on the agreement page.","contract_not_editable":"The agreement had already moved past drafting.","failed":"This step did not finish; retry it.","msa_register_skipped":"The master agreement was not registered; retry it.","msa_stage_not_found":"No master agreement was waiting to be registered.","no_signature_evidence":"The file shows no e-signature. Attach the signed copy on the agreement page.","nothing_to_fill":"The customer record had no empty details to fill.","original_not_retained":"The analysed file is no longer kept. Upload the signed file on the agreement page.","renders_unavailable":"The page images were no longer available.","rerender_queued":"The page images are being made again from the signed copy.","signed_paper_governs":"The signed paper is the agreement: no template document and no legal review.","after_create_step_for_person":"Some steps after create are left to a person on the go-live checklist."},"nothing_billed":"Nothing billed","nothing_billed_note":"Nothing is billed until the agreement is activated on its page, with its own preview.","open_contract":"Open the agreement","retry":"Retry the unfinished steps","retrying":"Retrying…","show":"Show the result","show_sheet":"Look at the frozen sheet","status":{"done":"Done","failed":"Did not finish","pending":"Not run yet","skipped":"Skipped","running":"Running"},"step":{"attach_signed":"Signed copy","audit_record":"Review record","create_customer":"Customer from the paper","fill_customer":"Customer details","forget_analysis":"Closing the import","generate_document":"Document","legal_review":"Legal review","paper_archive":"Paper pages","persist":"Draft agreement","register_msa":"Master agreement","draft_after_create":"Steps after create"},"steps_title":"What create did","title":"Draft agreement created","title_signed":"Signed agreement created","title_signed_needs_start_date_review":"Signed agreement created; its start date needs a check","title_unfinished":"Agreement created; {count, plural, one {# step} other {# steps}} did not finish","title_running":"Finishing the agreement: {count, plural, one {# step} other {# steps}} to go","running_note":"The draft is saved; the remaining steps run in the background.","running_folded":"An agreement is being created from this document. This review is now read-only.","running_stalled":"The remaining steps are taking longer than expected; this page stopped checking. Reload it to see where they stand.","running_for":"Running for {time}","customer":"Customer: {name}","customer_created":"Customer: {name} (new, made from the paper)","signed_on_paper":"Recorded as signed on {date}, as the paper states.","signed_on_attached":"Recorded as signed on {date}, the day the signed file was attached; the paper shows no signing date.","ends_on":"Ends on {date}.","state":{"signed":"Signed agreement","signed_needs_start_date_review":"Signed; its start date is before the signing day and needs a check","draft":"Draft until the signed copy is attached","legal_review":"In legal review"},"title_legal_review":"Agreement created, in legal review","title_awaits_copy":"Draft agreement created; waiting for the signed copy","created_signed":"A signed agreement was created from this document. This review is now read-only.","created_signed_needs_start_date_review":"A signed agreement was created from this document; its start date needs a check. This review is now read-only.","created_draft":"A draft agreement was created from this document. This review is now read-only.","created_legal_review":"An agreement in legal review was created from this document. This review is now read-only.","signed_on_paper_not_attached":"Signed on {date} on the paper; signed copy not attached."},"entry_hint":"Every value the AI reader found, next to the signed paper.","open":"Review on the paper","customer_title":"Signed imports to review","customer_item":"Read on {time}","value":{"days":"{count, plural, one {# day} other {# days}}","months":"{count, plural, one {# month} other {# months}}","hours":"{count, plural, one {# hour} other {# hours}}","minutes":"{count, plural, one {# minute} other {# minutes}}","quarters":"{count, plural, one {# quarter} other {# quarters}}","concurrent_requests":"{count, plural, one {# concurrent request} other {# concurrent requests}}","day_of_month":"Day {count} of the month","back_to_default":"back to the system default","default_is":"System default: {value}","template_other":"A template outside the library","contract_type_other":"Other agreement type"},"unit":{"days":"days","months":"months","hours":"hours","minutes":"minutes","quarters":"quarters","concurrent_requests":"concurrent requests","day_of_month":"day of the month"},"price_unit":{"million_utf8_bytes":"per 1M UTF-8 bytes","million_audio_seconds":"per 1M audio seconds","audio_hour":"per audio hour","request":"per request","agent_minute":"per agent minute","transfer_minute":"per transfer minute","rental_day":"per rental day","million_llm_tokens":"per 1M LLM tokens","output":"per output","video_second":"per second of video","megapixel":"per megapixel"},"source":{"standing_rule":"System default (standing rule)","team_current":"Team's current setting","reader_rule":"Filled by the system rule","not_stated":"Not on the paper","operator_entry":"Entered by you · not on the paper","scanned":"p. {page} · scanned page, position not located","not_found":"Not found on the paper","show":"Show on the paper: {source}","worked_out":{"final_cycle_minimum":"Completed by a rule from the paper's words","order_term_end_from_service_start":"Worked out from the service start and the term length"}},"actions":{"label":"Actions for {name}","edit":"Edit value","check":"Confirm: matches the paper","move":"Move to another term","remove":"Remove","reselect":"Re-select on the paper","check_none":"There is no passage on the paper to confirm this value against."},"editor":{"title":"Edit {name}","now":"Now: {value}","choose":"Choose…","problem":{"required":"Enter a value.","number":"Enter a number.","integer":"Enter a whole number.","negative":"Enter zero or more.","percent":"Enter a percentage from 0 to 100.","decimals":"{count, plural, one {Use at most # decimal place.} other {Use at most # decimal places.}}","date":"Enter a date.","option":"Choose one of the options."},"paper_only":"A risk setting: only a value the paper states. After creation it changes on the contract page.","decision_warning":"This value is not on the paper; saving records it as your decision, with a warning.","not_in_passage":"“{value}” is not in this row's passage: “{quote}”","no_passage":"“{value}” has no passage on the paper.","reselect":"Select the passage on the paper","record_decision":"Record as my decision","back":"Back to editing","save_decision":"Save as my decision"},"defaults":{"show":"Show","hide":"Hide","change":"Change","change_named":"Change {name}"},"topics":{"identity":"Identity & documents","term":"Term & renewal","minimum":"Minimum & credits","prices":"Prices by product","payment":"Payment","guarantees":"Guarantees & SLA","termination":"Termination","operations":"Operations & risk","other":"Other"},"table":{"order":"Order of the rows","paper_order":"Paper order","by_topic":"By topic","document_page":"{name} · p. {page}","decisions":"From your decisions","unplaced":"Not placed on the paper"},"finder":{"placeholder":"Find any parameter, e.g. “rollover” or “how long to pay”","catalog":"{count, plural, one {# parameter} other {# parameters}} in the catalog. Search by name, synonym or technical id.","empty":"No parameter matches “{query}”.","results":"Parameters","matching":"Matching by meaning…","entries":"{count, plural, one {# entry on the sheet} other {# entries on the sheet}}","not_on_sheet":"Not on this sheet","load_failed":"The parameter list did not load.","shortcut":"Ctrl {key}","action":{"show_row":"Show the row","edit":"Enter a value the paper does not state","system":"Maintained by the system; not changed here","paper_only":"A risk setting: only a value the paper states","none":"Added from a passage on the paper"}},"follow_ups":{"title":"The system cannot run these · handled by hand","title_open":"The system cannot run these · handled by hand · {count, number} without an owner yet","money":"Money","source":{"reader":"Found by the AI reader","operator":"Added by you"},"waived":"Waived","owner_missing":"No owner yet","cadence":{"once":"Check once","per_invoice":"Check every invoice","monthly":"Check monthly","quarterly":"Check quarterly","on_event":"Check when it happens"},"cadence_missing":"No check cadence yet","owner":"Owner: {owner}","save":"Save owner and cadence","set_owner":"Set owner and cadence","waive":"No follow-up needed","waive_reason":"Why no follow-up is needed","waive_save":"Save without follow-up","owner_other_role":"Another team","disposed":"Not charged: another clause governs","clause_question":"Which clause governs is a question for you","clause_title_late_interest":"Late-payment interest","clause_title":"A clause another clause contradicts","go_to_question":"Go to the question"},"decisions":{"title":"{count, plural, =0 {Decisions for you} other {Decisions for you · # open}}","class":{"1_silent_money":"The paper is silent on a money term","2_engine_cannot":"The system cannot run this term","3_disagree":"Statements disagree","4_binding":"Which customer, team and template"},"subject":{"customer":"Which customer is this?","team":"Which account to bind?","template":"Which template for the contract text?"},"open":"Open","answered":"Answered","show_row":"Show the row","answer_customer":"Customer: {name}","answer_model":"Catalog model: {name}","answer_team":"Team: {name}","answer_team_unnamed":"A team was picked","answer_template":"Template: {name}","answer_value":"Your value: {value}","answers":"Answers to “{name}”","cancel":"Cancel","change":"Change","customer_group_all":"Customers","customer_group_match":"Matched by the AI reader","customer_label":"Existing customer","list_failed":"The list did not load. Cancel and try again.","list_price_chip":"Platform list price · confirmed by you","mark_hint":"Select the passage that states it on the paper, then pick this term in the box that opens.","model_group_match":"Suggested for this name","model_label":"Catalog model","options":{"accept_bytes":"Bill per byte and accept the difference","alternative_reading":"Use the other reading","bind_at_activation":"Bind at activation","choose_customer":"Pick an existing customer","choose_team":"Pick a team","choose_template":"Pick a template","computed_value":"Use quantity × price ({value})","create_from_paper":"Create the customer from the paper","document_value":"Use “{value}”","import_as_customer_template":"Import this file as the customer's own template","keep_reading":"Keep the AI reader's reading","manual_process":"Handle it by hand","map_to_catalog":"Pick the catalog model","mark_on_paper":"Mark it on the paper","no_catalog_model":"The catalog has no such model","not_a_term":"Not a term: nothing to handle","not_offered":"Not offered to this customer","operator_value":"Enter a value the paper does not state","other":"Another answer","paper_value":"Use the paper's value ({value})","platform_list_price":"Bill at the platform list price","record_value":"Keep the customer record's value ({value})","stated_value":"Use the stated amount ({value})","this_statement_binds":"This one binds: {name}","keep_free_months":"Keep the free months; the agreement does not renew automatically","keep_auto_renew":"Keep automatic renewal; no free months","no_free_months":"No free months","correct_term_end":"Correct the term end","correct_window_length":"Correct the window length","clause_governs":"{document}: {percent}% governs","clause_governs_plain":"{document}: this clause governs","pick_model":"Pick the model","remove_from_reading":"The paper does not state this term"},"question":{"arithmetic":"The stated amount ({stated}) is not quantity × price ({computed}).","billed_elsewhere":"The paper commits money that another system bills.","covered_unpriced":"The agreement covers {family}, but {count, plural, one {# of its models has} other {# of its models have}} no price.","customer":"Create needs the customer this agreement is for.","customer_match":"Closest match: {name}.","customer_record":"The customer record says something other than the paper.","documents":"The files state different values.","engine_clause":"The paper has a money term the system cannot run by itself.","fields":"Two statements on the paper disagree; pick the one that binds.","paper_model":"The paper names “{label}”, which the catalog does not sell under that name.","per_character":"The paper prices per character; the system bills per byte, so some scripts cost more per character.","reader_item":"The AI reader marked this passage for a person to decide.","readings":"The passage can be read two ways.","silent_field":"The paper does not state it, and billing needs it.","studio_route":"The paper prices use through the Studio app, which the agreement does not meter.","team":"Usage is billed per team. Without one, the agreement stays a draft until a team is bound at activation.","template_none":"No template matched this paper.","template_retired":"The matched template is no longer in use.","template_zdr":"The template promises zero data retention, which the paper does not grant; the document cannot be made from it.","unpriced_family":"The team used {family} in the last 30 days, and the paper sets no price for it.","rule_trial_end_date":"The paper grants free months, but the term has no end date; free months need one.","rule_trial_term_basis":"The paper grants free months. Does the term count from the effective date or from the first paid month?","rule_trial_auto_renew":"The paper grants free months and renews automatically; the system cannot hold both. Which does the agreement keep?","rule_trial_not_shorter":"The free months are as long as the term or longer. Check both against the paper.","rule_trial_one_time":"The paper grants free months but reads as a one-time purchase; free months exist only on subscriptions.","rule_assessment_windows_misaligned":"The windows the minimum is checked over do not fill the paid term. Which figure does the paper state?","clause_precedence":"Two clauses state different values for the same term. Which one governs?","clause_precedence_late_interest":"Two clauses state different late-payment interest. Which one governs?","credits_follow_fee":"The paper gives no credits with the one-time fee, but activation and invoicing would grant the fee as credits.","credits_follow_commitment":"The paper gives no included credits with the minimum, but activation and invoicing would take the minimum as credits.","no_answer":"There is nothing to answer here yet; Create waits until the system can run it.","no_answer_next":"The review can stay open until then.","settled_by_paper":"The paper settles this itself: the governing clause says it replaces the other. Change the answer if that is wrong.","scope_missing":"Which published model is this price for?"},"save":"Save answer","team_email":"Account email","template_label":"Template","template_note":"Decides the contract text only, not billing.","readings":{"kept":"The AI reader's reading: {reading}","other":"The other reading: {reading}","bills":"What it bills: {bills}","values_title":"The other reading's values","no_editor":"“{name}” cannot be set here.","answer_value":"{name}: {value}","not_in_passage":"“{value}” is not in this row's passage or in the passage the two readings are about: “{quote}”","stated_units":"The passage the two readings are about states {value} in {unit}.","stated_units_number":"The passage the two readings are about states this number in {unit}."},"clause":{"expressly_supersedes":"The paper says this one replaces the other","document":{"order_form":"Order form","msa":"Master agreement","incorporated_terms":"Online Terms","dpa":"Data processing agreement","other":"The paper"}},"rule_title":{"assessment_windows_misaligned":"Minimum check windows that do not fill the paid term","trial_end_date":"Free months without an end date","trial_term_basis":"Free months and when the term starts","trial_auto_renew":"Free months with automatic renewal","trial_not_shorter":"Free months as long as the term","trial_one_time":"Free months on a one-time purchase"}},"options":{"msa_version":"Version {value}","billing_frequency":{"monthly":"Monthly"},"minimum_source":{"trailing_two_quarter_average":"Average of the last two quarters"},"renewal_minimum_rule":{"fixed":"Set by the paper","trailing_two_quarter_average":"Recalculated from the last two quarters"},"concurrency_limit_source":{"paper":"From the signed paper","team_current":"The team's current setting","template":"From the template"},"credit_grant_timing":{"on_invoice":"When the invoice is generated","on_payment":"When the invoice is paid","on_issue":"When the invoice is issued, before payment","on_send":"When the invoice is sent, before payment"},"covered_model_status":{"active":"Covered now","awaiting_ga":"Covered once generally available"},"precedence_basis":{"terms_control":"The online terms control","agreement_controls":"The agreement controls"},"membership_plan":{"pro":"Pro membership","max":"Max membership"},"payment_method":{"mercury":"Bank transfer (ACH or wire) · collected through Mercury","stripe":"Card · collected through Stripe","quickbooks":"Invoice · collected through QuickBooks","prepaid":"Prepaid in the platform · nothing to collect"},"billing_model":{"advance":"Billed in advance, at the start of each period","arrears":"Billed in arrears, at the end of each period"},"pricing_model":{"minimum_commitment":"Minimum commitment","one_time_purchase":"One-time purchase","monthly_bonus":"Monthly bonus","payg":"Pay as you go","month_to_month":"Month-to-month","non_billing":"Non-billing"}},"text_codes":{"document_composition":{"combined_msa_order_form":"Order form with the master terms in it","order_form_only":"Order form only (master terms in a separate agreement)","legal_only":"Legal document only (DPA, BAA, NDA)","other":"Other"}},"boolean":{"term_auto_renew":{"on":"Renews automatically","off":"Ends at term end"},"unsupported_terms_acknowledged":{"on":"Acknowledged","off":"Not acknowledged"},"due_from_invoice_date":{"on":"Counted from the invoice date","off":"Counted from the period end"},"banked_excess":{"on":"Excess carries forward","off":"Each window stands alone"},"zero_data_retention":{"on":"Zero data retention on","off":"Zero data retention off"},"quality_guard":{"on":"Quality guard on","off":"Quality guard off"},"pro_membership_enabled":{"on":"Membership included","off":"No membership"},"auto_recharge_enabled":{"on":"Automatic top-up on","off":"Automatic top-up off"},"fee_waived":{"on":"Fee waived","off":"Fee charged"},"sla_blocked_while_past_due":{"on":"No credit while invoices are overdue","off":"Credit owed even when overdue"},"one_time_expire_at_term_end":{"on":"Unused credits expire at term end","off":"Unused credits stay after the term"},"revenue_share_active":{"on":"Revenue share active","off":"No revenue share"},"counts_toward_commitment":{"on":"Counts toward the minimum","off":"Billed outside the minimum"},"free_window_applies":{"on":"Free during the free months","off":"Billed during the free months"},"includes_llm":{"on":"Includes language model usage","off":"Language model usage billed separately"},"below_cost":{"on":"Below cost","off":"At or above cost"},"termination_permitted":{"on":"Allowed","off":"Not allowed"},"termination_disable_access":{"on":"Access turned off","off":"Access kept"},"termination_evidence_required":{"on":"Proof required","off":"No proof required"},"terms_link_reachable":{"on":"Link reachable","off":"Link not reachable"},"published_rates_catch_all":{"on":"Other products at published prices","off":"No sentence for other products"},"published_rates_counts_toward_commitment":{"on":"Counts toward the minimum","off":"Billed on top of the minimum"}},"violations":{"active_order_form_exists":"The customer already has a live agreement of this type.","agent_coverage_requires_minutes_rate":"Agents are covered, but there is no per-minute agent price for the whole coverage.","assessment_graduated_rate_line_forbidden":"With a minimum checked over a window, price bands must count usage over the whole term.","assessment_graduated_tiers_forbidden":"With a minimum checked over a window, each product takes one flat price.","billing_timezone_invalid":"The billing time zone is not a recognised time zone.","billing_timezone_requires_paper_clause":"A billing time zone is set only when the paper states one.","breaker_remaining_commitment_requires_assessment":"The unpaid-usage limit is measured against a remaining commitment the contract does not have.","commitment_ladder_level0_mismatch":"The first commitment level does not match the monthly minimum and included credits.","commitment_ladder_not_monotonic":"Each commitment level needs a higher minimum and a lower price than the one before.","commitment_ladder_requires_covered_tts_skus":"Commitment levels price text-to-speech models, but none are listed.","commitment_level_annual_mismatch":"A commitment level's yearly amount is not 12 times its monthly minimum.","concurrency_block_price_unset":"The extra concurrency block has no price.","contract_team_unbound":"No team is bound yet; the agreement can go live only once one is.","contract_terms_invalid":"Some terms break the contract rules.","contract_year_anchor_invalid":"The contract year must start between the effective date and 12 months after paid billing starts.","contract_type_unknown":"The system does not know this agreement type.","coverage_alert_quantity_family":"An alert on free-period usage applies to agents only.","coverage_boundary_not_cycle_start":"Coverage of a product must start and end on the first day of a billing cycle.","coverage_excluded_message_required":"A product left out of the contract needs the message customers see when they use it.","coverage_overlap":"Two coverage periods of the same product overlap.","coverage_preview_required":"A change of coverage needs a billing preview first.","coverage_preview_stale":"The coverage preview is out of date.","coverage_rate_lines_on_inactive_family":"A product has prices but is not covered by the contract.","coverage_requires_invoice_contract":"Covering agents, video or images needs a contract billed by invoice.","coverage_side_unsupported":"This product is not offered in one of the places the paper covers it.","coverage_unpriced_sku":"Some models of a covered product have no price.","coverage_zdr_hook_missing":"Zero data retention cannot be enforced for this product yet.","covered_tts_all_tier_forbidden":"Covered text-to-speech is priced model by model, not with one price for all models.","covered_tts_duplicate_backend":"A text-to-speech model is listed twice.","covered_tts_free_backend":"A free text-to-speech model cannot be one of the covered models.","covered_tts_graduated_forbidden":"Covered text-to-speech takes one flat price, not price bands.","covered_tts_missing_tier":"A covered text-to-speech model has no price.","covered_tts_placeholder_has_backend":"A model awaiting general availability cannot point to a live model yet.","covered_tts_successor_requires_designation":"A successor model must name the model it replaces.","covered_tts_tier_price_mismatch":"The text-to-speech prices do not match the commitment level's price.","covered_tts_unknown_backend":"A covered text-to-speech model is not in the catalog or has no start cycle.","credit_policy_override_invalid":"This way of handling credits at the close is not allowed.","credit_policy_override_one_time_only":"Changing how credits are handled at the close applies to one-time contracts only.","credit_policy_override_reason_required":"Keeping credits after the close needs a written reason.","customer_archived":"The customer is archived.","customer_not_found":"The customer was not found.","effective_date_not_local_midnight":"Contract dates must start at midnight in the billing time zone.","end_date_order_term_mismatch":"The end date does not match the length of the term.","governing_msa_invalid":"The master agreement chosen to govern this one cannot be used.","guarantee_concurrency_mismatch":"The promised reserved concurrency differs from the account's concurrency limit.","guarantee_conflict":"Two promises to the customer conflict.","guarantee_fee_waived_requires_standard_fee":"A waived fee needs the standard fee it waives.","guarantee_scope_invalid_for_kind":"This scope does not apply to this kind of promise.","guarantee_zdr_requires_flag":"The paper promises zero data retention, but the setting is off.","incorporated_document_divergent":"Two saved copies of the online terms differ.","incorporated_document_meta_invalid":"The details of a legal document are incomplete or wrong.","incorporated_document_missing":"Online terms the paper refers to have no saved copy.","incorporated_terms_capture_failed":"The online terms page could not be saved.","incorporated_terms_same_day_revision":"The online terms changed on the effective date.","incorporated_terms_url_unsupported":"This online terms link cannot be saved.","minimum_assessment_corrupt":"The stored minimum check cannot be read.","money_terms_unclassified":"A money term on the paper has no handling yet; the agreement cannot go live until it has one.","msa_registration_refused":"The master agreement could not be recorded.","msa_stage_consumed":"This master agreement is already recorded with another agreement.","msa_stage_customer_mismatch":"This master agreement was read for another customer.","msa_stage_not_found":"The uploaded master agreement has expired or was not found.","msa_stage_partner_linked":"This master agreement is a partner's paper and cannot govern this agreement.","msa_stage_requires_billing_contract":"A master agreement can govern an order form or a statement of work only.","notice_email_invalid":"The notice email address is not valid.","payload_invalid":"Some values are not in a form the system accepts.","permission_denied":"You lack a permission that one of the create steps needs.","prepaid_offset_origin_required":"A prepaid amount does not say where it comes from.","prepaid_offset_paper_credit_requires_expiry":"A credit granted on the paper needs an expiry date.","pricing_flat_row_rate_conflict":"The flat price and a product's price disagree.","provisional_code_invalid":"A provisional reading has an invalid reference.","provisional_readings_open":"Some provisional readings are still open.","rate_line_above_ceiling":"A price is above the contract's price ceiling.","rate_line_band_scope_invalid":"These price bands cannot count usage that way.","rate_line_bands_invalid":"Price bands are not in rising order.","rate_line_basis_family_mismatch":"This product cannot be priced this way.","rate_line_boundary_not_cycle_start":"A price change must start on the first day of a billing cycle.","rate_line_empty_selector_requires_aliases":"A price that lists no models needs the model names as printed on the paper.","rate_line_family_selector_mismatch":"A price lists models of another product.","rate_line_includes_llm_invalid":"Only a per-minute agent price can include language model usage.","rate_line_lower_of_requires_flat":"Charging the lower of the paper and list price works with one flat price only.","rate_line_mapping_required":"A model named on the paper is not matched to a model in the catalog.","rate_line_paper_alias_ambiguous":"A model name on the paper matches more than one price.","rate_line_price_fields_on_non_contract":"A price that follows the list price cannot also state an amount.","rate_line_quantum_mismatch":"The billing step does not fit the price unit.","rate_line_selector_overlap":"Two prices cover the same model.","rate_line_unit_mismatch":"The price unit does not fit these models.","rate_line_unknown_selector":"A model is not in the catalog.","reserved_order_form_exists":"The customer already has an active, trial or pending agreement of this type.","retired_answer_not_applied":"An earlier answer no longer applies; check these rows again.","sla_month_mapping_base_mismatch":"How months match billing cycles does not fit what the service credit is based on.","sla_termination_right_mismatch":"The right to end the contract for missed service levels does not match the termination terms.","sla_terms_on_wrong_kind":"Service credit terms belong to an availability promise only.","sla_terms_required":"An availability promise needs its service credit terms.","sla_terms_target_mismatch":"The service level target does not match the promise.","sla_tiers_invalid":"The service credit steps are not in order.","stats_family_marker_missing":"A product the team uses has no price on the contract.","successor_contract_id_not_allowed":"Credits kept in the account cannot also move to another agreement.","successor_contract_invalid":"Credits can move only to another live agreement of the same team.","team_not_found":"The team was not found.","termination_acceleration_requires_paper":"Charging the rest of the commitment at termination needs a sentence on the paper.","termination_basis_not_paper_row":"This way of ending the contract is not on the paper.","termination_basis_required":"A termination term does not say how the contract ends.","termination_credit_policy_conflict":"What happens to credits conflicts with how the contract ends.","termination_policy_unclassified":"What happens to credits at termination is not decided yet.","termination_terms_incomplete":"The termination terms leave out a way the contract can end.","trial_not_shorter_than_term":"The free months must be shorter than the term.","trial_requires_end_date":"Free months need an end date.","trial_requires_order_term_basis":"Free months need to know when the term starts.","trial_requires_subscription":"Free months apply to subscription contracts only.","trial_with_auto_renew_unsupported":"Free months cannot be combined with automatic renewal.","unsupported_terms_ack_required":"The template has terms the system cannot run, and they are not acknowledged.","zdr_guaranteed_not_enabled":"Zero data retention is promised but not turned on for the account.","zdr_not_enforced_creator_media":"Zero data retention is not enforced yet for Creator video and images.","zdr_template_without_zdr_clause":"The template promises zero data retention, but this agreement does not turn it on.","unknown":"The system would refuse to create the agreement with this value.","title":"Problems that would stop create","warnings_title":"Notes that do not stop create","payload_invalid_named":"“{name}” is missing or not in a form the system accepts.","unplaced_next":"These name no row. Answer the open items first; if one is still listed, ask engineering to look at this import.","go_to_question":"Go to the question that settles it","sheet_contract_mismatch":"The agreement would not hold the value this row says.","rule":{"required_named":"“{name}” needs a value.","required":"A value is needed.","invalid_number_named":"“{name}” is not a number the system accepts.","invalid_number":"A number is not one the system accepts.","invalid_date_named":"“{name}” is not a date the system accepts.","invalid_date":"A date is not one the system accepts.","invalid_choice_named":"“{name}” is not one of the choices the system accepts.","invalid_choice":"A choice is not one the system accepts.","out_of_range_named":"“{name}” is outside the range the system accepts.","out_of_range":"A value is outside the range the system accepts.","too_long_named":"“{name}” is too long.","too_long":"A text is too long.","assessment_trial_months":"A minimum checked over set windows counts from the effective date, so the agreement cannot have free months.","assessment_requires_subscription":"A minimum checked over set windows needs a subscription agreement.","assessment_requires_minimum_commitment":"A minimum checked over set windows needs the minimum-commitment pricing.","assessment_with_monthly_minimum":"With a minimum checked over set windows, the monthly minimum must be 0; the windows hold the commitment.","assessment_with_included_credits":"With a minimum checked over set windows, monthly invoices carry no included credits.","assessment_with_overage_premium":"With a minimum checked over set windows, there can be no overage surcharge: it would apply to all usage.","assessment_with_discount":"With a minimum checked over set windows, prices are set per unit; a discount on list prices is not supported.","assessment_billed_in_advance":"With a minimum checked over set windows, usage is billed after the month, not in advance.","assessment_prepaid":"With a minimum checked over set windows, the agreement is invoiced; prepaid payment makes no invoices to check.","assessment_effective_date_not_midnight":"With a minimum checked over set windows, the effective date must start at midnight.","assessment_service_start_before_effective":"With a minimum checked over set windows, service cannot start before the effective date.","assessment_service_start_not_midnight":"With a minimum checked over set windows, service must start at midnight.","assessment_windows_misaligned":"The windows the minimum is checked over do not fill the paid term; check the term end and the window length.","assessment_usage_deadline_too_long":"With a minimum checked over set windows, reported usage must be due within 25 days.","assessment_usage_hold":"With a minimum checked over set windows, a late usage report is billed and carried over; it cannot hold the invoice."},"mismatch":{"line":"“{name}”: the sheet says {sheet}; the agreement would act on {system}.","record_differs":"The agreement would store another value.","credits_follow_fee":"With no credits stated, activation and invoicing grant the one-time fee as credits; that cannot be turned off yet.","credits_follow_fee_zero":"With $0 credits stated, activation and invoicing grant the one-time fee as credits; that cannot be turned off yet.","credits_follow_commitment":"With no included credits stated, activation and invoicing take the minimum as credits; that cannot be turned off yet.","credits_follow_commitment_zero":"With $0 included credits stated, activation and invoicing take the minimum as credits; that cannot be turned off yet.","row_removed":"Marking it not a term does not change what the paper says.","operator_value":"“{name}”: the paper says {paper}; recording {operator} would grant credits the paper rules out."},"rate_line_not_reviewed":"A price line would be saved that no row on this sheet shows.","rate_line_not_reviewed_named":"A price for {product} would be saved that no row on this sheet shows."},"gates":{"g1":"Money terms not checked against the paper: {count}","g2":"Amounts, durations or percentages on the paper with no term: {count}","g3":"Values not located on the paper: {count}","sources":"Values whose source is not recorded: {count}","g5":"Decisions still waiting for your answer: {count}","owners":"Terms handled by hand without an owner and cadence: {count}","g6":"Problems that would stop the agreement from being created: {count}","g7":"This file was not read in full, or was read the old way; it needs a new analysis before creating.","checking":"Checking what is still open…","ready":"Ready to create","refused":"Create was refused for the sheet as it is now","recomputing":"Updating…","title":"Before you can create","open_count":"{count, plural, one {# open item} other {# open items}}","handlings":"{count, plural, one {# term needs a handling} other {# terms need a handling}}"},"action_error":{"version_conflict":"This sheet was changed in another tab; it has been refreshed.","frozen":"An agreement was already created from this sheet; it no longer changes.","creating":"An agreement is being created from this sheet; it no longer changes.","needs_reanalysis":"This sheet cannot be reviewed; import the signed files again.","not_found":"This review was not found.","denied":"You don't have access to change this review.","expired":"This import has expired. Import the signed files again.","history_full":"This sheet has too many changes; import the signed files again.","nothing_to_undo":"Nothing to undo.","type_incompatible":"This value cannot go to that term; it takes another kind of value.","target_occupied":"That term already has a value from the paper; remove it first.","move_same_term":"Pick another term.","row_on_paper":"This term already has a value from the paper; change it on its row.","row_not_on_paper":"This value is not on the paper, so there is no passage to use.","row_removed":"This row was removed; undo the removal first.","value_invalid":"This value does not fit this term.","value_missing":"Fill in the values first.","row_invalid":"These values do not make an entry the system can bill.","not_editable":"The system sets this term itself.","paper_only":"A risk setting takes only a value the paper states.","passage_not_located":"That passage was not found on the paper; select it again.","paper_view_unavailable":"The paper cannot be shown, so no passage can be used.","no_open_numbers":"There is no open number in that passage.","reason_required":"Pick a reason.","owner_and_cadence_required":"Pick an owner and how often to check.","parameter_needs_row":"Pick the entry this value belongs to, such as which price line.","value_not_in_anchor":"This number is not in the row's passage.","row_required":"Pick the row this number belongs to.","passage_required":"Select the passage on the paper that states this value.","choice_unknown":"The system cannot use that choice; pick another.","not_applicable":"This change does not fit the sheet as it is now; it was not saved.","failed":"The change was not saved.","no_rows_on_page":"No value on this page is waiting to be checked.","page_document_unknown":"This page is not part of this document.","values_required":"Give a value for each row the other reading sets.","value_not_in_selected":"This number is not in the passage you selected.","owner_required":"Pick an owner.","cadence_required":"Pick how often to check.","customer_archived":"This customer is archived. Restore it on its page, or pick another customer.","customer_choice_required":"Pick an existing customer, or create the customer from the paper.","paper_states_otherwise":"The paper states this value. The system cannot hold another figure here yet.","interim_required":"Choose what happens to this term until the system supports it.","interim_invalid":"That interim does not fit this term. Pick another, or enter the price as a figure of zero or more.","remove_reason_required":"Say why the paper does not state this term.","reread_pending":"The AI reader is still reading this term again. Wait until it is done.","term_lines_ambiguous":"The reading does not show which price line this figure is on, so the model was not changed.","term_not_removable":"This term is also in the agreement's own settings; change it on those rows instead.","value_not_in_quote":"Enter the figure exactly as the paper prints it for this term."},"decision_reasons":{"title":"Why this value?","commercial_agreement":"Agreed commercially, not on the paper","team_current":"The team's current setting","other":"Other"},"effect":{"start":{"effective":"Takes effect on {date}.","free_months":"{months, plural, one {The first month is free} other {The first # months are free}}; billing starts on {paid_start}.","delayed_start":"Service starts on {date}.","first_invoice_advance":"The first invoice, {amount}, is issued on {date} and paid in advance; it grants {credits} of credits.","first_invoice_arrears":"The first invoice, {amount}, covers the period from {date} and is issued after it.","payg_in_arrears":"Usage is billed after each month; there is no upfront invoice.","non_billing":"This agreement bills nothing."},"minimum":{"monthly":"The monthly minimum is {amount}.","levels":"{count, plural, one {# commitment level} other {# commitment levels}}, from {first} to {last} a month.","assessment":"The minimum is checked {months, plural, one {every month} other {every # months}}.","trueup":"A shortfall is billed within {days, plural, one {# day} other {# days}}.","one_time_expire":"One payment of {amount} grants {credits} of credits; unused credits expire at the end of the term.","one_time_keep":"One payment of {amount} grants {credits} of credits; unused credits stay after the term.","none":"There is no minimum; usage is billed as it comes.","assessment_amount":"A minimum of {amount} is checked {months, plural, one {every month} other {every # months}}.","assessment_once":"A commitment of {amount} for the term is checked once, over {months, plural, one {# month} other {# months}}.","by_hand":"A commitment of {amount} over {months, plural, one {# month} other {# months}} is checked once by hand.","by_hand_plain":"The minimum is checked by hand; the system bills usage only.","by_hand_owner":"Owner: {owner} · {cadence}."},"credits":{"per_cycle":"Each period grants {amount} of credits.","expiry":{"cycle_end":"Unused credits expire at the end of each period; nothing rolls over.","per_tranche_days":"Unused credits roll over and expire {days, plural, one {# day} other {# days}} after they are granted.","contract_year_end":"Unused credits roll over until the end of the contract year.","term_end":"Unused credits roll over until the end of the term."},"overage_premium":"Usage beyond the credits costs {pct} more.","discount":"Prices are {pct} below the list price."},"pricing":{"contract_rate":"{family} costs {price} for every model.","contract_rate_bands":"{family}: {count, plural, one {# price band} other {# price bands}} for every model, from {price}.","model_rate":"{family}, model {model}: {price}.","model_rate_bands":"{family}, model {model}: {count, plural, one {# price band} other {# price bands}}, from {price}.","other_models_list_price":"{family}: other models at the platform list price.","list_price":"{family}: billed at the platform list price.","published_rates":"{family}: billed at the published rates.","follows_list_discount":"{family}: the platform list price, {pct} off.","rate_line":"{family} is billed at {price}.","rate_line_bands":"{family}: {count, plural, one {# price band} other {# price bands}}, from {price}.","outside_minimum":"Billed outside the minimum.","billed_elsewhere":"{family}: billed by {system}; only recorded here.","coverage_excluded":"{family}: not covered; its use is refused.","free_period":"{family}: free until {date}.","published_rates_counts":"{family}: billed at the published rates, counted toward the minimum.","published_rates_on_top":"{family}: billed at the published rates, on top of the minimum."},"payment":{"due_after_invoice":"Invoices are due {days, plural, one {# day} other {# days}} after the invoice date.","due_after_period":"Invoices are due {days, plural, one {# day} other {# days}} after the period ends.","due_on_receipt":"Invoices are due on receipt.","overrides":"Other payment days apply in {count, plural, one {# period} other {# periods}}."},"term":{"length":"The term is {months, plural, one {# month} other {# months}} and its last day is {last_day}.","one_time_ends":"The agreement's last day is {last_day}."},"renewal":{"auto":"It renews for {months, plural, one {# month} other {# months}}; notice to stop it must arrive by {deadline}.","none":"It does not renew; its last day is {last_day}."},"guarantees":{"concurrency":"The account's concurrency limit is {limit}.","concurrency_team":"The account keeps the team's current concurrency limit, {limit}.","zero_data_retention":"Zero data retention is on.","sla":"Availability target {target}; service credits up to {cap} of the month's fees.","sla_no_cap":"Availability target {target}, with service credits when it is missed.","promise":"A promise to the customer is recorded on the agreement.","concurrency_default":"The account's concurrency limit is set to {limit}, the system default; the paper states none.","concurrency_template":"The account's concurrency limit is set to {limit}, from the template; the paper states none."},"termination":{"consume_only":"{basis}: unused credits stay usable until they expire.","forfeit":"{basis}: unused credits are forfeited.","refund_prorated":"{basis}: prepaid fees are refunded pro rata.","transition_window":"{basis}: prices stay frozen for a transition period.","not_permitted":"{basis}: not allowed.","recorded":"{basis}: recorded on the agreement.","incomplete":"{count, plural, one {# required way of ending has} other {# required ways of ending have}} no rule yet.","allowed":"{basis}: allowed.","allowed_settle":"{basis}: allowed; the final invoice is due within {days, plural, one {# day} other {# days}}."},"manual":{"follow_ups":"{count, plural, one {# term is} other {# terms are}} handled by hand.","usage_reports":"Usage is reported by hand within {days, plural, one {# day} other {# days}} of each period.","usage_reports_plain":"Usage is reported by hand.","go_live_open":"{count, plural, one {# item is} other {# items are}} still open before going live."},"unknown":"One more effect is recorded for this agreement."},"effects_none":"Nothing to show yet.","effects_blocked":"This appears once the agreement can be worked out. First fix what would stop create, listed below.","effects_recomputing":"Recomputing…","effects_rows":"{count, plural, one {# row} other {# rows}}","effects_subset":"Worked out from the entries that pass the checks; the others are listed under “Before you can create”.","reader_note":"Note from the AI reader: {text}","effects_section":{"start":"Going live and billing start","minimum_credits":"Minimum and credits","pricing":"How each product is billed","payment_renewal":"Payment and renewal","guarantees":"Guarantees","termination":"Termination","manual":"Handled by hand","account":"Account settings"},"move":{"title":"Move this value to another term","keeps_passage":"The passage moves with the value.","search":"Where does {value} belong?","takes":"Takes {kind}","type_mismatch":"“{name}” takes {takes}, not {given}.","empty":"No term matches; try another word."},"pick":{"not_there":"That passage does not state it either; select again, or press Esc.","row":"Select the passage on the paper for “{name}”.","value":"Select the passage on the paper that states {value} for “{name}”."},"remove":{"title":"Remove this row?","body":"The term goes back to the system default; the passage and the AI reader's value stay in the record.","reason":"Why is it not on the paper?","reasons":{"not_on_paper":"The paper does not say this","other_document":"Read from another file or an earlier version","example_text":"An example or explanation"},"confirm":"Remove","undo_hint":"Undo stays available."},"takes":{"money":"an amount","percent":"a percentage","days":"a number of days","months":"a number of months","count":"a number","date":"a date","boolean":"a yes-or-no choice","choice":"a choice from a list","text":"text","model":"a model","price_unit":"a price unit"},"toast":{"added":"Added {count, plural, one {# entry} other {# entries}} from the paper.","added_named":"Added “{name}” from the paper.","checked":"Confirmed “{name}” matches the paper.","checked_next":"Confirmed “{name}”. Next: “{next}”.","decided":"“{name}” recorded as your decision.","edited":"Changed “{name}”.","follow_up":"Recorded as a term handled by hand.","moved":"Moved the value to “{name}”; the old term is back to its default.","not_terms":"{count, plural, one {# number marked} other {# numbers marked}} as not a term.","removed":"Removed “{name}”; it is back to its default.","reselected":"“{name}” now points at the new passage.","undo":"Undo","undone":"Undone.","undid_checks":"{count, plural, one {Undid # check.} other {Undid # checks.}}","undid_rows":"{count, plural, one {Undid the change to # row.} other {Undid the change to # rows.}}","undid_numbers":"Undid what you recorded for {count, plural, one {# number} other {# numbers}} on the paper.","undid_answer":"Undid your answer to a question.","undid_follow_up":"Undid the owner and cadence of a term handled by hand.","answered":"Answered “{name}”.","follow_up_named":"Saved who follows up “{name}”.","follow_up_set":"Saved who follows up this term.","page_checked":"Checked {count, plural, one {# value} other {# values}} on page {page} against the paper."},"create_checking":"Checking the sheet…","create_done":"Created","create_error":{"customer_details_invalid":"The company details on the paper do not make a valid customer record. Pick an existing customer instead.","customer_name_missing":"The paper names no company to create the customer from. Pick an existing customer instead.","failed":"The agreement was not created. Nothing was written; try again.","gates_unmet":"The review is not finished yet; the list of what is still open was refreshed.","not_created":"No agreement was created from this sheet yet.","original_not_retained":"The analysed file is no longer kept. Upload the signed file on the agreement page.","payload_invalid":"This sheet does not make a valid agreement. Import the signed files again.","permission_denied":"You are missing a permission this create needs. Nothing was created.","unfinished":"An agreement was made from this sheet but did not finish. Create again to finish it.","sheet_contract_mismatch":"The agreement would not hold what the checked sheet says, so nothing was created. Its rows are marked on the sheet.","rate_line_not_reviewed":"The agreement would hold a price no row on the sheet shows, so nothing was created."},"create_note":"Create makes the draft, its document and the legal review, and attaches the signed copy if e-signed. Nothing is billed.","create_to_go":"Create agreement · {count} to go","create_refused":"Create refused — see why","create_refused_note":"Create is available again once anything on the sheet changes.","create_waiting":"Create is waiting for {count, plural, one {# open item} other {# open items}}:","manual_import_hint":"A signed contract is imported instead: its terms are read off the paper and checked before the agreement is created.","refusal":{"stated_units_selected":"The passage you selected states {value} in {unit}.","stated_units_anchored":"This row's passage states {value} in {unit}.","stated_units_number":"The passage you selected states this number in {unit}.","unit":{"day":"days","week":"weeks","month":"months","year":"years","money":"currency","percent":"percent"},"stated_units_number_anchored":"This row's passage states this number in {unit}.","dismiss":"Close","paper_states_otherwise":"The paper states {paper}. The system cannot hold another figure here yet."},"create_finishing":"Finishing the agreement…","create_unfinished":"Created · not finished","row_note":{"reader_item":"The AI reader flagged this passage. No answer is needed.","pricing_card_mismatch":"This rate is not on the AI reader's own price summary.","studio_route":"“{label}” is a Studio product.","studio_route_priced":"“{label}” is a Studio product; this agreement prices it, so it is billed here.","sla_maintenance_partial":"The paper states one of the two maintenance limits (advance notice, monthly cap); the other is 0.","placeholder":"The paper has a blank to fill in here; nothing was taken from it.","billed_elsewhere":"Another system bills this; this agreement only records it.","billed_elsewhere_family":"Another system bills {family}; this agreement only records it.","pricing_unit":"The paper prices this per character; the system bills per byte.","pricing_unit_family":"The paper prices {family} per character; the system bills per byte.","rounding":"The paper's price of {stated} is converted to {computed}, rounded to six decimals.","credit_expiry_clock":"The paper counts the {days} days from the grant date; the system counts from the end of that billing cycle.","other":"The AI reader left a remark on this passage.","rounding_same":"{stated} on the paper is kept as {computed}: the same price, to six decimals.","customer_account_bound":"The paper's account e-mail is {paper}; the platform account stays bound to {record}. Move it on the customer page.","one_time_credits_from_fee":"The paper states no credits for this one-time purchase, so the agreement grants credits worth the fee: {amount}.","total_restates_commitment":"This total is the commitment of the minimums table; the agreement words it from the table.","final_cycle_minimum":"Completed by a rule from this row's own words: the final billing month's minimum is due.","reader_item_on_paper_model":"The AI reader flagged this model; the question about this price line covers it.","not_billed_record":"This record bills nothing, so the clause is recorded, not charged.","clause_expressly_supersedes":"The paper settles which clause governs: one says it replaces the other.","order_term_end_from_service_start":"The paper prints no end date; this one is the service start plus the term length.","retired_answer":{"start_on_effective_date":"An earlier answer (start on the effective date) no longer applies; the dates are back as the paper states.","assess_monthly":"An earlier answer (check a minimum every month) no longer applies; the paper's minimum is back.","manual_process":"An earlier answer (handle the minimum by hand) no longer applies; the system checks the minimum again.","other":"An earlier answer to a question no longer asked does not apply; this row is back as the paper states."},"counts_toward_minimum_not_stated":"The paper does not say whether this counts toward the minimum; the system assumes it does."},"saving":"Saving…","creating_for":"Creating… {time}","creating":"Creating…","create_for":"Create agreement for {name}","create_customer":"Customer: {name}","create_customer_open":"Which customer the agreement is for is not decided yet.","customer":{"title":"Customer","reader_match":"The AI reader's suggestion","bound":"Bound","current_choice":"Current choice","matched_on":"Why it matches: {bases}.","bind":"Bind to this customer","bind_named":"Bind to this customer: {name}","blocks_create":"Create waits for this answer.","reopened":"Changed since the answer: another customer now matches the paper, or another agreement now holds it. Choose again.","duplicates_title":"{count, plural, one {This paper is already in # agreement} other {This paper is already in # agreements}}","duplicate_open":"Open the agreement","duplicates_hidden":"Also held by {count, plural, one {# agreement} other {# agreements}} outside the customers you can see.","duplicates_next":"If this is the same agreement, open it instead: creating this one makes another copy.","candidates_title":"{count, plural, one {The customer the paper matches} other {Customers the paper matches, strongest first}}","candidates_more":"{count, plural, one {# more customer matches} other {# more customers match}}: see “Another customer”.","candidates_hidden":"{count, plural, one {# more customer matches} other {# more customers match}} outside the customers you can see.","answers":"Which customer the agreement is for","pick_other":"Another customer…","keep":"Keep {name}","keep_unnamed":"Keep the current customer","create_separate":"Create a separate customer from the paper","toast_new":"The customer will be created from the paper.","toast_bound":"{name} is now the customer of this agreement.","toast_bound_unnamed":"The customer is bound.","go_to_card":"Answer it on the customer card","show_card":"Show the customer card","basis":{"email_domain":"same e-mail domain","email_domain_named":"same e-mail domain ({domain})","company_name":"close company name","envelope":"same signing envelope","paper":"same paper file","same_import":"another file of this import is for it","analysed_for":"this import was started for it"},"mode":{"existing":"Existing customer: {name}","new_from_paper":"New customer from the paper: {name}","new_from_paper_unnamed":"New customer from the paper","none":"No customer chosen yet"},"source":{"analysis":"Picked when the import was started.","operator":"Picked on this review.","created":"Created from the paper when the agreement was created."},"duplicate_unnamed":"An agreement","duplicate_created":"created {date}","duplicate_shares":"Why it matches: {bases}.","refused_open":"Which customer: {state} — still to decide on the customer card.","refused_settled":"Which customer: {state}","created_from_paper":"Created from the paper: {name}","created_from_paper_unnamed":"Created from the paper","open_customer":"Open the customer"},"failure":{"unreachable":"The server is not answering; your change was not saved.","network":"The connection dropped; your change was not saved.","server":"The server ran into a problem; your change was not saved.","retry":"Retry","dismiss":"Dismiss"},"note_left":"{count, plural, other {# left}}","create_confirm":{"title":"Create the agreement for {name}?","title_unnamed":"Create the agreement?","confirm":"Create","customer":"Customer","money":"Money","signed":"Signed","steps":"What create does","afterwards":"Afterwards","signed_on":"Signed on the paper on {date}.","no_signed_date":"The paper shows no signing date.","step_runs":"{step}: runs","step_line":"{name}: {value}","skip":{"original_not_retained":"cannot be attached — the original file is no longer kept","no_signature_evidence":"not attached — the file shows no e-signature","signed_paper_governs":"does not run — the signed paper is the agreement","attach_declined":"not attached","msa_stage_not_found":"does not run — no master agreement is waiting","nothing_to_fill":"does not run — the customer record has nothing empty to fill","other":"does not run"}},"cannot_hold":{"section_title":"{count, plural, =0 {Needs a handling} other {Needs a handling · #}}","chip":"Cannot be held as written","readers_words":"AI reader's words","why":"Why","expected_fit":"The AI reader expected this to fit; the system refused it.","if_nothing":"If nothing is done","col_period":"Period","col_system":"We would bill","col_paper":"The paper says","readers_figures":"The AI reader worked out","figures_differ":"The AI reader's figures differ from the system's","reader_proposes":"The AI reader proposes","reader_asks_engineering":"The AI reader asks engineering how to handle this term.","owner_label":"Owner","until_label":"Until","accept":"Accept this handling","recommended":"Recommended","choose_another":"Choose another handling","save":"Save handling","ask_engineering":"Ask engineering","sent_to_engineering":"Sent to engineering","sent_note":"Engineering has this card. The agreement still needs a handling before it can be created.","reading_wrong":"The reading is wrong — fix it on the paper","fix_title":"What is wrong with the reading?","fix_not_on_paper":"The paper does not state this term","fix_model":"It is for another model","fix_figure":"The paper prints another figure","fix_figure_label":"The figure as the paper prints it","fix_figure_save":"Read this term again with this figure","fix_which":"Which figure","remove_save":"Take it out of the reading","interim_title":"Until the system supports this term","interim_amount":"Interim price per unit","interim_missing":"Choose what happens to this term meanwhile.","whole_term":"the whole term","no_figure":"No figure","second_approver":"The invoice that uses it waits for the second approver.","split_kept":"Part of it is kept in the agreement as written.","presign_none":"No pre-sign check is linked to this import.","fewer_reasons":"Show fewer","other_proposal":"The AI reader's other proposal: {title}","figure":"{amount} {unit}","figure_span":"{amount} {unit} · {span}","charge":"Charge {difference} {unit} on top of the system's {system} (paper: {paper}) · {span}","credit":"Credit {difference} {unit} against the system's {system} (paper: {paper}) · {span}","charge_meanwhile":"Charge {difference} {unit} on top of the system's {system} (meanwhile: {target}) · {span}","credit_meanwhile":"Credit {difference} {unit} against the system's {system} (meanwhile: {target}) · {span}","no_difference":"No change: the system already bills {system} · {span}","span":{"range":"{start} – {end}","from":"from {start}","until":"until {end}"},"rule":{"from":"from {rule}","until":"until {rule}","range":"from {start} until {end}","days_after":"{count, plural, one {# day} other {# days}} after {anchor}","days_before":"{count, plural, one {# day} other {# days}} before {anchor}","months_after":"{count, plural, one {# month} other {# months}} after {anchor}","months_before":"{count, plural, one {# month} other {# months}} before {anchor}","years_after":"{count, plural, one {# year} other {# years}} after {anchor}","years_before":"{count, plural, one {# year} other {# years}} before {anchor}"},"anchor":{"effective_date":"the effective date","service_start":"the start of service","term_start":"the start of the term","term_end":"the end of the term","launch":"the model's launch","fixed":"a set date","launch_of":"the launch of {model}"},"model_window":"{model}: {span}","model_figure":"{model}: {figure}","answered":"Handling: {title}","removed":"Taken out of the reading: {reason}","interim_line":"Meanwhile: {interim}","windows_note":"Figures {unit}, worked out by the billing rules on this agreement.","more_reasons":"{count, plural, one {Show # more reason} other {Show # more reasons}}","more_passages":"{count, plural, one {Show # more passage} other {Show # more passages}}","step_with":"{step} · {details}","step_approver":"{step} (needs a second approver)","basis":{"platform_price":"published price","discounted_list":"published price less the discount","contract_type_rate":"this agreement's price for the type","member_rate":"the model's own price on this agreement","held_until_decided":"Invoice waits for a decision","not_billed":"Not billed","record_refused":"The agreement would refuse it"},"handling":{"in_record":"Keep it in the agreement as written","engine_action":"{hasModel, select, yes {A step for {model} after create} other {A step after create}}","by_hand":"{hasModel, select, yes {Handle {model} by hand} other {Handle this term by hand}}","split":"{hasModel, select, yes {Part as written; the rest of {model} by hand} other {Part as written; the rest by hand}}","await_engine_change":"{hasModel, select, yes {Wait for {model} support; by hand meanwhile} other {Wait for system support; by hand meanwhile}}","ask_engineering":"Ask engineering"},"interim":{"ignore":"Bill nothing for it","published_price":"Bill the published price","fixed_price":"Bill a price I enter","by_hand":"The AI reader's handling by hand"},"engine_change":{"model_price_rows":"per-model prices are live","dated_price_rows":"dated prices are live","other":"the system change it waits for is live"},"step":{"model_rate_explicit":"After the agreement is created: give {model} its own price of {figure}","model_rate_contract_rate":"After the agreement is created: bill {model} at this agreement's price for the type","model_rate_platform_price":"After the agreement is created: bill {model} at the published price","model_rate":"After the agreement is created: decide the price of {model}","dated_amendment":"After the agreement is created: a dated change to it","go_live_step":"Before go-live: a step on the go-live checklist"},"not_drafted":{"not_a_rate":"Left to a person on the go-live checklist: it is not a price.","no_model":"Left to a person on the go-live checklist: it names no model.","no_decision":"Left to a person on the go-live checklist: the AI reader did not say how to price it.","no_figure":"Left to a person on the go-live checklist: it has no figure.","several_figures":"Left to a person on the go-live checklist: it has more than one figure.","dated":"Left to a person on the go-live checklist: it is dated, and a step drafted at create has no date."},"reread":{"running":"The AI reader is reading this term again. Create waits for it.","done":"Read again after your change.","failed":"The AI reader could not finish reading this term again. Fix the reading again to retry."},"type":{"tts":"Text to speech","asr":"Speech to text","realtime_asr":"Realtime speech to text","voice_design":"Voice design","chat":"Chat","agent":"Agents","image":"Images","video":"Video","other":"Other products"},"picker":{"title":"Which model does the paper mean?","search":"Search models","other_types":"Other types","no_own_price":"No own price on this agreement","after_create":"Own price only after the agreement is created","none":"None of these models","empty":"No model matches.","use_plain":"Use this model","cancel":"Cancel","use":"Use {model}","reread_note":"The AI reader will read this term again with {model} and propose a handling; the figures and dates stay as printed.","no_own_price_note":"{model} cannot get its own contract price on this agreement.","type_count":"{type} · {count}"},"fact":{"model_has_no_tier":"{hasModel, select, yes {{model}} other {This model}} cannot get its own contract price when the agreement is created.","model_not_coverable":"{hasModel, select, yes {{model}} other {This model}} cannot be one of the models this agreement lists.","model_not_metered":"{hasModel, select, yes {{model}} other {This model}} cannot have a price line of its own yet.","model_outside_type_catalogue":"{hasModel, select, yes {{model}} other {This model}} is outside the models this agreement's price for the type covers.","name_needs_mapping":"The paper's name for the model has to be matched to one of ours first.","type_has_no_contract_price":"The system cannot hold a contract price for this kind of product.","tier_states_one_model_and_its_price":"A model's own price needs exactly one model and one figure.","price_has_no_dates":"A price cannot change on a date during the term yet.","dates_on_cycle_starts":"A price can change only at the start of a billing period.","covered_list_excludes_type_price":"An agreement that lists its models cannot also hold one price for every model of the type.","covered_models_share_one_price":"The models this agreement lists must share one flat price.","one_flat_type_rate":"This kind of product can hold only one flat contract price.","unit_does_not_measure":"The system does not measure usage in the unit the paper prices it in.","model_has_own_tier":"{hasModel, select, yes {{model}} other {This model}} already has its own price on this agreement.","family_not_covered":"This agreement does not cover this kind of product.","after_create_needs_type_rate":"It cannot get its own price after create either: the agreement has no contract price for the whole type.","after_create_model_in_type_catalogue":"It already bills at this agreement's price for the type; there is nothing to set after create.","after_create_tier_names_model":"A price on this agreement already names {hasModel, select, yes {{model}} other {this model}}.","after_create_type_not_decidable":"This kind of product cannot get a model's own price after the agreement is created.","after_create_decision_does_not_fit":"The way the AI reader would set this price after create does not fit this agreement.","price_not_routed":"Invoices would not use this price as the agreement stands.","family_billed_elsewhere":"This kind of product is billed outside these agreements; the system only records the term."},"topic":{"resale_floor_per_model":"The system has no place for a resale floor per model.","late_interest":"The system does not charge late-payment interest on its own.","renewal_price_notice":"The system does not track notice of a price change at renewal.","support_channel":"The system does not track support channels.","prepaid_offset":"The system does not apply a prepaid offset on its own.","future_model_rates":"The system cannot hold prices for models that come out later."},"check":{"adjust_difference":"The amounts to charge or credit do not match what the system bills.","amount_not_printed":"A figure is not printed in the paper's words for this term.","create_refusal":"Creating the agreement would refuse this term.","dates_off_rule":"The days do not follow the paper's date rule.","dates_outside_term":"The days fall outside the agreement's term.","dates_unordered":"The term ends before it starts.","default_over_paper":"A default would replace what the paper says.","duplicate_price":"Two prices cover the same model and days.","final_cycle_guard":"The last period's minimum needs a check against the paper.","money_guard":"Money rides on this term, but the reading says it does not.","money_leaf_unlisted":"A figure on the paper is not tied to any term.","price_condition":"The price carries a condition the system cannot hold.","price_condition_missing":"The paper's condition on this price is missing from the reading.","pricing_tiers":"The price bands cannot be held as read.","scope_mismatch":"The price would land on other models than the paper names.","scope_missing":"The price does not say which model it is for.","setting_not_held":"A setting the paper needs is not kept in the agreement.","tier_off_scope":"A price band names a model outside the price's models.","whole_type_named":"A price for one named model would apply to every model of the type.","written_not_kept":"Something the paper writes would be dropped from the agreement.","other":"The system refused this term as the AI reader read it."}}}},"edit_overview":{"title":"Edit Contract","msa_version":"MSA Version","msa_b":"B — Full-year obligation","msa_d":"D — Pay to termination","msa_e":"E — 2026-06 revision","sales_rep":"Sales Rep","signing_entity":"Signing Entity","company_signer":"Company Signer","effective_date":"Effective Date","end_date":"End Date","no_end_date":"No end date (auto-renew)","duration_months":"Duration (months)","notice_days":"Notice (days)","trial_months":"Trial (months)","payment_term":"Payment Term","payment_term_days":"Payment Term Days","auto_renew":"Auto-renew","generate_docx":"Generate DOCX","generate_invoice":"Generate invoice","toast_success":"Contract updated","toast_error":"Failed to save","assessment_title":"Quarterly minimum assessment (§3.9)","assessment_rows_note":"{count, plural, =1 {# minimum row stays} other {# minimum rows stay}} as written on the paper; only the renewal rule and alert threshold are edited here.","release_window_title":"Evaluation opt-out window","release_window_help":"Last day (UTC) on which the customer may terminate with the Commitment released. Saved only if you change it; clearing it withdraws the window.","release_until":"Window closes (UTC)","release_reason":"Basis / clause","btn_clear_release":"Clear","msa_c":"C — Accrued fees to termination"},"edit_customer":{"title":"Edit Customer Info","company_name":"Company Name","contact_email":"Contact Email","signer_name":"Signer Name","signer_title":"Signer Title","signer_email":"Signer Email","billing_contact":"Billing Contact","billing_email":"Billing Email","company_address":"Company Address","address_line1":"Address Line 1","address_line2":"Address Line 2","city_state_zip":"City, State, ZIP","toast_success":"Customer info updated","toast_error":"Failed to save","tax":{"title":"Tax profile","tax_id":"Tax ID","tax_id_kind":"Tax ID type","country":"Country","registration_number":"Registration number","treatment":"Treatment","treatment_value":{"none":"No tax","reverse_charge":"Reverse charge","tax_line":"Tax line"},"tax_rate":"Tax rate %","tax_line_label":"Tax line label","save":"Save tax profile","reverse_charge_statement":"VAT reverse charge, Art. 196 Directive 2006/112/EC","kind":{"none":"None","eu_vat":"EU VAT ID","gb_vat":"UK VAT number","ca_gst_hst":"Canada GST/HST number","us_ein":"US EIN","other":"Other"}},"notice":{"title":"Notices","notice_email":"Notice email","notice_address":"Notice address","authorized_representatives":"Authorized representatives","name":"Name","email":"Email","representative_title":"Title","add_representative":"Add representative","remove_representative":"Remove representative"}},"detail":{"back_to_contracts":"Back to contracts","loading":"Loading contract...","load_error":"Unable to load this contract.","fallback_title":"Enterprise Contract","team":"Team {teamId}","team_unbound_label":"No team bound","updated":"Updated {date}","sales_rep":"Sales rep {name}","enabled":"Enabled","disabled":"Disabled","toast_generated_docx":"Generated DOCX.","toast_uploaded_signed":"Uploaded signed PDF.","toast_activated":"Contract activated.","toast_suspended":"Contract suspended.","toast_resumed":"Contract resumed.","toast_draft_deleted":"Draft deleted.","toast_terminated":"Contract terminated.","toast_pricing_updated":"Pricing updated.","toast_concurrency_updated":"Concurrency updated.","toast_choose_pdf":"Choose a signed PDF first.","btn_activate":"Activate","btn_suspend":"Suspend","btn_resume":"Resume","btn_save_pricing":"Save pricing & tiers","btn_add_tier":"Add tier","btn_generate_docx":"Generate DOCX","btn_open_docx":"Open DOCX","btn_open_signed_pdf":"Open signed PDF","btn_upload_signed_pdf":"Upload signed PDF","btn_save_concurrency":"Save concurrency","btn_delete_contract":"Delete contract","btn_terminate_contract":"Terminate contract","btn_confirm_delete":"Confirm delete","btn_confirm_termination":"Confirm termination","pricing_title":"Pricing","pricing_description":"Adjust the live pricing summary that syncs into team-level overrides.","pricing_tiers_title":"Pricing tiers","pricing_tiers_description":"Tiers are cumulative per product. Each band only prices the units inside that band; if the final tier has a cap, usage above that cap is billed at the standard published price.","no_pricing_tiers":"No pricing tiers configured.","customer_title":"Customer","document_workflow_title":"Document workflow","document_workflow_description":"Generate unsigned DOCX before signature, review counterparty redlines, and open private document links.","concurrency_title":"Concurrency and retention","concurrency_description":"Concurrency syncs into the team override. Zero data retention is recorded here.","delete_title":"Delete","terminate_title":"Terminate","delete_description":"Permanently delete this draft contract.","terminate_description":"Terminate this active or suspended contract.","label_msa":"MSA","label_signing_entity":"Signing entity","label_company_signer":"Company signer","label_billing":"Billing","label_effective":"Effective","label_signed":"Signed","signed_from_paper":"{date} · from the paper","signed_as_recorded":"{date} · as recorded","label_service_starts":"Service starts","label_billing_starts":"Billing starts","billing_starts_after_free_months":"{date} · after {months, plural, one {# free month} other {# free months}}","label_ends":"Ends","label_current_term":"Current term","label_auto_renew":"Auto renew","label_current_model":"Current model","label_monthly_commit":"Monthly commit","label_one_time_amount":"One-time amount","label_pricing_model":"Pricing model","label_per_unit_rate":"Per unit rate (TTS, $ per 1M characters)","label_monthly_commit_usd":"Monthly commit ($)","label_one_time_amount_usd":"One-time amount ($)","label_fee_description":"Fee description","label_total_annual":"Total annual","label_product":"Product","label_end_m":"End (M, empty=inf)","label_price_per_million":"$ per 1M UTF-8 bytes","label_company":"Company","label_signer":"Signer","label_billing_contact":"Billing contact","label_billing_email":"Billing email","label_contact_email":"Contact email","label_address":"Address","label_concurrency_limit":"Concurrency limit","label_zero_data_retention":"Zero data retention","zero_data_retention_description":"Records the paper's promise; the team flag is applied from the Team settings card.","skip_signed_check_title":"Skip signed document check on activation","skip_signed_check_description":"Use only when you need to activate before a signed PDF is uploaded.","terminate_dialog_delete_title":"Delete this draft?","terminate_dialog_terminate_title":"Terminate this contract?","terminate_dialog_delete_description":"This will permanently delete the draft contract. This cannot be undone.","terminate_notice_warning":"This contract stipulates a {days}-day termination notice. Confirming means the notice obligation has been handled — for a contract swap, prefer scheduled replacement or wind-down to avoid a coverage gap (list-price billing, reduced concurrency).","terminate_dialog_terminate_description":"This will end the enterprise contract and clear team-level overrides.","terminate_reason_placeholder":"Optional termination reason","date_range_separator":"to","per_unit_rate_scope_help":"Applies to TTS usage only (billed per 1M characters, metered as UTF-8 bytes). Other products bill at platform metered pricing unless the contract sets a per-product / per-model pricing tier.","label_billing_model":"Billing cadence","terminate_mode_immediate":"Terminate immediately (settle now)","terminate_mode_wind_down":"Wind down (bill current cycle fully, let usage burn off)","terminate_mode_caption":"Scheduling is preferred for churn: the contract runs to the chosen date, no cycle starting at or after it bills, and finalization is automatic. Wind-down adds a credit burn-off window instead.","terminate_mode_label":"Termination mode","terminate_mode_scheduled":"Schedule termination (pick the date service ends)","terminate_preset_cycle_end":"End of current billing cycle — {date}","terminate_preset_next_cycle_end":"End of next cycle — {date}","terminate_preset_notice":"After notice period ({days} days) — {date}","terminate_preset_custom":"Custom date…","terminate_date_label":"Termination date","terminate_schedule_caption":"Fully in force until {date}. No billing cycle starting on or after that date is invoiced; the final cycle's overage settles automatically.","terminate_schedule_date_required":"Pick a termination date first.","terminate_dialog_schedule_title":"Schedule this termination?","terminate_dialog_schedule_description":"Service and billing continue normally until {date}, then the contract terminates automatically: team overrides are retired and the final cycle settles. You can cancel the schedule any time before the date.","btn_schedule_termination":"Schedule termination","btn_confirm_schedule":"Schedule","btn_cancel_scheduled_termination":"Cancel schedule","termination_scheduled_banner":"Termination scheduled for {date}.","wind_down_banner":"Winding down — finalizes {date}.","terminated_banner":"Terminated on {date}.","transition_until":"Consume-only transition until {date} — remaining credits keep their contractual expiry clocks; the account is otherwise back to self-serve.","transition_irreversible_note":"The transition has started — this termination can no longer be cancelled. Only a new signed agreement can restore enterprise service.","toast_termination_scheduled":"Termination scheduled for {date}.","toast_termination_schedule_cancelled":"Scheduled termination cancelled.","termination_terms_title":"Termination terms (system record)","btn_edit_termination_terms":"Edit","termination_policy_consume_only":"Signed contract: credits survive termination and expire on their 90-day clocks (consume-only runway).","termination_policy_forfeit":"Signed contract: unused enterprise credits are forfeited at termination.","termination_policy_refund_prorated":"Signed contract: prepaid fees are refunded pro-rata on termination (manual runbook).","termination_policy_transition_window":"Signed contract: a frozen-price transition window applies after termination (manual runbook).","termination_mutual_consent_notice":"This Order Form cannot be terminated unilaterally — only by written mutual consent or for material breach.","termination_manual_runbook_refund_prorated":"Manual step required: compute and issue the pro-rata refund of prepaid fees.","termination_manual_runbook_transition_window":"Manual step required: keep pre-termination pricing frozen for the contractual transition window.","termination_mutual_consent_confirm":"I confirm the customer's WRITTEN mutual consent (or a material-breach basis) for terminating this Order Form.","termination_terms_mutual_consent_label":"Mutual consent required","termination_policy_option_unspecified":"Not classified","termination_policy_option_consume_only":"Consume-only runway","termination_policy_option_forfeit":"Forfeit at termination","termination_policy_option_refund_prorated":"Pro-rata refund","termination_policy_option_transition_window":"Transition window","toast_termination_terms_saved":"Termination terms saved.","commitment_release_title":"Evaluation opt-out window","commitment_release_until_label":"Window closes (UTC)","commitment_release_reason_label":"Basis / clause","commitment_release_help":"Last day (UTC) on which the customer may terminate by written notice with the Commitment released. Saved only if changed; Clear withdraws the window.","commitment_release_days_left":"{days, plural, =0 {closes today} =1 {# day left} other {# days left}}","commitment_release_open_until":"open until {date} ({left})","commitment_release_closed_on":"closed on {date}","commitment_release_none":"none recorded","commitment_release_released_on":"Commitment released on {date}","btn_clear_release_window":"Clear window","evaluation_opt_out_label":"Evaluation opt-out — terminate with the Commitment released","evaluation_opt_out_hint":"Window open until {date} ({left}). Settles WITHOUT minimum shortfall, true-up or remaining-commitment charges; every unassessed quarter up to the close is recorded as waived.","evaluation_opt_out_unavailable_closed":"Window closed on {date} — the Commitment stands; terminate without opt-out (minimum shortfalls settle as usual).","evaluation_opt_out_unavailable_released":"The Commitment was already released on {date}.","evaluation_opt_out_consequence":"EVALUATION OPT-OUT: this termination settles WITHOUT minimum shortfall, true-up or remaining-commitment charges. Every unassessed quarter up to {date} is recorded as waived and the Commitment is stamped released. Irreversible once a wind-down starts; a scheduled close can still be cancelled, which withdraws the release.","evaluation_opt_out_confirm_ack":"I confirm the customer's written notice landed inside the window and that no minimum shortfall or true-up will be charged.","btn_confirm_opt_out":"Release & terminate","opt_out_error_not_configured":"No opt-out window is recorded on this contract — set it under Termination terms first, or terminate without the opt-out.","opt_out_error_window_closed":"The opt-out window closed on {date}. Uncheck the opt-out to terminate normally — minimum shortfalls settle as usual.","opt_out_error_already_released":"The Commitment was already released — the opt-out was unchecked; terminate normally.","opt_out_error_already_scheduled":"A termination is already scheduled for this contract — cancel the schedule first.","opt_out_error_transition_irreversible":"The wind-down has already started and cannot be changed; only a new signed agreement can restore enterprise service.","opt_out_error_team_unbound":"This contract is not bound to a team, so there is nothing to terminate on the billing side — bind the customer or delete the draft instead.","waived_quarters_label":"Waived quarters","field_commitment_release_window":"Evaluation opt-out window","field_commitment_released_on":"Commitment released on {date}","terminate_off_contract_warning":"⚠ Off-contract mode: this deviates from the exit the signed agreement prescribes and may BREACH the contract. Prefer the recommended option unless there is a documented basis.","terminate_breach_confirm_warning":"⚠ BREACH RISK: you are terminating in a mode the signed contract does not prescribe. Confirm only with a documented basis (written agreement or breach).","terminate_consequence_scheduled_consume_only":"Runs normally until the chosen date; the final billing month's commitment is invoiced in full and no new cycle starts after it. Per the signed contract, remaining credits stay in the account and expire on their original 90-day clocks; the account reverts to self-serve pay-as-you-go at list price right away.","terminate_consequence_scheduled_forfeit":"Runs normally until the chosen date; the final billing month's commitment is invoiced in full and no new cycle starts after it. Per the signed contract, any unused enterprise credits are revoked at the moment of termination; customer top-ups are untouched.","terminate_consequence_scheduled_refund_prorated":"Runs normally until the chosen date; the final billing month's commitment is invoiced in full and no new cycle starts after it. Per the signed contract, prepaid fees must be refunded pro-rata — handled manually, outside this dialog.","terminate_consequence_scheduled_transition_window":"Runs normally until the chosen date; the final billing month's commitment is invoiced in full and no new cycle starts after it. Per the signed contract, usage may continue at frozen pre-termination pricing for the contractual transition window — handled manually.","terminate_consequence_scheduled_unspecified":"Runs normally until the chosen date; the final billing month's commitment is invoiced in full and no new cycle starts after it. Termination terms are not classified yet — read the signed PDF before proceeding.","terminate_consequence_wind_down_consume_only":"The current cycle bills fully, then a burn-off window lets remaining credits be consumed before automatic finalization. Per the signed contract, remaining credits stay in the account and expire on their original 90-day clocks; the account reverts to self-serve pay-as-you-go at list price right away.","terminate_consequence_wind_down_forfeit":"The current cycle bills fully, then a burn-off window lets remaining credits be consumed before automatic finalization. Per the signed contract, any unused enterprise credits are revoked at the moment of termination; customer top-ups are untouched.","terminate_consequence_wind_down_refund_prorated":"The current cycle bills fully, then a burn-off window lets remaining credits be consumed before automatic finalization. Per the signed contract, prepaid fees must be refunded pro-rata — handled manually, outside this dialog.","terminate_consequence_wind_down_transition_window":"The current cycle bills fully, then a burn-off window lets remaining credits be consumed before automatic finalization. Per the signed contract, usage may continue at frozen pre-termination pricing for the contractual transition window — handled manually.","terminate_consequence_wind_down_unspecified":"The current cycle bills fully, then a burn-off window lets remaining credits be consumed before automatic finalization. Termination terms are not classified yet — read the signed PDF before proceeding.","terminate_consequence_immediate_consume_only":"Ends now: mid-cycle usage is settled immediately and team overrides are retired at once. Per the signed contract, remaining credits stay in the account and expire on their original 90-day clocks; the account reverts to self-serve pay-as-you-go at list price right away.","terminate_consequence_immediate_forfeit":"Ends now: mid-cycle usage is settled immediately and team overrides are retired at once. Per the signed contract, any unused enterprise credits are revoked at the moment of termination; customer top-ups are untouched.","terminate_consequence_immediate_refund_prorated":"Ends now: mid-cycle usage is settled immediately and team overrides are retired at once. Per the signed contract, prepaid fees must be refunded pro-rata — handled manually, outside this dialog.","terminate_consequence_immediate_transition_window":"Ends now: mid-cycle usage is settled immediately and team overrides are retired at once. Per the signed contract, usage may continue at frozen pre-termination pricing for the contractual transition window — handled manually.","terminate_consequence_immediate_unspecified":"Ends now: mid-cycle usage is settled immediately and team overrides are retired at once. Termination terms are not classified yet — read the signed PDF before proceeding.","paper_pinned_title":"Value is fixed in the signed contract","paper_pinned_body":"The signed contract text spells out: {fields}. Changing it here does NOT amend the contract.","paper_pinned_amend_hint":"Recommended path: record a signed amendment (Amendments card below), then apply it.","paper_pinned_need_senior":"Overriding requires contract.paper_pinned_override.","paper_pinned_override_btn":"Override manually anyway","paper_pinned_ack_btn":"Got it","paper_pinned_cancel":"Cancel","paper_pinned_save_failed":"Failed to update contract settings","pin_section_title":"Paper-pin status","pin_section_description":"Whether each value counts as paper-stipulated.","pin_state_amendment":"Pinned (amendment)","pin_state_manual":"Pinned (manual)","pin_state_template":"Pinned (template)","pin_state_released":"Released (manual)","pin_state_free":"Not pinned","pin_opt_auto":"Auto (heuristic)","pin_opt_pinned":"Force pinned","pin_opt_unpinned":"Force unpinned","pin_toast_updated":"Pin state updated.","pin_toast_failed":"Pin update failed.","toast_activate_failed":"Activation failed.","error_team_unbound":"Activation was rejected: this contract is not bound to a team. Bind the customer to a Fish Audio account in the Customer workspace, then activate again.","check_invoices":"View invoices","btn_activate_now_scheduled":"Activate now (scheduled)","activate_disabled_unbound":"Activation is disabled: no team bound. Bind the customer to a Fish Audio account in the Customer workspace first.","team_unbound_banner":"Not bound to a team yet — bind the customer to a Fish Audio account in the Customer workspace before activation. Usage is metered per team.","team_unbound_banner_inherit":"Not bound to a team yet — activation will attach the customer's primary team ({teamId}). Usage is metered per team.","ask_agent":"Ask the agent about this customer","proposals":{"title":"Proposals","section_description":"One-off and transition actions the customer agent proposed from the signed paper. Approve each one here; the system executes it as you.","btn_ask_agent":"Ask the agent for actions","btn_refresh":"Refresh","run_label":"Agent run","run_starting":"Starting…","run_working":"The agent is reading the paper and creating proposals — this takes a minute or three.","run_in_flight_attached":"A run was already in flight for this contract — attached to it instead of starting another.","run_none":"No agent run for this contract yet.","run_poll_error":"Could not refresh the run — retrying.","start_failed":"Could not start the agent run","list_loading":"Loading proposals…","list_error":"Could not load the proposals.","empty":"No proposals for this contract.","empty_running":"No proposals yet — they appear here as the agent creates them.","status":{"proposed":"Proposed","approved":"Approved","scheduled":"Scheduled","executed":"Executed","rejected":"Rejected","failed":"Failed","superseded":"Superseded","blocked_reapproval":"Needs re-approval"},"hook":{"now":"Now","on_activate":"On activation","on_replace":"On replacement","on_first_invoice":"On first invoice"},"hook_help":{"now":"Executes the moment you approve.","on_activate":"Recorded on approval; applied when the contract activates.","on_replace":"Recorded on approval; applied when this contract replaces the previous one.","on_first_invoice":"Recorded on approval; applied when the first invoice is issued."},"kind":{"wallet_adjustment":"Wallet adjustment","prepaid_offset_set":"Set prepaid offset","activate_contract":"Activate contract","amendment_apply_manual":"Apply amendment manually","concurrency_update":"Concurrency / ZDR / quality guard","overdraft_settings_update":"Overdraft settings","manual_usage_create":"Manual usage record","resync_team":"Resync team","one_time_expiry_settings_update":"One-time credit expiry at term end","termination_settings_update":"Termination terms","manual_review":"Manual review","invoice_mark_paid":"Mark invoice paid","invoice_mercury_send":"Send invoice via Mercury","revenue_share_settle":"Settle revenue share","payment_settings_update":"Payment settings","reschedule_start":"Reschedule contract start","invoice_void_paid":"Void invoice with received money","contract_waive_minimum":"Waive minimum commitment","amendment_record_alignment":"Record alignment (lower terms)","guarantee_upsert":"Contract guarantee","guarantee_lower":"Guarantee: lower fee","provisional_reading_resolve":"Resolve provisional reading","coverage_suspension":"Suspend coverage","service_suspension":"Suspend service","sla_credit_approve":"Approve SLA credit","model_coverage_decide":"Rate for a model outside the contract"},"source":{"paper":"from the paper","operator_request":"operator request"},"paper_quote":"Paper","rationale":"Why","preview_show":"Show preview","preview_hide":"Hide preview","preview_unavailable_title":"Preview unavailable","decided_line":"Decided by <id>{user}</id> · {date}","decision_note":"Note","error_line":"Execution failed: {message}","superseded_by":"Superseded by proposal {id}","yes":"Yes","no":"No","none":"—","approve_digest":"Preview version (changes if the facts move)","approve_type_kind":"Type “{kind}” or “{label}” to confirm","approve_refused_title":"Refused ({code})","approve_success":"Proposal executed.","approve_recorded":"Proposal recorded. Applies: {hook}.","section_wallet":"Wallet","wallet_team":"Team","wallet_current":"Current balance","wallet_amount":"Amount","wallet_resulting":"Resulting balance","section_prepaid":"Prepaid offset","prepaid_offset":"Offset","prepaid_current_note":"Current note","prepaid_description":"Invoice line description","section_activation":"Activation preview","section_reconcile":"Activation reconcile","reconcile_period":"Billing period","reconcile_included":"Included credits","reconcile_usage":"Platform usage","reconcile_overage":"Overage adjustment","reconcile_done":"Already reconciled","section_amendment":"Amendment","amendment_id":"Amendment","amendment_status":"Amendment status","amendment_effective":"Effective date","amendment_changed_fields":"Changed fields","amendment_evidence":"Signed evidence","amendment_record_alignment":"Record alignment","amendment_allow_early":"Allow early apply","amendment_change_field":"Field","amendment_change_current":"Current","amendment_change_proposed":"Proposed","amendment_change_lowers":"Lowers","amendment_money_lowering":"Lowers money terms","amendment_senior_required":"Senior approval required","guarantee_replaces":"Replaces the stored row","guarantee_sets_paper":"Pins concurrency to the paper","guarantee_pins_zdr":"Pins zero data retention to the paper","guarantee_conflict":"Refused by the contract settings","section_concurrency":"Concurrency / ZDR / quality guard","concurrency_limit":"Concurrency limit","concurrency_zdr":"Zero data retention","concurrency_quality_guard":"Quality guard","concurrency_pinned":"Pinned by the paper","concurrency_senior":"Approver needs extra permission","concurrency_override_paper":"Overrides the paper","section_overdraft":"Overdraft settings","overdraft_multiplier":"Limit multiplier","overdraft_amount":"Limit amount","overdraft_timing":"Credit grant timing","overdraft_suspended":"Suspended","overdraft_card":"Card payment allowed","overdraft_surcharge":"Card surcharge %","section_manual_usage":"Manual usage","usage_mode":"Mode","usage_period":"Period","usage_qty":"Quantity (UTF-8 bytes)","usage_rate":"Rate per 1M UTF-8 bytes","usage_amount":"Computed amount","usage_rate_missing":"The contract has no rate for this usage — the amount must be given explicitly.","section_team":"Team overrides","section_one_time_expiry":"One-time credit expiry","one_time_expiry_switch":"Void unused credits at term end","one_time_expiry_term_end":"Term ends","one_time_expiry_expired_at":"Term-end sweep already ran","section_termination":"Termination terms","termination_policy":"Credit policy at termination","termination_mutual_consent":"Mutual consent required","team_id":"Team","team_exists":"Team exists","team_zdr":"ZDR","team_quality_guard":"Quality guard","team_concurrency":"Concurrency","team_price_rows":"Price rows","section_manual_review":"Manual review","section_params":"Parameters","param":{"amount":"Amount","note":"Note","skip_signed_document_check":"Skip signed-document check","skip_activation_credit":"Skip activation credit","sweep_existing_balance":"Sweep existing balance","replace_existing":"Replace existing contract","amendment_id":"Amendment","allow_early_apply":"Allow early apply","record_alignment":"Record alignment","concurrency_limit":"Concurrency limit","zero_data_retention":"Zero data retention","quality_guard":"Quality guard","override_paper":"Override the paper","overdraft_limit_multiplier":"Limit multiplier","overdraft_limit_amount":"Limit amount","credit_grant_timing":"Credit grant timing","suspended":"Suspended","allow_credit_card_payment":"Card payment allowed","credit_card_surcharge_pct":"Card surcharge %","period_start":"Period start","period_end":"Period end","description":"Description","source":"Source","qty_utf8_bytes":"Quantity (UTF-8 bytes)","rate_per_million":"Rate per 1M UTF-8 bytes","one_time_expire_at_term_end":"Void unused credits at term end","termination_credit_policy":"Credit policy at termination","termination_requires_mutual_consent":"Mutual consent required","summary":"Summary","instructions":"Instructions","coverage_preview_id":"Coverage preview","legacy_debit_restore_digest":"Restore plan digest","legacy_debit_restore_cutoff":"Restore plan cutoff"},"result_audit":"Audit action","result_hook":"Hook","result_acknowledged":"Acknowledged","result_record":"Record","result_contract_status":"Contract status","result_balance":"Balance","result_active":"Active","run_lookup":"Looking up this contract's runs…","run_lookup_failed":"Could not look up this contract's runs","run_lookup_failed_hint":"Starting stays disabled until the lookup succeeds, so a run already in flight for this contract is not duplicated.","btn_retry_lookup":"Retry lookup","run_waiting_paper":"The agent starts once the signed PDF is attached to the contract.","run_not_in_stage":"Transition proposals are asked for before activation — this contract is {status}. Proposals from earlier runs stay listed below.","list_truncated":"Only this customer's newest {count} proposals were checked — older ones for this contract are not shown.","activation_replace_candidate":"Contract to replace","activation_wallet_balance":"Team wallet balance","refusal":{"proposal_not_open":"Refused — already decided","proposal_stale":"Refused — the preview changed","proposal_kind_mismatch":"Refused — the typed kind does not match"},"activation_status":{"active":"Approving activates this contract immediately.","trialing":"Approving starts the trial now; paid billing begins {date}.","parked":"Approving only schedules the contract: it parks as pending activation and goes live automatically on {date}."},"other_contract":"on contract {id}","scheduled_note":"Pre-approved — applied automatically when its hook fires ({hook}).","fired_line":"Applied {date} · {trigger}","section_live":"Transition proposals for this contract.","section_collapsed":"Historical proposals from the transition stage.","btn_show":"Show proposals","btn_hide":"Hide proposals","preview_as_of":"Preview as of {date} — the facts at proposal time, not today's state.","activation_fee_invoice":"Approving also issues a separate one-time fee invoice for {amount} before tax, due {days, plural, =0 {on receipt} one {# day after it is issued} other {# days after it is issued}}:"},"pricing_tiers_rate_note":"When a per-unit rate is set, a lone flat TTS row (all backends) that only repeats the template default, equals the rate, or was left behind by a rate change is removed so the rate governs. The audit log records this as contract.pricing_tier_flat_row_dropped (reason: template_default, matches_rate or rate_changed).","pricing_tiers_rate_conflict":"Stored row {row} disagrees with the contract rate {rate} — usage bills at the row until you remove it or align the rate and save pricing.","btn_request_activate":"Request activation","btn_request_reschedule_start":"Request start reschedule","btn_request_termination":"Request termination","btn_request_termination_terms":"Request change"},"detail_v2":{"signed_archive_banner":"Signed archive / verbatim contract — the stored document is a faithful copy of the signed file. Editing fields below drives billing and entitlements only and never regenerates the document text.","scheduled_banner_title":"Scheduled to activate on {date}","trialing_banner_title":"Trial until {date}","trialing_banner_no_date":"This contract is in its trial period.","contract_terms_title":"Contract terms (from the signed document)","contract_terms_description":"These reflect the signed agreement. On an active contract they are locked and change only via an amendment.","operational_settings_title":"Platform operational settings (not in the contract)","operational_settings_description":"Billing-safety and operations controls. Editable on active contracts; changing them never alters the contract document.","facts_status":"Status","facts_pricing":"Pricing","facts_payment":"Payment","facts_term":"Term","facts_governing_msa":"Governing MSA","governing_msa_auto_on_activation":"Created on activation","governing_msa_not_linked":"Not linked","governing_msa_link":"MSA {version} · {id}","btn_unlink_msa":"Unlink","toast_unlink_msa":"Governing MSA unlinked","error_unlink_msa":"Could not unlink the governing MSA","governing_msa_realign_note":"Governing MSA effective date {carrierDate} differs from the order form's {contractDate}.","btn_realign_msa":"Realign to order form","realign_msa_confirm_title":"Realign the governing MSA date?","realign_msa_confirm_body":"The governing MSA's effective date changes from {carrierDate} to the order form's {contractDate}. Only the MSA record's date changes; the order form and its billing stay as they are.","realign_msa_done":"Governing MSA effective date realigned","realign_msa_failed":"Could not realign the governing MSA.","btn_split_partner_agreement":"Record as partner agreement","btn_split_msa":"Split MSA from this contract","toast_split_msa_created":"MSA record created and linked","toast_split_msa_linked":"Linked to the existing MSA record","error_split_msa":"Failed to split the MSA from this contract.","field_commitment_term":"Commitment term","commitment_term_value":"{months} months — ends {date} — auto-renew {autoRenew}","facts_concurrency":"Concurrency","facts_zdr":"ZDR","facts_membership":"Membership","min_commit_value":"Min commit · {amount}/mo","payg_discount_value":"PAYG · {percent}% off list","on":"On","off":"Off","pricing_locked_note":"Locked — pricing changes on an active contract require an amendment.","pricing_follows_list_note":"Follows-list pricing: rates derive from the live price list at the contract discount; leave per-unit rate and tiers empty.","activate_dialog_title":"Activate this contract?","activate_dialog_description":"Activation is a billing go-live: it may draft the first invoice and grant first-cycle credits, sync team pricing/entitlements.","activate_skip_credit_label":"First-cycle credit already granted manually — skip auto-grant","activate_skip_credit_helper":"(only affects minimum-commitment/bonus contracts; PAYG grants nothing at activation)","badge_non_billing":"Non-billing","badge_ai_reviewing":"AI reviewing","badge_ai_issues":"{count, plural, =1 {# AI issue} other {# AI issues}}","badge_ai_ok":"AI OK","btn_ai_review":"AI Review","btn_view_ai_review":"View AI Review","btn_enter_review":"Enter Review","btn_approve_publish":"Approve & Publish Preview","btn_back_to_legal_review":"Back to Legal Review","btn_void_signing":"Void Signing","toast_status_legal_review":"Status updated to Legal Review","toast_status_ready_published":"Approved version published to the customer review page.","toast_status_reverted":"Status reverted to Legal Review","toast_docusign_voided":"DocuSign voided, status reverted to Legal Review","error_transition":"Failed to transition status","error_void_signing":"Failed to void signing","signed_after_start_warning":"This contract was signed after its start date. Confirm that the signed OF should keep this start date before activating, or send it back to Legal Review and re-issue the OF with a new start date.","field_primary_account":"Primary account","field_agreement":"Agreement","field_billing_anchor":"Billing anchor","field_pro_membership":"Pro membership","field_membership_plan":"Membership plan","review_snapshot_title":"Customer review snapshot","review_published_revision":"Published revision {revision}","review_no_revision":"No published revision yet","review_unpublished_changes":"Unpublished changes","review_url_label":"Review URL:","review_expires":"Expires: {date}","no_expiry":"No expiry","review_no_url":"No customer review URL is currently available.","btn_preview_draft":"Preview Draft","btn_publish_customer":"Publish to Customer","btn_copy_link":"Copy Link","btn_refresh_link":"Refresh Link","btn_generate_review_url":"Generate Review URL","review_legal_note":"The existing customer URL shows the last approved snapshot. Signing is blocked until this contract is published again.","toast_review_url_copied":"Review URL copied","toast_review_url_refreshed":"Review URL refreshed and copied","error_refresh_url":"Failed to refresh URL","field_included_credits":"Included credits","field_discount":"Discount","field_overage_premium":"Overage premium","field_pro_rata_refund":"Pro-rata refund rate","pro_rata_auto":"Auto","field_credits_granted":"Credits granted","input_included_credits":"Included credits ($)","input_overage_premium":"Overage premium (%)","input_pro_rata_placeholder":"Auto: commit / included credits","input_discount":"Discount (%)","input_credits_granted":"Credits granted ($)","pricing_helper_payg":"No activation invoice or credits; cycle invoices bill prior natural-month API usage.","pricing_helper_monthly_bonus":"Invoice amount is the monthly commit; included credits can be higher, and refund rate defaults to commit / included credits.","pricing_helper_one_time":"Activation invoices the purchase amount and grants credits once; no monthly cron runs for this order form.","pricing_helper_default":"Activation invoices the monthly commit and grants included credits; later cycle invoices follow the start-date anchor.","non_billing_title":"Non-billing agreement","non_billing_description":"Pricing, invoices, credits, and billing-cycle controls are skipped for this contract type.","field_agreement_type":"Agreement type","field_behavior_category":"Behavior category","document_snapshot_title":"Document customer snapshot","field_customer_msa":"Customer MSA","field_primary_user":"Primary user","field_consumption_priority":"Consumption priority","field_auto_recharge":"Auto recharge","pricing_tiers_backend_note":"Product and backend drive API price overrides; leave backend as all for product-wide pricing.","label_api_backend":"API backend","option_all_backends":"All API backends","tier_end_placeholder":"inf","tier_end_million_bytes":"End (M bytes, empty = inf)","tier_end_million_audio_seconds":"End (M audio seconds, empty = inf)","tier_price_per_million_audio_seconds":"$ per 1M audio seconds","tier_rate_worded":"= {rate}","toast_published_review":"Published latest version to the customer review page.","error_no_template_preview":"This contract has no linked template to preview.","error_update_pricing":"Failed to update contract pricing.","fee_payg":"Pay-as-you-go API usage","draft_preview_title":"Draft preview","draft_preview_empty":"No draft preview generated yet.","activate_sweep_label":"Convert existing wallet balance to invoice credit","activate_sweep_helper":"The customer's balance from before go-live becomes a credit taken off their next invoices.","activate_replace_label":"Replace the currently active contract on the effective date","activate_replace_helper":"For renewal/upgrade order forms imported ahead of time: this contract parks as pending activation while the current one keeps running; on the effective date the system terminates the old contract (unused credits return to the wallet and carry over) and activates this one automatically.","activate_preview_loading":"Loading activation impact…","activate_preview_unavailable":"Couldn't load the activation preview; the options below show their generic descriptions.","activate_preview_status_active":"Confirming activates this contract immediately.","activate_preview_status_trialing":"Confirming starts the trial now; paid billing begins {date}.","activate_preview_status_parked":"Confirming only schedules the contract: it parks as pending activation and goes live automatically on {date}.","activate_preview_invoice_now":"Creates a {amount} activation invoice for the first cycle {start} – {end}.","activate_preview_invoice_one_time":"Creates the {amount} one-time invoice immediately.","activate_preview_invoice_one_time_deferred":"The {amount} one-time invoice is generated automatically at go-live on {date}.","activate_preview_invoice_deferred_start":"The {amount} first-cycle invoice ({start} – {end}) is generated automatically at go-live.","activate_preview_invoice_deferred_trial":"The {amount} first-cycle invoice ({start} – {end}) is generated when the trial converts to paid.","activate_preview_invoice_awaiting_user":"No invoice yet: the {amount} first-cycle invoice ({start} – {end}) is generated once the customer's primary account is bound and activated.","activate_preview_invoice_occupied":"Invoice {number} already covers the first period ({start} – {end}) — no new invoice or credit grant will be created.","activate_preview_invoice_occupied_draft":"An existing draft invoice (not yet numbered) already covers the first period ({start} – {end}) — no new invoice or credit grant will be created.","activate_preview_invoice_payg":"No upfront invoice — pay-as-you-go bills actual usage at the end of each cycle.","activate_preview_invoice_none":"This contract type has no billing; activation only changes status and entitlements.","activate_preview_credit":"Includes a {amount} credit grant for the first cycle.","activate_preview_credit_one_time":"Includes a {amount} prepaid credit grant.","activate_preview_credit_on_payment":"Credits are granted once the invoice is paid (on-payment timing).","activate_skip_credit_helper_preview":"Only for takeovers where ops already granted this cycle by hand: the {amount} auto-grant is then marked as satisfied instead of granted twice. Leave unchecked for new customers.","activate_skip_credit_na":"No automatic credit grant happens in this activation, so this option has no effect.","activate_sweep_balance":"Current team wallet balance: {amount}.","activate_sweep_helper_preview":"The {amount} the customer already has becomes a credit taken off their next invoices.","activate_sweep_off_preview":"Left unticked, the {amount} stays in the wallet and is spent on usage the invoices also bill: the customer pays twice.","activate_sweep_empty":"The wallet is empty, so this choice currently has no effect.","activate_sweep_done":"Already swept into the invoice-credit pool earlier — nothing more to move.","activate_sweep_na":"Not applicable to this contract type.","activate_sweep_deferred_on":"Parked activation: whatever is in the wallet at go-live ({date}) is swept automatically (subscription default); this switch is not used.","activate_sweep_deferred_off":"Parked activation: the balance stays in the wallet at go-live ({date}) (one-time default). Adjust the prepaid offset afterwards if it should offset invoices.","activate_replace_helper_now":"Terminates “{name}” ({status}) immediately on confirm; its unused invoice-credit pool ({amount}) returns to the wallet and carries into this contract.","activate_replace_helper_scheduled":"“{name}” ({status}) keeps running until go-live on {date}; the system then terminates it automatically (its unused invoice-credit pool of {amount} carries over via the wallet) and activates this contract.","activate_replace_na":"No other live contract of this type on this team — leave unchecked.","activate_replace_required_hint":"“{name}” is still live: activation will be rejected unless replacement is enabled.","activate_signed_doc_missing":"No signed PDF is uploaded yet — activation will be rejected until one is attached (or an operator overrides the check).","activate_team_unbound":"No team is bound to this contract or its customer — activation will be rejected until the customer is bound to a Fish Audio account.","activate_replace_already_scheduled":"Replacement is already scheduled on this contract — confirming performs the handover when due regardless of this switch.","rename_title":"Rename agreement","rename_name_label":"Agreement name","rename_number_label":"Agreement number","rename_saved":"Agreement renamed.","rename_failed":"Rename failed.","rename_aria":"Rename agreement","activate_skip_credit_helper_deferred":"Honored by the go-live run on {date}: the {amount} auto-grant will be marked satisfied instead of granted twice. Only for takeovers where ops already granted this cycle by hand.","activate_preview_offset_applied":"Prepaid balance available: {pool}. {applied} is applied to this invoice, leaving {due} due.","activate_preview_offset_settles":"Fully covered by the prepaid balance — the invoice is created as paid, credits release now, and there is nothing to send.","activate_preview_offset_indicative":"Parked activation: these figures use today's balances; the deduction itself happens at go-live.","btn_reschedule_start":"Reschedule start","badge_early_access":"Early access since {date} · paper start {paper}","payment_term_override_range":"Net {days} (override · Q{from}–Q{to})","payment_term_override_open":"Net {days} (override · from Q{from})","field_assessment_commit":"Committed volume","assessment_commit_value":"Quarterly minimums · {first} → {last} · {total} over {quarters} quarters","included_bytes_value":"≈ {bytes} characters at {rate}","account_settings_description":"Runtime account settings applied when the contract is activated.","field_rollover":"Credit expiry","field_rate":"Rate","overage_rate_value":"Overage {rate}","list_price_note":"{products} bill at platform list price (contract silent)","account_settings_title":"Account settings","review_retired_note":"Signed PDF is the authoritative copy — the customer review link is no longer active.","review_link_expired_note":"The customer review link has expired — refresh it before sharing.","btn_resync_team":"Resync team","resync_team_toast":"Team resynced — {rows} price rows ({expanded} backend rows), {guarantees} guarantees","error_resync_team":"Could not resync the team.","btn_attach_signed_copy":"Attach the signed copy","import_origin":{"signed_paper":"From a signed paper","paper":"From an imported paper","signed_on":"signed {date}","copy_attached":"signed copy attached","copy_missing":"signed copy not attached","open_review":"Open the review"},"activate_preview_invoice_fee_only":"A fees-only agreement: activation creates no usage invoice and grants no credits.","activate_preview_fee_invoice":"Also issues a separate one-time fee invoice for {amount} before tax, due {days, plural, =0 {on receipt} one {# day after it is issued} other {# days after it is issued}}:","activate_preview_fee_line":"{label}: {amount}","activate_preview_fee_counts":"(counts toward the minimum)","fee_only_title":"Fees-only agreement","fee_only_description":"No usage pricing, credits or billing cycles: only the one-time fees above are billed, each on an invoice of its own."},"team_page":{"title":"Enterprise Contract","description":"View the currently active enterprise contract for the selected team.","open_invoices":"Open invoices","open_usage":"Open usage","loading":"Loading enterprise contract...","no_contract":"No active enterprise contract for the selected team.","team":"Team {teamId}","label_type":"Type","label_pricing_model":"Pricing model","label_monthly_commit":"Monthly commit","label_billing":"Billing","label_signing_entity":"Signing entity","label_effective":"Effective","label_current_term":"Current term","label_concurrency":"Concurrency","additional_terms_title":"Additional terms","additional_terms_description":"Terms currently applied on the active contract.","no_additional_terms":"No additional terms configured.","pricing_tiers_title":"Pricing tiers","pricing_tiers_description":"Tiers are cumulative per product. Usage in each band is billed incrementally, and any usage above a capped final tier is billed at the standard published price.","no_pricing_tiers":"No pricing tiers configured.","th_service":"Service","th_usage_end":"Usage end","th_unit_price":"Unit price","no_cap":"No cap","date_range_separator":"to","th_model":"Model","all_models":"All models"},"enterprise_usage":{"title":"Enterprise Contract Usage","billing_cycle":"Billing cycle: {start} – {end}","next_invoice":"Next invoice on {date}","days_left":"{days, plural, one {# day left} other {# days left}}","usage_summary":"{used} of {allowance} used","allowance_label":"Cycle allowance","rollover_suffix":"(+{amount} rollover)","used_label":"Used this cycle","remaining_label":"Remaining","monthly_commit_label":"Monthly commitment","base_rate_label":"Base rate","overage_title":"Overage","overage_usage_label":"Overage usage (at base rate)","overage_rate_note":"Billed at the standard rate of {rate}","overage_billed_label":"Overage billed","projected_total_label":"Projected invoice this cycle","prepaid_offset":"−{amount} applied from your prepaid balance","wallet_note":"The wallet balance ({balance}) is a real-time meter at your contract rates; a negative balance means accumulated overage.","wallet_note_manual":"Some or all usage under this contract is recorded offline and is not deducted from the wallet balance; the balance may not reflect your total usage.","invoice_note":"Your invoice is based on the projected total shown on this card.","overage_rate_label":"Overage rate","above_allowance_note":"Above the allowance","current_rate_badge":"Current","payg_badge":"Pay-as-you-go","payg_discount_note":"Your contract rate: {percent}% off standard list rates","payg_wallet_note":"The wallet balance ({balance}) counts down from 0 at your contract rates; a negative balance is simply this cycle's usage that has not been invoiced yet.","topup_blocked_title":"Billed monthly by enterprise contract","topup_blocked_description":"Your team is billed monthly under an enterprise contract, so self-serve top-ups are neither needed nor available. Billing shows your allowance and projected invoice.","go_to_billing":"Go to Billing","auto_recharge_blocked":"Unavailable under enterprise contract billing","usage_banner":"Enterprise contract account · View this cycle's allowance and projected invoice on the API Billing page","contract_rates_title":"Contract rates","all_models":"All models","up_to_millions":"up to {end}M","derived_rates_note":"Current list prices with your {percent}% contract discount applied; they track list-price changes.","prepaid_credits_label":"Prepaid credits","prepaid_credits_pending":"{amount} pending — delivered when the funding invoice is settled per grant timing","invoice_credit_remaining":"Invoice credit remaining: {amount}","chain_usage_title":"Usage by model this cycle","chain_usage_amount":"{amount} · {units}M","chain_over_cap":"over cap","rates_usage_title":"Rates & usage by model","table_model":"Model","table_rate":"Contract rate","table_used":"Used this cycle","table_cost":"Cost","list_price":"List price","prepaid_offset_hint":"Your earlier account balance was moved into this contract's prepaid credit and is applied to each invoice.","projected_breakdown":"= {charges} charges − {credit} prepaid credit","billing_cycle_preset":"Billing cycle","cycle_current":"Current","rate_basis":{"contract":"Contract rate","published":"Published rates","pricing_tiers":"Pricing tiers"},"rate_band_up_to":"{rate} up to {quantity}","rate_band_beyond":"{rate} beyond","rate_line_from":"From {date}","rate_line_through":"Through {date}"},"enterprise_invoices":{"title":"Invoices","invoice_number":"Invoice #","type":"Type","billing_period":"Billing period","period_range":"{start} – {end}","amount":"Amount","status":"Status","download_pdf":"Download PDF","download_error":"Failed to download the invoice PDF","empty":"Your first invoice will appear here once it has been generated.","status_labels":{"sent":"Sent","paid":"Paid","overdue":"Overdue","settled_by_credit":"Settled by credit"},"type_labels":{"activation":"Activation","cycle":"Billing cycle","final_settlement":"Final settlement","imported":"Imported","one_time":"One-time","direct":"Manual"},"view_usage":"View itemized usage"},"templates":{"tab_templates":"Templates","tab_clauses":"Clause Library","tab_contract_types":"Contract Types","clear":"Clear","load_error":"Failed to load template","created_toast":"Template created","create_error":"Failed to create template","deleted_toast":"Template deleted","delete_error":"Failed to delete template","import_start_error":"Failed to start import","open_imported_error":"Failed to open imported template","activated_toast":"Template activated","deactivated_toast":"Template deactivated","toggle_active_error":"Failed to update template status","list_title":"Contract Templates","list_description":"Reusable contract templates with dynamic variables","import_document":"Import Document","import_dialog_title":"Import a contract document","import_library_title":"Shared library template","import_library_description":"Reusable across customers. Appears in auto-fill matching. Use for a new standard contract shape.","import_signed_archive_title":"Signed archive (verbatim, no summarization)","import_signed_archive_description":"For an already-signed contract kept as-is. Preserves every paragraph exactly (a coverage check enforces no content loss); no variables or clause library. Pick the owning customer below.","import_customer_title":"Customer-specific (bespoke)","import_customer_description":"Tailored to one customer's signed contract. Kept out of the shared library and auto-fill matching, so the library stays clean.","import_customer_label":"Customer *","import_customer_placeholder":"Pick the customer…","import_fork_label":"Based on library template (optional)","import_fork_none":"None — standalone","import_fork_hint":"Links this bespoke template under a library parent for grouping. Content still comes from the uploaded file.","choose_file_import":"Choose file & import","new_template":"New Template","create_dialog_title":"Create Contract Template","template_name_placeholder":"Template name","purpose_label":"Purpose","purpose_contract":"Contract","purpose_amendment":"Amendment","need_another_type":"Need another type? Create it first, then return here.","create_new_type":"+ Create New Type","pricing_minimum_commitment":"Minimum Commitment","pricing_one_time_purchase":"One-time Purchase","pricing_monthly_bonus":"Monthly Bonus","pricing_payg":"PAYG","pricing_month_to_month":"Month-to-Month","non_billing_hint":"Non-billing templates skip pricing, invoices, and credit grants.","empty_title":"No templates yet","empty_hint":"Create a new template or import a DOCX file","filter_types":"Types","filter_customer":"Customer","filter_status":"Status","filter_search":"Search","all_types":"All types","types_selected":"{count, plural, =1 {# type} other {# types}}","statuses_selected":"{count, plural, =1 {# status} other {# statuses}}","all_customers":"All customers","select_customer":"Select customer","search_customers":"Search customers","no_customers_match":"No customers match.","show_forks":"Show forks","status_needs_fix":"Needs fix","status_in_use":"In use","status_unused":"Unused","status_active":"Active","status_inactive":"Inactive","billing_agreement":"Billing agreement","legal_agreement":"Legal agreement","th_name":"Name","th_type":"Type","th_pricing":"Pricing","th_variables":"Variables","th_version":"Version","th_usage":"Usage","th_status":"Status","collapse_forks":"Collapse custom versions","expand_forks":"Expand custom versions","invalid_count":"{count} invalid","badge_custom_version":"Custom version","badge_standard":"Standard","badge_customer_specific":"Customer-specific","badge_retired":"Retired · parent covers","badge_amendment":"Amendment","custom_versions":"{count, plural, =1 {# custom version} other {# custom versions}}","missing_parent":"Missing parent {id}","fork_of":"Fork of {name}","usage_contracts":"{count, plural, =1 {# contract} other {# contracts}}","toggle_active_title":"Click to activate / deactivate this template","unlinked_custom":"Unlinked custom templates","no_templates_match":"No templates match the current filters."},"template_editor":{"back":"Back","description_placeholder":"Description","active_toggle_title":"Active templates can be used to create contracts. Imports start inactive (draft) until you activate them.","fork":"Fork","fork_dialog_title":"Fork template","fork_name_placeholder":"Customer or custom version name","create_fork":"Create fork","preview":"Preview","ai_review_button":"AI Review","saving":"Saving...","saved_toast":"Template saved (v{version})","save_error":"Failed to save template","docx_regenerate_error":"Failed to regenerate contract documents","regenerate_description":"This template was opened from a contract clause edit flow. Regenerate the contract DOCX before marking it ready for signature.","regenerate_and_refresh":"Regenerate and refresh","fork_created_toast":"Template fork created","fork_error":"Failed to fork template","preview_failed":"{format} preview failed","css_generated_toast":"CSS generated","css_generation_failed":"CSS generation failed","editor_not_ready":"Editor is not ready","no_matching_text":"No matching text found in WYSIWYG","ai_review_fallback_label":"AI review","proposed_clause_created":"Clause \"{name}\" created","proposed_clause_error":"Failed to create proposed clause","review_found":"{count, plural, =1 {AI review found # item} other {AI review found # items}}","review_no_issues":"AI review found no issues","review_failed":"Template AI review failed","amend_add_input_first":"Add instructions or an attachment first","amend_generated":"{count, plural, =1 {AI amend generated # reviewable action} other {AI amend generated # reviewable actions}}","amend_no_changes":"AI amend found no changes","amend_failed":"AI amend generation failed","attachment_read_error":"Failed to read {name}","attachment_read_failed":"Failed to read attachment","pasted_images_attached":"{count, plural, =1 {Pasted image attached} other {# pasted images attached}}","rename_prompt":"Rename variable key \"{key}\" to:\n\nThis updates all references in the template and saves immediately.","rename_invalid_key":"Key must be letters, digits, or underscore and not start with a digit","renamed_toast":"Renamed \"{oldKey}\" → \"{newKey}\"","rename_failed":"Rename failed","text_edit_applied":"Text edit applied","text_deleted":"Text deleted","review_no_parameter_key":"AI review action has no parameter key","applied_parameter":"Applied {parameter}","clause_not_in_library":"Clause is not in the clause library","clause_enabled_toast":"Clause enabled: {name}","review_replace_with":"Replace with: {text}","review_delete_highlighted":"Delete the highlighted text.","review_set_value":"Set {target} to {value}","review_enable_clause":"Enable clause {key}","tab_vars":"Vars","tab_clauses":"Clauses","tab_ai_review":"AI Review","tab_ai_amend":"AI Amend","variables_title":"Variables","click_to_insert":"Click to insert","badge_used":"used","badge_unused":"unused","rename_key_title":"Rename internal key (updates all references)","no_label":"No label","edit_metadata":"Edit metadata","help_text_placeholder":"Help text for this field","customer_placeholder_placeholder":"Customer form placeholder","default_value_placeholder":"Default value","variable_type_label":"Value type","type_text":"text","type_number":"number","type_number_short":"num","type_date":"date","type_currency":"currency","type_currency_symbol":"$","type_enum":"enum","type_list":"list","source_customer":"customer","source_admin":"admin","source_select_title":"Who fills this value","system_binding_title":"Bind to system variable","no_system_binding":"No system binding","sub_fields":"Sub-fields","edit_sample_data":"Edit sample data","add_custom_field_title":"Add a custom field (system fields stay locked)","add_sub_field_title":"Add sub-field","system_field_locked":"System field — locked","custom_field_key_title":"Custom field key","field_placeholder":"field","badge_sys":"sys","insert_iter_field_title":"Insert {name}","place_cursor_in_loop":"Place cursor inside a loop block first","system_field_cannot_remove":"System field — cannot remove","remove_custom_field_title":"Remove custom field","no_sub_fields":"No sub-fields defined","system_fields_locked_hint":"System fields are locked; you can add custom fields.","sample_row_count":"{count, plural, =1 {# sample row} other {# sample rows}}","clause_blocks_title":"Clause blocks","clause_blocks_description":"These blocks come from the Clause Library. The switches here are the same controls shown in the WYSIWYG clause cards and now determine whether the clause appears in HTML/PDF/DOCX preview output.","proposed_clauses_title":"Proposed clauses from import","proposed_clauses_description":"Gemini found reusable clauses that are not in the library yet. Create them here after reviewing the generated text.","add_clause_placeholder":"Add clause...","add":"Add","no_clauses_linked":"No clauses are linked to this template.","remove_clause_title":"Remove clause from this template","param_count":"{count, plural, =1 {# param} other {# params}}","rule_count":"{count, plural, =1 {# rule} other {# rules}}","insert_clause_condition":"Insert clause condition","ai_review_title":"AI review","run":"Run","run_review_hint":"Run AI review to check placeholders, clauses, and inconsistent terms.","badge_review_fallback":"review","where_label":"Where:","suggested_action_label":"Suggested action:","action_type_label":"action: {type}","show_diff":"Show diff","ai_amend_title":"AI amend","amend_prompt_placeholder":"Customer proposal, redline notes, instructions, or paste screenshots here","generating":"Generating...","generate_diff":"Generate diff","amend_results_hint":"Generated actions appear in AI Review, where each diff can be highlighted and applied.","mode_source":"Source","insert_page_break_title":"Insert page break","loop":"Loop","loop_list_label":"List variable","row":"Row","col":"Col","header":"Header","merge":"Merge","split":"Split","page_break_marker":"Page break","generate_with_ai":"Generate with AI","rendering_preview":"Rendering {format} preview...","html_preview_title":"Template HTML Preview","pdf_preview_title":"Template PDF Preview","click_preview_to_render":"Click Preview to render","sample_data_label":"Sample Data:","add_sub_fields_first":"Add sub-fields first before editing sample data.","no_sample_data":"No sample data. Click \"+ Add Row\" to start.","add_row":"Add Row","generate_css_title":"Generate CSS with AI","requirements":"Requirements","css_prompt_placeholder":"Describe the visual style you want — e.g. 'Professional legal document with serif fonts, 1-inch margins, blue headers, clean table borders'","reference_images":"Reference images (optional)","reference_image_alt":"Reference {index}","upload_or_paste_hint":"Upload or paste (Ctrl+V in the text area) reference images","generate_css":"Generate CSS","clause_info":{"credit_rollover_title":"Credit Rollover","credit_rollover_description":"Unused credits roll to next cycle (D90 FIFO expiry)","auto_renewal_title":"Auto-Renewal","auto_renewal_description":"Auto-renew after term expires","termination_for_convenience_title":"Termination for Convenience","termination_for_convenience_description":"Either party can exit with notice","resale_title":"Resale Rights","resale_description":"Customer can resell API credits","zero_data_retention_title":"Zero Data Retention","zero_data_retention_description":"No data stored after processing","model_hosting_title":"Model Hosting","model_hosting_description":"Custom model hosting by Fish Audio","exhibit_sla_title":"Service Level Agreement","exhibit_sla_description":"SLA exhibit or schedule attached to the order form"}},"clause_library":{"description":"Reusable contract clauses for Additional Terms and Schedules","type_additional_term":"Additional Term","type_schedule":"Schedule","type_msa_section":"MSA Section","filter_additional_terms":"Additional Terms","filter_schedules":"Schedules","new_clause":"New Clause","create_dialog_title":"Create Clause","name_placeholder":"Clause name (e.g., Credit Rollover)","key_placeholder":"Key (e.g., credit_rollover)","created_toast":"Clause created","create_error":"Failed to create clause","deleted_toast":"Clause deleted","delete_error":"Failed to delete clause","load_error":"Failed to load clause","empty":"No clauses yet. They will be auto-seeded on first API boot.","th_key":"Key","th_parameters":"Parameters"},"clause_library_editor":{"saved_toast":"Clause saved (v{version})","save_error":"Failed to save clause","parameters_title":"Parameters","no_parameters":"No parameters. Add one if this clause needs configurable values.","parameter_fallback":"Parameter","advanced_edit_definitions":"Advanced: Edit parameter definitions","col_key":"Key","col_type":"Type","key_placeholder":"key","label_label":"Label","label_placeholder":"Label","default_label":"Default","default_placeholder":"Default value","insert_variable":"Insert variable","insert_loop":"Insert loop","insert_loop_title":"Insert loop — or use sidebar Loop button for specific list params","add_parameter":"Add parameter","param_type_text":"Text","param_type_number":"Number","param_type_currency":"Currency","param_type_boolean":"On/off","param_type_select":"Choice","param_type_list":"List","system_behavior_title":"System Behavior","system_behavior_hint":"Configure rules with safe controls. These save as structured behavior for billing and entitlement automation.","no_system_behavior":"No system behavior. Pure legal text only.","rule_title":"Rule {index}","rule_set_field":"Set contract setting: {setting} = {value}","rule_map_param":"Sync parameter to contract: {parameter} -> {setting}","rule_activate_cron":"Enable billing automation: {automation}","rule_enable_feature":"Enable team feature: {feature}","rule_unsupported":"Unsupported rule: {type}","missing_type":"missing type","unsupported_option":"Unsupported: {type}","unsupported_rule_warning":"This saved rule uses an unsupported type. It will be preserved unless removed or changed.","behavior_set_field":"Set contract setting","behavior_map_param":"Sync parameter to contract","behavior_activate_cron":"Enable billing automation","behavior_enable_feature":"Enable team feature","setting_term_auto_renew":"Auto-renewal","setting_notice_period_days":"Notice period days","setting_rollover_days":"Rollover expiry days","setting_overage_rate":"Overage rate","setting_concurrency_limit":"Concurrency limit","setting_zero_data_retention":"Zero data retention","setting_auto_recharge_enabled":"Auto-recharge","setting_pro_membership_enabled":"Pro membership","setting_pricing_model":"Pricing model","cron_credit_rollover":"Credit rollover expiration","feature_credit_rollover":"Credit rollover","feature_resale":"Resale billing","feature_zero_data_retention":"Zero data retention","feature_custom_concurrency":"Custom concurrency","feature_auto_recharge":"Auto-recharge","feature_pro_membership":"Pro membership","setting_label":"Setting","choose_setting":"Choose setting","parameter_label":"Parameter","choose_parameter":"Choose parameter","contract_setting_label":"Contract setting","automation_label":"Automation","choose_automation":"Choose automation","feature_label":"Feature","choose_feature":"Choose feature","saved_as":"Saved as {type}","condition_key_prompt":"Condition key:","choose_default":"Choose default","value_label":"Value","value_on":"On","value_off":"Off","value_not_set":"not set","unit_days":"days"},"import_job":{"dialog_title":"Importing contract template","processing_document":"Processing document…","step_extract":"Extract","step_review":"Review","step_repair":"Repair","step_ready":"Ready","status_failed":"Import failed","status_ready":"Import ready","status_ready_findings":"{count, plural, =1 {Import ready — # finding} other {Import ready — # findings}}","status_importing":"Importing…","status_template_stage":"Template import · {stage}","stage":{"pending":"waiting to start","extracting":"reading the file","reviewing":"reviewing","repairing":"repairing the draft"},"load_error":"Failed to load import job","unknown_error":"Unknown error","reopen_title":"Reopen import progress","view":"view","dismiss":"Dismiss","autorepair_applied":"Auto-repair applied","autorepair_skipped":"Auto-repair skipped","autorepair_no_changes":"Auto-repair made no changes","remaining_issues":"{count, plural, =1 {# mechanical issue remaining} other {# mechanical issues remaining}}","repair_note":"Note: {error}","review_findings_title":"Review findings ({count})","no_findings":"No findings — the draft looks clean.","finding_fallback":"Finding","keep_in_background":"Keep in background","open_draft":"Open draft in editor","run_in_background":"Run in background","status_gate_failed":"{count, plural, =1 {Draft differs from the signed paper — # violation} other {Draft differs from the signed paper — # violations}}","gate":{"failed_title":"{count, plural, =1 {The draft differs from the signed paper in # place} other {The draft differs from the signed paper in # places}}","passed_title":"The draft mirrors the signed paper — every source paragraph, heading and rate survived.","failed_next":"The template was saved as a DRAFT. Fix these in the editor (the findings below say exactly what is missing) before creating a contract from it — a contract generated now would not match the paper.","code_missing_paragraph":"{count, plural, =1 {# paragraph of the paper is missing from the draft} other {# paragraphs of the paper are missing from the draft}}","code_missing_heading":"{count, plural, =1 {# exhibit/schedule heading is missing} other {# exhibit/schedule headings are missing}}","code_pricing_tier_open_ended":"{count, plural, =1 {# pricing tier has no upper bound where the paper sets one} other {# pricing tiers have no upper bound where the paper sets one}}","code_strict_render_failed":"The draft does not render yet (a referenced variable is undefined)","code_entity_mismatch":"{count, plural, =1 {# party/entity detail differs from the paper} other {# party/entity details differ from the paper}}","code_email_mismatch":"{count, plural, =1 {# email address differs from the paper} other {# email addresses differ from the paper}}","code_other":"{count} × {code}","use_anyway_tip":"This draft differs from the signed paper — review and fix it in the editor before creating contracts from it.","code_invented_legal_entity":"{count, plural, =1 {# party name is not a registered Fish Audio signing entity} other {# party names are not registered Fish Audio signing entities}}","ack_title":"{count, plural, =1 {Ready — # term needs acknowledgement} other {Ready — # terms need acknowledgement}}","ack_body":"The draft mirrors the signed paper. {count, plural, =1 {# clause} other {# clauses}} of the paper cannot be represented by the engine (listed below); whoever creates a contract from this template must acknowledge {count, plural, =1 {it} other {them}} first."},"autorepair_title":"What auto-repair did","autorepair_restored":"{count, plural, =1 {Put # lost paragraph of the paper back verbatim} other {Put # lost paragraphs of the paper back verbatim}}","autorepair_passes":"{count, plural, =1 {# model repair pass} other {# model repair passes}} — {remaining} mechanical issues remaining","autorepair_narrative_show":"Show the model's own change log","autorepair_narrative_hide":"Hide the model's change log","findings_intro":"These are defects of the mined draft, not steps for you here — each one is fixed by editing the draft in the template editor (or resolved by a re-import). Nothing needs ticking.","group_title":"{name} ({count})","group_expand":"show","group_collapse":"hide","group":{"fidelity":"Draft ≠ signed paper — text the paper has that the draft lost or changed. Fix: restore it in the draft HTML.","placeholders":"The draft references a variable that does not exist — it would render blank. Fix: define the variable or remove the reference.","structure":"Contract-type / variable structure problems the engine cannot accept as-is.","source_consistency":"The draft renders a value (price, party, date) that does not match the signed paper.","parameter_adjustment":"AI legal/commercial review — suggested parameter changes.","clause_text_change":"AI legal/commercial review — suggested wording changes.","missing_clause":"AI legal/commercial review — clause the paper implies but the draft lacks.","inconsistency":"AI legal/commercial review — internal inconsistencies.","parameter_check":"AI parameter review — the template's engine settings (payment terms, minimums, rates, flags) compared with the signed paper.","unsupported_term":"Clauses the contract engine cannot represent — listed under \"Unsupported by the engine\"; contracts created from this template must acknowledge them.","review_unavailable":"The AI reviewer could not run (provider error); only mechanical checks apply."},"status_ready_ack":"{count, plural, =1 {Ready — # term needs acknowledgement} other {Ready — # terms need acknowledgement}}","status_cancelled":"Import cancelled","status_cancelling":"Cancelling…","cancel_import":"Cancel import","cancel_pending":"Cancel requested — the pipeline stops at its next stage boundary and the draft template is discarded.","cancel_confirm_title":"Cancel this import?","cancel_confirm_description":"The pipeline stops at its next stage boundary and any draft template it created is deleted. The uploaded file is not kept; you can import it again later.","cancel_confirm_keep":"Keep importing","cancelled_detail":"Stopped by an operator — no draft template was kept.","autorepair_deterministic":"Deterministic fixes: {restored, plural, =1 {# lost paragraph of the paper put back verbatim} other {# lost paragraphs of the paper put back verbatim}} · {closed, plural, =1 {# open-ended pricing tier closed} other {# open-ended pricing tiers closed}} · {dropped, plural, =1 {# duplicate tier dropped} other {# duplicate tiers dropped}}","autorepair_mode_agentic":"Mode: agentic — the model read the signed paper and edited the draft through tools, each edit re-checked deterministically.","autorepair_mode_prompted":"Mode: prompted fallback — a single-shot rewrite instead of the tool-driven session.","autorepair_fallback_reason":"Fallback reason: {reason}","autorepair_partial":"The model was cut off (timeout or tool budget); the edits it had already made passed the deterministic checks and were kept.","autorepair_rejected":"Last pass rejected — {reason} ({before} → {after} error-severity findings); the draft was left as it was.","autorepair_tool_calls":"{count, plural, =0 {No tool calls} =1 {# tool call} other {# tool calls}}","autorepair_round":"round {n}","autorepair_tool_errors":"{count, plural, =1 {# error left} other {# errors left}}","unsupported_title":"Unsupported by the engine ({count})","unsupported_intro":"Clauses of the paper the contract engine has no field for. They stay in the document text, but billing will not enforce them — every contract created from this template must acknowledge each one first.","unsupported_reason":"Why","unsupported_alternative":"Closest supported alternative","unsupported_source_agent":"repair agent","unsupported_source_reviewer":"AI reviewer","quote_expand":"show full quote","quote_collapse":"show less","trace":{"show":"Show what happened","hide":"Hide what happened","live":"Live","summary":"{events, plural, =1 {# event} other {# events}} · {model_calls, plural, =1 {# model call} other {# model calls}} · {tool_calls, plural, =1 {# tool call} other {# tool calls}}","capped":"Trace capped — later events were not recorded","load_error":"Trace unavailable: {error}","empty":"Nothing recorded yet.","stage_verify":"Ready — verify","status_pending":"not started","status_running":"running","status_done":"done","status_failed":"failed","status_cancelled":"cancelled","count_model_calls":"{count, plural, =1 {# model call} other {# model calls}}","count_tool_calls":"{count, plural, =1 {# tool call} other {# tool calls}}","count_thinking":"{count, plural, =1 {# thought} other {# thoughts}}","count_errors":"{count, plural, =1 {# error} other {# errors}}","duration_seconds":"{seconds}s","duration_minutes":"{minutes}m {seconds}s","duration_hours":"{hours}h {minutes}m","round_title":"Repair round {n}","round_rows":"{count, plural, =1 {# row} other {# rows}}","filter_label":"Show only","filter_all":"All","filter_thinking":"Thinking","filter_tools":"Tools","filter_decisions":"Decisions & errors","search_placeholder":"Search text or tool…","no_matches":"No rows match the filter.","copy":"Copy trace as text","copied":"Trace copied to the clipboard","copy_failed":"Could not copy the trace","show_more":"show more","show_less":"show less","tool_running":"running…","findings_chip":"{errors, plural, =1 {# error} other {# errors}} / {total, plural, =1 {# finding} other {# findings}}","changes_restored":"{count, plural, =1 {# paragraph restored} other {# paragraphs restored}}","changes_closed":"{count, plural, =1 {# tier closed} other {# tiers closed}}","changes_dropped":"{count, plural, =1 {# duplicate tier dropped} other {# duplicate tiers dropped}}","changes_none":"nothing changed","kind_stage_open":"Stage started","kind_stage_close":"Stage finished","kind_model_call":"Model call","kind_model_thinking":"Model thinking","kind_model_turn":"Model text","kind_tool":"Tool call","kind_gate":"Fidelity gate","kind_deterministic":"Deterministic fixes","kind_decision":"Decision","kind_note":"Note","kind_error":"Error","kind_cancelled":"Cancelled by the operator"},"autorepair_billing_model":"Set billing model to arrears for the quarterly-minimum schedule","autorepair_reconciled":"Reviewer findings re-checked: {resolved} resolved, {open} open","resolved_group_title":"Resolved by auto-repair ({count})","resolved_group_intro":"Reviewer findings the repair verifiably fixed — each one checked against the final template, none by guesswork. Nothing to do here.","resolved_reason_line":"Verified after repair: {reason}","reconciliation_note_line":"Checked after repair: {note}","reviewed_before_repair_badge":"reviewed before repair","reviewed_before_repair_tip":"The reviewer wrote this before auto-repair ran — its wording may describe the draft as it was, not as it is now.","no_open_findings":"No open findings — everything the reviewer flagged was resolved by auto-repair."},"parent_diff":{"compare_button":"Compare with parent","dialog_title":"Compare with parent template","dialog_description":"What this customer's version changed vs the library template it was based on. When the parent has evolved to cover these, retire this bespoke copy — it stays for existing contracts but disappears from pickers for new ones.","computing_diff":"Computing diff…","load_error":"Failed to load diff","identical_badge":"Identical to parent","wording_changes":"{count, plural, =1 {# wording change} other {# wording changes}}","clauses_added":"Clauses added","clauses_removed":"Clauses removed","variables_added":"Variables added","variables_removed":"Variables removed","identical_note":"This bespoke template no longer differs from its parent — safe to retire.","retire_note":"Retiring never deletes: existing contracts keep rendering from this template.","unretire_button":"Un-retire (make selectable)","retire_button":"Retire — parent covers this","retired_toast":"Retired — the parent template now covers this customer.","restored_toast":"Restored — this bespoke template is selectable again.","update_error":"Update failed"},"overdraft":{"title":"Overdraft & credit grant","description":"Post-paid debt breaker: when unpaid usage exceeds the cap, the team's 402 bypass is suspended and requests are rejected until an operator re-enables it here.","suspended_banner":"402 bypass SUSPENDED — this team is being rejected like a prepaid user.","suspended_at":"Suspended at {date}","reenable_button":"Re-enable bypass","reenable_dialog_title":"Re-enable the 402 bypass?","reenable_dialog_description":"The team will immediately be able to run post-paid usage again, up to the effective debt cap. Make sure the outstanding balance situation is resolved (or the cap is raised) first — this is the only way to clear a breaker trip.","multiplier_label":"Overdraft cap multiplier","multiplier_helper":"Debt cap = multiplier × monthly volume (commit or last cycle; $1000 floor). 0 disables the breaker.","override_label":"Overdraft cap override ($)","override_helper":"Absolute cap; overrides the multiplier when > 0.","timing_label":"Credit grant timing","timing_on_invoice":"Default (standard rules)","timing_on_payment":"On payment received","timing_on_issue":"When invoice is created — even if unpaid","timing_on_issue_warning":"Credits are delivered as soon as the invoice exists — before the customer pays. If the invoice is never paid, the credits have already been given.","timing_on_send":"When invoice is sent — even if unpaid","timing_on_send_warning":"Credits are delivered when the invoice is sent to the customer — before payment. If it is never paid, the credits have already been given. (Mercury “Don't send” deliveries are invisible to us; credits then arrive on payment.)","timing_effective_created":"For this contract: credits are delivered when the invoice is created.","timing_effective_paid":"For this contract: credits are delivered when the invoice is paid.","timing_effective_created_unpaid":"For this contract: credits are delivered the moment the invoice is created, before payment.","timing_effective_sent_unpaid":"For this contract: credits are delivered when the invoice is sent to the customer, before payment.","timing_effective_prepaid_safety":"For this contract: credits are delivered when the invoice is PAID — prepaid safety for one-time, due-upon-receipt deals.","timing_helper":"When monthly included credits are granted to the team.","current_reference_volume":"Current reference volume: {amount}","effective_debt_cap":"Effective debt cap: {value}","disabled_no_cap":"disabled (no cap)","force_suspend_button":"Force suspend bypass","force_suspend_dialog_title":"Force-suspend the 402 bypass?","force_suspend_dialog_description":"The team will immediately be rejected like a prepaid user (402) on every request that would incur post-paid usage. Only a manual re-enable here clears it.","suspend_action":"Suspend bypass","save_settings":"Save settings","toast_settings_updated":"Overdraft settings updated","toast_force_suspended":"402 bypass force-suspended","toast_reenabled":"402 bypass re-enabled — team can incur post-paid usage again","allow_card_label":"Credit card payments","allow_card_helper":"Off: bank transfer only (ACH / wire to the virtual account). On: new Mercury invoices also offer card payment — enable only when the signed contract allows it. Changing this also updates this contract's invoices already sent through Mercury that are still unpaid. Left as sent: invoices sent as a bank + card pair, and every sent invoice when card is turned on with a surcharge above 0%.","allow_card_fee_note":"Card fees are absorbed by us at 0% surcharge — set a surcharge % to pass them on.","surcharge_label":"Card surcharge %","surcharge_helper":"0% = single invoice with card enabled (we absorb the card fees). Above 0% = two invoices are sent: a bank-only one at face value plus a card-enabled \"-CC\" one with the surcharge added — the customer pays one, the other cancels automatically.","surcharge_dual_note":"Dual-invoice mode: every Mercury send creates a bank-only invoice + a card invoice at +{pct}%.","request_save_settings":"Request settings change","request_suspend":"Request bypass suspension","request_reenable":"Request bypass re-enable"},"quality_guard":{"title":"Quality guard","description":"Inference-side filter that suppresses most hallucinated or noisy output, at the cost of slightly higher latency. This is an operational switch — it can be changed at any time while the contract is live.","switch_label":"Quality guard","switch_description":"Enterprise contracts default to ON. Turning it off trades output quality for lower latency.","inactive_hint":"This contract is no longer active, so the quality guard can no longer be changed.","toast_enabled":"Quality guard enabled","toast_disabled":"Quality guard disabled","toast_error":"Failed to update the quality guard"},"manual_usage":{"title":"Manual usage (self-hosted / off-platform)","description":"Off-platform usage counts toward the monthly commitment and overage. With reporting mode \"required\", the monthly invoice is held until records are entered or the deadline passes.","enable_hint":"Off-platform (self-hosted) usage reporting is disabled for this contract. Set the mode to Required to record usage manually.","reporting_mode_label":"Reporting mode","mode_not_required":"Not required","mode_required":"Required (hold invoice)","deadline_days_label":"Reporting deadline (days after period end)","deadline_policy_label":"Deadline policy","policy_bill_and_carry":"Bill anyway, late usage rides next invoice","policy_hold_and_escalate":"Keep holding and escalate","generate_invoice_now":"Generate cycle invoice now","save_settings":"Save settings","records_title":"Usage records","records_empty":"No off-platform usage recorded for this contract yet.","badge_billed_prior":"Billed (prior period)","badge_billed":"Billed","badge_unbilled":"Unbilled","record_form_title":"Record usage for a period","period_start_label":"Period start","period_end_label":"Period end","amount_label":"Amount (USD)","amount_placeholder":"e.g. 3200.00","description_label":"Description","description_placeholder":"Self-hosted cluster usage","add_record":"Add record","toast_settings_updated":"Manual usage settings updated","error_fields_required":"Period start, period end and amount are required","toast_record_added":"Usage record added","toast_record_deleted":"Usage record deleted","toast_invoice_generated":"Cycle invoice generated — total ${total}","generate_failed":"The cycle invoice could not be generated.","window_awaiting":"Awaiting entry","window_current":"Current period","custom_period_toggle":"Custom period (advanced)","custom_period_hint":"For a period that was already invoiced, the record is not lost — it bills on the NEXT invoice as a prior-period line.","add_record_custom":"Add for custom period"},"cycle_backfill":{"title":"Invoice a past billing period","description":"Billing periods that have ended. A period that already has an invoice can't be picked.","period_label":"Billing period","period_invoiced":"{period} · invoiced","no_periods":"No billing period has ended yet.","generate":"Generate invoice","confirm_title":"Generate the invoice for {period}?","confirm_description":"The cycle invoice for this period is made the same way the daily billing run makes it.","toast_done":"Invoice for {period} generated — total ${total}"},"invoice_holds":{"title":"Invoices awaiting manual usage entry","description":"These contracts require off-platform usage to be recorded before the cycle invoice goes out. Enter the usage on the contract page, then generate — or wait for the deadline policy.","deadline_line":"Deadline {date} · {policy} · {count, plural, =1 {# record} other {# records}}, ${total}","policy_holds":"holds until released","policy_bills":"bills automatically after deadline","badge_past_deadline":"Past deadline","badge_awaiting":"Awaiting entry","enter_usage":"Enter usage","generate_now":"Generate now","toast_invoice_generated":"Cycle invoice generated — total ${total}","generate_confirm_title":"Generate the cycle invoice now?","generate_confirm_with_usage":"Releases the hold and bills immediately, including {count} manual usage record(s) totaling ${total}.","generate_confirm_no_usage":"No manual usage is recorded for this period — the invoice will bill WITHOUT the off-platform usage (late entries carry to the next invoice). Confirm the reports really are zero before generating.","title_mixed":"Cycle invoices on hold","description_mixed":"Each invoice below waits for the reason on its row.","decide_rate":"Decide the rate","open_contract":"Open contract"},"clause_card":{"title":"Clauses","manual_source":"Manual","btn_template":"Template","loading_linked":"Loading linked clauses","type_additional_term":"Additional term","type_schedule":"Schedule","type_msa_section":"MSA section","parameter_count":"{count, plural, =1 {# parameter} other {# parameters}}","rule_count":"{count, plural, =1 {# rule} other {# rules}}","badge_enabled":"Enabled","badge_linked":"Linked","badge_default":"Default","btn_edit_text":"Edit text","edit_dialog_title":"Edit clause text for this contract?","edit_dialog_description":"This opens a clause text editor. If this contract still uses a standard template, a customer-specific fork will be created and assigned first so the global template stays unchanged. After saving, regenerate the DOCX before marking it ready for signature.","btn_open_editor":"Open clause editor","no_clauses":"No clauses linked.","label_additional_terms":"Additional terms","label_schedules":"Schedules","btn_save_params":"Save clause parameters","toast_params_saved":"Clause parameters saved","toast_params_failed":"Clause parameters could not be saved","label_unsupported_terms":"Unsupported terms acknowledged"},"clause_params":{"credit_rollover":"Credit Rollover","overage":"Overage","auto_renewal":"Auto-Renewal","resale":"Resale Authorization","termination_for_convenience":"Termination for Convenience","end_customer_access":"End Customer Access","model_hosting":"Model Hosting","price_lock":"Price Lock","exhibit_sla":"SLA Exhibit","schedule_end_customer_access":"End Customer Access Schedule","zero_data_retention":"Zero Data Retention","rollover_days":"Rollover Expiry Days","rollover_expiry_text":"Rollover Expiry Policy","rollover_transfer_text":"Transfer Policy","notice_days":"Notice Period (days)","termination_msa_sections":"MSA Section References","resale_msa_sections":"MSA Section References","minimum_resale_price":"Minimum Resale Price ($/M)","product_name":"Product Name","overage_rate":"Overage Rate ($/M)","uptime_target":"Uptime Target","pricing_tiers":"Pricing Tiers"},"clause_editor":{"title_named":"Edit {name}","title":"Edit clause text","contract_fork_note":"Saving updates the customer template fork assigned to this contract.","amendment_fork_note":"This text is stored on a customer template fork and applies only after the amendment is signed.","mode_wysiwyg":"WYSIWYG","tool_bold":"Bold","tool_italic":"Italic","tool_underline":"Underline","btn_save_text":"Save text","btn_save_clause_text":"Save clause text","error_load_template_first":"Load the linked template before editing clause text","toast_fork_created":"Customer template fork created and assigned","toast_text_saved":"Clause text saved to customer template","regenerate_dialog_title":"Regenerate contract documents?","regenerate_dialog_description":"Clause text changed on the customer template fork. Regenerate the DOCX before marking this version ready for signature.","btn_later":"Later","btn_regenerate_docx":"Regenerate DOCX","toast_docx_regenerated":"Contract DOCX regenerated"},"signature":{"block_title":"Signature","manual_packet_sent":"Manual packet sent · {date}","manual_mode":"Manual signature mode","no_envelope":"No envelope sent","btn_send_docusign":"Send DocuSign","btn_manual_send":"Manual send","btn_sync":"Sync","completed_at":"Completed {date}","toast_docusign_sent":"DocuSign envelope sent.","toast_manual_marked":"Manual signature packet marked as sent.","toast_docusign_synced":"DocuSign status synced.","btn_open_redline":"Open redline record","label_attach_executed":"Attach executed PDF evidence","btn_attach_executed":"Attach executed PDF","label_redline":"Counterparty redline record","btn_attach_redline":"Attach counterparty redline","error_choose_redline":"Choose a redline document first.","toast_redline_uploaded":"Redline uploaded.","redline_history_title":"Redline record history","redline_fallback_name":"Counterparty redline","redline_status_revision":"Status {status} · Revision {revision}","redline_based_on":"Based on {key}","customer_requested":"Customer requested signing · {date} — send the packet, then attach the executed PDF"},"ai_review":{"sheet_title":"AI review","sheet_description":"Cross-contract review results for this customer.","running":"AI review is running.","open_issues":"Open issues","none_unresolved":"No unresolved AI review issues.","sources":"Sources: {list}","btn_dismiss":"Dismiss","btn_accept":"Accept resolution","resolved_count":"Resolved ({count})","dismissed_count":"Dismissed ({count})","fallback_issue":"Review issue","toast_started":"AI review started.","toast_dismissed":"AI review issue dismissed.","toast_resolved":"AI review issue marked as resolved.","error_no_customer":"This contract is not linked to a customer."},"amendments":{"packets_title":"Published amendment packets","status_ready_for_signature":"Published for signature","status_sent_for_signature":"Sent for signature","status_signed":"Signed","status_signed_needs_start_date_review":"Signed - review start date","status_active":"Applied","status_fulfilled":"Fulfilled","status_unknown":"Unknown","published_at":"Published {date}","generated_key":"Generated: {key}","signed_key":"Signed: {key}","docusign_ref":"DocuSign: {value}","btn_open_review":"Open published review","btn_copy_review_url":"Copy published URL","toast_review_url_copied":"Published amendment review URL copied","btn_sync":"Sync amendment","toast_synced":"Amendment DocuSign status synced.","empty":"No published amendment packets yet","btn_open_dialog":"Approve & publish amendment","dialog_title":"Approve & publish amendment packet","label_effective_date":"Effective date","suggested_billing_day":"Suggested: align to the billing day (this contract bills on day {day} of the month)","label_template":"Amendment template","option_default_packet":"Default amendment packet","label_select_changes":"Select changes","non_billing_hidden":"Billing fields are hidden for this non-billing agreement.","current_value":"Current: {value}","placeholder_new_value":"New value","modify_clause_text":"Modify clause text","no_clauses_linked":"No clauses are linked to this contract template.","badge_modified":"Modified","no_changes":"No changes","fork_note":"Creates a customer template fork and applies it only after the amendment is signed.","btn_approve_publish":"Approve & publish","error_load_templates":"Failed to load amendment templates","error_effective_date_required":"Effective date is required","error_select_change":"Select at least one field or clause text to amend","error_load_template_first":"Load the linked contract template before editing clauses","error_edit_one_clause":"Edit at least one clause before generating the amendment","error_enter_values":"Enter new values for selected fields","error_enter_changes":"Enter new values for selected changes","error_clause_unlinked":"A selected clause is no longer linked to this contract","toast_published":"Amendment packet approved and published","toast_approved":"Amendment packet approved","toast_clause_after_signature":"Clause text amendment will apply after signature","error_create":"Failed to create amendment","fields":{"monthly_commit":"Monthly commit","included_credits_value":"Included credits value","per_unit_rate":"Per unit rate (TTS, $ per 1M characters)","term_duration_months":"Term duration (months)","end_date":"End date","overage_premium_pct":"Overage premium %","discount_percent":"Discount %","concurrency_limit":"Concurrency limit","zero_data_retention":"Zero data retention","rollover_days":"Rollover days","data_region":"Data region","logging_policy":"Logging policy","sub_processors":"Sub-processors","payment_term":"Payment term","payment_term_days":"Payment term days","billing_frequency":"Billing frequency","term_auto_renew":"Auto-renew","notice_period_days":"Notice period (days)","quality_guard":"Quality guard","revenue_share_active":"Revenue share active","revenue_share_rate_per_million":"Revenue share rate / M","retention_policy":"Retention policy","enabled_features":"Enabled features","billing_anchor_day":"Billing anchor day (1-31)","one_time_amount":"One-time amount ($)","one_time_credits_value":"One-time credits value ($)","credit_expiry_policy":"Credit expiry policy","pricing_tiers":"Pricing tiers","guarantees":"Guarantees","minimum_assessment":"Quarterly minimum assessment","template_id":"Template","payment_term_overrides":"Payment term overrides","renewal_term_months":"Renewal term (months)","due_from_invoice_date":"Due from invoice date","final_settlement_due_days":"Final settlement due (days)","contract_year_anchor_date":"Contract year start","order_form_valid_through":"Order form valid through"},"btn_apply":"Apply amendment","apply_dialog_title":"Apply amendment","apply_dialog_desc":"Records the signed changes on the contract and syncs team overrides (pricing rows, concurrency, flags). Use for amendments signed outside DocuSign, or for record alignment with the signed original.","apply_effective_line":"Contractual effective date: {date}","apply_future_effective_note":"The effective date is in the future. With signed evidence attached, the amendment auto-applies on that date — you can simply wait. Tick 'Apply now' only to bring it forward: contract fields update immediately, while billing still follows the contractual date.","apply_no_signed_pdf_note":"No signed PDF is attached to this amendment yet. Attach the customer-signed PDF first so the execution evidence lives with the record.","apply_note_label":"Attestation note (required)","apply_note_placeholder":"e.g. Signed Amendment No. 2 received by email on 2026-08-01; PDF attached.","apply_note_hint":"At least 8 characters. Cite the signed source (which document, where it lives). Stored on the amendment and audited.","toast_applied":"Amendment applied to the contract","btn_attach_signed":"Attach signed PDF","toast_signed_uploaded":"Signed amendment PDF attached","btn_download_signed":"Download signed PDF","btn_download_draft":"Download draft DOCX","manual_note":"Note: {note}","import_btn":"Import from signed PDF","import_hint":"Upload the customer-signed amendment — the extracted changes pre-fill this form for your review, and the PDF is attached to the amendment on create. Nothing is saved until you approve.","import_summary":"Extractor summary: {summary}","import_unmapped_title":"Seen in the document but NOT pre-filled — handle manually:","import_toast_prefilled":"Pre-filled {count} field(s) from the signed PDF — review before approving","import_toast_nothing":"No mappable field changes found in the document — check the findings list","import_error":"Failed to analyze the amendment document","import_toast_pdf_attached":"Signed PDF attached to the new amendment","import_toast_pdf_attach_failed":"Amendment created, but attaching the signed PDF failed — attach it from the amendment card","import_apply_now":"Already executed — apply immediately after creating","import_apply_note":"Signed amendment imported: {name}","import_toast_applied":"Amendment applied — the new terms are in force","import_toast_apply_failed":"Amendment created with evidence, but APPLY failed — apply it from the packet row","import_toast_not_applied":"Amendment created but NOT applied yet — billing ignores it until you apply","badge_not_in_force":"NOT IN FORCE","btn_void":"Void","void_dialog_title":"Void this amendment?","void_dialog_desc":"Terminal and audited: the customer review link stops working and a completed DocuSign envelope will no longer apply the fields. Applied amendments cannot be voided.","void_note_placeholder":"Why is it voided? (min 8 chars, audited)","toast_voided":"Amendment voided","toast_void_failed":"Failed to void the amendment","amend_tiers":"Amend per-model pricing tiers (full replacement)","amend_tiers_hint":"Rows replace the ENTIRE tier table. backend 'all' = catch-all chain; 'end' = graduated segment boundary in units (UTF-8 bytes for TTS; blank = open-ended); rate = $ per 1M units (UTF-8 bytes for TTS).","tier_backend":"backend (all)","tier_end":"end (UTF-8 bytes for TTS, optional)","tier_rate":"$/M","tier_add_row":"Add tier row","error_tier_rows":"Enter at least one tier row with a rate","import_toast_scheduled":"Amendment recorded with evidence — it will auto-apply on its effective date","apply_record_alignment":"Record alignment (authority = the already-signed original; no separate signature)","apply_allow_early":"Apply now even if the effective date is in the future","apply_lower_terms_approval_note":"If this lowers money terms on an active contract, it will be submitted for approval by a {capability} holder instead of being applied.","apply_evidence_required":"Attach the signed PDF first, or tick record alignment","apply_signed_pdf_required":"Attach the signed PDF first","apply_future_effective_hint":"Effective date is in the future — it will auto-apply on that date, or tick 'apply now' to override","toast_apply_failed":"Failed to apply the amendment","apply_request_invalid":"This record alignment can't be filed for approval as it stands.","import_sig_signed":"Execution evidence detected — the PDF will be attached as signed proof. ({note})","import_sig_unsigned":"No execution evidence — signature blocks look unsigned ({note}). The amendment will be created AWAITING SIGNATURE; send the customer the review link. The file will NOT be attached as proof.","import_sig_unknown":"Could not judge execution status ({note}). Defaulting to the signature flow — the file will NOT be attached as proof unless you verify it below.","import_force_signed":"Treat as signed (I verified the document manually)","import_toast_unsigned_created":"Amendment created awaiting signature — send the customer the review link to sign","import_replacement_title":"This looks bigger than an amendment","import_replacement_advisory":"The document rewrites the agreement beyond the amendable parameters ({reason}). Recommended: import it as a NEW contract and schedule it to replace the current one on its effective date (the old contract terminates automatically; unused credits carry over) — instead of squeezing it into an amendment.","import_replacement_cta":"Go to contract import","badge_start_rescheduled":"Start rescheduled","badge_record_alignment":"Record alignment","start_reschedule_term_end_kept":"Term end kept","start_reschedule_term_end_moved":"Term end moved with the start"},"effective_behaviors":{"title":"Effective behaviors","title_compact":"Effective settings","description":"Merged settings from active customer agreements.","loading":"Loading effective settings","empty":"No effective behavior settings were found for this customer.","col_setting":"Setting","col_value":"Value","col_source":"Source","aria_explain":"Explain {name}","help_zdr":"Controls whether the customer account is configured for zero data retention.","help_logging":"Controls how much request or usage detail may be retained for this customer.","help_region":"Controls the expected data or service region for enterprise processing.","help_rollover":"Controls whether unused enterprise credits carry forward and when they expire.","help_pricing":"Controls customer-specific enterprise pricing behavior.","help_default":"Merged from this customer's active enterprise contracts using the configured behavior priorities.","count":"{count} settings","col_actions":"Actions","provenance_paper":"In contract","provenance_amendment":"Amended {date}","provenance_operational":"Operator-set","provenance_operational_dated":"Operator-set {date}","provenance_default":"Default (not in contract)","provenance_paper_help":"The signed paper stipulates this value — changes go through an amendment.","provenance_operational_help":"Set by an operator; the contract paper does not pin this value.","provenance_default_help":"Untouched system/template default; the contract paper does not stipulate it.","aria_edit":"Edit {name}","action_amend":"Amend","edit_title":"Edit {name}","edit_description":"Operational setting — the paper does not pin this value. Saves to the source contract and syncs the team entitlement immediately.","edit_invalid_number":"Enter a positive whole number.","toast_updated":"Setting updated.","toast_update_failed":"Update failed — check permissions and try again.","edit_paper_pinned":"The signed paper pins this value — change it via an amendment, or override it on the contract page (requires contract.paper_pinned_override).","pin_btn_pinned":"Paper-locked — click to unlock (audited)","pin_btn_unpinned":"Not locked — click to lock as paper-stipulated","pin_btn_amendment":"Locked by a signed amendment — cannot be unlocked","pin_btn_aria":"Toggle paper lock for {name}","excluded_note":"{count, plural, one {# setting} other {# settings}} from legal carriers or ended agreements not shown as effective — replaced by the live order form's value where it has one."},"onboarding":{"status_labels":{"open":"open","completed":"completed","revoked":"revoked","expired":"expired"},"account_mode_labels":{"auto_create_or_bind":"Auto-create or bind","existing_account":"Existing account only","manual_registration":"Manual registration"},"groups":{"company":"Company","signer":"Signer","billing":"Billing","legal_notice":"Legal Notice","technical":"Technical","usage":"Usage","additional":"Additional Information"},"binding_labels":{"company_legal_name":"Company legal name","company_legal_address":"Company legal address","signer_name":"Authorized signer name","signer_title":"Authorized signer title","signer_email":"Authorized signer email","billing_contact_name":"Billing contact","billing_email":"Billing email","billing_address_line1":"Billing address line 1","billing_address_line2":"Billing address line 2","billing_city_state_zip":"Billing city/state/ZIP","legal_notice_email":"Legal notice email","use_case":"Use case"},"field_help":{"company_legal_name":"Legal company name that will be rendered into the selected contract templates.","company_name_caps":"Uppercase legal company name. This is usually derived from the company name.","company_legal_address":"Registered or business address used by legal notices and signature blocks.","signer_name":"Person who will sign the generated agreement.","signer_title":"Signer title shown in the signature block.","signer_email":"Signer email used for review/signing metadata.","billing_contact_name":"Full name of the billing or accounts-payable contact, not a phone number.","billing_email":"Invoice delivery email.","billing_address_line1":"Street address for the billing account or accounts payable team.","billing_city_state_zip":"City, state or province, postal code, and country for the billing address.","legal_notice_email":"Legal notice email, usually a legal or contract operations inbox.","contact_email":"Operational contact for onboarding and support.","use_case":"Customer-provided use case that helps determine legal/security handling.","estimated_monthly_characters":"Customer estimate for API usage sizing.","default_customer_variable":"Customer-sourced variable from the selected template.","with_example":"{help} Example: {sample}"},"placeholders":{"billing_contact_example":"Jane Doe, AP Manager"},"variable_editor":{"add_row":"Add row","pricing_tiers_help":"<code>billing_scope</code> decides system behavior. <code>api_usage</code> rows sync API price overrides and usage invoices through <code>product</code>, <code>backend</code>, <code>price_per_million</code>, and <code>end</code>. Platform subscription rows are contract display rows in this table; team seats, subscription level, and platform entitlements are not configured here yet. <code>service_name</code>, <code>rate</code>, <code>unit</code>, and <code>fee_description</code> are contract display fields.","allowed_values":"Allowed values","pricing_warnings_title":"Pricing mapping warnings","row_warning":"Row {row}: {messages}","no_rows":"No rows yet.","remove":"Remove","value_column":"Value","enum_blank":"(blank)","enum_unsupported":"Unsupported: {label}"},"create_title":"Create onboarding link","create_description":"Email is the enterprise primary account. A pre-created account can be password-reset by the customer when they submit the form.","primary_email":"Primary email","account_mode":"Account mode","expires_in_days":"Expires in days","customer":"Customer","select_customer":"Select customer","search_customers":"Search customers","no_customers_match":"No customers match.","no_customer_yet":"No customer yet","template_package":"Template package","template_package_help":"Choose the exact templates that will be instantiated after the customer submits onboarding. Use search/type filters when the template library grows.","search_templates":"Search templates","all_types":"All types","selected_only":"Selected only","template_table":{"template":"Template","type":"Type","behavior":"Behavior"},"template_name_version":"{name} (v{version})","no_description":"No description","billing_credits":"Billing / credits","legal_only":"Legal only","no_templates_match":"No templates match the current filters.","no_templates_selected":"No templates selected.","template_package_limit":"Select up to {count} templates per onboarding package.","template_parameters":"Template parameters","preview":"Preview","monthly_commit":"Monthly commit ($)","per_unit_rate":"Per unit rate (TTS, $ per 1M UTF-8 bytes)","term_months":"Term (months)","non_billing_note":"Non-billing agreement. Pricing and invoice fields are not collected for this template.","precreate_title":"Create Fish Audio account now","precreate_description":"Useful when the contract needs a primary account before the customer has signed in.","dpa_included_title":"DPA template included","dpa_included_description":"The onboarding link will instantiate the selected Data Processing Agreement template with the rest of the package.","fill_now_title":"Fill onboarding form now","fill_now_description":"Submit the customer information immediately after creating the link.","fill_now_empty":"Select a template package first. The fields shown here are derived from customer-sourced variables in the selected templates.","reused_by_variables":"{count, plural, one {Reused by # template variable.} other {Reused by # template variables.}}","internal_notes":"Internal notes","notes_placeholder":"Sales context, requested DPA, reseller use case...","copy":"Copy","create_link":"Create link","links_description":"Active, completed, expired, and revoked onboarding links.","no_links":"No onboarding links yet.","table":{"email":"Email","status":"Status","customer_contract":"Customer / Contract","expires":"Expires","actions":"Actions"},"revoke":"Revoke","toast_form_submitted":"Onboarding form submitted.","toast_link_created":"Onboarding link created.","toast_copy_failed":"Link created, but copying to clipboard failed.","toast_link_revoked":"Onboarding link revoked.","toast_revoke_failed":"Failed to revoke link","toast_preview_failed":"Template preview failed.","error_token_missing":"Onboarding token was not returned.","preview_title":"Preview: {name}","preview_iframe_title":"Template preview","no_preview":"No preview generated.","no_templates_match_hidden":"{hidden, plural, =1 {# template is} other {# templates are}} not listed here (inactive or customer-specific forks) — manage them in the Templates tab.","signed_divert_title":"Already have a signed contract?","signed_divert_body":"This page creates pre-signature onboarding links. For paper that is already signed, import the PDF instead — the system extracts everything.","signed_divert_cta":"Import signed contract","rebind_title":"Rebind customer to a different account?","rebind_warning":"This customer's usage metering and billing follow its bound team. Continuing will point the customer at the new email once the link is claimed; the current binding stays active until then. Only proceed if you are deliberately moving this customer to a different account.","rebind_cancel":"Keep current binding","rebind_confirm":"Rebind customer"},"settings":{"behavior_priority":{"title":"Behavior priorities","description":"Resolve conflicts when multiple active contracts set the same runtime behavior.","loading":"Loading priority rules","empty":"No behavior priority rules found.","toast_updated":"Behavior priority updated","toast_update_error":"Failed to update behavior priority","category_hint":"This is the conflict-resolution bucket. Contract types assigned to this bucket are ordered below, and only the selected behavior keys use this bucket.","type_order_label":"Type priority order","type_order_help":"When multiple active contracts set the same behavior key in this category, the first contract type in this list wins.","aria_move_earlier":"Move type earlier","aria_move_later":"Move type later","aria_remove_type":"Remove type","add_type":"Add type","btn_add":"Add","behavior_keys_label":"Behavior keys","behavior_keys_help":"Only these behavior keys are resolved by this priority category. This replaces the old comma-separated input so Walter can see the valid key list.","btn_add_custom":"Add custom","custom_key_help":"Custom behavior key already stored in this priority category.","fields":{"zero_data_retention":{"label":"Zero data retention","help":"Whether Enterprise runtime storage/logging should be disabled."},"logging_policy":{"label":"Logging policy","help":"The contractual logging policy used by support and runtime systems."},"data_region":{"label":"Data region","help":"Contractual region or residency requirement."},"sub_processors":{"label":"Sub-processors","help":"Sub-processor restrictions or disclosure obligations."},"pricing_model":{"label":"Pricing model","help":"Minimum commit, PAYG, one-time purchase, or non-billing mode."},"per_unit_rate":{"label":"Per-unit rate","help":"Default API price per configured unit."},"monthly_commit":{"label":"Monthly commit","help":"Recurring minimum spend for the billing period."},"included_credits_value":{"label":"Included credits","help":"Credits granted at the start of the period."},"rollover_days":{"label":"Rollover days","help":"FIFO credit expiry window from the contract terms."},"overage_rate":{"label":"Overage rate","help":"Rate used when usage exceeds included credits or commit."},"term_auto_renew":{"label":"Auto-renewal","help":"Whether the contract renews automatically."},"notice_period_days":{"label":"Notice period","help":"Days required for non-renewal or termination notice."},"concurrency_limit":{"label":"Concurrency limit","help":"Enterprise runtime concurrency entitlement."},"pro_membership_enabled":{"label":"Pro membership","help":"Whether the primary enterprise account receives Pro membership."},"auto_recharge_enabled":{"label":"Auto-recharge","help":"Whether account recharge automation should be enabled."}}},"contract_types":{"title":"Contract types","description":"Dynamic agreement types used by templates, contracts, billing, and behavior priority rules.","toast_updated":"Contract type updated","toast_update_error":"Failed to update type","toast_deleted":"Contract type deleted","toast_delete_error":"Failed to delete type","toast_required":"Contract type key and label are required","toast_created":"Contract type created","toast_create_error":"Failed to create type","system_delete_forbidden":"System contract types cannot be deleted","confirm_delete":"Delete contract type \"{label}\"? This only works when no template or contract references it.","delete_hint":"Delete this type if it is unused","billing_on":"Billing","billing_off":"Non-billing","billing_row_hint":"Billing types create contracts that can generate invoices, grant credits, and configure account entitlements. Non-billing types are legal or operational documents only.","badge_system":"System","label_label":"Label","label_key":"Key","label_placeholder":"Security Addendum","billing_label":"Billing","billing_help":"Turn this on only for agreements that should affect invoices, credits, or account entitlements. MSA/DPA/NDA-style legal documents normally leave it off.","switch_on":"On","switch_off":"Off","priority_category_label":"Priority category","priority_category_help":"Controls which behavior priority table resolves conflicts for this contract type. For example, DPA belongs to Data & Privacy while Order Form belongs to Pricing & Billing.","btn_add_type":"Add type","th_description":"Description","th_billing_hint":"Billing means this type participates in invoice generation, credits, and entitlement configuration.","th_priority_hint":"Used by behavior priorities to decide which active contract wins when multiple contracts set the same behavior key.","categories":{"pricing":"Pricing & Billing","data_privacy":"Data & Privacy","service":"Service & Features"}}},"usage_card":{"topup_locked":"Billing runs on invoices for your enterprise contract — top-ups are disabled."},"payment_settings":{"title":"Payment collection","description":"How invoices for this contract are collected. Operational — editable while the contract is active.","method_label":"Payment method","mercury_hint":"Invoices stay internal until you click “Send via Mercury” on the invoice; Mercury emails the customer and payments reconcile automatically.","prepaid_hint":"The customer tops up their own wallet in the platform; no invoices are ever generated for this contract.","cc_emails_label":"Invoice cc recipients","cc_email_placeholder":"billing@customer.com","cc_emails_hint":"ar@fish.audio is always cc'd; add customer-side recipients here.","cc_email_invalid":"Enter a valid email address","cc_email_remove":"Remove","save":"Save payment settings","saved_toast":"Payment settings saved","save_error":"Failed to save payment settings","request_save":"Request payment settings change"},"mercury_send_dialog":{"title":"Send via Mercury — review","description":"Review every detail below. Sending is final: the customer is emailed immediately.","description_request":"Review every detail below. This files a request: nothing is sent until an approver approves it.","recipient":"Recipient","no_email":"No billing email on file","cc_label":"cc","invoice_number":"Invoice number","number_assigned_at_send":"Assigned when sent","number_note":"The invoice number is assigned when it is sent.","period":"Billing period","due_date":"Due date","lines_title":"What the customer will see","line_commitment":"Minimum commitment","line_overage":"Overage fee — usage above included allowance","line_single":"Enterprise services (single line)","total":"Total","warning":"Clicking Send creates the invoice in Mercury and emails it to the customer immediately. A same-numbered QuickBooks mirror invoice is created at the same time.","warning_request":"Once approved, the invoice is created in Mercury and emailed to the customer immediately, with a same-numbered QuickBooks mirror invoice.","confirm":"Send invoice","already_sent_warning":"This invoice is already marked sent — sending again emails the customer another payment page.","dual_title":"Card surcharge — two invoices will be created","dual_body":"{number} (bank transfer only, {base}) + {number}-CC (card enabled, {card} incl. {pct}% surcharge). The customer pays exactly one; the other is cancelled automatically on payment.","dual_body_unnumbered":"Two invoices: N (bank transfer only, {base}) + N-CC (card enabled, {card} incl. {pct}% surcharge), where N is the number assigned at send. The customer pays exactly one; the other is cancelled automatically on payment."},"mercury_pairing":{"title":"Mercury AR pairing","paired":"Paired","pair":"Pair","unpair":"Unpair","sync":"Push name/email to Mercury","candidates":"Candidates in Mercury","email_match":"Email match","no_candidates":"No matching Mercury AR customer found.","candidates_taken_hint":"{count} likely match(es) are already paired to another customer — find them under Browse all.","create":"Create in Mercury","create_name":"Legal entity name","create_email":"Billing email","create_confirm":"Create & pair","paired_toast":"Paired with Mercury customer","created_toast":"Created in Mercury and paired","unpaired_toast":"Unpaired","synced_toast":"Mercury record updated","missing_remote":"Paired Mercury customer no longer exists remotely — re-pair below.","email_out_of_sync":"Mercury has a different email than our billing email ({ours}) — invoices would go to the old address.","email_ours_label":"Our billing email","email_mercury_label":"Mercury email","email_push_button":"Push ours → Mercury","email_pull_button":"Use Mercury's","email_pull_toast":"Billing email updated from Mercury","email_pull_error":"Adopting the Mercury email failed","action_error":"Pairing action failed","browse_all":"Browse all Mercury customers ({count})","browse_placeholder":"Filter by name or email…","browse_empty":"No Mercury AR customers exist yet.","taken":"Paired · {name}"},"enterprise_credit_expiry":{"title":"Expiring credits","caption":"These enterprise-granted credits expire on the schedule set by your agreement. Usage consumes the earliest-expiring credits first.","total":"Total expiring: {amount}","expires_on":"expires {date}"},"audit":{"title":"Audit trail","description":"Who did what across contracts, customers and invoices. System rows are automated jobs.","filter_resource_type":"Resource","resource_all":"All","resource_contract":"Contract","resource_customer":"Customer","resource_invoice":"Invoice","filter_resource_id":"Resource ID","filter_resource_id_placeholder":"contract / customer / invoice id","filter_action":"Action","filter_action_placeholder":"e.g. invoice. or contract.terminate","filter_actor":"Actor user ID","filter_actor_placeholder":"admin user id (exact)","apply":"Apply","col_time":"Time","col_actor":"Actor","col_action":"Action","col_resource":"Resource","empty":"No audit entries match these filters.","page_label":"Page {page}","prev":"Previous","next":"Next","detail_before":"Before","detail_after":"After","detail_metadata":"Metadata"},"prepaid_offset":{"title":"Prepaid offset","description":"One-shot pool deducted automatically from this contract's invoices as a negative line item until exhausted — for one-time service credits and pre-contract top-ups. Never granted as usage credits.","balance_label":"Remaining pool","description_label":"Line on the customer's invoice","description_placeholder":"e.g. One-time migration credit (OF §4)","description_help":"The customer reads this on each invoice the pool is taken off.","description_current":"Invoice line: {text}","description_required":"A description is required when the pool is above zero","description_length":"The description must be 4–120 characters on one line","note_placeholder":"Where the figure comes from: order form section, top-up records, balance as of a date","note_help":"Required, at least 8 characters. The customer never sees it.","save":"Save pool","cancel":"Cancel","edit":"Set pool…","saved":"Prepaid offset updated","note_label":"Reason (internal, never on the invoice)","amount_label":"New pool amount (replaces the current one)","origin_help":{"customer_paid":"Money the customer already paid; it does not expire.","paper_credit":"A credit the signed paper grants; it lapses on its expiry date."},"wording_change":"Change wording","wording_hide":"Hide"},"invoice_usage":{"title":"Itemized usage · Invoice #{number}","usage_period":"Usage period: {start} – {end}","advance_note":"This invoice also bills the {start} – {end} commitment in advance; the usage below settles the period shown above.","table_model":"Model","table_usage":"Usage","table_rate":"Effective rate","table_amount":"Amount","manual_row":"Off-platform (reported) usage","usage_total_label":"Usage at contract rates","credits_applied_label":"Covered by cycle allowance","overage_base_label":"Overage at base rate","overage_billed_label":"Overage billed (incl. {percent}% premium)","overage_billed_plain":"Overage billed","no_overage_label":"Overage","commitment_label":"Monthly commitment","commitment_advance_label":"Monthly commitment (upcoming cycle, billed in advance)","overage_line_label":"Overage (from usage above)","prior_adjustment_label":"Prior-period adjustment","other_adjustments_label":"Other adjustments","prepaid_label":"Prepaid credit applied","total_label":"Invoice total","not_available":"This invoice has no itemized usage breakdown.","load_error":"Failed to load the usage breakdown.","table_share":"Share","total_metered_row":"Total metered usage","covered_commitment_label":"Covered by prepaid commitment","overage_charge_label":"Overage charge","segment_prepaid":"prepaid commitment","segment_committed":"committed","segment_overage":"overage"},"rate_unit":{"characters":"{price} / 1M characters","audio_hours":"{price} / audio hour","session_hours":"{price} / session hour","tokens":"{price} / 1M tokens","generation":"{price} / generation","units":"{price} / 1M units","hours_quantity":"{count} h","session_hours_quantity":"{count} session h","session_seconds_quantity":"{count} session seconds","million_characters_quantity":"{count}M characters","generations_quantity":"{count, plural, one {# generation} other {# generations}}","per_million_audio_seconds":"{price} per 1M audio seconds","per_million_session_seconds":"{price} per 1M session seconds","pooled_units_help":"Units: one character of text to speech, one second of speech-to-text audio, one second of a realtime speech-to-text session, or one voice design generation."},"assessment":{"title":"Quarterly assessment","description":"Contractual quarterly minimums: consumption, banked excess, true-up invoices and §3.6 credits","run_now":"Run assessment","run_done":"Assessment run complete","run_failed":"Assessment run failed","load_failed":"Failed to load assessment data","blocked_prefix":"Assessment blocked:","exclusivity_warning":"Exclusivity performance test met for {quarters} consecutive quarters — the 60-day conversion notice window is open (§8.4)","current_quarter":"Current quarter (Q{q})","period_label":"Period {n}","current_period":"Current period (Period {n})","banked_balance":"Banked excess","commitment_drawdown":"Commitment drawdown","credits_title":"True-up credits","credit_from_quarter":"Credit from Q{q} true-up","credit_expires":"expires {date}","no_minimum_row":"No minimum scheduled","no_quarters_yet":"No quarters assessed yet.","col_quarter":"Quarter","col_period":"Period","col_window":"Window","col_minimum":"Minimum","col_consumption":"Consumption","col_banked":"Banked applied","col_trueup":"True-up","col_surplus":"Surplus","waiver_title":"§3.8 minimum waiver (optional)","waiver_hint":"Pending quarterly minimums keep assessing after termination unless the paper exempts them (evaluation-period exit or Fish's material breach). Recording a waiver reason suppresses them — audited.","waiver_placeholder":"e.g. §13.1 evaluation-period exit","rule_fixed":"Fixed renewal minimums","rule_trailing":"§3.9 trailing two-quarter average","floor_chip":"Floor {floor}","cap_chip":"Cap {cap}","shortfall_pct_chip":"§8.4 alert below {pct}%","blocked_hint_fixed":"Fixed rule: add the missing quarter to the minimum_assessment schedule with a renewal-minimum amendment (§3.9).","blocked_hint_trailing":"Engine-derived §3.9 minimum: the next assessment pass retries; a minimum_assessment amendment overrides it.","waived_badge":"Waived","waived_quarters_line":"Waived (evaluation opt-out / §3.8), not assessed: {quarters}","waived_quarters_line_basis":"Waived on termination ({basis}), not assessed: {quarters}","waived_quarters_line_other":"Waived, not assessed: {quarters}","schedule_title":"Minimum schedule","schedule_hint_fixed":"Every row is written on the paper; change it with a minimum_assessment amendment.","schedule_hint_trailing":"Engine rows are appended by the assessment pass from the trailing two-quarter average and cannot be edited here; a minimum_assessment amendment overrides them.","col_quarters":"Quarters","col_periods":"Periods","col_source":"Source","engine_row_badge":"Engine · avg of {quarters}","engine_row_title":"Appended by the assessment engine (§3.9) — read-only","paper_row_badge":"Paper","title_period":"Period assessment","description_period":"Contractual period minimums: consumption, banked excess, true-up invoices and §3.6 credits"},"team_move":{"entry_button":"Move to another team","entry_disabled_status":"A contract in status “{status}” cannot be moved (v1). Stranded money goes through a wallet adjustment instead.","entry_disabled_wind_down":"A termination is scheduled on this contract. Cancel it or let it finish before moving the team.","entry_disabled_term_expired":"This one-time contract already passed its term-end expiry. Use a wallet adjustment for stranded money.","entry_disabled_unbound":"This contract is not bound to a team yet — bind the customer first; there is nothing to move.","title":"Move contract to another team","description":"Re-homes {contract} and every other contract of this customer on team {team} — with its invoices, the contract credit and any contract debt — onto the target team in one transaction at the next top of the hour. Nothing changes until that instant, and the move can be cancelled until then.","status_dialog_title":"Team move","status_dialog_description":"The move is tracked here until it completes; this view refreshes automatically while it is scheduled or running.","section_target":"Target team","target_team_label":"Target team — account email","target_team_placeholder":"Paste the target team id","target_team_help":"Type the email of the account that runs the API traffic and pick the team from the list (organisation teams first). The preview below confirms the team's name, owner, members and API keys before anything can be scheduled.","bound_email_label":"Bound account email","bound_email_help":"I1 — the person bound on the contract and the customer record. Defaults to the target team's owner and must be an active member of the target team.","preview_loading":"Computing the move preview…","preview_error":"Couldn't load the preview: {message}","preview_idle":"Find the target team by its account email (or paste a team id) to compute the preview.","section_identity":"Identity","contracts_in_scope":"Contracts in scope ({count})","role_anchor":"anchor","role_carrier":"carrier","role_sibling":"sibling","role_chain_predecessor":"chain predecessor","role_successor_on_target":"successor already on target","role_foreign":"another customer","treatment_full":"full move: retire on old team, apply on new team","treatment_bindings_only":"bindings only (no team side effects)","treatment_records_only":"records only (rides along)","treatment_none":"nothing to sync","old_team":"Old team","new_team":"Target team","team_id":"Team id","team_name":"Name","team_owner":"Owner","team_members":"Members","team_api_keys":"API keys","team_stats_7d":"Usage in the last 7 days","team_personal":"personal team","team_closed":"closed","bound_account":"Bound account","bound_user_active":"active member","bound_user_inactive":"not an active member of the target team","old_team_cutover_notice":"The old team still has {keys} API key(s) and {money} of usage in the last 7 days. Keys do not move: they start answering 402 once the credit leaves, and the customer re-issues keys on the new team.","customer_binding":"Customer binding","customer_archived":"archived","shape":"Shape","shape_subscription":"subscription","shape_one_time":"one-time","shape_mixed":"mixed subscription + one-time","shape_prepaid":"prepaid (overrides only, wallet untouched)","shape_non_billing":"non-billing (bindings only)","execute_at":"Executes at","execute_at_help":"The next top of the hour at least 12 minutes ahead (ZDR pre-warm window). Only at hh:00 do the usage buckets, the 402 flip and the wallet flip coincide, so the boundary is exact.","section_old_wallet":"Old wallet (team {team})","wallet_balance":"Wallet balance","ledger_remaining":"Contract ledger remaining (R)","credit_transfer":"Credit transfer (X)","drift_writeoff":"Drift write-off (R − X)","debt_transfer":"Debt transfer (D)","own_money_left":"Own money staying on the old team","pool_balance":"Invoice-credit pool (stays on the contract)","prior_move_sweep_return":"Prior move sweep returned to the departing team","rows_staying":"Ledger rows staying on the old team ({count}, {amount})","fifo_discrepancy":"FIFO discrepancy","fifo_discrepancy_value":"Engine FIFO on the old team {engine} vs contract-scoped remainder {scoped}","tranches":"Credit tranches ({count})","col_invoice":"Invoice","col_created":"Granted","col_amount":"Amount","col_remaining":"Remaining","col_expires":"Expires","foreign_rows":"Enterprise ledger rows outside this contract's ledger set ({count})","foreign_row_joined":"joined to contract {contract}","foreign_row_unattributed":"unattributed","section_new_wallet":"Target wallet (team {team})","pre_existing_debt":"Pre-existing debt","sweep_amount":"Sweep into the invoice-credit pool","balance_after":"Balance after the move","overdraft_cap":"Overdraft cap after the move","would_trip":"Breaker would trip on the first consume","pre_move_usage":"Target usage since the effective date (display only)","pre_move_usage_value":"{count} requests · {list} at list price · {contract} at contract rate · delta {delta}","pre_move_usage_help":"Never repriced: usage records are immutable. If honoured commercially, record a separate audited prepaid-offset adjustment that references the move id.","rows_on_target":"Enterprise ledger rows already on the target ({count})","contracts_on_target":"Contracts already on the target ({count})","section_cycle":"Cycle straddle","cycle_window":"Current cycle","cycle_billing":"Billing model · pricing model","old_usage_in_cycle":"Old-team usage in this cycle (billed by segment)","new_usage_before_h":"Target-team usage in this cycle before the move (excluded)","usage_value":"{count} requests · {money}","pending_reconcile":"Pending activation reconcile","pending_reconcile_value":"Invoice {invoice} · {start} – {end} · included {amount}","assessment_quarter":"Assessment quarter in flight","assessment_quarter_value":"Q{q} · {start} – {end}","section_invoices":"Invoices","invoices_rewritten":"Invoices rewritten to the target team","invoices_by_status":"By type and status","activation_invoice":"Activation invoice","mercury_lock":"Mercury send lock active","qbo_direct":"QuickBooks direct invoices","invoice_line":"{number} · {type} · {status} · {amount}","pending_grant":"Pending credit grants ({count}) — re-delivered after the move if a payment was refused during the lock","open_collectible":"Open / collectible ({count}) — never re-sent","section_overrides":"Team overrides","old_after_retire":"Old team after retire","new_after_apply":"Target team after apply","zdr":"Zero data retention","quality_guard":"Quality guard","concurrency":"Concurrency","concurrency_tier_drops":"tier drops","price_rows_removed":"Price rows removed","price_rows_removed_value":"{count} (source: {source})","price_rows_written":"Price rows written ({count})","price_rows_overwritten":"Existing price rows overwritten ({count})","price_row":"{product} / {backend} · {price} per 1M units","stripe_auto_charge":"Auto-recharge","membership":"Membership","membership_change_unchanged":"unchanged","membership_change_upgrade":"upgrade","membership_change_extend":"extended","membership_change_granted":"granted","membership_until":"until {date}","package":"Package","package_kept":"{type} kept until {date} (never revoked)","zdr_prewarm":"ZDR pre-warm required: the zero-retention flag is added to the target team as soon as the move is scheduled and removed again on cancel.","propagation":"Propagation: {note}","on":"on","off":"off","yes":"yes","no":"no","none":"none","unchanged":"unchanged","section_rules":"Fixed rules","rules_help":"These are not choices. They are what the move always does; they are listed so nobody expects a switch.","rule_scope":"Scope is every contract of this customer on the old team plus the members of any replacement chain — carriers (MSA/DPA/BAA/NDA) travel with the order form.","rule_credit":"The contract's remaining credit (X) always transfers; it is never left behind and never expired now.","rule_drift":"Any remainder the wallet does not back (R − X) is written off on the target team with source “enterprise-credit-expiration”.","rule_own_money":"The old team's own money (balance above the contract remainder) stays on the old team.","rule_debt":"A negative old-team balance (D) moves to the target team: only this contract's invoices can bill it.","rule_pool":"The invoice-credit pool stays on the contract; a note is appended.","rule_invoices":"Every invoice of the scope is rewritten to the target team, any type, any status. Mercury and QuickBooks documents are never re-issued.","rule_old_membership":"The old team keeps its Pro/Max package until it ends; nothing is revoked.","rule_old_auto_charge":"The old team's auto-recharge is left untouched (re-arming a card on a drained wallet is not this action's job).","rule_binding":"The customer record is re-bound to the target team and the bound account (primary team, user and email).","rule_execute_at":"Execution happens at the next top of the hour via a scheduled task; payment, send, activation, termination, amendment and cron writes on this contract set are refused while the move holds its lock.","section_choices":"Operator choices","choices_help":"A choice exists only where the data cannot decide. Everything else above is fixed.","c1_label":"C1 · Adopt admin pre-grants as contract credit","c1_help":"An invoice in this set skipped its credit grant at activation and the old team holds positive admin-source grants. Adopting re-sources those rows to the contract: they join the ledger and the transfer, expire on the contract clock and follow its forfeit policy. Leaving them keeps the goodwill on the old wallet. Irreversible.","c1_recommended":"Recommended: the admin rows add up exactly to the skipped grant.","c1_rows":"Admin pre-grant rows ({count})","c1_invoice":"Skipped-grant invoice {invoice} ({type})","c1_amount_label":"Type the adopted amount","c1_amount_expected":"The preview adopts {amount}; the typed amount must match within 0.01.","c2_label":"C2 · Attach unattributed enterprise ledger rows","c2_help":"Only when you know these rows belong to this contract (one contract ever lived on the old team). Attached rows join the ledger and move; any row left unattached keeps the move blocked. Rows joined to another contract's invoice are refused.","c2_input_label":"Record ids to attach (comma or newline separated)","c2_attached":"{count} row(s) attached in this preview.","o1_label":"O1 · Sweep the target team's own balance into the invoice-credit pool","o1_help":"Runs before the credit lands, so enterprise credit is never swept. Default: on for subscriptions (leaving it would double-charge), off for one-time contracts; forced on for a one-time move that carries debt.","o1_effective":"Currently {state}: {amount} would be swept.","o1_forced_on":"Forced on by the contract shape (one-time with debt).","o1_forced_off":"Forced off by the contract shape.","o1_na":"Not applicable: this shape does not touch the wallet.","section_acks":"Acknowledgements required","ack_help":"Each line is an impact the server refuses to schedule over until you tick it.","ack":{"acknowledge_target_price_rows_overwritten":"The target team's existing price rows will be overwritten by the contract pricing","acknowledge_target_auto_recharge_disabled":"The target team's auto-recharge will be switched off","acknowledge_breaker_risk":"The transferred debt exceeds the overdraft cap; the breaker would trip on the first consume"},"section_blocking":"Blocked — the move cannot be scheduled","blocking_help":"Each item below makes the server refuse the move. Resolve them as described, then re-open the preview.","guard_action_label":"What to do instead:","guard":{"team_move_target_invalid":"Target team invalid","team_move_target_conflict":"Target team already carries a conflicting contract","team_move_old_team_shared":"Old team carries another customer's live contract","team_move_chain_split":"Replacement chain would be split","team_move_wind_down":"Termination scheduled","team_move_status_not_movable":"Contract status cannot be moved","team_move_target_ledger_residue":"Target team is not clean","team_move_target_wallet_negative":"Target wallet is negative","team_move_customer_binding":"Customer binding conflict","team_move_old_team_ledger_foreign":"Old team holds enterprise ledger rows outside this contract","team_move_fifo_discrepancy":"Engine FIFO does not match the contract ledger","team_move_stripe_payment_method":"Stripe-billed contract","team_move_expected_mismatch":"Typed values do not match the preview","team_move_preview_stale":"Preview is stale","team_move_in_progress":"Another move holds the lock","team_move_cron_running":"An enterprise cron is running","senior_required":"Team move permission required","team_move_acknowledgement_required":"Acknowledgements missing","team_move_engine_not_ready":"Engine prerequisites missing","team_move_already_scheduled":"A move is already scheduled for this contract set","team_move_not_cancellable":"This move can no longer be cancelled","team_move_not_due":"Not due yet","team_move_dispatch_failed":"Scheduling the executor failed","team_move_not_found":"Move not found","team_move_old_owner_closing":"Old team owner cannot receive the sweep return"},"guard_action":{"team_move_target_invalid":"Pick a team that exists, is not closed and belongs to a live account, and is not the current team.","team_move_target_conflict":"Terminate or replace the target team's live contract first, or choose a clean team.","team_move_old_team_shared":"Not a move case: investigate why another customer's contract lives on this team.","team_move_chain_split":"The scope is automatic; void the stray replacement link so the whole chain moves together.","team_move_wind_down":"Cancel the scheduled termination or let it finish, then retry.","team_move_status_not_movable":"Use a wallet adjustment for stranded money; terminated, expired, superseded and deleted contracts are not moved in v1.","team_move_target_ledger_residue":"Use a team without enterprise ledger rows or other contracts.","team_move_target_wallet_negative":"Have the customer top up the target team (top-ups are still allowed there) or record an audited admin grant.","team_move_customer_binding":"Unarchive the customer, expire the open onboarding link, or rebind explicitly, then retry.","team_move_old_team_ledger_foreign":"Attach the rows via C2 if they belong to this contract; otherwise the move stays blocked.","team_move_fifo_discrepancy":"Reconcile the void/reissue history with a wallet adjustment first.","team_move_stripe_payment_method":"Not supported in v1.","team_move_expected_mismatch":"Re-type the values exactly as the preview shows them.","team_move_preview_stale":"Close and re-open the dialog to compute a fresh preview.","team_move_in_progress":"Retry after the lock clears (seconds).","team_move_cron_running":"The executor reschedules to the next top of the hour by itself.","senior_required":"Ask someone who holds team_move.schedule.","team_move_acknowledgement_required":"Tick every acknowledgement above.","team_move_already_scheduled":"Cancel the pending move first or wait for it to finish.","team_move_not_due":"Wait for the scheduled time; the executor runs on its own.","team_move_old_owner_closing":"Recover or finish the old owner's account closure, then retry the move"},"section_warnings":"Warnings","section_notices":"Notices","warning":{"team_move_old_team_own_money":"Old team's own money stays","team_move_ledger_rows_stay":"Ledger rows stay on the old team","team_move_drift_writeoff":"Drift write-off","team_move_edge_flush_skew":"Edge flush skew","team_move_old_team_cutover":"Old team cut-over"},"section_follow_ups":"Manual follow-ups","section_confirm":"Typed confirmation","confirm_help":"Type the values exactly as the preview shows them. The server refuses any mismatch (money within 0.01) and any change to the preview's structural facts.","confirm_team_id":"Target team id","confirm_count":"Contracts in scope","confirm_credit":"Credit transfer ceiling (X)","confirm_debt":"Debt ceiling (D)","confirm_note":"Note (at least 8 characters, audited)","confirm_expected":"Expected: {value}","submit":"Schedule the move for {time}","submit_idle":"Schedule the move","submit_blocked":"Blocked by the preview","missing_team":"Find and select a target team.","missing_preview":"Waiting for the preview.","missing_blocked":"The preview lists blocking conditions.","missing_bound_email":"Enter the bound account email.","missing_team_id_match":"Type the target team id exactly.","missing_count_match":"Type the number of contracts in scope.","missing_credit_match":"Type the credit transfer ceiling.","missing_debt_match":"Type the debt ceiling.","missing_adopt_match":"Type the adopted amount.","missing_acks":"Tick every acknowledgement.","missing_note":"Write a note of at least 8 characters.","missing_more":"{count} more…","refused_title":"The server refused the request ({code})","refused_missing_acks":"Missing acknowledgements: {codes}","refused_mismatches":"Mismatched fields: {fields}","refused_stale_hint":"Structural facts changed since this preview was computed. The preview was recomputed — check the figures, re-enter any expected value that changed, and submit again.","scheduled_toast":"Team move scheduled for {time}","action_error":"The request failed","cancel_done":"Team move cancelled","retry_rescheduled_toast":"The executor moved the run to {time}","status_title":"Move {id}","move_id":"Move id","move_from_to":"team {old} → team {new}","status_scheduled":"Scheduled","status_running":"Running","status_completed":"Completed","status_failed":"Failed","status_cancelled":"Cancelled","status_superseded":"Superseded","countdown":"in {countdown} ({time})","countdown_due":"Due now ({time}) — waiting for the executor","attempts":"Attempts","rescheduled":"Rescheduled","rescheduled_value":"{count}× — last reason: {reason}","retry_rescheduled":"Executor rescheduled","error_label":"Error","btn_cancel_move":"Cancel move","btn_retry":"Retry now","scheduled_hint":"Until the scheduled time the move can be cancelled. Around that time, payment, send, activation, termination, amendment and cron writes on this contract set are refused while the move holds its lock.","running_hint":"The transaction is running; this view refreshes every 5 seconds.","completed_hint":"The move committed. API keys did not move: the customer re-issues them on the new team.","failed_hint":"Nothing changed — the transaction aborted and only this failed move record remains. Fix the cause and retry, or cancel the move.","cancelled_hint":"The move was cancelled before execution; nothing changed.","superseded_hint":"A newer move for this contract set replaced this one.","actuals_title":"Actuals (recomputed inside the transaction)","actual_old_wallet":"Old wallet before → after","actual_new_wallet":"Target wallet before → after","actual_engine_fifo_after":"Engine FIFO on the target after the move","actual_records_rehomed":"Ledger records re-homed","actual_records_adopted":"Ledger records adopted (C1)","actual_invoices_rewritten":"Invoices rewritten","actual_grants_redelivered":"Credit grants re-delivered","actual_executed_at":"Executed at","checklist_title":"Tell the customer","probe_loading":"Checking for a pending move…","entry_button_live":"Team move · {status}","live_banner_scheduled":"A team move to team {team} is scheduled for {time}. It can be cancelled until then.","live_banner_running":"A team move to team {team} is executing.","live_banner_failed":"The team move to team {team} failed ({error}). Retry it or cancel it.","btn_view_move":"View move","btn_new_move":"Plan a different move","btn_recompute_preview":"Recompute preview","preview_drift":"Inputs changed — the preview is being recomputed before the move can be scheduled.","footer_execute_at":"Runs at {time}","retry_confirm_help":"Runs the full transaction now if the current time is inside the dispatch window around {time}; otherwise the executor re-anchors the move to the next top of the hour. Fix the cause of the failure first — the server re-runs every guard.","retry_confirm_input":"Type {id} (the first 8 characters of the target team id) to confirm","btn_retry_confirm":"Run the move now","btn_back":"Back","already_scheduled_toast":"A move is already pending for this contract set — showing it.","btn_execute_manual":"Execute now (manual dispatch)","execute_manual_help":"No automatic dispatch is configured for this move — nothing will run it at {time}. Run it between {time} and five minutes after; outside that window the executor re-anchors the move to the next top of the hour.","manual_dispatch_notice":"Manual dispatch: this move will not run by itself. Execute it within five minutes after {time}.","concurrency_platform_default":"platform default","btn_execute_reschedule":"Reschedule to {time} and run automatically","execute_reschedule_help":"This is outside the run window around {time} (90 s before to 5 min after), so nothing runs right now: the move is re-anchored to {next} and, with the dispatch queue configured, runs by itself then. To run immediately instead, execute inside the window.","price_row_tts":"TTS / {backend} · {price} per 1M UTF-8 bytes"},"team_picker":{"hint":"Pick the team that actually runs the API traffic — organisation teams are listed first. Leaving it unselected binds the account's personal team.","error":"Team lookup failed.","no_account":"No Fish Audio account found for {email}.","no_teams":"{email} has no usable team.","personal":"Personal","organisation":"Organisation","role_owner":"Owner","role_member":"Member","has_contract":"Has a live contract","owner":"Owner {email}","members":"{count, plural, one {# member} other {# members}}","keys":"{count, plural, one {# API key} other {# API keys}}","selected_id":"Selected team id: {id}","show_manual":"Paste a team id instead","hide_manual":"Hide manual team id","manual_placeholder":"Team id"},"reschedule_start":{"title":"Reschedule contract start","description":"Start {contract} earlier or later than its paper date. The preview shows exactly what changes before anything is written.","mode_label":"Mode","mode_early_access_title":"Early access — start today, no paper change","mode_early_access_desc":"The first billing period runs from now to the end of the paper's first cycle for the same fee. Dates, anchor day and term stay as signed.","mode_amend_start_title":"Change the effective date — paper amendment","mode_amend_start_desc":"Dates, anchor day and term move; needs a signed side letter. Without a document the change is recorded as a record alignment.","new_date_label":"New effective date (UTC)","side_letter_label":"Signed side letter (PDF)","side_letter_help":"Upload the signed side letter or amendment. Leave empty to record the change as a record alignment — the already-signed paper stays the authority.","side_letter_choose":"Choose PDF","side_letter_uploading":"Uploading…","side_letter_attached":"Attached","side_letter_remove":"Remove","side_letter_none":"No side letter — recorded as a record alignment","side_letter_invalid_type":"Only PDF files can be attached","side_letter_upload_failed":"Upload failed — choose the file again","keep_term_end_label":"Keep the term end date","keep_term_end_help":"Only possible for whole-month moves; otherwise the term end moves with the start.","reason_label":"Reason","reason_placeholder":"Why the start moves (at least 8 characters)","preview_title":"Preview","preview_help_early_access":"Access starts at the next full hour after you confirm; the paper's dates are untouched.","preview_idle_date":"Pick the new effective date to compute the preview.","preview_loading":"Computing the preview…","preview_stale_notice":"The numbers changed since the preview you confirmed. Check the refreshed preview and confirm again.","refused_title":"The API refuses this change","refusal_code_label":"Code","refusal_message_label":"Message","remedy_label":"Next step","blocking_invoices_label":"Invoices in the way","section_dates":"Dates","dates_help":"Current → proposed","row_status":"Status","row_effective_date":"Effective date","row_delayed_start_date":"Delayed start","row_service_start_date":"Service start","row_paid_billing_start_date":"Paid billing start","row_billing_anchor_day":"Billing anchor day","row_end_date":"End date","row_current_term_start":"Current term start","row_current_term_end":"Current term end","row_early_access_start_at":"Early access from","row_governing_msa_effective_date":"Governing MSA effective date","goes_live_now":"Confirming activates the contract now.","goes_live_later":"Confirming writes the dates; the contract goes live on its start date.","resumes_activation":"The dates are already written — confirming only activates the contract.","record_alignment_chip":"Record alignment (no signed document)","section_first_invoice":"First invoice","no_first_invoice":"No invoice is created at this step.","section_next_cycle_invoice":"Next cycle invoice","row_invoice_type":"Type","invoice_type_cycle":"Billing cycle","row_period":"Period","row_amount":"Amount","row_credits":"Credits","row_due_date":"Due date","row_prepaid_offset":"Prepaid offset applied","row_usage_from":"Usage counted from","row_overage_window":"Overage window","section_money":"Wallet and cycles","row_total_cycle_invoices":"Cycle invoices in term","row_wallet_balance":"Wallet balance","row_sweep_now":"Wallet sweep","sweep_yes":"Runs now ({amount})","sweep_no":"Not at this step","row_prepaid_offset_balance":"Prepaid offset balance","section_replace":"Scheduled replacement","replace_runs_now":"The replaced contract {id} is terminated now.","replace_later":"Replaces contract {id} at go-live.","section_amendment":"Amendment record","amendment_help":"Field changes written to the amendment record.","previous_unset":"unset","section_elapsed_cycles":"Elapsed cycles left unbilled","section_warnings":"Warnings","warning":{"usage_higher_over_longer_first_cycle":"One allowance covers a longer first cycle — overage on the next invoice is more likely.","grant_deferred_access_now":"Access starts before any credits land (credits are granted on send / on payment).","replace_handover_overlap":"Starting early on a replacement bills two commits over the overlap window; the replaced contract's pre-billed commit is not refunded.","anchor_day_preserved":"The operator-set billing anchor day is kept, not re-derived from the new start.","money_amendment_inside_widened_window":"A money amendment falls inside the widened first period and prorates over the longer window.","elapsed_cycles_unbilled":"A backdated go-live leaves elapsed cycles the monthly cron will not revisit.","governing_msa_keeps_own_date":"The governing MSA keeps its own effective date."},"governing_msa_kept_detail":"MSA {id} · {date} · {reason}","governing_msa_kept_reason":{"separate_document":"separate signed document","date_differs":"date already differs from the order form","carrier_closed":"MSA record closed","not_msa":"not an MSA record","no_document":"no signed document on file","paper_set":"date recorded from the signed paper"},"btn_confirm":"Reschedule start","toast_success":"Contract start rescheduled.","action_error":"The reschedule could not be executed.","refusal_reason_label":"Refused because","refusal":{"contract_closed":"The contract is closed","use_draft_editor":"Edit the dates in the draft editor","use_status_reopen":"Reopen the contract to legal review first","signed_document_required":"A signed document must be on file","not_signed":"The contract is not signed","already_started":"The service has already started","trial_in_progress":"A trial is in progress","wind_down_in_progress":"A wind-down is in progress","assessment_start_frozen":"The start is frozen by the assessment schedule","assessment_windows_misaligned":"The minimum's check periods would no longer fit the term","early_access_subscription_only":"Early access is for subscription contracts only","early_access_with_trial_unsupported":"Early access is not supported with a trial","early_access_with_assessment_unsupported":"Early access is not supported with a minimum checked over the term","alignment_moves_service_start":"Correcting the paper dates would move the service start","effective_after_service_start":"The paper's effective date is after the service start","alignment_changes_contract_order":"Another agreement on this team has a date in between","alignment_on_assessment_contract":"Dates are not corrected on an agreement with a minimum checked over the term","alignment_breaks_terms":"The corrected dates break one of the agreement's term rules","awaiting_primary_user":"Waiting for the primary user","issued_invoice_covers_span":"An issued invoice covers the affected span","target_slot_occupied":"The target billing slot is occupied","start_already_active":"The contract is already live","reserved_slot_conflict":"A reserved order form conflicts with this slot","preview_stale":"The preview is out of date","team_moving":"A team move is in progress","no_change":"Nothing would change","keep_term_end_stub_cycle":"Keeping the term end would leave a stub cycle","keep_term_end_pins_renewal":"Keeping the term end would pin the renewal","elapsed_cycles_unbillable":"Elapsed cycles cannot be billed"},"preview_error_title":"Couldn't load the preview.","btn_retry_preview":"Retry","row_side_letter":"Side letter","row_net_due":"Net due","invoice_created_paid_by_offset":"Created as paid — the prepaid offset covers the full amount, so nothing is collected.","next_step":{"contract_closed":"A closed contract cannot be rescheduled — create a new contract if the customer is coming back.","use_draft_editor":"Edit the dates in the draft itself; this dialog is for signed contracts.","use_status_reopen":"Reopen the contract to legal review, then edit its dates there.","signed_document_required":"Attach the signed document, then reschedule.","not_signed":"Complete the signing (or upload the signed document) first, then retry.","already_started":"The start has already arrived — activate the contract as it stands; a different start is a new deal.","trial_in_progress":"A trial start cannot move — terminate and replace with a new order form.","wind_down_in_progress":"Cancel the scheduled termination from the contract page, then retry.","assessment_start_frozen":"Once the agreement is live, its check periods are fixed — terminate and replace with a new order form.","assessment_windows_misaligned":"Untick \"Keep the term end date\", or pick a start a whole number of months away.","early_access_subscription_only":"Activate on the day, or use \"Change the effective date\" instead.","early_access_with_trial_unsupported":"Use \"Change the effective date\", or activate on the day.","early_access_with_assessment_unsupported":"Usage before the first check period would not count toward the minimum — activate on the service start.","alignment_moves_service_start":"A date correction keeps the service start. To move it, use \"Change the effective date\" before go-live.","effective_after_service_start":"The effective date is never later than the service start — check both dates on the paper.","alignment_changes_contract_order":"Moving past it would change which agreement comes first — leave the dates as recorded.","alignment_on_assessment_contract":"Its check periods are fixed — leave the dates as recorded, or terminate and replace with a new order form.","alignment_breaks_terms":"Check the contract year, the free months and the term end against the paper, then try again.","awaiting_primary_user":"Bind the team's primary account first, then retry.","issued_invoice_covers_span":"Void or revert the invoices listed below with the invoice tools, then retry.","target_slot_occupied":"Void the invoice listed below first, then retry.","start_already_active":"Terminate and replace with a new order form (or schedule a replacement). A paper-date correction with no money change is a record-alignment amendment.","reserved_slot_conflict":"Terminate the contract holding the slot, or schedule this one as its replacement first.","preview_stale":"Check the refreshed preview and confirm again.","team_moving":"Wait a few seconds for the team move to finish, then retry.","no_change":"Pick a different date — this one is the current start.","keep_term_end_stub_cycle":"Untick \"Keep the term end date\", pick a whole-month move, or use early access.","keep_term_end_pins_renewal":"Untick \"Keep the term end date\" — amend the end date at the first renewal instead.","elapsed_cycles_unbillable":"Pick a start within the current billing cycle, or terminate and replace."}},"legal_profile":{"title":"Legal profile","description":"Master-terms facts this record carries. It has no pricing, runtime settings, or billing actions of its own.","document_type":"Agreement","version":"MSA version","signed":"Signed","not_signed":"Not signed yet","effective":"Effective","document":"Document","no_document":"No signed document on file","envelope":"DocuSign envelope"},"msa_version_source":{"document":"Read off the signed paper","operator":"Set by an operator","profile":"From the customer profile","template":"Template default","unknown":"Source not recorded","unknown_hint":"Nothing on record says whether this letter was read off the paper or copied from a template — verify against the signed document."},"guarantees":{"title":"Entitlements","description":"Promises the signed paper makes beyond the base pricing, and who honours each.","platform_title":"Platform-enforced guarantees","platform_description":"Promises from your agreement that the platform applies to this team automatically.","empty":"No guarantees recorded for this agreement.","kind":{"concurrency_reserved":"Reserved concurrency","concurrency_addon_block":"Additional concurrency block","zdr":"Zero data retention","quality_guard":"Quality guard","sla_availability":"Availability SLA","support_response":"Support response time","dedicated_capacity":"Dedicated capacity","self_host_supply":"Self-hosted supply","rate_lock":"Rate lock","usage_report":"Usage reporting","hipaa_baa":"HIPAA BAA","no_training":"No model training"},"unit":{"requests":"{value} requests","pct":"{value}%","business_days":"{value, plural, one {# business day} other {# business days}}","usd_per_million":"{value} / 1M characters"},"unit_name":{"requests":"Requests","pct":"Percent","business_days":"Business days","usd_per_million":"$ per 1M UTF-8 bytes"},"fee":{"month":"{amount} / month","year":"{amount} / year","one_time":"{amount} one-time"},"period":{"month":"Monthly","year":"Yearly","one_time":"One-time"},"no_fee":"No fee","enforcement":{"platform":"Platform-enforced","manual":"Honoured by ops","none":"Recorded only"},"status":{"active":"Active","expired":"Expired","superseded":"Superseded","waived":"Waived"},"col_window":"Window","col_fee":"Fee","col_source":"Source clause","field":{"id":"Row ID","kind":"Guarantee","value":"Value","unit":"Unit","starts_at":"Starts","ends_at":"Ends","fee_amount":"Fee amount","fee_period":"Fee period","fee_tier_index":"Fee tier","enforcement":"Enforcement","source_clause":"Source clause","status":"Status"},"window_term":"Contract term","window_from":"From {date}","window_until":"Until {date}","window_range":"{start} – {end}","row_with_clause":"{kind} ({clause})"},"unsupported_terms":{"title":"Unsupported terms acknowledged","description":"Paper terms the platform cannot represent; each needs an owner or a waiver.","count":"{count, plural, one {# term} other {# terms}}","show":"Show {count, plural, one {# acknowledged term} other {# acknowledged terms}}","hide":"Hide acknowledged terms","source":"Source","reason":"Why unsupported","alternative":"Closest supported alternative","acknowledged_by":"Acknowledged by {who} · {date}","money_badge":"Money","products":{"tts":"Text-to-speech","asr":"Speech-to-text","voice_design":"Voice design","media":"Creator Studio (image/video)","agent":"Agents","studio":"Studio","voice_clone":"Voice cloning","seat":"Seats"},"disposition":{"engine_handles":"Engine handles","manual_process":"Manual process","waived":"Waived","unclassified":"Unclassified"},"disposition_placeholder":"Choose a disposition","cadence":{"per_invoice":"Every invoice","monthly":"Monthly","quarterly":"Quarterly","on_event":"On event","once":"Once"},"cadence_placeholder":"Choose a cadence","field_disposition":"Disposition","field_engine_ref":"Engine reference","field_owner":"Owner","field_cadence":"Cadence","field_waive_reason":"Waiver reason","classify":"Classify","change":"Change","save":"Save","toast_classified":"Term classified","classify_failed":"Could not save the classification.","classified_by":"Classified by {who} · {date}","money_unclassified_count":"{count} money-bearing unclassified","other_unclassified_count":"{count} other unclassified","disposition_help":{"engine_handles":"The billing engine already enforces this term; record where (a pricing row, a guarantee, an operational setting).","manual_process":"Someone runs this by hand on a cadence; name the owner and how often.","waived":"Not enforced; record why."},"engine_ref_help":"e.g. {examples}","classify_conflict":"These terms changed while you were editing and the list was refreshed. Check this term and save again.","notes_toggle":"Acknowledged notes ({count})","acknowledged_on":"Acknowledged {date}","classified_on":"Classified {date}","notes_title":"Acknowledged notes","notes_show":"Show {count, plural, one {# note} other {# notes}}","notes_hide":"Hide notes"},"proposals":{"title":{"amendment_record_alignment":"Record alignment · lower {fields}","guarantee_lower":"{row} · lower {fields}"},"submitted":{"title":"Submitted for approval","nothing_changed":"Nothing has changed yet — it runs only once approved.","approval_waiting":"Waiting for another admin who can approve it","superseded":"{count, plural, =1 {Replaces # earlier open request} other {Replaces # earlier open requests}}","view":"View proposal","dismiss":"Dismiss"},"tab":{"title":"Proposals","description":"Requests and agent proposals that need an approver, and their history.","refresh":"Refresh","scope_filtered":"Only the customers in your access scope are listed.","empty":"No proposals match these filters.","retry":"Retry","page_label":"Page {page}","prev":"Previous","next":"Next"},"filter":{"status":"Status","status_kept":"At least one status stays selected","kind":"Kind","customer":"Customer","any":"Any","search":"Search","no_match":"No match","mine":"Only mine","can_approve":"I can approve","reset":"Reset filters"},"column":{"proposed_at":"Proposed","customer":"Customer","proposal":"Proposal","status":"Status"},"proposer":{"you":"You","agent_run":"Agent run {id}","agent_run_requested_by":"<run>Agent run {id}</run> · requested by <actor></actor>"},"actor":{"system":"System","system_hook":"System · trigger reached · {hook}"},"rationale":{"operator_request":"Operator request — runs only once a holder of {capability} approves"},"blocked_reason":"Its approver no longer holds {capability}; a current holder must re-approve.","error_details":"Details","unavailable":"Proposals aren't available yet.","detail":{"title":"Proposal","loading":"Loading the proposal…","load_failed":"Couldn't load this proposal.","close":"Close","section_summary":"Summary","section_preview":"Preview","section_timeline":"Timeline","section_result":"Result","section_error":"Error","customer":"Customer","contract":"Contract","invoice":"Invoice","proposer":"Proposed by","proposed_at":"Proposed","source":"Source · when it runs","approve_capability":"Approval requires","approved_capabilities":"Approver's capabilities","proposal_id":"Proposal ID"},"timeline":{"proposed":"Proposed","approved":"Approved","scheduled":"Scheduled · {hook}","rejected":"Rejected","fired":"Trigger reached · {hook}","executed":"Executed","failed":"Failed","blocked":"Blocked — needs re-approval","superseded":"Superseded","superseded_by":"Replaced by proposal {id}"},"action":{"approve":"Approve","reapprove":"Re-approve","reject":"Reject","withdraw":"Withdraw","preview_unavailable":"Can't approve without a preview: {reason}"},"decision":{"note_label":"Note","note_min":"At least {count} characters.","denied_title":"Missing permission","back":"Back","step_title":"{action} · {title}"},"approve":{"title":"Approve proposal","title_reapprove":"Re-approve proposal","stale_title":"The preview changed","stale_body":"Nothing ran. Check the updated preview, type the kind again and confirm.","confirm_updated":"Confirm the updated preview","updated_preview":"Updated preview (as of now)","refused_title":"Not approved"},"reject":{"title":"Reject proposal","title_withdraw":"Withdraw proposal","lead":"Nothing runs; the proposal is closed.","success":"Proposal rejected.","withdrawn":"Proposal withdrawn.","not_proposer_title":"Not your proposal","refused_title":"Not rejected"},"tile":{"title":"Proposals awaiting approval","open":"Review","blocked":"{count, plural, one {# needs re-approval} other {# need re-approval}}"},"workspace":{"title":"Proposals","view_all":"View all","empty":"No open proposals.","load_failed":"Couldn't load the proposals.","more":"{count, plural, one {# more open proposal} other {# more open proposals}}","more_unknown":"More open proposals"},"record":{"awaiting":"Awaiting approval","view":"{count, plural, one {View proposal} other {View # proposals}}"},"block":{"mark_paid":"Mark paid","invoice":"Invoice","void":"Void","revenue_share":"Revenue share","payment_settings":"Payment settings","reschedule_start":"Start date","waive_minimum":"Minimum commitment","guarantee":"Guarantee","model_coverage":"Model rate"},"field":{"invoice_id":"Invoice ID","invoice_number":"Invoice number","invoice_status":"Invoice status","status":"Status","total_amount":"Total","payment_method":"Payment method","billing_period_start":"Billing period start","billing_period_end":"Billing period end","mercury_invoice_id":"Mercury invoice ID","mercury_status":"Mercury status","mercury_linked":"Linked to Mercury","mercury_live":"Live on Mercury","quickbooks_invoice_id":"QuickBooks invoice ID","quickbooks_doc_number":"QuickBooks doc number","is_draft":"Draft","requires_settled_without_delivery":"Needs settled-without-delivery","void":"Void","approval_pending":"Approval pending","will_grant_credit":"Grants credit","will_grant_credit_amount":"Credit granted","credit_already_granted":"Credit already granted","credit_grant_skip_reason":"Credit skipped because","will_accrue_revenue_share":"Accrues revenue share","revenue_share_amount":"Revenue share","revenue_share_units":"Revenue share units","revenue_share_already_accrued":"Revenue share already accrued","will_check_one_time_fulfillment":"Checks one-time fulfillment","undo_available_after":"Can be undone","undo_blocked_reason":"Undo blocked because","paid_at":"Paid at","out_of_band":"Paid outside Mercury","settled_without_delivery":"Settled without delivery","confirm_invoice_number":"Typed invoice number","void_allowed":"Void allowed","void_blocked_reason":"Void blocked because","customer_holds_copy":"Customer holds a copy","requires_confirm_invoice_number":"Needs the typed invoice number","requires_allow_paid":"Voids received money","paid_amount_received":"Received","settled_by":"Settled by","voids_quickbooks_remotely":"Voids in QuickBooks","manual_usage_count":"Manual usage records","prepaid_offset_restore_amount":"Prepaid offset restored","rollover_reversal":"Reverses a rollover","granted_credit_amount":"Credit granted","revocable_credit_amount":"Credit revocable","already_expired_amount":"Credit already expired","credit_already_revoked":"Credit already revoked","credits_granted_at":"Credit granted at","revoke_blocked_reason":"Revoke blocked because","carried_from_invoice_ids":"Carried from invoices","reissue_available":"Can be reissued","ledger_advance_blockers":"Ledger blockers","revoke_credit":"Revoke credit","allow_paid":"Allow paid","reason":"Reason","detail":"Detail","reference_id":"Reference","at":"At","entry_ids":"Entries","entries":"Entries","invoice_cc_emails":"Invoice CC emails","changed_fields":"Changed fields","contract_id":"Contract ID","mode":"Mode","allowed":"Allowed","refusal_code":"Refusal","refusal_message":"Refusal detail","remedy":"Remedy","effective_date":"Effective date","delayed_start_date":"Delayed start","service_start_date":"Service start","paid_billing_start_date":"Paid billing start","billing_anchor_day":"Billing anchor day","end_date":"End date","current_term_start":"Term start","current_term_end":"Term end","early_access_start_at":"Early access from","resulting_status":"Resulting status","goes_live_now":"Goes live now","first_invoice":"First invoice","next_cycle_invoice":"Next cycle invoice","invoice_type":"Invoice type","period_start":"Period start","period_end":"Period end","credit_amount":"Credit","due_date":"Due date","prepaid_offset_applied":"Prepaid offset applied","usage_from":"Usage from","overage_window_start":"Overage window start","overage_window_end":"Overage window end","blocking_invoices":"Blocking invoices","elapsed_cycles_unbilled":"Unbilled elapsed cycles","wallet_balance":"Wallet balance","sweep_runs_now":"Sweep runs now","sweep_amount":"Sweep amount","prepaid_offset_balance":"Prepaid offset balance","replace_candidate_id":"Replaces contract","replace_runs_now":"Replacement runs now","amendment_changes":"Amendment changes","field":"Field","previous_value":"Before","proposed_value":"After","resumes_activation":"Resumes activation","total_cycle_invoices_in_term":"Cycle invoices in term","warnings":"Warnings","governing_msa_kept":"Governing MSA kept","governing_msa_id":"Governing MSA","reason_code":"Reason code","signed_document_key":"Signed document","new_effective_date":"New effective date","keep_term_end":"Keep the term end","side_letter_document_key":"Side letter","via":"Via","pricing_model":"Pricing model","terminate_at":"Terminates at","assessment_waiver_reason":"Assessment waiver reason","evaluation_opt_out":"Evaluation opt-out","commitment_release_until":"Commitment release until","commitment_release_reason":"Commitment release reason","commitment_release_changes":"Changes the commitment release","commitment_released_at":"Commitment released at","termination_settings_changed_fields":"Changed termination fields","commitment_release_fields":"Commitment release fields","terminate":"Termination","termination_settings":"Termination terms","guarantee":"Guarantee","guarantee_id":"Guarantee ID","guarantee_kind":"Guarantee kind","replaces":"Replaces an existing guarantee","sets_concurrency_source_paper":"Sets concurrency from the paper","pins_zero_data_retention":"Pins zero data retention","conflict_code":"Conflict","id":"ID","kind":"Kind","value":"Value","unit":"Unit","starts_at":"Starts","ends_at":"Ends","fee_amount":"Fee","fee_period":"Fee period","fee_tier_index":"Fee tier","enforcement":"Enforcement","source_clause":"Source clause","expired_at":"Expired at","revenue_share_settled":"Revenue share entries settled","notice_acknowledged":"Notice acknowledged","mutual_consent_confirmed":"Mutual consent confirmed","credit_policy_override":"Credit policy override","credit_policy_override_reason":"Override reason","successor_contract_id":"Successor contract","suggested":"What the record suggests","stance":"Reading","condition_summary":"Summary","cited_quote":"Quote it rests on","read_at":"Read on"},"value":{"mode":{"amend_start":"Paper amendment","early_access":"Early access"},"via":{"terminate":"Termination","termination_settings":"Termination terms"},"decision":{"contract_rate":"This contract's rate","platform_price":"Fish Audio's published price","explicit":"A specific price per million","discounted_list":"Fish Audio's published price less this contract's discount"},"kind":{"clause":"A clause of the contract","operator":"Our own decision","rate_lock":"Price lock","published_rates":"Other models at published prices","discount":"Discount off the published price"},"source":{"human":"A person","auto":"Automatic"},"stance":{"explicit_published":"States the published price","explicit_discount":"States the published price less a discount","explicit_price":"States one price for any other model","conditional":"Depends on a condition","silent":"Says nothing about other models"}}},"pricing_tier_errors":{"pricing_tier_product_invalid":"A pricing tier names product {detail}; contract tiers price TTS or ASR only.","pricing_tier_bound_nan":"A pricing tier upper bound {detail} is not a number.","assessment_graduated_tiers_forbidden":"Assessment contracts take flat rates only; tier {detail} has an upper bound."},"metering":{"tabs":{"overview":"Overview","usage":"Usage","rates":"Rates & coverage","sla":"SLA"},"catalog":{"unavailable":"Meter catalog unavailable: {error}","unavailable_no_reason":"Meter catalog unavailable","backend_not_verified":"Backend {backend} not verified. {reason}"},"family":{"agent":"Agents","video":"Video","image":"Images","tts":"Text to speech","asr":"Speech to text","realtime_asr":"Realtime speech to text","voice_design":"Voice design"},"side":{"api":"API","creator":"Creator","agent_platform":"Agent platform"},"coverage_status":{"covered":"Contract rates","excluded_pending_amendment":"Not in scope (amendment required)","not_covered":"Not covered"},"display_status":{"billed_to_agreement":"Billed on agreement","free_period":"Contract rates · free period","excluded_pending_amendment":"Not in scope (amendment required)","suspended":"Suspended","not_covered":"Not covered"},"coverage_message":{"agents_not_in_scope":"Not in scope (amendment required)"},"base_unit":{"utf8_byte":"{count} UTF-8 bytes","audio_second":"{count} audio seconds","request":"{count, plural, one {# request} other {# requests}}","agent_second":"{count} agent seconds","transfer_second":"{count} transfer seconds","rental_day":"{count, plural, one {# rental day} other {# rental days}}","llm_token":"{count} LLM tokens","output":"{count, plural, one {# output} other {# outputs}}","video_ms":"{count} ms of video","pixel":"{count} pixels"},"price_unit":{"million_utf8_bytes":"{price} / 1M UTF-8 bytes","million_audio_seconds":"{price} / 1M audio seconds","audio_hour":"{price} / audio hour","request":"{price} / request","agent_minute":"{price} / min","transfer_minute":"{price} / transfer min","rental_day":"{price} / rental day","million_llm_tokens":"{price} / 1M LLM tokens","output":"{price} / output","video_second":"{price} / second of video","megapixel":"{price} / megapixel"},"price_unit_quantity":{"million_utf8_bytes":"{count}M UTF-8 bytes","million_audio_seconds":"{count}M audio seconds","audio_hour":"{count} audio hours","request":"{count, plural, one {# request} other {# requests}}","agent_minute":"{count} min","transfer_minute":"{count} transfer min","rental_day":"{count, plural, one {# rental day} other {# rental days}}","million_llm_tokens":"{count}M LLM tokens","output":"{count, plural, one {# output} other {# outputs}}","video_second":"{count} seconds of video","megapixel":"{count} megapixels"},"term_source":{"document":{"msa":"MSA","order_form":"Order form","order_form_amendment":"Order form amendment","incorporated_terms":"Incorporated terms","baa":"BAA","dpa":"DPA","signed_writing":"Signed writing","internal_decision":"Internal decision"},"precedence":{"sole_source":"Sole source","express_supersede":"Expressly supersedes","governing_controls":"Governing document controls","amendment_controls":"Amendment controls"},"fields":{"document":"Document","document_ref":"Reference","section":"Section","supersedes":"Supersedes","precedence_basis":"Precedence","decision_ref":"Decision","quote":"Quote"},"this_amendment":"This amendment"},"evidence":{"basis":{"paper_clause":"Paper clause","signed_writing":"Signed writing","unilateral_concession":"Concession","internal_decision":"Internal decision"},"on_file":"On file","upload":"Upload signed document","upload_file":"Upload file","upload_error":"The file could not be uploaded"},"advisory":{"zdr_not_enforced_creator_media":"ZDR is not enforced on Creator media/Studio surfaces yet","incorporated_document_divergent":"Incorporated document captures differ","incorporated_terms_same_day_revision":"Incorporated terms changed on the effective date","provisional_readings_open":"Provisional readings open","zdr_guaranteed_not_enabled":"ZDR guaranteed by paper but not enabled at runtime"},"provisional":{"title":"Provisional readings","badge":"Provisional · {id}","columns":{"id":"ID","field":"Field","reading":"Reading","alternative":"Alternative","decision_needed_from":"Needed from","status":"Status"},"status":{"provisional":"Provisional","confirmed":"Confirmed","replaced":"Replaced"},"resolve":"Resolve…","resolution":"Resolution","amendment":"Amendment","note":"Note","resolve_title":"Resolve {id}","submit_resolve":"Resolve","request_resolve":"Request resolution","resolve_error":"The reading could not be resolved"},"incorporated":{"title":"Incorporated documents","kind":"Kind","in_force_on":"In force on","starts_at":"Starts at","version":"Version","captures":"Captures","capture_kind":{"web_repo_source":"Source","live_html":"Live page","signed_pdf":"Signed PDF"},"live_matches_source":"Live page matches source","superseded_by":"Superseded by","capture":"Capture","upload":"Upload legal document…","supersede":"Supersede","document_title":"Title","file":"File","ends_at":"Ends at","signed_by_customer":"Signed by customer","signed_by_fish":"Signed by Fish Audio","url":"Web address","note":"Note"},"termination_terms":{"title":"Termination terms","not_classified":"Not classified","permitted":"Permitted","commitment":"Remaining commitment","true_up":"True-up","advance_unserved":"Unserved advance","prepaid_refund":"Prepaid refund","credits":"Credits","final_invoice_due":"Final invoice due","true_up_due":"True-up due","access_disabled":"Access disabled","add_row":"Add basis","precondition":"Precondition","precondition_value":{"none":"None","sla_chronic_streak":"SLA chronic availability streak"},"remove_row":"Remove basis"},"termination":{"basis":{"term_expiry":"Term expiry","mutual_consent":"Mutual written consent","fish_for_customer_breach":"Fish Audio: customer breach","customer_for_fish_breach":"Customer: Fish Audio breach","customer_sla_right":"Customer: SLA right","fish_ip_9_1d":"Fish Audio: IP claim remedy","customer_convenience":"Customer convenience","evaluation_opt_out":"Evaluation opt-out","replacement":"Replacement"},"consequence":{"not_applicable":"Not applicable","released":"Released","final_cycle_minimum_only":"Final cycle minimum only","accelerated_remaining":"Accelerated","waived":"Waived","assessed_full_window":"Assessed for the full window","retained":"Retained","refund_prorated_by_day":"Refund proposal after settlement · senior approval","none":"None","remaining_term_prepaid":"Remaining term prepaid fees","contract_rates":"Contract rates","days":"{days} days"},"basis_label":"Termination basis","clause":"Clause","closes":"Closes","evidence_label":"Evidence","evidence_required":"Evidence required","line":{"minimum_commitment":"Minimum commitment","overage":"Usage above allowance","additional_services":"Additional services","prior_period_usage":"Prior-period usage","concurrency_addon":"Concurrency add-on","activation_reconcile":"Activation reconciliation","allowance_refund":"Unused allowance","accelerated_remaining_commitment":"Remaining commitment (accelerated)","prepaid_offset":"Prepaid credit","sla_credit":"Service credit","tax":"Tax","refund_proposal":"Refund proposal"},"preview_failed":"Preview unavailable","tail_total":"Final invoice total"},"suspension":{"active":"Service suspended since {date} · {basis} · {ref}","suspend_ellipsis":"Suspend service…","suspend":"Suspend service","lift":"Lift","basis":{"overdue_over_30_days":"Invoice over 30 days overdue","terms_breach_notice_expired":"Breach notice expired"},"reference":"Reference","notice_on_file":"Notice on file","note":"Note","title":"Service suspension","not_suspended":"Service is not suspended","request":"Request suspension","basis_label":"Basis","breach_notice":"Breach notice","no_overdue_invoice":"No overdue invoice on this contract","lift_title":"Lift the service suspension","toast_lifted":"Service suspension lifted","lift_error":"The suspension could not be lifted","request_error":"The suspension request could not be filed"},"trip":{"requested":"Hard stop requested at {time} · balance {balance} · cap {cap}","approve":"Approve hard stop","dismiss":"Dismiss"},"close":{"title":"Close settlement","state":"State","closed_at":"Closed at","due_by":"Due by","lagging":"Waiting for usage from","invoices":"Invoices","trueup_invoice":"True-up invoice","refund":"Refund","approve":"Approve","reject":"Reject","record_payout":"Record payout","amount":"Amount","reference":"Reference","state_value":{"awaiting_meter_close":"Awaiting meter close","settled":"Settled"},"approved":"Approved","load_failed":"Close settlement could not be loaded","payout_fact":"Paid {amount} · {reference} · {date}","refund_status":{"proposed":"Proposed","approved":"Approved","rejected":"Rejected","payout_recorded":"Payout recorded"},"refund_status_label":"Refund status","supplement_until":"Supplement window until"},"restore":{"title":"Legacy debit restores","free_period":"Free-period restore {start} – {end}","backfill":"Backfill {from} – {to}: {count} events · restored {refund} · debited {debit}","trigger":"Trigger","window":"Window","events":"Events","restored":"Restored","debited":"Debited","package_rows":"Package rows","retry":"Retry","excluded":"Excluded: {reason} ({count})","runs":"Runs","status":"Status","status_value":{"running":"Running","completed":"Completed","failed":"Failed"},"chunks":"{done} / {total} chunks","executed":"Executed","started":"Started","error":"Error","evidence":"Evidence","none":"No legacy debit restores","runs_error":"Restore runs could not be loaded","retry_error":"The run could not be retried","toast_retried":"Restore run retried","package_credits":"Package credits {count}","trigger_value":{"activation":"Activation","coverage_change_apply":"Coverage change","rollback_window":"Rollback window"},"exclusion_reason":{"outside_window":"Outside the window","llm_not_restored":"LLM not restored","trial_only":"Trial usage","admin_rerun":"Re-run by an admin","admin_refunded":"Refunded by an admin","already_contract_billed":"Already billed to the agreement","sku_unresolvable":"SKU not resolvable","quantity_unknown":"Quantity unknown","route_not_agreement":"Not routed to the agreement"},"rollback":{"open":"Rollback-window restore…","title":"Rollback-window restore","window_start":"Window start","window_end":"Window end","reason":"Reason","preview":"Preview","preview_id":"Preview ID","previewed":"Previewed by {user} · expires {time}","apply_title":"Apply · second approver","apply":"Apply restore","toast_applied":"Restore applied","preview_error":"The restore could not be previewed","apply_error":"The restore could not be applied"},"restored_total":"Restored total {amount}","debited_total":"Debited total {amount}"},"usage":{"window":"Window","free_period":"Free period · {start} – {end}","commitment_period":"Commitment · {start} – {end}","calendar_quarter":"{year} Q{quarter}","counts_toward_minimum":"Counts toward minimum","additional_services":"Additional services","columns":{"side":"Side","family":"Family","sku":"SKU","quantity":"Quantity","rate":"Rate","amount":"Amount","debited":"Debited","timing":"Timing","basis":"Basis","source":"Source"},"timing":{"current":"Current","late":"Late","cross_year_late":"Late (prior contract year)","reconcile":"Reconciliation"},"empty":"No usage in this window","settlements":"Settlements","shadow_value":"Shadow value {amount}","exposure":"Exposure","meter_closed_through":"Meter closed through {time}","hold":{"unpriced_usage_event":"Usage without a rate","rate_line_paper_alias_unconfirmed":"Paper-alias match not confirmed","rate_snapshot_conflict":"Rate snapshot conflict","covered_tts_unclassified_backend":"New TTS model not classified","model_rate_undecided":"Waiting for a rate decision on a model outside the contract"},"window_cycle":"Cycle · {start} – {end}","window_custom":"Custom · {start} – {end}","custom_range":"Custom range","show":"Show","estimate":"Estimate · final on invoice","invoiced":"Invoiced","load_error":"Usage could not be loaded","coverage_title":"Coverage","no_charge_through":"No charge through {date}","lines_title":"Usage lines","events":"Events","events_title":"Usage events","events_error":"Usage events could not be loaded","no_events":"No events behind this line","load_more":"Load more","event_columns":{"occurred":"Occurred","kind":"Kind","contract_amount":"Agreement amount","billing_mode":"Billing","invoice":"Invoice"},"event_kind":{"usage":"Usage","reversal":"Reversal"},"billing_mode":{"contract":"Agreement","free_window":"Free period","wallet":"Wallet"},"detail":{"task":"Task","model":"Model","rate_selector":"Rate selector","quantity_source":"Quantity source","duration_ms":"Duration (ms)","size":"Size","channel":"Channel","session":"Session","started":"Started","charge":"Charge","direction":"Direction","llm_model":"LLM model","reverses":"Reverses","channel_value":{"web":"Web","mcp":"MCP","phone":"Phone","phone_outbound":"Phone (outbound)","api_key":"API","dashboard":"Dashboard","public":"Public link","preview":"Preview"},"direction_value":{"inbound":"Inbound","outbound":"Outbound","web":"Web"},"quantity_source_value":{"output_duration":"Output duration","quoted_cap":"Capped at quoted duration","quoted_fallback":"Duration from quote","output_count":"Per output","output_pixels":"Output pixels","quoted_pixels":"Pixels from quote","unknown":"Not determined","other":"Other"}},"source":{"stats":"Stats","usage_event":"Usage events","manual":"Manual entry","pvc_surcharge":"PVC surcharge"},"pricing_basis":{"contract_bands":"Contract bands","published_snapshot":"Published rates","tier_chain":"Pricing tiers","runtime_money":"Runtime charge","manual_amount":"Manual amount"},"hold_events":"{count, plural, one {# event} other {# events}}","invoice_draft":"Draft invoice","no_invoice":"No invoice","settlement_kind":{"cycle":"Cycle","final":"Final","supplement":"Supplement"},"settlement_status":{"pending":"Pending","live":"Live","void":"Void"},"counted":"Counted","counted_of":"Counted {amount} of {total}","remaining":"Remaining {amount}","projected_trueup":"Projected true-up (linear) {amount}","allowance":"Allowance","allowance_breakdown":"{total} = {included} minimum + {rollover} rollover","late_available":"Late usage allowance {amount}","rollover_expires":"Rollover expires {date}","eligible":"Eligible","eligible_of":"Eligible {amount} of {total}","overage_projected":"Projected overage {amount}","wallet":"Wallet {amount}","reference":"Reference {amount}","cap":"Cap {amount}","no_cap":"No cap","hard_stop_since":"Hard stop since {time}","trip_pending":"Hard stop request pending","meter_close_agent":"Agents · meter closed through {time}","meter_close_media":"Media · meter closed through {time}"},"coverage":{"family":"Family","status":"Status","sides":"Sides","from":"From","to":"To","evidence":"Evidence","customer_message":"Customer message","free_window_alert":"Free-window alert (agent seconds)","suspend":"Suspend…","release":"Release","preview":"Preview","propose_change":"Propose change","cycles":"Cycles","invoice_now":"Invoice now","invoice_previewed":"Invoice previewed","delta_invoice":"Δ invoice","delta_wallet":"Δ wallet","delta_eligible":"Δ eligible","delta_trueup":"Δ true-up","unpriced_models":"Unpriced models","add_period":"Add period","amendment":"Amendment {id}","effective_date":"Effective date","reason":"Reason","suspended_since":"Suspended since {date} · {reason}","title":"Coverage","total":"Total","unpriced_count":"{count, plural, one {# unpriced model} other {# unpriced models}}","unpriced_show_all":"Show all {count}","unpriced_show_fewer":"Show fewer","free_window_alert_in":{"agent_minute":"Free-window alert (agent minutes)"}},"rates":{"paper_label":"Paper label","family":"Family","basis":"Basis","models":"Models","paper_names":"Paper names","price_unit":"Price unit","price":"Price","bands":"Bands","up_to":"Up to","scope":"Scope","rounding":"Rounding","counts_toward_minimum":"Counts toward minimum","free_window_applies":"Free window applies","includes_llm":"Includes LLM","ceiling":"Ceiling","locked_through":"Locked through","from":"From","to":"To","clause":"Clause","mapping":"Mapping","cost":"Cost","below_cost":"Below cost","approval_pending":"Approval pending","all_models_of":"All models of {model}","other_models_in_family":"Other models in family","no_catalog_model":"No catalog model","not_offered":"Not offered","hidden":"hidden","retired":"retired","basis_value":{"contract":"Contract","published":"Published","pricing_tiers":"Pricing tiers"},"band_scope":{"period":"Per period","term_cumulative":"Term cumulative"},"rounding_value":{"aggregate_exact":"Aggregate exact","ceil_unit_per_event":"Round up per event"},"lineage":{"exact":"Exact model","nearest_successor":"Nearest successor","version_family":"Version family"},"price_rule":{"paper_price":"Paper price","lower_of_paper_and_published":"Lower of paper and published"},"add_band":"Add band","add_line":"Add line","approved":"Approved by {by} · {date}","empty":"No rate lines","lineage_rule":"Lineage","paper_model":"Paper model","price_rule_label":"Price rule","title":"Rate lines","all_variants_of":"All {model} variants","sku_group":{"llm":"All LLM models","phone_surcharge":"All phone surcharges"}},"covered_tts":{"title":"Covered TTS models","placeholder":"Placeholder · pending GA","ga_at":"GA at","covered_from":"Covered from","successor_of":"Successor of","designation":"Designation","reviewed_backends":"Reviewed backends","new_backend":"New TTS model {backend}","bind_ga":"Bind GA model…","designate_successor":"Designate successor…","mark_reviewed":"Mark reviewed","active":"Active","add_model":"Add model…","backend":"Backend","empty":"No covered TTS models","paper_name":"Paper name","no_tier":"No API pricing tier for {backend}"},"ladder":{"title":"Commitment levels","level":"L{index}","monthly_minimum":"Monthly minimum","included_credits":"Included credits","covered_tts_rate":"Covered TTS rate","annual_equivalent":"Annual equivalent","current_since":"Current · since {date}","reached":"Reached {date}","aggregate_minimum":"Aggregate minimum {amount}","record_schedule":"Record schedule from paper…","move_up":"Move up…","above_schedule":"Above schedule…","target_level":"Target level","party":{"customer":"Customer","fish":"Fish Audio"},"signer":"Signer","signer_email":"Signer email","signer_title":"Title","signed_on":"Signed on","signed_document":"Signed document","document_kind":"Document kind","doc_kind":{"docusign_completed":"DocuSign completed","signed_pdf":"Signed PDF"},"same_document_both":"Same signed document for both parties","signer_not_on_file":"Not an authorized representative on file","override_signer_check":"Override signer check","level_summary":"From {date} · minimum {minimum} · covered TTS {rate} · aggregate {aggregate}","move_now":"Move now","backdated":"Backdated","level_column":"Level","source":"Source","state":"State","source_value":{"paper_schedule":"Paper schedule","above_ladder_amendment":"Signed amendment"},"history":"Level history","history_kind":{"initial":"Initial level","level_up":"Level up","above_ladder":"Above schedule"},"scheduled":"From {date}","add_level":"Add level","remove_level":"Remove level"},"review":{"title":"Quarterly review","window":"Window","eligible_usage":"Eligible usage","by_family":"By family","monthly_average":"Monthly average","current":"Current","recommended":"Recommended","no_higher_level":"No higher level","due":"Due {date}","overdue":"Overdue","generated_late":"Generated late","keep":"Keep current level","move_up":"Move up…","confirmation_page":"Confirmation page","refresh":"Refresh","status":{"open":"Open","kept":"Kept","level_up_pending_evidence":"Level-up pending evidence","level_up_applied":"Level-up applied","closed_term_ended":"Closed (term ended)"},"note":"Note","history":"Earlier reviews ({count})"},"increase":{"record":"Record commitment increase…","new_commitment":"New commitment","signed_on":"Signed on","agent_rate":"Lower agent rate for the added commitment","effective_cycle_start":"Effective cycle start","projected_trueup":"Projected true-up now","breaker_reference_after":"Breaker reference after","window":"Commitment window","previous_minimum":"Current commitment","counted_to_date":"Counted to date"},"breaker":{"mode":{"hard":"Hard stop","alert_only":"Alert only"},"reference":{"legacy":"Reference: engine default","remaining_commitment":"Reference: remaining commitment"},"alert_levels":"Alerts at 50 / 80 / 100% of cap","sla_backed":"SLA-backed · hard stop needs senior approval","mode_label":"Breaker","reference_label":"Breaker reference","reference_projected":"Projected · set at activation"},"billing_terms":{"billing_clock":"Billing clock","clock":{"utc_legacy":"UTC boundaries","local":"Local midnight"},"billing_timezone":"Billing timezone","not_stated":"Not stated on paper","effective_zone":"Effective: {zone}","order_term_starts":"Order term starts","order_term_basis":{"effective_date":"Order form effective date","paid_billing_start":"Paid billing start"},"final_settlement_due":"Final settlement due","payment_term":"Payment term","true_up_due":"True-up due","contract_year_start":"Contract year start","order_form_valid_through":"Order form valid through","days":"{days} days","title":"Billing terms","commitment_minimum":"Commitment minimum","line_label":"Invoice line label","default_zone":"Not stated on paper: Pacific time (Los Angeles), follows daylight saving"},"sla":{"summary":"Target {target}% monthly · credits {tiers} of {base} · cap {cap}% · request within {days} days · scope {scope}","termination_right":"Termination right below {pct}% for {months} months · notice {days} days","edit_terms":"Edit terms","record_availability":"Record availability","correct_record":"Correct record","correction_reason":"Correction reason","month":"Month","availability_pct":"Availability %","unavailable_min":"Unavailable min","breaker_min":"Breaker min","excluded_min":"Excluded min","notices":"Notices","source":"Source","revision":"Revision","evidence":"Evidence","record_request":"Record customer request","affected_month":"Affected month","requested_at":"Requested at","request_document":"Request document","tier_pct":"Tier %","base":"Base","amount":"Amount","in_window":"In window","applied":"Applied","remaining":"Remaining","expires":"Expires","approve":"Approve","withdraw":"Withdraw","recompute":"Recompute","source_value":{"operator_entry":"Operator entry","monitoring_import":"Monitoring import"},"notice":{"notified_at":"Notified at","window_start":"Window start","window_end":"Window end"},"exclusion":{"a_scheduled_maintenance":"Scheduled maintenance","b_emergency_maintenance":"Emergency maintenance","c_force_majeure":"Force majeure","d_customer_or_third_party":"Customer or third-party systems","e_excess_use_or_breach":"Excess use or breach","f_beta_features":"Beta or preview features","g_permitted_suspension":"Permitted suspension"},"base_kind":{"monthly_minimum_commitment":"that month's minimum commitment","fees_invoiced_for_month":"fees invoiced for the month"},"scope":{"platform_api":"Platform API","agents_and_api":"Agents and API"},"status":{"awaiting_base":"Awaiting invoice","pending_approval":"Pending approval","approved":"Approved","blocked_past_due":"Blocked (past due)","partially_applied":"Partially applied","applied":"Applied","expired":"Expired","withdrawn":"Withdrawn","rejected_out_of_window":"Rejected (outside request window)","rejected_no_shortfall":"Rejected (no shortfall)"},"add_notice":"Add notice","availability_title":"Availability records","base_component":"{start} – {end}: fees {fees}, counted {amount}","change_terms":"Change…","chronic_until":"Customer termination right open until {date}","credits_title":"Service credits","excluded_entry":"{reason}: {minutes} minutes","load_failed":"SLA records could not be loaded","locked":"Locked by credit","no_credits":"No service credits","no_records":"No availability records","recorded":"Recorded","remove_notice":"Remove notice","request_approve":"Request approval","row_actions":"Actions for {month}","save_failed":"Not saved","status_label":"Status","terms":{"add_tier":"Add tier","below_pct":"Below %","blocked_past_due":"Blocked while undisputed invoices are past due","cap_pct":"Cap %","clause":"Clause","consecutive_months":"Consecutive months","credit_pct":"Credit %","effective_date":"Effective date","maintenance_cap_minutes":"Maintenance cap (min / month)","maintenance_notice_hours":"Maintenance notice (hours)","month_mapping":"Month to cycle mapping","month_mapping_value":{"max_overlapping_cycle":"Largest overlapping cycle","pro_rata_overlap":"Pro rata by overlap"},"notice_window_days":"Notice window (days)","remove_tier":"Remove tier","request_window_days":"Request window (days)","scope":"Scope","target_pct":"Target %","termination_right":"Termination right","tiers":"Credit tiers"}},"amendment":{"kind":{"field_change":"Field change","start_reschedule":"Start reschedule","coverage_change":"Coverage change","rate_lines_change":"Rate change","commitment_ladder_record":"Commitment schedule record","commitment_level_up":"Level up","commitment_level_above_ladder":"Above-schedule level","commitment_increase":"Commitment increase","fee_lines_change":"One-time fees"},"summary":{"rate_lines":"{added} added · {removed} removed · {repriced} repriced","ladder_record":"{count, plural, one {# level} other {# levels}}","above_ladder":"{level} · monthly minimum {amount}","increase":"New commitment {amount}","fee_lines":"{added} added · {changed} changed · {removed} removed · {rearmed} to bill again"},"create":"Create amendment","request_apply":"Request apply","effective_derived":"Effective {date}","approved_for":"Approved for {date} · {actor}","approved_for_date":"Approved for {date}","created_on":"Created {date} · {actor}","created_on_date":"Created {date}","effective_projected":"Projected {date} (the first billing cycle start after both parties have signed, if both sign before that date)","applies_on":"Applies on {date}","toast_approved_for":"Approved · applies on {date}","self_approved":"Self-approved · super-admin"},"dispute":{"record":"Record dispute","disputed":"Disputed {amount} since {date}","resolve":"Resolve","resolution":{"withdrawn":"Withdrawn","credited":"Credited","upheld":"Upheld"},"resolution_label":"Resolution","resolution_ref":"Credit reference","resolved":"{resolution} on {date}"},"toast":{"saved":"Saved","amendment_created":"Amendment created","proposal_filed":"Request filed for approval","failed":"Request failed"},"errors":{"contract_terms_invalid":"The contract terms break one or more rules","four_eyes_same_actor":"A second approver is required","permission_denied":"This action needs a capability you do not hold","evidence_required":"Signed evidence is required","term_source_supersede_missing":"An express supersede needs the clause it replaces","term_source_decision_missing":"An internal decision needs a decision reference","term_source_unknown_field":"The term source names an unknown contract field","term_source_document_unknown":"The referenced document is not on this contract","decision_ref_unknown":"The decision reference is not recognized","evidence_doc_key_required":"A signed writing needs an uploaded document","evidence_term_source_required":"A paper clause needs its term source","evidence_decision_ref_required":"An internal decision needs a decision reference","evidence_document_unknown":"The evidence document is not on this contract","evidence_file_type_unsupported":"Evidence must be a PDF, PNG, JPEG or email file","provisional_reference_unknown":"The provisional reading does not exist on this contract","provisional_id_duplicate":"Provisional reading IDs must be unique","provisional_code_invalid":"The provisional reading code is invalid","provisional_confirmation_requires_signed_writing":"Confirming this reading needs a signed writing","provisional_resolution_requires_amendment":"Replacing this reading needs an amendment on this contract","provisional_readings_append_only":"Provisional readings can only be added","provisional_reading_not_open":"This reading is already resolved","billing_timezone_invalid":"The billing timezone is not a valid time zone","billing_timezone_requires_paper_clause":"A billing timezone is set only from a paper clause","billing_timezone_on_utc_legacy":"Contracts on UTC boundaries have no billing timezone","effective_date_not_local_midnight":"Contract dates must fall on local midnight","trial_requires_subscription":"Free months apply to subscription contracts only","trial_requires_end_date":"Free months need an end date","trial_requires_order_term_basis":"Free months need the order term start","end_date_order_term_mismatch":"The end date does not match the order term","trial_not_shorter_than_term":"Free months must be shorter than the term","trial_with_auto_renew_unsupported":"Free months cannot combine with automatic renewal","trial_paid_start_frozen":"The paid start is fixed once the contract is live","contract_year_anchor_invalid":"The contract year start is invalid","cycle_clock_frozen":"The billing clock is fixed once billing starts","billing_timezone_frozen":"The billing timezone is fixed once billing starts","coverage_overlap":"Coverage entries for a family overlap","coverage_unpriced_sku":"A covered family has models without a rate","agent_coverage_requires_minutes_rate":"Agent coverage needs an agent minutes rate","coverage_rate_lines_on_inactive_family":"Rates exist for a family that is not covered","coverage_boundary_not_cycle_start":"Coverage changes start on a billing cycle start","coverage_side_unsupported":"This family is not offered on that side","coverage_alert_quantity_family":"Free-window alerts apply to agents only","coverage_requires_invoice_contract":"Coverage needs an invoice-billed contract","coverage_excluded_message_required":"An excluded family needs a customer message","coverage_zdr_hook_missing":"ZDR is not available for this family yet","coverage_kind_required":"Coverage on an active contract changes by amendment","coverage_retroactive_requires_record_alignment":"A backdated coverage change needs record alignment","coverage_preview_required":"A coverage preview is required","coverage_preview_stale":"Preview is out of date","coverage_entry_not_suspendable":"Only a covered family can be suspended","coverage_suspend_fails_closed":"Suspending this family would block the customer","rate_line_basis_family_mismatch":"This rate basis is not allowed for the family","rate_line_price_fields_on_non_contract":"Only contract rates carry a price","rate_line_family_selector_mismatch":"The models do not belong to the rate's family","rate_line_unit_mismatch":"The price unit does not fit these models","rate_line_quantum_mismatch":"The quantum does not match the price unit","rate_line_unknown_selector":"A model is not in the meter catalog","rate_line_empty_selector_requires_aliases":"A rate without models needs paper names","rate_line_selector_overlap":"Two rates select the same model","rate_line_paper_alias_ambiguous":"A paper name matches more than one rate","rate_line_bands_invalid":"Price bands are not in ascending order","rate_line_lower_of_requires_flat":"Lower-of pricing takes a single flat price","rate_line_band_scope_invalid":"Band scope does not fit this rate","rate_line_boundary_not_cycle_start":"Rate changes start on a billing cycle start","rate_line_includes_llm_invalid":"Only an agent minutes rate can include LLM","rate_line_mapping_required":"A paper model needs a catalog mapping","rate_line_above_ceiling":"Price exceeds the contract ceiling","rate_line_locked":"Rate is locked","rate_line_kind_required":"Rates on an active contract change by amendment","covered_tts_unknown_backend":"An active covered TTS model needs a catalog TTS backend and the cycle it is covered from","covered_tts_free_backend":"A free TTS model cannot be covered","covered_tts_duplicate_backend":"A TTS model is listed twice","covered_tts_placeholder_has_backend":"A placeholder model has no backend yet","covered_tts_missing_tier":"A covered TTS model has no price tier","covered_tts_tier_price_mismatch":"Covered TTS tiers do not match the level rate","covered_tts_all_tier_forbidden":"Covered TTS is priced per model, not for all models","covered_tts_graduated_forbidden":"Covered TTS takes a flat rate","covered_tts_successor_requires_designation":"A successor model needs a designation","covered_tts_kind_required":"Covered TTS on an active contract changes by amendment","minimum_assessment_corrupt":"The stored commitment assessment cannot be read","assessment_graduated_tiers_forbidden":"Assessment contracts take flat rates only","assessment_graduated_rate_line_forbidden":"Assessment contracts take flat rates only","minimum_assessment_decrease_forbidden":"A commitment minimum cannot decrease","minimum_assessment_increase_boundary":"A commitment increase starts on a billing cycle start","minimum_assessment_layer_required":"The contract has no commitment minimum to raise","commitment_ladder_not_monotonic":"Each commitment level must be higher than the last","commitment_ladder_level0_mismatch":"The first level does not match the contract minimum","commitment_ladder_requires_covered_tts_skus":"Commitment levels need covered TTS models","commitment_level_annual_mismatch":"The annual equivalent does not match the monthly minimum","level_up_evidence_incomplete":"Signed evidence from both parties is required","commitment_ladder_frozen":"Commitment levels are fixed once recorded","level_up_not_upward":"The target level is not above the current level","level_up_target_invalid":"The target level does not exist","level_up_signer_unrecognized":"The signer is not an authorized representative on file","level_history_system_only":"Level history is written by the system only","commitment_review_not_open":"This review is already decided","termination_terms_incomplete":"Termination terms are missing a required basis","termination_credit_policy_conflict":"Credit handling conflicts with the termination basis","termination_acceleration_requires_paper":"Accelerating the commitment needs a paper clause","termination_basis_not_paper_row":"This basis is not a paper termination row","termination_basis_required":"A termination basis is required","termination_evidence_required":"This termination basis needs evidence","termination_basis_not_permitted":"Termination basis is not available under the paper","termination_basis_precondition_unmet":"The condition for this termination basis is not met","termination_waiver_derived_from_basis":"The assessment waiver follows from the termination basis","termination_terms_not_editable":"Termination terms change only through an amendment once the contract is live","prepaid_offset_origin_required":"The prepaid offset needs its origin","prepaid_offset_paper_credit_requires_expiry":"A paper credit needs an expiry date","prepaid_offset_origin_mismatch":"The prepaid offset origin does not match","breaker_remaining_commitment_requires_assessment":"A remaining-commitment reference needs a commitment assessment","overdraft_trip_request_not_pending":"This hard stop request is already decided","overdraft_trip_request_stale":"This hard stop request is out of date","sla_terms_required":"An availability SLA needs its credit terms","sla_terms_on_wrong_kind":"Credit terms belong to an availability SLA only","sla_terms_target_mismatch":"The SLA target does not match the guarantee","sla_tiers_invalid":"SLA credit tiers are not in order","sla_month_mapping_base_mismatch":"The month mapping does not fit the credit base","sla_termination_right_mismatch":"The SLA termination right does not match the termination terms","availability_minutes_exceed_month":"The minutes exceed the length of the month","sla_credit_requires_evidence":"An SLA credit needs the customer's request document","availability_contract_without_sla":"This contract has no availability SLA","availability_month_not_ended":"The month has not ended","availability_record_exists":"This month already has a record","availability_locked_by_credit":"An approved credit uses this month's record","availability_record_missing":"This month has no availability record","sla_credit_duplicate":"This month already has an SLA credit","sla_credit_not_pending":"This SLA credit is not awaiting approval","sla_credit_recompute_not_higher":"Recomputing does not raise this credit","sla_credit_requires_request":"SLA credits come only from a recorded customer request","tax_id_format_invalid":"The tax ID format is invalid","tax_reverse_charge_requires_eu_vat":"Reverse charge needs an EU VAT ID","tax_treatment_conflict":"The tax treatment conflicts with the tax fields","tax_rate_required":"A tax line needs a tax rate","notice_email_invalid":"The notice email is invalid","tax_profile_endpoint_required":"Tax details change only in the tax profile","guarantee_fee_waived_requires_standard_fee":"A waived fee needs its standard fee","guarantee_scope_invalid_for_kind":"This scope does not apply to the guarantee","concurrency_block_price_unset":"The concurrency block has no price","concurrency_below_contract_floor":"Concurrency cannot go below the contract minimum","legacy_debit_restore_stale":"Restore plan is out of date","legacy_debit_restore_run_not_retryable":"Only a failed restore can be retried","legacy_debit_restore_window_invalid":"Restore window is invalid","legacy_debit_restore_contract_not_live":"A restore applies only to a live agreement","amendment_effective_date_required":"This amendment needs an effective date","amendment_params_mismatch":"The amendment details do not match its kind","level_evidence_on_wrong_kind":"Signer evidence applies to level-up amendments only","amendment_kind_required":"This change needs a typed amendment","amendment_effective_mismatch":"The effective date does not match the amendment","above_ladder_requires_signed_amendment":"A level above the schedule needs a signed amendment","agents_not_in_contract_scope":"Agents are not in your contract's service scope; contact your account manager","contract_service_suspended":"Service is suspended under the agreement","contract_prepaid_exhausted":"Agreement prepaid balance is exhausted","credit_packs_unavailable_contract_covered":"Credit packs are not available on an enterprise agreement","suspension_basis_not_met":"The suspension basis is not met","suspension_contract_not_live":"Only a live agreement can be suspended","service_already_suspended":"Service is already suspended","signal_not_acknowledgeable":"This alert clears on its own and cannot be acknowledged","invoice_dispute_status_invalid":"Only a sent or overdue invoice can be disputed","invoice_dispute_exists":"This invoice already has an open dispute","invoice_dispute_not_open":"This invoice has no open dispute","refund_amount_mismatch":"The payout amount differs from the approved refund","refund_not_proposed":"This refund is not awaiting a decision","refund_not_approved":"A payout needs an approved refund","invoice_dispute_amount_invalid":"The disputed amount must be above zero and within the invoice total","invoice_dispute_credit_ref_invalid":"The credit reference is not on this invoice","usage_window_invalid":"The usage window is invalid","usage_invoice_held":"Usage for this period cannot be priced yet","stats_family_marker_missing":"A product the team uses has no rate on the contract","incorporated_terms_url_unsupported":"This terms URL cannot be captured","incorporated_document_stage_unknown":"The staged legal document was not found","engine_terms_invalid":"The template's engine terms are invalid","incorporated_document_missing":"An incorporated terms URL has no captured document","incorporated_document_immutable":"An incorporated document cannot change once recorded","incorporated_terms_capture_failed":"The terms page could not be captured","incorporated_document_meta_invalid":"The legal document details are invalid","contract_concurrently_modified":"The contract changed while you were editing; reload it and try again","stored_field_invalid":"Fields no longer valid in the saved contract: {fields}","contract_type_immutable":"The contract type cannot change; create a new contract instead","zdr_not_enforced_creator_media":"ZDR is not enforced on Creator media/Studio surfaces yet","zdr_guaranteed_not_enabled":"ZDR guaranteed by paper but not enabled at runtime","incorporated_document_divergent":"Incorporated document captures differ","incorporated_terms_same_day_revision":"Incorporated terms changed on the effective date","provisional_readings_open":"Provisional readings open","pricing_tier_product_invalid":"Pricing tiers price TTS or ASR only","pricing_tier_bound_nan":"A pricing tier upper bound is not a number","term_source_reference_missing":"The clause needs its reference","term_source_section_missing":"The clause needs its section","rate_line_paper_label_missing":"The rate needs its name in the contract","rate_line_price_missing":"The rate needs a price unit and a price in every band","team_setting_unknown":"No such team setting","team_setting_auto_managed":"The team sync applies this setting itself","team_setting_already_applied":"The team already runs on what the paper requires","team_setting_not_applicable":"The paper does not ask for this setting on a live contract","team_setting_prerequisite_pending":"A prerequisite setting is not applied yet","team_move_in_progress":"A team move is in progress; retry once it completes"},"guarantees":{"fee_period":{"month":"per month","year":"per year","one_time":"one-time"},"scope":"Scope","scope_value":{"api_streaming":"API streaming","all_request_categories":"All request categories"},"standard_fee":"Standard fee {amount} {period}","waived_term":"Waived for the Order Term","waived_until":"Waived until {date}","zdr_not_enabled":"ZDR guaranteed by paper but not enabled at runtime"},"invoice":{"system_entry":"System"},"prepaid":{"expires":"Expires","expires_on":"Expires {date}","origin":"Origin","origin_value":{"customer_paid":"Customer paid","paper_credit":"Paper credit"}},"actions":{"change":"Change…","confirm":"Confirm","remove":"Remove"},"decision_catalog":{"loading":"Loading decisions…","unavailable":"Decision list unavailable","retry":"Retry","scope":{"ruling":"Rulings","research":"Research","coverage_matrix":"Coverage matrix"}},"activation":{"digest":"Plan digest {digest}"},"action_items":{"note":"Note","acknowledge_title":"Acknowledge alert","acknowledged":"Alert acknowledged","trip_dismiss_title":"Dismiss hard stop request","trip_approved":"Hard stop approved","trip_dismissed":"Hard stop request dismissed","restore_retry_title":"Retry legacy debit restore","restore_retried":"Restore retried","facts":{"sku":"SKU {value}","balance":"Balance {value}","cap":"Cap {value}","level":"{value}% of cap","quantity":"Quantity {value}","session_id":"Session {value}","row_id":"Row {value}","number_id":"Number {value}","request_id":"Request {value}","run_id":"Run {value}","cases":"Cases {value}","reason":"Reason {value}"}},"refusal":{"field_refused":"Refused field: {field}"},"team_settings":{"title":"Team settings from the paper","description":"What the agreement requires on the customer's team, against what the team runs on.","setting":{"zero_retention_flag":"Zero data retention on the team","agent_retention_pin":"Agent conversation retention cap","api_concurrency":"API concurrency","quality_guard_flag":"Quality guard on the team"},"status":{"applied":"Applied","pending":"Pending","mismatch":"Mismatch","not_applicable":"Not applicable","applies_after_activation":"Pending · after activation"},"mode":{"auto":"Set by the team sync","manual":"Applied by hand"},"expected":"Paper","actual":"Team","value":{"on":"On","off":"Off","none":"—","hours":"{count} h"},"applied_marker":"Applied {date} · {actor}","prerequisite":"Requires {setting} applied","after_activation":"Applies once the contract is live","apply":"Apply","apply_title":"Apply {setting}","apply_summary":"Paper {expected} · Team {actual}","note_bounds":"8–2000 characters","apply_failed":"The setting was not applied","applied_toast":"{setting} applied"},"model_coverage":{"title":"Models outside this contract's catalog","description":"The contract's rate covers the models it went live with. Any other model waits for a rate decision.","question":"{model} is in use — which rate applies?","fact":{"first_used":"First used","cycle":"Billing cycle {start} – {end}","usage":"Usage when noticed","published_since":"Published since","platform_price":"Published price when noticed"},"invoice_held":"The invoice that bills this usage waits until the rate is decided.","invoice_advance":"Invoices bill it at Fish Audio's published price for now; a line may be corrected once the rate is decided.","pending_invoices":"{count, plural, one {Billed so far on # invoice:} other {Billed so far on # invoices:}}","clauses_title":"What the contract says","clauses_none":"No clause of this contract covers other models.","clause_label":"Clause {number} · {kind}","clause_kind":{"rate_lock":"Price lock","published_rates":"Other models at published prices","discount":"Discount off the published price"},"clause_no_quote":"No quote is recorded for this clause.","rate_label":"Rate for this model","choice":{"contract_rate":"Bill at this contract's rate","platform_price":"Bill at Fish Audio's published price","explicit":"Bill at a specific price per million","discounted_list":"Bill at Fish Audio's published price less this contract's discount"},"choice_platform_price_hint":"The price at the time of use; {price} when noticed.","choice_discounted_list_hint":"The price at the time of use less {percent}; {price} when noticed.","choice_discounted_list_hint_no_price":"The price at the time of use less {percent}.","price_label":"Price per 1M UTF-8 bytes (USD)","price_label_audio":"Price per 1M audio seconds (USD)","price_invalid":"A price is 0 or more, with up to six decimals.","basis_label":"Based on","basis_clause":"Clause {number} ({kind})","basis_operator":"Not in the paper — our own decision","note_label":"Note for the approver","note_hint":"At least {min} characters.","error":"The request was not sent.","submit":"Send for approval","four_eyes":"A second person approves before the rate applies.","decided_title":"Decided","decided_rate":{"contract_rate":"Billed at this contract's rate","platform_price":"Billed at Fish Audio's published price","explicit":"Billed at {price}","discounted_list":"Billed at Fish Audio's published price less {percent}","discounted_list_no_percent":"Billed at Fish Audio's published price less this contract's discount"},"decided_basis_clause":"Based on the contract's clause","decided_basis_operator":"Our own decision, not in the paper","decided_note":"Note: {note}","decided_on":"Decided on {date}","decided_auto":"Decided automatically on {date}.","suggestion":{"title":"What the record suggests","failed":"The pre-read of the contract failed; a person reads the clauses and decides.","confidence":"Read by a model with {confidence} confidence.","decision":"Suggested: {rate}"}},"agent_admission":{"lost":"The team ran agent sessions in the last {days} days; after this, new agent sessions are refused.","kept":"The team ran agent sessions in the last {days} days; new ones stay admitted after this.","still_refused":"The team ran agent sessions in the last {days} days; new ones are refused now and stay refused after this.","unavailable":"The team's agent session facts could not be read; this preview can't say whether agents stay admitted.","details":"Details"}},"go_live":{"title":"Before go-live","load_failed":"The go-live checklist didn't load.","retry":"Retry","refresh":"Refresh","chip":{"blocking":"{count, plural, one {# item to answer} other {# items to answer}}","ready":"Ready to go live","advisory":"{count} worth confirming","awaiting":"{count} waiting","agent_running":"Agent is reading the paper…","agent_prefilled":"Agent pre-filled {count} of {total}","agent_partial":"Prefilled {count} of {total}; the rest need a hand"},"group":{"blocking":"Answer before go-live","advisory":"Worth confirming before go-live","awaiting":"Waiting","settled":"Handled","after_go_live":"After go-live"},"checks_passed":"{count, plural, one {# system check passed} other {# system checks passed}}","notes_recorded":"{count, plural, one {# paper note on record} other {# paper notes on record}}","hidden":"{count, plural, one {# more item needs proposal access} other {# more items need proposal access}}","advanced":{"title":"Advanced · audit","description":"Records behind the checklist: provisional readings, paper terms, termination policy, agent proposals."},"after_go_live":"{count, plural, one {# item still open after go-live} other {# items still open after go-live}}","agent_still_running":"The agent is still reading the paper.","agent":{"read":"Have the agent read the paper","reread":"Re-read the paper","reread_failed":"The agent couldn't start reading the paper.","continue":"Continue with the remaining items","stop_reason":{"tool_budget":"The agent ran out of steps before it reached every item.","time_limit":"The agent ran out of time before it reached every item."}},"show":"Show","hide":"Hide","we_will":"We will:","change":"Change…","choose":"Choose…","collapse":"Close","request_label":"Request: {label}","all_models":"all models","unit":{"utf8_bytes":"UTF-8 bytes","audio_seconds":"audio seconds","llm_tokens":"LLM tokens"},"paper":{"document":{"order_form":"Order form","msa":"MSA","amendment":"Amendment","incorporated_terms":"Online terms","agent":"Agent's excerpt"}},"tag":{"agent_suggests":"Agent suggests","system_suggests":"System suggests","typed":"Typed confirmation"},"owner":{"walt":"Needs the account executive","legal":"Needs legal","mart":"Needs billing engineering","creator_team":"Needs the Creator team","ops":"Needs ops"},"settled":{"system_import":"Automatic · at import","operator":"Answered","approved_proposal":"Approved","concession":"Kept as our concession","signed_writing":"Confirmed in writing","recorded_decision":"Recorded decision","noted":"Noted"},"answer":{"policy":"Contract end: {policy}","engine_handles":"Billed by the system","manual_process":"Handled by hand · {cadence}","waived":"Not charged"},"awaiting":{"approval":"Requested — waiting for someone who can approve","approval_you":"Requested — you can approve it","writing":"Following: {reading}. A change needs both sides in writing."},"input":{"owner":"Owner","owner_placeholder":"Pick an owner","owner_unset":"The owner","cadence":"How often","reason":"Reason","reason_optional":"Note (optional)","engine_ref":"Billed by","engine_placeholder":"Pick what bills it"},"owner_role":{"ops":"Ops","finance":"Finance","ae":"Account executive","legal":"Legal","receivables":"Receivables"},"owner_group":{"roles":"Roles","people":"People"},"owner_me":"Me · {email}","confirm":{"type_token":"Type {token} to confirm","type_new_start":"Type {date} to confirm the new start"},"toast":{"changed":"Something changed — the checklist is refreshed.","answered":"Saved.","partial":"The first step is saved; the rest didn't go through."},"error":{"failed":"Couldn't save this answer.","same_actor":"You filed this request — someone else has to approve it.","team_unbound":"This contract isn't bound to a team yet.","legal_review":"Couldn't move the contract back to legal review."},"activate":{"blocked_count":"{count, plural, one {# item to answer first} other {# items to answer first}}","not_ready":"Not ready to go live yet","loading":"Checking go-live…","advisory_count":"{count, plural, one {# item worth confirming first} other {# items worth confirming first}}","view":"View","type_token":"Type {token} to confirm go-live"},"surface":{"amendment_after_go_live":"Amendments open once the contract is live.","no_customer":"This contract has no customer to bind yet.","legal_review_title":"Back to legal review?","legal_review_body":"The contract returns to legal review for a new order form.","legal_review_confirm":"Back to legal review","attach_title":"The customer's signed writing","attach_confirm":"Confirm the reading","reschedule_reason":"Start date moved from the go-live checklist."},"check_passed":{"team_move":"No team move running","status":"Status allows go-live","signed_document":"Signed copy on file","flat_row":"Prices consistent","team":"Account team bound","incorporated_terms":"Online terms captured","coverage_prices":"Covered models priced","terms_rules":"Terms pass their checks","elapsed_cycles":"No billing period missed","reserved_slot":"Team slot free","agent_admission":"Agent sessions stay admitted","agent_plan":"No self-serve agent plan"},"q":{"check":{"team_move":"A team move is running on this contract — go-live waits for it to finish.","status":"The contract is at “{status}” — it can go live once signed.","signed_document":"Is the signed copy on file?","flat_row":"A flat fee and a rate on the contract disagree — fix the prices first.","team":"Is the customer's account bound to a team?","incorporated_terms":"Are the online terms the paper refers to captured?","coverage_prices":"Does every covered model have a price?","terms_rules":"The contract terms don't pass their checks — fix them first.","elapsed_cycles":"Billing periods have passed since the start — move the start?","reserved_slot":"Another live contract holds this team's slot — replace it at go-live?","agent_admission":"Agents ran in the last {days} days; after go-live, new agent sessions are refused. Go-live is not held for this.","agent_plan":"The team has a live self-serve agent plan ({detail}). End that subscription in Stripe first, then go live."},"credits_at_end":"What happens to unused credits when the contract ends?","money_term":{"overage":"Overage at {price}{hasUnit, select, yes { per million {unit}} other {}} — does the system bill it already?","self_host_usage":"Who bills self-hosted usage, and how?","late_interest":"{hasPct, select, yes {Do we charge late interest ({pct}% a month)?} other {Do we charge late interest?}}","generic":"Does the system bill this, or does someone handle it by hand?","topic":{"overage":"Who bills this overage, and how?","minimum":"Who enforces this minimum commitment, and how?","credit":"Who applies this credit, and how?","fee":"Who charges this fee, and how?","interest":"Do we charge this interest, and how?","self_host":"Who bills this self-hosting term, and how?","surcharge":"Who bills this surcharge, and how?"}},"covered_model":"The paper names model “{model}”, which our catalogue doesn't have — how do we handle it?","reading":{"telephony_published_counts_and_free":"Does phone usage at published prices count toward the commitment and the free months?","trueup_counts_published_family":"Does usage at published prices count in the commitment true-up?","asr_scope_all_backends":"Does the speech-to-text rate cover every recognition model?","fish_initiated_termination_no_trueup":"If we end the contract, is the commitment true-up waived?","customer_breach_termination_due":"If the customer ends the contract for our breach, when is the final invoice due?","sku_mapping_lineage":"Does a retired model on the paper price its successor?","covered_model_ga_definition":"From when is a covered model awaiting release covered?","unlisted_model_counts":"Does usage of models the paper doesn't list count toward the commitment?","free_window_scope":"What does the free period cover?","auto_renew_silent":"The order form has no renewal clause — does the term renew?","pro_membership_silent":"Pro membership: the paper is silent — follow the template default?","llm_published_counts":"Does LLM usage count toward the commitment like other products?","generic":"The paper isn't clear here — which reading do we follow?"},"start_date":"When does the contract start? The paper says {paper_start}, before signing on {signed_at}.","promise":"Record the paper's promise “{guarantee}” on the contract?","decision":{"activate_contract":"An earlier proposal to go live is still open — close it?","reschedule_start":"Approve moving the start to {proposed_start}?","provisional_reading_resolve":"Approve settling a provisional reading?","termination_settings_update":"Approve the rule for unused credits at contract end?","generic":"Approve this request: {kind}?"},"note":"Agent's note: {title}","setting_manual_usage":"Usage on this contract is entered by hand — turn on manual usage entry?","start_date_recorded":"When does the contract start? The paper says {paper_start}, before the undated signed file was recorded on {signed_at}.","signed_document_on_paper":"Signed on {signed_at} on paper; the signed copy is not attached.","agent_admission_amendment":"Agents ran in the last {days} days; once this amendment applies, new agent sessions are refused. It still applies.","fee":{"at_activation":"One-time fee “{title}” ({amount}): Activate bills it on its own invoice.","later":"One-time fee “{title}” ({amount}): billed {hasPeriodStart, select, yes {on {period_start}} other {at a later date}}.","billed":"One-time fee “{title}” ({amount}): already billed{detail, select, outside { outside the system} other {}}."}},"choice":{"check":{"upload_signed":"Upload the signed copy","fix_prices":"Open rates","bind_team":"Open the customer","capture_terms":"Open online terms","fix_terms":"Open termination terms","reschedule":"Move the start…","replace":"Replace at go-live"},"credits_at_end":{"consume_only":"Customer can use them up","forfeit":"They lapse at the end","refund_prorated":"Refund the unused part (by hand)","transition_window":"Keep serving for a wind-down period (by hand)","approve_proposal":"Agree: {policy}","reject_proposal":"Disagree"},"money_term":{"engine":"The system bills it","manual":"Handle it by hand","waive":"Don't charge it"},"covered_model":{"not_offered":"Not billed separately","remap":"Map it to a model…","manual":"Handle it by hand"},"reading":{"keep":"Keep this reading","amend":"Use the other reading…","attach_writing":"Upload the customer's writing…","approve_proposal":"Approve","reject_proposal":"Decline"},"start_date":{"keep":"Keep {paper_start}","move":"Move the start…","back_to_legal":"Back to legal"},"promise":{"approve":"Record it","reject":"Don't record"},"decision":{"approve":"Approve","reject":"Decline","close_stale":"Close it"},"note":{"ack":"Noted","close":"Dismiss"},"setting_manual_usage":{"turn_on":"Turn it on"}},"will":{"check":{"upload_signed":"Open the documents section to upload the signed PDF.","fix_prices":"Open the rates tab to fix the prices.","bind_team":"Open the customer workspace to bind the account.","capture_terms":"Open the online terms to capture them.","fix_terms":"Open the termination terms to fix them.","reschedule":"Open the start-date dialog to move the start.","replace":"Go-live takes the team over from the live contract."},"credits_at_end":{"consume_only":"After the contract ends the customer keeps using the remaining credits; no refund.","forfeit":"Unused credits are revoked when the contract ends.","refund_prorated":"When the contract ends, the unused share of what the customer paid in advance is refunded by hand.","transition_window":"After the end, usage continues at today's prices for a wind-down period, handled by hand.","approve_proposal":"Set the rule to “{policy}”, as proposed.","reject_proposal":"Close the proposal; this question stays open."},"money_term":{"engine":"{hasCandidate, select, yes {Billed by {candidate}.} other {Billed by the item picked below.}}","manual":"{owner} handles it by hand ({cadence}).{switch, select, on { Manual usage entry turns on; {days}-day wait.} other {}}","waive":"Not charged; recorded as waived."},"covered_model":{"not_offered":"{hasSuccessor, select, yes {Not billed separately; {successor} stays covered.} other {Not billed separately.}}","remap":"Open the rates tab to map it to a catalogue model.","manual":"{owner} handles it by hand ({cadence})."},"reading":{"keep":"Follow “{reading}” as our concession; the other reading ({alternative}) needs an amendment.","amend":"Follow “{alternative}” — this needs an amendment both sides sign.","attach_writing":"Confirm the reading with the customer's signed writing.","approve_proposal":"Settle the reading “{reading}” as requested.","reject_proposal":"Close the request; the reading stays provisional."},"start_date":{"keep":"Billing counts from {paper_start}.","move":"Open the start-date dialog; the new start is typed back to confirm.","back_to_legal":"The contract returns to legal review for a new order form."},"promise":{"approve":"Record a “{guarantee}” promise, {enforcement}, {fee}; effective at go-live.","reject":"Close the proposal; nothing is recorded."},"decision":{"approve":"Show the request's preview first; approving it carries it out.","reject":"Close the request; nothing changes.","close_stale":"Close the old proposal; go live with the button above."},"note":{"ack":"Recorded only; no setting changes.","close":"Close the note; no setting changes."},"setting_manual_usage":{"turn_on":"Each invoice waits {days} days for manual usage, then bills; late usage rides the next one."}},"enforcement":{"manual":"kept by hand","platform":"kept by the platform"},"fee":{"none":"no extra charge","amount":"fee {amount}"},"engine":{"pricing_tier":"Pricing tier · {product} · {model} · {price} per million","guarantee":"Contract guarantee · {guarantee}","rate_line":"Rate line · {title}","manual_usage_mode":"Manual usage entry"},"unavailable":{"missing_capability":"Your role can't make this change.","no_candidates":"Nothing on the contract can bill this.","proposal_not_open":"This proposal can't be approved any more."},"covered_model_unnamed":"The paper names a model our catalogue doesn't have — how do we handle it?","decision":{"preview_loading":"Loading the request's preview…","preview_failed":"The request's preview didn't load.","preview_will":"Carry out what this preview shows."},"fallback":{"question":"This item needs an answer.","choice":"Use this answer","candidate":"Billing item","unavailable":"This answer isn't available.","check_passed":"Check passed"},"payment":{"title":"Payment and collection","method":"Invoices are sent through","method_prepaid":"No invoices: the customer tops up their own balance in the platform","mercury":"Mercury customer","mercury_paired":"Paired with {name}","mercury_unpaired":"Not paired: invoices cannot be sent through Mercury until it is","mercury_loading":"Checking…","mercury_failed":"Could not read the pairing","mercury_locked":"Reading the pairing needs billing access","mercury_no_customer":"No customer on this contract yet","mercury_open":"Open pairing","mercury_dialog_title":"Mercury customer","card":"Card payments","card_on":"On: invoices can also be paid by card","card_on_fee":"On: invoices can also be paid by card, with a {pct}% card fee","card_off":"Off: invoices are paid by bank transfer","timezone":"Billing time zone","timezone_paper":"{zone}, as the paper states","timezone_default":"Pacific time (Los Angeles), follows daylight saving; the paper names none","timezone_utc":"UTC, on the older billing clock","change":"Change"},"next":{"title":"What happens next","commitment":"At go-live an activation invoice for the first period is drafted; it waits under Invoices until sent.","commitment_trial":"At go-live an invoice for the first paid month after the free months is drafted; it waits under Invoices until sent.","payg":"Nothing is invoiced at go-live: the first invoice is drafted after the first billing cycle ends.","one_time":"At go-live the one-time purchase invoice is drafted; it waits under Invoices until sent.","prepaid":"Nothing is invoiced: the customer pays by topping up their balance.","none":"Nothing is invoiced: this agreement has no billing.","fees_only":"No usage is invoiced: each one-time fee is billed on an invoice of its own when it falls due."},"held_term":{"question":"A term the system cannot hold as written: the import review settled how it is handled.","waits_second_approver":"The invoice waits for the second approver of the step after create.","interim":"Until the system supports this term: {interim}.","for_person":"A step after create that the system does not take on its own: who carries it out, and how?"}},"presign":{"banner":{"ready":"Our system bills this contract exactly as the draft states.","ready_after_edits":"Ready once the clauses below are changed. Every suggested wording is proven.","recheck_after_edits":"Re-check after these edits: some wording is not yet proven, or a clause needs a second look.","not_supportable":"Not supportable as written. With the marked clauses removed or restated, this draft turns {color}.","no_verdict":"No colour for this upload.","failed":"The check did not finish. Upload the draft again to retry.","running":"The check is still running."},"color":{"green":"GREEN","yellow":"YELLOW","red":"RED"},"reason":{"unreadable_text":"No text could be read. Upload a text PDF or a DOCX.","tracked_changes":"The DOCX has tracked changes. Upload it with every change accepted.","order_form_missing":"No order form in this upload; the legal terms were checked.","amendment_only":"This is an amendment; amendments are added to the existing contract, not checked here.","extraction_failed":"The paper could not be read this time.","timed_out":"The check ran out of time.","analysis_failed":"The analysis stopped on our side, not because of the draft."},"file":{"unreadable":"No text could be read; not checked"},"status":{"running":"Running","analyzed":"Checked","unverified":"No verdict","failed":"Not finished","superseded":"Replaced","linked":"Linked to a contract"},"class":{"change":"To change","clarify":"To add or clarify","gap":"Cannot be billed","unverified":"To check","recommend":"Recommended","recorded":"Recorded","fine":"As written"},"section":{"summary":"Summary","to_change":"To change","recommended":"Recommended","recorded":"Recorded — applied by our team by hand","imports_as_written":"Everything else imports as written","recheck":"What changed since the last check","files":"Files"},"card":{"draft_says":"The draft says","add_sentence_under":"Add this sentence under “{heading}”","cannot":"What we cannot do","why":"Why","engineering_builds":"What engineering would build","suggested_wording":"Suggested wording","if_changed":"If changed","remaining_after":"{count, plural, one {# left} other {# left}}","copy":"Copy","option":"Option {letter}","quoted":"“{text}”","copy_label":"Copy {code}","copy_option_label":"Copy {code}, option {letter}","adapted":"Worded for this draft","copy_adapted_label":"Copy {code}, worded for this draft"},"quote":{"sentence":"From the paper","section_ref":"See {section} of the draft","insert":"The draft does not say this.","none":"No clause to quote.","unverified":"Wording as read by the review, not found verbatim"},"proof":{"proven":"Proven","unproven":"Not yet proven"},"diff":{"cleared":"Cleared","remaining":"Remaining","new":"New","clause":"Clause","before":"Last check","after":"Now","status_heading":"Status","unchanged":"Unchanged","not_present":"Not in the last check","not_flagged":"No longer flagged","nothing":"Nothing to compare.","engine_changed":"Our system changed between the two checks."},"narrative":{"pending":"Summary in progress","unavailable":"Summary unavailable"},"summary":{"written":"Written for this draft","ref":"Go to item {label}"},"role":{"contract":"Order form","msa":"MSA","legal":"Legal","skip":"Skipped"},"template":{"matched":"Looks based on: {name}","none":"No similar template"},"topic":{"account":"Account","agents":"Agents","baa":"BAA","billing_timing":"Billing timing","commitment":"Commitment","concurrency":"Concurrency","consistency":"Consistency","credits":"Credits","currency":"Currency","data_location":"Data location","data_retention":"Data retention","discount":"Discount","effective_date":"Effective date","fees":"Fees","figures":"Figures","fixed_fee":"Fixed fee","free_window":"Free window","guarantee":"Guarantee","late_payment":"Late payment","legal_terms":"Legal terms","minimum":"Minimum commitment","models":"Models","money_term":"Money term","order_term":"Order term","other":"Other","payment_term":"Payment term","price_changes":"Price changes","price_lock":"Price lock","price_unit":"Price unit","rate":"Rate","refund":"Refund","renewal":"Renewal","revenue_share":"Revenue share","self_hosted":"Self-hosted usage","studio":"Studio","termination":"Termination","training":"Model training","usage":"Usage","zero_data_retention":"Zero data retention"},"headline":{"ready":"Imports on Day 1 as written","ready_after_edits":"{count, plural, one {Imports on Day 1 after # edit} other {Imports on Day 1 after # edits}}","recheck_after_edits":"{count, plural, one {Imports on Day 1 after # edit} other {Imports on Day 1 after # edits}}","not_supportable":"Needs engine work or removal","no_verdict":"No verdict","failed":"Check not finished","running":"Checking the draft"},"after_edit":{"becomes":"{color} after this edit","still":"Still {color} after this edit"},"counts":{"to_change":"{count, plural, one {# to change} other {# to change}}","cannot_bill":"{count, plural, one {# cannot be billed} other {# cannot be billed}}","recorded":"{count, plural, one {# recorded for our team} other {# recorded for our team}}","as_written":"{count, plural, one {# imports as written} other {# import as written}}","cleared":"{count, plural, one {# cleared} other {# cleared}}","remaining":"{count, plural, one {# remaining} other {# remaining}}","new":"{count, plural, one {# new} other {# new}}","items":"{count, plural, one {# item} other {# items}}"},"entry":{"check_draft":"Check a draft before sending"},"copied":"Copied","copy_failed":"Couldn't copy","upload":{"title":"Check a draft before sending","recheck_title":"Re-check after edits","description":"The unsigned order form, with any MSA, BAA or DPA drafts.","replaces":"Replaces the check of {label}.","drop":"Drop the drafts here, or click to choose","formats":"PDF or Word","role":"Role of {name}","role_auto":"Detect","remove_file":"Remove {name}","customer":"Customer","customer_none":"New customer","prospect":"Prospect name (optional)","check":"Check","checking":"Checking…","elapsed":"Running for {time}","retry":"Try again","errors":{"generic":"The check did not finish.","timed_out":"The check ran out of time.","presign_review_in_flight":"Your previous check is still running.","presign_upload_too_large":"The upload is larger than a check accepts.","presign_too_many_pages":"A file has more pages than a check accepts.","presign_file_type_unsupported":"Only PDF and Word files can be checked.","presign_files_invalid":"One order form per check, plus up to four MSA, BAA or DPA drafts, each with its own name.","presign_supersedes_invalid":"The earlier check this replaces is no longer available.","presign_customer_not_found":"That customer no longer exists.","no_access":"You don't have access to run this check."}},"progress":{"reading":"Reading the paper","figures":"Checking figures","coverage":"Reviewing coverage","extracting":"Extracting terms","checking":"Checking against our rules","verdict":"Writing the verdict","summary":"Writing the summary","now":"Step {index} of {count}: {step}","state":{"done":"Done","running":"In progress","waiting":"Not started","stopped":"Stopped"}},"report":{"back":"Customers","title":"Pre-sign review — {name}","title_unnamed":"Pre-sign review","checked":"Checked {date}","replaces":"Re-check","recheck":"Re-check after edits","superseded":"A newer check replaces this one.","open_newer":"Open it","engine_changed":"Our system changed since this check; upload the draft again for a current answer.","load_failed":"Couldn't load this review.","from_paper_page":"{label} · p. {page}","no_access":"You don't have access to this review.","refresh_failed":"Couldn't refresh this review.","check_again":"Check again","still_running":"Still running. This page no longer updates on its own."},"list":{"title":"Pre-sign reviews","mine":"Mine","all_customers":"All customers","all_colors":"All colours","all_statuses":"All statuses","customer":"Customer","color":"Colour","status":"Status","draft":"Draft","checked":"Checked","by_me":"by me","more_files":"{count, plural, one {+# file} other {+# files}}","no_color":"No colour","empty":"No pre-sign reviews yet.","load_failed":"Couldn't load the reviews.","load_more":"Load more"},"engineering":{"toggle":"Engineering view","items":"Items by class","key":"Key","class":"Class","fact":"Engine fact","redline":"Redline","owner":"Owner · cadence","finding":"Finding","was":"was {value}","flagged":"Flagged by the review","clears":"clears {keys}","record":"Record","status":"Status","registry":"Registry","digest":"Provenance digest","extraction":"Extraction · {file}","template_match":"Template match","live_usage":"Recent usage","narrative":"Summary","cost":"Cost (USD)","created":"Created","chain":"Re-check chain","error":"Error","load_failed":"Couldn't load the engineering view.","no_access":"You don't have access to the engineering view."},"trace":{"title":"Trace","rows":"{count, plural, one {# row} other {# rows}}","copy":"Copy the trace","empty":"No trace was recorded for this check.","truncated":"The trace is full; later steps are not listed.","time":"Time","step":"Step","detail":"Detail","took":"Took","stage":{"queued":"Waiting for a worker","claimed":"Worker started","matching":"Looking for a matching template","narrative_queued":"Summary queued","narrative_done":"Summary written","failed":"Check stopped","timed_out":"Check ran out of time"}},"capability":{"review":"Check a draft contract before it is signed","read":"Open a pre-sign review","list":"See the list of pre-sign reviews","engineering_read":"See the engineering view of a pre-sign review"}},"fees":{"title":"One-time fees","description":"Setup, onboarding and similar fees the contract charges. Each one is billed once, on an invoice of its own.","total":"{count, plural, one {# fee} other {# fees}} · {amount} before tax","unnamed":"Unnamed fee","when_label":"Billed","when":{"activation":"When the contract is activated","first_billing_date":"With the first invoice, on {date}","first_billing_date_unknown":"With the first invoice","date":"On {date}","unknown":"Not recorded"},"credits_label":"Credits","credits_none":"None","credits_amount":"{amount} of credits","minimum":{"counts":"Counts toward the minimum","not_counted":"Does not count toward the minimum"},"status":{"not_yet_due":"Not yet due","due":"Due · billed on the next daily run","lapsed":"Lapsed · the contract ended first","invoiced":"Invoiced","paid":"Paid","voided":"Voided","billed_outside":"Billed outside the system","invoice_missing":"Invoice not found","unknown":"Status unavailable"},"invoice_link":"Invoice #{number}","invoice_draft":"Draft invoice","invoice_open":"Open the invoice","legacy_note":"The contract's one-time purchase: billed on its one-time invoice, and it grants the credits shown."}},"partners":{"metadata":{"title":"Partners - Fish Audio","description":"Fish Audio's partner network spans real-time infrastructure, voice agent platforms, video creation tools and regional inference clouds, so the most expressive voice model ships wherever your product runs.","subtitle":"Fish Audio"},"hero":{"title":{"line1":"Build with Fish Audio","line2":"on the platforms you already use"},"subtitle":"Fish Audio's partner network spans real-time infrastructure, voice agent platforms, video creation tools and regional inference clouds, so the most expressive, emotionally controllable voice model ships wherever your product runs.","ctaPrimary":"Become a partner","ctaSecondary":"Browse the directory"},"directory":{"title":"Partner directory","visit":"Visit {name}","viewCase":"Read the {name} integration","visitWebsite":"Visit website","categories":{"all":"All","realtime":"Real-time infrastructure","agents":"Agent Platform","video":"Video & creative","routers":"Routers & gateways","inference":"Inference"},"partners":{"livekit":{"description":"Open-source WebRTC stack and Agents framework. Fish Audio TTS ships as a first-party plugin and through LiveKit Inference.","tag":"Real-time infrastructure"},"heygen":{"description":"AI video platform. Fish Audio powers the Fish voice engine inside HeyGen's AI Studio, with accent and locale controls for English. Available in both HeyGen Video Creator and LiveAvatar.","tag":"Video & avatars"},"retell":{"description":"Voice agent platform for phone and call centers. Import any Fish Audio voice to power your Retell agent.","tag":"Voice agent platforms"},"slng":{"description":"Global execution layer for real-time voice AI. Runs Fish Audio S2.1 Pro on in-region GPUs in Europe and Australia.","tag":"Regional inference"},"vercel":{"description":"AI Gateway for every model behind one key. Fish Audio S2.1 Pro, S2 Pro and Transcribe-1 are all available as fish-audio/ models.","tag":"Routers & gateways"},"openrouter":{"description":"Unified API for hundreds of models. Fish Audio S2.1 Pro is available as fish-audio/s2.1-pro through OpenRouter's text-to-speech API.","tag":"Routers & gateways"},"baseten":{"description":"Inference platform for open-source and custom models on dedicated GPUs, with autoscaling and performance tooling.","tag":"Inference"},"runway":{"description":"AI video generation platform for filmmakers and creative teams. Partnership details pending sign-off.","tag":"Video & creative"}}},"programs":{"title":"Three ways to partner with Fish Audio","subtitle":"Whether you run the infrastructure, the platform or the client work, there is a program for you.","technology":{"title":"Technology partners","description":"Integrate Fish Audio models into your platform, framework or marketplace. We co-build the plugin, co-publish the docs and list you in this directory.","cta":"Apply as a technology partner"},"infrastructure":{"title":"Infrastructure, inference & routing partners","description":"Run or route Fish Audio models on your platform so customers get in-region latency, unified billing or data residency, the way SLNG does in Europe and Australia and Vercel does through AI Gateway.","cta":"Talk to us about hosting"},"solution":{"title":"Solution partners","description":"Agencies, studios and consultancies that build voice products for clients on Fish Audio, with enablement, referral terms and shared pipeline.","cta":"Join the solution program"}},"news":{"title":"Latest from our partners","cta":"Visit the blog","items":{"slng":{"text":"Fish Audio S2.1 Pro is now live in Europe and Australia on SLNG's in-region GPU infrastructure.","tag":"Partnership"},"vercel":{"text":"Fish Audio S2.1 Pro, S2 Pro and Transcribe-1 are now available on Vercel AI Gateway.","tag":"Launch"},"livekit":{"text":"Fish Audio TTS is available in LiveKit Agents through LiveKit Inference and the fishaudio plugin.","tag":"Integration"}}},"cta":{"title":"Bring Fish Audio to your platform","subtitle":"Tell us what you are building and we will set up a call with our partnerships team.","primary":"Apply to partner","secondary":"Read the API docs"},"case":{"copy":"Copy Code","copied":"Copied","subtitle":"Partner integration","readGuide":"Read the integration guide","visit":"Visit {domain}","contactPartnerships":"Contact partnerships","getApiKey":"Get API Key","apiKeyHint":"Get your API key from the Fish Audio dashboard.","whyTitle":"Why <b>{partner}</b> and <b>Fish Audio</b>","howItWorks":"How it works","howItWorksDescription":"{count} {count, plural, one {step} other {steps}} from a Fish Audio voice to a shipping product on {partner}.","step":"STEP {number}","showcaseTitle":"What teams build with <b>Fish Audio</b> and <b>{partner}</b>","morePartners":"More partners","viewDirectory":"View the directory","ctaTitle":"Start building with Fish Audio and {partner}","scale":{"title":"Proven at production scale","description":"Fish Audio S2 Pro powers production deployments at {partner}, handling real traffic, edge-case pronunciation and multi-region load."},"specs":{"category":"Category","integration":"Integration","streaming":"Streaming","defaultModel":"Default model","voices":"Voices","accents":"Accents","inProduction":"In production","howToAdd":"How to add","whereToFind":"Where to find it","regions":"Regions","languages":"Languages","docs":"Docs","models":"Models","sdk":"SDK","availableSince":"Available since"}},"cases":{"livekit":{"metadataTitle":"Fish Audio × LiveKit: Real-time voice agents","hero":{"title":"Real-time voice agents with Fish Audio on LiveKit","description":"Fish Audio text-to-speech ships as a first-party plugin for LiveKit Agents and through LiveKit Inference, so your agents speak with Fish Audio's most expressive voices at conversational latency.","category":"Real-time infrastructure","integration":"LiveKit Agents plugin (Python) and LiveKit Inference","streaming":"Chunked and real-time WebSocket","voices":"Any Fish Audio voice or clone by voice_id"},"why":{"description":"LiveKit handles the real-time transport, turn detection and agent orchestration. Fish Audio handles how the agent sounds. Together they are one of the fastest paths from prototype to a production voice agent.","runOptions":{"title":"Two ways to run it","description":"Use LiveKit Inference to run Fish Audio on LiveKit's infrastructure with no separate provider API key, or install the plugin to manage your own Fish Audio billing and rate limits."},"streaming":{"title":"Streaming built for turn-taking","description":"The plugin supports chunked synthesis and real-time WebSocket streaming, so speech starts as soon as the first tokens arrive instead of waiting for the full response."},"voices":{"title":"Every Fish Audio voice, tunable per agent","description":"Point voice_id at any voice in the Fish Audio library or a clone you made, then set speed, volume, temperature and top_p per agent."}},"illustrations":{"agentTitle":"Voice Agent","agentSubtitle":"Your real-time app","inference":"Inference","plugin":"Plugin","tokens":["The","future","is","coming","soon"],"voiceMeta":"Annie · female · English","speed":"Speed","temperature":"Temperature","installed":"Plugin Installed!"},"steps":{"install":{"title":"Install the plugin","description":"Add Fish Audio to LiveKit Agents with a single extra."},"apiKey":{"title":"Set your API Key","description":"Export FISH_API_KEY in the agent's environment, or skip this step entirely with LiveKit Inference."},"tts":{"title":"Add TTS to your agent","description":"Import the TTS class, pick a voice and model, and hand it to your AgentSession. Real-time streaming is one flag away."}},"showcase":{"support":{"title":"Customer support agents","description":"Voice agents that answer, triage and resolve in real time, with a consistent brand voice across every call.","alt":"Support agent wearing a headset, talking at a laptop"},"companions":{"title":"Companions and characters","description":"Expressive, emotionally controllable voices for games, companions and interactive characters.","alt":"Illustrated fantasy character sitting at a table"},"multilingual":{"title":"Multilingual assistants","description":"One agent, many markets. Fish Audio voices cover the major world languages inside a single LiveKit pipeline.","altUs":"Man with a headset working at a laptop","altKr":"Woman with a headset on a call","altEs":"Woman with glasses and a headset at a desk"}},"cta":"Read the LiveKit integration guide, or talk to our partnerships team about co-marketing and joint customers."},"heygen":{"metadataTitle":"Fish Audio × HeyGen: Voices for AI avatars","hero":{"title":"Fish Audio voices for HeyGen avatars","description":"HeyGen's AI Studio includes a Fish voice engine powered by Fish Audio, giving creators expressive English delivery with selectable accents and locales for every avatar video.","docs":"Using voices in AI Studio","category":"Video & avatars","integration":"Native voice engine inside HeyGen AI Studio","whereToFind":"Voice picker → Fish","defaultModel":"Accent and locale for English","inProduction":"Fish Audio S2 Pro powers HeyGen deployments","accents":"US, UK and Australian English locales","voices":"Fish Audio library voices and your clones"},"why":{"description":"HeyGen turns a script into a finished avatar video. The voice is what makes that video feel human, and Fish Audio was built for exactly that kind of expressive, region-specific delivery.","accents":{"title":"Region-specific English","description":"Choose accents and locales so pronunciation and delivery match the audience, from US to UK to Australian English."},"clones":{"title":"Closest clones for English","description":"HeyGen's own guidance notes that the Fish engine often clones closest for English voices, so a founder or presenter sounds like themselves."}},"illustrations":{"us":"US","uk":"UK","australian":"Australian","originalVoice":"Original Voice","cloneVoice":"Fish Clone Voice","chooseAvatar":"Choose Avatar","voiceEngine":"Voice Engine","english":"English","british":"British","script":"When you are building something new, there is this mix of wonder and fear. It is worth building."},"steps":{"studio":{"title":"Open AI Studio","description":"Start a new video or open an existing scene in HeyGen's AI Studio and select the avatar you want to voice."},"engine":{"title":"Choose the Fish engine","description":"In the voice picker, switch the engine to Fish. Your cloned voices and Fish Audio library voices appear here."},"accent":{"title":"Pick accent and locale","description":"Set the English accent and locale for the audience, generate, and iterate on delivery inside HeyGen."}},"showcase":{"marketing":{"title":"Marketing and product videos","description":"Launch videos, explainers and ads with a presenter voice that matches the market it ships to.","alt":"Creator holding a camera and presenting to the lens"},"training":{"title":"Localized training content","description":"One script, many regions. Swap accents and locales without re-recording a single line.","alt":"Presenter in a blazer explaining a topic in a studio","english":"English","german":"German","korean":"Korean","spanish":"Spanish"},"outreach":{"title":"Personalized outreach at scale","description":"Sales and success teams generate one-to-one avatar videos in the customer's own English.","alt":"Smiling presenter seated at a desk in a bright office"}},"cta":"See how the Fish engine works inside HeyGen, or talk to our partnerships team about creator programs and co-marketing."},"retell":{"metadataTitle":"Fish Audio × Retell AI: Voices for phone agents","hero":{"title":"Fish Audio voices inside Retell AI agents","description":"Retell supports fish_audio as a voice provider, so any Fish Audio voice, including the clones you make, can answer the phone for your agents.","docs":"Add Voice API","category":"Voice agent platform","integration":"Voice provider (fish_audio)","howToAdd":"Add Voice API or the Retell dashboard","voices":"Any Fish Audio voice ID, including clones","inProduction":"Fish Audio S2 Pro powers Retell deployments"},"why":{"description":"Retell runs the call: telephony, turn-taking, interruptions and orchestration. Fish Audio decides how the agent sounds. That split lets teams ship phone agents in days and tune the voice independently.","ownVoice":{"title":"Bring your own voice","description":"Import any Fish Audio voice by ID, including clones, and reuse it across every Retell agent you run."},"phone":{"title":"Built for phone calls","description":"Retell handles the telephony stack and conversation flow; Fish Audio's streaming keeps responses natural on the line."}},"illustrations":{"support":"Support","leadQual":"Lead qual","voiceId":"Voice ID","customVoice":"Custom Voice","aiAgent":"AI Agent","copyId":"Copy ID","retellAgent":"Retell Agent","s2Pro":"S2 Pro"},"steps":{"pick":{"title":"Pick a voice in Fish Audio","description":"Choose a library voice or clone your own from 30 seconds of audio, then copy its voice ID."},"add":{"title":"Add it to Retell","description":"Call Add Voice with voice_provider set to fish_audio and your Fish Audio voice ID, or add it from the dashboard."},"assign":{"title":"Assign it to an agent","description":"Select the new voice on any Retell agent. Every call from that agent now speaks with Fish Audio."}},"showcase":{"support":{"title":"Inbound support lines","description":"Answer every call instantly with an agent that sounds like your brand, not a robot.","alt":"Support agent with a headset answering a call"},"reminders":{"title":"Appointment reminders","description":"Outbound confirmations and reschedules that customers actually pick up and finish.","alt":"Person checking an appointment reminder on their phone"},"leads":{"title":"Lead qualification","description":"Warm, natural first conversations that hand qualified leads to a human rep.","alt":"Sales rep on a call at a desk"}},"cta":"Read the Add Voice reference, or talk to our partnerships team about joint customers and co-marketing."},"slng":{"metadataTitle":"Fish Audio × SLNG: In-region S2.1 Pro","hero":{"title":"Fish Audio S2.1 Pro, in region, on SLNG","description":"SLNG runs Fish Audio S2.1 Pro on in-region GPU infrastructure in Europe and Australia, so audio stays local and latency stays low for production voice agents.","docs":"SLNG documentation","category":"Regional inference","integration":"Hosted S2.1 Pro endpoint through the SLNG API","regions":"Europe and Australia, more to come","languages":"83 supported by S2.1 Pro","docsValue":"docs.slng.ai and the Fish Audio integration guide"},"why":{"description":"Voice AI needs local infrastructure. SLNG is Fish Audio's infrastructure partner for Europe and Australia, bringing the model closer to users and helping companies meet the latency and enterprise requirements of production voice AI.","residency":{"title":"Audio stays in region","description":"Speech is generated on SLNG's GPUs in Europe and Australia, so enterprise customers can meet data residency requirements without giving up the model."},"latency":{"title":"Latency where your users are","description":"In-region compute cuts round trips for real-time agents serving EMEA and APAC customers."},"stack":{"title":"One API, your stack","description":"SLNG sits between your orchestrator and your providers, adding per-turn model selection, caching, PII redaction and regional compute."}},"illustrations":{"eu":"EU","uk":"UK","audioInRegion":"Your Audio\nStays in Region","lowerLatency":"Lower Latency","modelSelection":"Model Selection","caching":"Caching","piiRedaction":"PII redaction","regionalCompute":"Regional compute","usingApi":"Using API","america":"America","europe":"Europe","australia":"Australia","model":"Model","realtime":"Real-time","yourAgent":"Your Agent"},"steps":{"apiKey":{"title":"Get an SLNG API key","description":"Sign up at slng.ai and create a key for your workspace. Your orchestrator and other models stay as they are."},"model":{"title":"Select Fish Audio S2.1 Pro","description":"Choose S2.1 Pro as your TTS model and pick the region closest to your users."},"stream":{"title":"Stream speech to your agent","description":"Call the SLNG API from your pipeline and stream Fish Audio speech back in region."}},"showcase":{"eu":{"title":"EU enterprise voice agents","description":"Serve European customers with in-region generation that satisfies procurement and privacy reviews.","alt":"Woman taking a call on her phone in an office"},"regulated":{"title":"Regulated industries","description":"Financial services and healthcare teams that need residency guarantees before a voice agent can ship.","alt":"Man in a suit working in a finance office"},"apac":{"title":"APAC contact centers","description":"Australian and regional contact centers with local latency and local data handling.","alt":"Two contact center agents wearing headsets"}},"cta":"Read the SLNG docs, or talk to our partnerships team about bringing Fish Audio to more regions."},"vercel":{"metadataTitle":"Fish Audio × Vercel: Fish Audio on AI Gateway","hero":{"title":"Fish Audio on Vercel AI Gateway","description":"Fish Audio's speech and transcription models are available on Vercel AI Gateway, so AI SDK and Next.js teams can add expressive voice with the same key, billing and observability they already use for their LLMs.","docs":"Launch announcement","category":"Routers & gateways","integration":"Fish Audio models routed through Vercel AI Gateway","models":"S2.1 Pro, S2 Pro (speech) and Transcribe-1 (transcription)","sdk":"AI SDK generateSpeech and transcribe","availableSince":"August 19, 2026"},"why":{"description":"AI Gateway gives developers one endpoint for every model they use. Putting Fish Audio behind it means voice is one import away in any AI SDK app, without wiring up another provider.","models":{"title":"Three models, one route","description":"S2.1 Pro and S2 Pro for text-to-speech, plus Transcribe-1 for speech-to-text with word-level timestamps, all addressed as fish-audio/ model strings."},"sdk":{"title":"Native in the AI SDK","description":"Call generateSpeech or transcribe from the ai package with a Fish Audio model ID. No provider SDK, no custom client, no extra dependency."},"billing":{"title":"Gateway billing and observability","description":"Usage, spend and latency for Fish Audio show up alongside every other model in the AI Gateway dashboard."}},"illustrations":{"productionVoice":"Production voice","inlineTags":"Inline tag control","emotionMarkers":"Emotion markers","speechToText":"Speech-to-text","oneRoute":"One route. All models.","usage":"Usage","requests":"requests","fishModel":"Fish Audio model","greeting":"Hey there.","speech":"I'm so excited to share this news!\nCan you hear me?"},"steps":{"enable":{"title":"Enable AI Gateway","description":"Create an AI Gateway API key in the Vercel dashboard, or rely on Vercel OIDC when your app is deployed on Vercel."},"pick":{"title":"Pick a Fish Audio model","description":"Use fish-audio/s2.1-pro for production voice, s2-pro for inline tag control, or transcribe-1 for speech-to-text."},"generate":{"title":"Generate speech in the AI SDK","description":"Call generateSpeech with your text, then stream or save the audio. Spend tracking is on from the first request."}},"showcase":{"nextjs":{"title":"Voice features in Next.js apps","description":"Read-aloud, narrated summaries and voice replies added to an existing AI SDK app in an afternoon.","alt":"Developer coding at a desk with a large monitor"},"transcribe":{"title":"Transcribe, reason, speak","description":"Transcribe-1 in, an LLM in the middle, S2.1 Pro out, all through one gateway and one bill.","alt":"Developer typing next to a microphone and a laptop"},"production":{"title":"Prototype to production","description":"Start on gateway credits, keep the same code as usage grows, and watch spend per model in one place.","alt":"Two teammates reviewing a laptop together"}},"cta":"Browse Fish Audio models on AI Gateway, or talk to our partnerships team about co-marketing with Vercel."}}},"websiteContent":{"title":"Website content","intro":"Manage partners, case studies and marketing pages. Save an English draft; CMS translates the other languages automatically.","partner":"Partners","case-study":"Case Studies","create":"Create content","search":"Search content","status":"Status","all":"All","draft":"Draft","published":"Published","category":"Category","loading":"Loading…","empty":"No content yet","cancel":"Cancel","name":"Name","slug":"URL slug","edit":"Edit","preview":"Preview","save":"Save draft","publish":"Publish","unpublish":"Take offline","delete":"Delete","duplicate":"Duplicate","remove":"Remove","retry":"Retry","reload":"Reload saved content","up":"Move up","down":"Move down","add":"Add","upload":"Upload image","uploading":"Uploading…","uploadFailed":"Image upload failed. Check the image or try again.","source":"English source","illustrationCopy":"Shared page and illustration text","queued":"Translation queued","pending":"Translating","completed":"Translation complete","failed":"Action failed. Please retry.","idle":"Waiting for source content","retryTranslation":"Retry translation","saved":"Draft saved","unsaved":"Unsaved changes","done":"Done","content":"Content","display":"Display and relationships","seo":"SEO","pageTitle":"Page title","description":"Description","website":"Website URL","logo":"Logo","mark":"Icon Logo","logoHeight":"Logo height (px)","has_detail":"Enable detail page","enterprise":"Show in Enterprise carousel","related":"Related published content","confirm":"Confirm","publishHint":"Make this content publicly available in all languages.","removeHint":"Delete this draft?","discardHint":"Discard unsaved changes and leave?","leave":"Discard and leave","language":"Preview language","desktop":"Desktop width","mobile":"Mobile width","previewHint":"Private preview. Links are disabled; translations reflect the last saved source.","previewIncomplete":"This content is incomplete. Complete the required fields to preview it.","previewWaiting":"Open this preview from the content editor.","required":"Required","translation_pending":"Translation needs updating","translation_failed":"Automatic translation failed. Use Retry translation to try again. Publishing remains unavailable until all languages are ready.","translation_missing":"Waiting for automatic translation","conflict":"This content changed, or the action is blocked by a content reference. Reload before retrying and check related content before removing it.","forbidden":"You do not have website content permission.","blockType":"Block type","text":"Text","section":"Section","quote":"Quote","highlight":"Highlight","capabilities":"Capabilities","faq":"FAQ","image":"Image","realtime":"Real-time","agents":"Agents","video":"Video","routers":"Routers","inference":"Inference","hero":"Hero","why":"Benefits","steps":"Integration steps","showcase":"Showcase","cards":"Cards","specs":"Specifications","cta":"Call to action","primary":"Primary action","secondary":"Secondary action","guideHref":"Guide URL","docsLink":"Documentation link","tag":"Tag","summary":"Summary","brand":"Brand","facts":"Product facts","metrics":"Metrics","blocks":"Story blocks","modules":"Page sections","enterpriseCard":"Enterprise card","copy":"Card text","titleText":"Title","label":"Label","value":"Value","unit":"Unit","paragraphs":"Paragraphs","items":"Items","question":"Question","answer":"Answer","role":"Role","avatar":"Portrait","src":"Image URL","alt":"Image description","caption":"Caption","href":"Link URL","programs":"Programs","news":"News","ctaHref":"Application URL","keywords":"Keywords","keywordsDescription":"Separate keywords with commas.","image_alt":"Sharing image description","before":"Before emphasis","emphasis":"Emphasis","after":"After emphasis","bold":"Bold","italic":"Italic","link":"Link","enterpriseMentions":"Additional Enterprise customers","icon":"Icon","chooseIcon":"Choose an icon","iconLibrary":"Icon library","customIcons":"Custom","searchIcons":"Search icons","iconCount":"{count} icons","noIcons":"No matching icons","moreIcons":"Show more icons","update":"Update","updated":"Live content updated","unpublishHint":"Take this content offline and return it to draft? It will be removed from public pages, directories and recommendations.","requiredSuffix":" (Required)","dragSort":"Drag to reorder","dragInstructions":"Press Space to pick up an item, use the arrow keys to move it, and press Space to drop or Escape to cancel.","previewPage":"Preview page","directory":"Directory","detailPage":"Detail page","previewWidth":"Preview width","chooseImage":"Choose image","removeImage":"Remove image","imagePending":"Uploads when you save.","actions":"Actions","stepAction":"Step action","noAction":"None","linkAction":"Open link","copyAction":"Copy code","buttonLabel":"Button label","code":"Code","values":"Values","valuesDescription":"One value per line.","body":"Article body","sharingImage":"Sharing image","markdown":{"editor":"Markdown Editor","hint":"Edit Markdown and preview the article layout.","source":"Source editor","preview":"Live preview","empty":"Start writing to see a preview.","linkUrl":"Enter link URL","altText":"Alt text (optional)","linkText":"Link text","heading1":"Heading 1","heading2":"Heading 2","heading3":"Heading 3","bold":"Bold","italic":"Italic","list":"Bulleted list","orderedList":"Numbered list","quote":"Quote","code":"Code block","link":"Insert link","image":"Insert image","divider":"Divider"},"enterpriseTextDescription":"Defaults to the page title. Use **text** for emphasis.","templates":{"upload":"Upload an image","current":"Current illustration","CodePanelIllustration":"Code panel","apiKey":"Fish API Key setup","InstallCommandIllustration":"Install command","VoiceIdPickerIllustration":"Voice selection","ModelPickerIllustration":"Model picker","AccentLocaleIllustration":"Accent and language","SpeechPlayerIllustration":"Speech player","RunOptionsIllustration":"Integration options","StreamingTokensIllustration":"Streaming speech","VoiceTuningIllustration":"Voice tuning","AccentPillsIllustration":"Multilingual accents","CloneCompareIllustration":"Voice cloning","ProductionScaleIllustration":"Production scale","PhoneCallIllustration":"AI phone call","RegionalLatencyIllustration":"Regional latency","ModelRouteIllustration":"Model routing","AiSdkIllustration":"SDK code","GatewayUsageIllustration":"Usage overview"},"illustrationTemplate":"Illustration template","filename":"File name","successLabel":"Success message","showcaseImageHint":"Upload the original image. We center-crop it and round the corners automatically.","imageErrors":{"empty":"The file is empty. Choose another image.","size":"Image must be 20 MB or smaller.","format":"Choose a supported image with a matching file extension.","invalid":"This image is damaged or cannot be decoded.","dimensions":"Invalid dimensions. Raster images must be at most 40 million pixels and 16,383 pixels per side.","svg":"Use a static SVG without scripts or external references.","animation":"The animation exceeds 40 million total frame pixels. Reduce its dimensions or frame count."},"modelName":"Model name","marketing":"Marketing pages","voice_unavailable":"Remove unavailable voices before saving. Voices must be public and ready for speech generation.","campaign":{"canonical":"Canonical URL","canonicalHint":"Optional. Leave blank to use this page’s localized URL.","draftChanges":"Draft changes are not live. Publish to replace the current page.","liveVersion":"The published version is live.","openPage":"Open published page","publishRequirements":"Complete these fields and wait for translation before publishing:","bullets":"Bullet points","demoText":"Demo starter text","demoTextHint":"Use [happy], [whispering] or other supported tags to guide delivery.","features":"Show feature cards","steps":"Show how it works","use_cases":"Show use cases","feature_rows":"Show alternating feature rows","cta":"Show final call to action","dates":"Campaign dates","unavailableVoice":"Unavailable voice","voices":"Campaign voices","voicesHint":"Select up to 50 public voices. Drag to set their display order.","voiceSettings":"Voice settings for this page","voiceOverrideHint":"Leave a field blank to use the original voice information. For the first voice, the page’s demo starter text is used if set.","voiceTags":"Voice tags","featureRowsHint":"Add at least 2 rows; up to 200 rows are supported.","voiceDescriptionLimit":"Up to 5,000 Unicode characters.","voiceTagsLimit":"One tag per line; up to 50 tags, 100 characters each.","voiceDemoLimit":"Up to 30,000 UTF-8 bytes; some characters use multiple bytes.","voiceInvalid":"Check the fields","voiceSaveError":"Fix the highlighted voice fields before saving.","voiceSearch":"Search by voice name or paste a voice ID","noVoices":"No available voices found.","selected":"Selected","sample":"Play {name} sample","generations":"Generations","likes":"Likes","demo":"Try these voices","loadFailed":"Could not load voices. Please retry.","loading":"Loading voices…","retry":"Retry","poweredBy":"Powered by Fish Audio","signup":"Sign up","useVoice":"Use Voice","characters":"{count}/30000 characters","charactersShort":"{count}/30000","share":"Share","bookmarks":"Bookmarks","previousVoice":"Previous voice","nextVoice":"Next voice","pauseSample":"Pause {name} sample","imageGuidance":{"recommended":"Recommended: {width} × {height} px. PNG, JPEG, WebP or GIF; up to 20 MB.","recommended2x":"Recommended: {width} × {height} px (approx. 2× the desktop design). PNG, JPEG, WebP or GIF; up to 20 MB.","hero":"Background behind the heading and voice demo. Use decorative artwork without embedded text; it is center-cropped differently on desktop and mobile.","background":"Decorative background behind the page text. It is center-cropped to fit the screen and content; do not embed essential text in the image.","card":"Images are center-cropped to fill the card. Keep the subject away from the edges and check the desktop and mobile previews.","sharing":"Used in link previews (1.91:1). Keep the title and logo inside the image edges."}}},"finance":{"title":"Finance","description":"Finance analysis, revenue schedules, row-level datasets and the product dictionary. Every read is recorded in the access log.","tabs":{"schedules":"Schedules","datasets":"Datasets","products":"Products","access_log":"Access log","analysis":"Analysis","access":"Access"},"common":{"loading":"Loading…","retry":"Retry","apply":"Apply","from":"From (UTC)","to":"To (UTC)","all":"All","none":"—","yes":"Yes","no":"No","page":"Page {page}","prev":"Previous","next":"Next","load_more":"Load more","cancel":"Cancel"},"pager":{"nav":"Pagination","range":"Rows {first, number}–{last, number}","range_of":"Rows {first, number}–{last, number} of {total, number}","range_at_least":"Rows {first, number}–{last, number} of at least {total, number}","page_of":"Page {page, number} of {count, number}","first":"First page","last":"Last page","go_to_page":"Page {page, number}","page_size":"Rows per page"},"errors":{"invalid":"The server did not accept these parameters.","rate_limited":"The finance read limit for this minute is used up.","log_unavailable":"The finance access log could not be written, so no data was served.","unavailable":"Finance data is unavailable right now.","failed":"The request failed.","agent_unavailable":"The analysis agent is not enabled in this environment.","run_in_flight":"This thread already has a run in progress.","conflict":"This changed in the meantime. Reload and try again.","gone":"The file's content is no longer kept.","file_limit":"A new file would exceed your file storage limit.","preview_mode":"Nothing is sent while previewing another role.","csv_too_large":"Too many rows for a CSV download. Narrow the time window or the filters, or run an export task.","query_too_large":"This query is too large to run. Narrow the time window or the filters."},"time_basis":{"cutover":"Ingest time before the cutover, Stripe event time from it","ingested_at":"Ingest time","event_created":"Event time","purchased_at":"Purchase time","event_timestamp":"RevenueCat event time","month_start":"Month start","period_start":"Period start","billing_period_start":"Billing period start","billing_period_end":"Billing period end","paid_at":"Paid date","due_date":"Due date","effective_date":"Effective date","current_term_end":"Current term end","terminated_at":"Termination date"},"schedules":{"profile_label":"Schedule","profile":{"toc_subscriptions":"toC subscriptions","fishapi_usage":"Fish API usage","internal_excluded":"Internal (excluded)","mobile_b":"Mobile app purchases","enterprise_revenue":"Enterprise revenue","enterprise_ar":"Enterprise receivables (aging)","enterprise_arr":"Enterprise MRR / ARR"},"month_label":"Month (UTC)","month_invalid":"The month must be YYYY-MM.","variant_label":"Variant","variant":{"mrr":"MRR (annual ÷ 12)","no_defer":"No deferral"},"fx_label":"FX rates (USD per unit)","fx_placeholder":"eur:1.08, jpy:0.0068","fx_error":{"entry":"Not a currency:rate pair: {entry}","non_positive":"The {currency} rate must be above zero.","usd":"USD is fixed at 1.","conflict":"{currency} has two different rates.","too_many":"At most {max} rates."},"run":"Run","meta":{"month":"Month","variant":"Variant","time_basis":"Month basis","cutover":"Cutover","fx":"FX rates","enterprise_excluded":"Enterprise invoices excluded","versions":"Versions","versions_value":"engine {engine} · config {config} · dictionary {dictionary}"},"row_count":"{count, plural, one {# row} other {# rows}}","total_usd":"Total (USD)","usd_incomplete":"The USD total leaves out {currencies} (no FX rate).","totals_empty":"No rows in this schedule for the month.","all_tiers":"All tiers","col":{"tier":"Tier","currency":"Currency","rows":"Rows","amount":"Amount","usd":"USD","reason":"Reason","product":"Product","time":"Time (UTC)","event":"Event","customer":"Customer","recognized":"Recognized","installment":"Installment"},"refunds_title":"Stripe refunds in the month (not netted)","excluded_title":"Excluded","excluded_empty":"Nothing excluded.","reason":{"internal_customer":"Internal customer","excluded_customer":"Excluded customer","enterprise_invoice":"Enterprise invoice","non_revenue_product":"Non-revenue product","unmapped_product":"Product not in the dictionary","duplicate_payment_intent":"Duplicate payment intent","invalid_row":"Invalid row","non_production":"Not production","unsupported_event_type":"Unsupported event type"},"unmapped_title":"Products missing from the dictionary","unmapped_counted_excluded":"Counted as excluded.","unmapped_counted_in":"Counted in {profile}.","unmapped_empty":"Every product is in the dictionary.","no_product":"No product","detail_title":"Rows","detail_load":"Load rows","detail_rows":"{count, plural, one {# schedule row} other {# schedule rows}}","detail_excluded":"{count, plural, one {# excluded row} other {# excluded rows}}","rows_empty":"No rows.","ask_about":"Ask about this","enterprise":{"variant":{"mrr":"Accrual","no_defer":"Cash received"},"meta":{"as_of":"As of","built_at":"Records built","considered":"Records considered","considered_value":"{invoices, plural, one {# invoice} other {# invoices}} · {contracts, plural, one {# contract} other {# contracts}}","statuses":"Statuses counted","versions_value":"engine {engine} · derivation {derivation}"},"total":{"enterprise_revenue":"Total (USD)","enterprise_ar":"Open (USD)","enterprise_arr":"ARR at month end (USD)"},"tier_col":{"enterprise_revenue":"Component","enterprise_ar":"Aging","enterprise_arr":"Change"},"component":{"commitment":"Commitment","overage":"Overage","adjustments":"Adjustments","final":"Final invoice","manual":"Manual invoice","one_time":"One-time","payg":"Pay as you go","trueup":"True-up","qbo_direct":"QuickBooks direct","cash":"Cash received","fee":"One-time fee"},"bucket":{"current":"Not yet due","d1_30":"1–30 days past due","d31_60":"31–60 days past due","d61_90":"61–90 days past due","d90_plus":"Over 90 days past due"},"change":{"new":"New","expansion":"Expansion","contraction":"Contraction","churn":"Churn","retained":"Retained","mrr_end":"MRR at month end","arr_end":"ARR at month end"},"basis":{"amortised":"Spread","paid":"Paid"},"all_row":"Total","by_customer_title":"By customer","by_customer_empty":"No customer totals.","col":{"company":"Company","invoice":"Invoice","component":"Component","basis":"Basis","period":"Period","issued":"Issued","due":"Due","days_past_due":"Days past due","total":"Total","paid":"Paid","open":"Open","contracts":"Contracts","mrr":"MRR","arr":"ARR","previous_mrr":"Previous MRR","delta":"Change","record":"Record"},"reason":{"draft_invoice":"Draft invoice","void_invoice":"Void invoice","test_invoice":"Test invoice","pending_approval":"Pending approval","zero_amount":"Zero amount","paid_without_timestamp":"Paid without a date","tax":"Tax (not revenue)","no_due_date":"No due date","overpaid":"Overpaid","no_customer":"No customer"}}},"datasets":{"dataset_label":"Dataset","name":{"stripe_payments":"Stripe payments","stripe_invoices":"Stripe paid invoices","stripe_refunds":"Stripe refunds","stripe_disputes":"Stripe disputes","rc_events":"App store purchases (RevenueCat)","customer_months":"Customer months (derived)","subscription_periods":"Subscription periods (derived)","enterprise_invoices":"Enterprise invoices","enterprise_contracts":"Enterprise contracts","enterprise_usage_months":"Enterprise usage per month"},"time_basis_label":"Time basis","filter":{"customer_id":"Customer ID","currency":"Currency","product_id":"Product ID","type":"Event type","include_internal":"Include internal test rows","invoice_type":"Invoice type","contract_kind":"Contract kind","product":"Product"},"groups":{"title":"Conditions","and":"AND","or":"OR","add_condition":"Add condition","add_group":"Add OR group","remove_condition":"Remove condition","remove_group":"Remove group","field":"Field","operator":"Operator","value":"Value","value_high":"To","values_hint":"Comma-separated","op":{"eq":"is","ne":"is not","in":"is one of","prefix":"starts with","gte":"is at least","lte":"is at most","between":"is between","is_null":"is empty","is_not_null":"is not empty"},"limit":"No more conditions can be added.","error":{"missing_value":"Enter a value.","not_integer":"Enter a whole number.","not_number":"Enter a number.","not_day":"Enter a date.","range_order":"The first value must not exceed the second.","too_many_values":"At most {max, number} values.","too_long":"At most {max, number} characters."}},"info":{"rows":"Rows (estimate)","ingested_range":"Ingested","built_at":"Built","last_closed_day":"Last closed day","last_tail":"Last update"},"col":{"time":"Time (UTC)","event":"Event","row":"Row","customer":"Customer","charge":"Charge","app_user":"App user","tier":"Tier","billing_reason":"Billing reason","status":"Status","type":"Type","amount":"Amount","company":"Company","product":"Product"},"expand_row":"Show fields","collapse_row":"Hide fields","empty":"No datasets.","rows_empty":"No rows match these filters.","query_truncated":"The first {count, number} matching rows are shown; more rows match.","download_csv":"Download CSV","lines_label":"Invoice lines","lines_truncated":"Stripe sent more lines than are stored for this invoice.","lines_not_in_query":"Invoice lines are not part of results with conditions."},"fields":{"event_id":"Event ID","event_created":"Event time","ingested_at":"Ingest time","ingested_at_fallback":"Ingest time copied from event time","materialized_at":"Row last changed","pi_id":"Payment intent ID","pi_created":"Payment intent created","payment_intent_id":"Payment intent ID","status":"Status","amount_major":"Amount","amount_received_major":"Amount received","amount_paid_major":"Amount paid","amount_refunded_major":"Amount refunded","charge_amount_major":"Charge amount","disputed_amount_major":"Disputed amount","unit_amount":"Unit amount","currency":"Currency","customer_id":"Customer ID","invoice_id":"Invoice ID","matched_invoice_event_id":"Matched invoice event ID","subscription_id":"Subscription ID","billing_reason":"Billing reason","period_start":"Period start","period_end":"Period end","primary_product_id":"Primary product ID","lines_truncated":"Lines cut off","is_internal_customer":"Internal customer","internal_basis":"Internal-customer basis","is_enterprise_invoice":"Enterprise invoice","product_id":"Product ID","product_kind":"Product kind","product_tier":"Tier","recurring_interval":"Billing interval","charge_id":"Charge ID","charge_created":"Charge created","fully_refunded":"Fully refunded","dispute_id":"Dispute ID","dispute_created":"Dispute created","type":"Event type","environment":"Environment","store":"Store","app_user_id":"App user ID","original_app_user_id":"Original app user ID","transaction_id":"Transaction ID","original_transaction_id":"Original transaction ID","period_type":"Period type","purchased_at":"Purchase time","expiration_at":"Expiration time","price":"Price","price_in_purchased_currency":"Price in purchase currency","country_code":"Country","renewal_number":"Renewal number","cancel_reason":"Cancel reason","commission_percentage":"Store commission rate","takehome_percentage":"Take-home rate","tax_percentage":"Tax rate","price_id":"Price ID","plan_product":"Plan product ID","quantity":"Quantity","interval":"Interval","interval_count":"Interval count","plan_interval":"Plan interval","api_version":"API version","derivation_version":"Derivation version","config_revision":"Config revision","id":"Row ID","month":"Month","month_start":"Month start","payments":"Payments","revenue_major":"Revenue","refunds":"Refund events","refunds_major":"Refunded","net_major":"Net","first_payment_month":"First payment month","last_payment_month":"Last payment month","is_internal":"Internal customer","is_enterprise":"Enterprise customer","segment":"Period number","is_annual":"Annual","latest_invoice_amount_major":"Latest invoice amount","paid_major":"Paid in period","invoices":"Paid invoices","first_invoice_at":"First invoice","last_invoice_at":"Last invoice","source":"Source","source_updated_at":"Source record updated","invoice_number":"Invoice number","contract_id":"Contract ID","team_id":"Team ID","company_name":"Company","invoice_type":"Invoice type","approval_status":"Approval","billing_channel":"Billing channel","paid_channel":"Paid via","billing_model":"Billing model","billing_period_start":"Billing period start","billing_period_end":"Billing period end","usage_period_start":"Usage period start","usage_period_end":"Usage period end","total_amount_major":"Invoice total","tax_amount_major":"Tax","paid_amount_major":"Amount paid","minimum_commitment_major":"Minimum commitment","included_credits_granted_major":"Included credits granted","actual_usage_amount_major":"Billed usage","overage_amount_major":"Overage","credit_rollover_applied_major":"Rolled-over credit applied","surcharge_amount_major":"Surcharge","credit_grant_amount_major":"Credit granted","has_adjustments":"Has manual adjustments","invoice_date":"Invoice date","due_date":"Due date","sent_at":"Sent","paid_at":"Paid","credits_granted_at":"Credits granted","created_at":"Created","stripe_invoice_id":"Stripe invoice ID","quickbooks_invoice_id":"QuickBooks invoice ID","quickbooks_invoice_number":"QuickBooks invoice number","mercury_invoice_id":"Mercury invoice ID","contract_kind":"Contract kind","contract_type":"Document type","pricing_model":"Pricing model","billing_frequency":"Billing frequency","payment_term":"Payment term","payment_term_days":"Payment term (days)","due_from_invoice_date":"Due from invoice date","effective_date":"Effective date","billable_start_at":"Billable from","end_date":"End date","delayed_start_date":"Delayed start","early_access_start_at":"Early access from","current_term_start":"Current term start","current_term_end":"Current term end","non_renewal_notice_at":"Non-renewal notice","terminated_at":"Terminated","wind_down_at":"Wind-down from","wind_down_ends_at":"Wind-down ends","signed_at":"Signed","term_duration_months":"Term (months)","renewal_term_months":"Renewal term (months)","trial_months":"Trial (months)","term_auto_renew":"Auto-renews","monthly_commit_major":"Monthly commitment","included_credits_value_major":"Included credits value","one_time_amount_major":"One-time amount","one_time_credits_value_major":"One-time credits value","per_unit_rate":"Per-unit rate (per 1M)","overage_rate":"Overage rate (per 1M)","overage_premium_pct":"Overage premium (%)","discount_percent":"Discount (%)","revenue_share_rate_per_million":"Revenue share (per 1M)","minimum_assessment_period_months":"Minimum assessment period (months)","minimum_assessment_first_amount_major":"First assessment minimum","pricing_tiers_count":"Pricing tiers","supersedes_id":"Supersedes","governing_msa_id":"Governing MSA","scheduled_replace_contract_id":"Scheduled replacement","template_id":"Template ID","template_version":"Template version","msa_version":"MSA version","signing_entity":"Signing entity","revenue_share_active":"Revenue share active","zero_data_retention":"Zero data retention","manual_usage_mode":"Manual usage mode","credit_grant_timing":"Credit grant timing","termination_credit_policy":"Termination credit policy","one_time_credit_disposition":"One-time credit disposition","product":"Product","family":"Metered family","sku":"SKU","base_unit":"Unit","requests":"Count","usage_major":"Metered usage","contract_amount_usd":"Contract-rate amount (USD)","counts_toward_commitment":"Counts toward commitment","billing_mode":"Billing mode","rate_basis":"Rate basis","unbilled_reason":"Not invoiced because","coverage_start":"Covered from","coverage_end":"Covered until","full_month":"Full month","team_segments":"Team segments","fee_lines_count":"One-time fees","fee_lines_total_major":"One-time fees total"},"values":{"family":{"agent":"Agents","video":"Video","image":"Images"},"base_unit":{"utf8_byte":"UTF-8 bytes","audio_second":"Audio seconds","request":"Requests","agent_second":"Agent seconds","transfer_second":"Transfer seconds","rental_day":"Rental days","llm_token":"LLM tokens","output":"Outputs","video_ms":"Video milliseconds","pixel":"Pixels"},"billing_mode":{"contract":"Contract (invoiced)","free_window":"Free period","wallet":"API credit"},"rate_basis":{"contract":"Contract rate","published":"Published price"},"unbilled_reason":{"free_window":"Free period","wallet":"Paid from API credit"}},"products":{"dictionary_title":"Product dictionary","dictionary_empty":"The dictionary is empty.","dictionary_version":"Version {version}","source_seed":"Seed values (not stored yet)","col":{"product":"Product","stripe_name":"Stripe name","tier":"Tier","kind":"Kind","annual":"Annual","stripe_active":"Active in Stripe","source":"Source","version":"Version","updated":"Updated","invoices":"Invoices","invoice_lines":"Invoice lines","currencies":"Currencies","first_seen":"First seen","last_seen":"Last seen"},"unmapped_title":"Products missing from the dictionary","window_required":"Both dates are required.","lines_without_product":"{count, plural, one {# invoice line} other {# invoice lines}} without a product","truncated":"The list is cut off at the server's limit.","unmapped_empty":"Every product in this window is in the dictionary."},"access_log":{"filter_who":"Rows","who_mine":"Mine","who_everyone":"Everyone","filter_actor":"User ID","filter_route":"Route","filter_dataset":"Dataset","col":{"time":"Time (UTC)","actor":"User","credential":"Credential","route":"Route","dataset":"Dataset / schedule","window":"Window (UTC)","rows":"Rows","status":"Status","ip":"IP"},"credential":{"session":"Session","api_key":"API key"},"since":"Since","empty":"No access recorded for these filters."},"analysis":{"view":{"label":"View","conversation":"Conversation","files":"My files"},"model":"Model: {model}","templates":{"label":"Templates","clear":"Remove template","manage":"Manage templates","manager_title":"Templates","builtin_title":"Built-in","shared_title":"Shared","mine_title":"Mine","shared_badge":"Shared","owner":"Shared by {owner}","thread_uses":"This thread uses {template}.","gone":"a removed template","empty_mine":"You have no templates yet.","empty_shared":"Nobody has shared a template yet.","use":"Use","copy":"Copy to mine","copied":"Copied to your templates.","edit":"Edit","delete":"Delete","confirm_delete":"Delete template","share":"Share with the finance team","new":"New template","save_question":"Save as template","editor":{"title_new":"New template","title_edit":"Edit template","name":"Name","description":"Description","question":"Question","instructions":"Instructions for the agent","save":"Save","saving":"Saving…","back":"Back to templates","name_required":"Enter a name.","content_required":"Enter a question or instructions."},"error":{"name_taken":"You already have a template with this name.","version_conflict":"This template changed since you opened it. Open it again to edit the latest version.","not_found":"This template no longer exists.","not_owner":"Only its owner can change this template."},"builtin":{"monthly_close":{"name":"Monthly close","description":"The four schedules in both variants at row level, enterprise revenue and AR, reconciliation against the previous month, exclusions and unmapped products; an XLSX close pack and a memo.","question":"Prepare the monthly close pack for the last closed month."},"investor_update":{"name":"Investor update","description":"Monthly / quarterly investor update: revenue, growth, MRR / ARR, product lines and tiers, retention and churn, refund and dispute rates; an XLSX (Summary / By product / Cohort) and a one-page summary.","question":"Prepare the investor update for the last closed quarter: revenue and growth, MRR / ARR, product lines, retention and churn, refunds and disputes."},"strategic_review":{"name":"Strategic review","description":"Product mix and tier migration, channels, currencies, pricing signals and concentration; an XLSX and the key findings.","question":"Prepare the strategic review of the last 12 closed months against the 12 before: product mix and tier migration, channels, currencies, pricing signals and concentration."},"enterprise_review":{"name":"Enterprise review","description":"Enterprise customers over dataset E: ARR and changes, revenue (accrual and cash), collections and AR aging, renewals, concentration, commitment vs usage; an XLSX and a memo.","question":"Review our enterprise customers for the last closed quarter."}}},"threads":{"title":"Threads","new":"New thread","empty":"No threads yet.","untitled":"Untitled thread","turns":"{count, plural, one {# turn} other {# turns}}","live":"In progress"},"context":{"title":"Schedule","clear":"Remove","fx":"FX {fx}"},"suggested_question":"Summarize the {profile} schedule for {month} ({variant}): totals by tier and currency, and what was excluded.","suggested_question_enterprise":"Summarize the {profile} schedule for {month}: the totals, the largest customers and what was excluded.","question":{"label":"Question","label_continue":"Follow-up","placeholder":"e.g. How did MRR move month over month?","hint":"Ctrl/⌘ + Enter to send","ask":"Ask","asking":"Sending…"},"status":{"pending":"Queued","running":"Running","done":"Done","failed":"Failed","cancelled":"Cancelled"},"run":{"cancel":"Cancel run","cancel_requested":"Cancelling…","answer_pending":"Working…","no_answer":"No answer was recorded.","failed":"The run failed.","cancelled":"The run was cancelled.","usage":"{requests, plural, one {# model request} other {# model requests}} · {tool_calls, plural, one {# tool call} other {# tool calls}}","attached":"Showing the run already in progress on this thread.","earlier_turns":"{count, plural, one {# earlier turn} other {# earlier turns}}","show_details":"Show details","ask_again":"Ask again","preset":"{preset} · revision {revision}"},"trace":{"title":"{count, plural, =0 {Tool calls} one {Tool calls (# row)} other {Tool calls (# rows)}}","waiting":"Waiting for the first rows…","empty":"Nothing was recorded for this run.","truncated":"The trace was capped; later rows were not recorded."},"artifacts":{"title":"Tables","empty":"No tables.","kind":{"query":"Query","sql":"SQL","schedule_totals":"Schedule totals","schedule_excluded_summary":"Excluded summary","aggregate":"Aggregate"},"rows":"{shown, number} of {total, number} rows","rows_all":"{count, plural, one {# row} other {# rows}}","truncated":"Only the first {kept, number} rows were kept.","basis":"config {config} · dictionary {dictionary} · engine {engine} · snapshot {snapshot}","args":"Arguments"},"recipe":{"title":"How this was computed","step":{"query":"Query","sql":"SQL","run_schedule":"Schedule","markdown":"Report text","create_file":"File"},"schedule_step":"{profile} · {month} · {variant} · {table}","schedule_step_no_variant":"{profile} · {month} · {table}","table":{"totals":"Totals","excluded_summary":"Excluded summary","by_customer":"By customer","rows":"Rows"},"file_step":"{name} · {format} · {detail}","basis_title":"Basis","basis_original":"Original basis","basis":{"config_revision":"Config revision","dictionary_version":"Dictionary version","snapshot_version":"Snapshot","fx":"FX rates","time_basis":"Time basis","schedule_engine_version":"Engine version","generated_at":"Generated (UTC)"}},"files":{"title":"Files","empty":"No files.","format":{"csv":"CSV","xlsx":"XLSX","md":"Markdown","json":"JSON"},"rows":"{count, plural, one {# row} other {# rows}}","sheets":"Sheets: {sheets}","truncated":"Cut off at the file size limit.","expires_in":"{days, plural, =0 {Expires today — download it} one {Expires in # day — download it} other {Expires in # days — download it}}","expired":"Expired","deleted":"Deleted","regenerated_from":"Regenerated from an earlier file","download":"Download","downloading":"Downloading…","regenerate":"Regenerate","regenerating":"Regenerating…","delete":"Delete","deleting":"Deleting…","confirm_delete":"Delete now","quota":"{used} of {limit} used · {files, plural, one {# file} other {# files}}","quota_label":"File storage used","retention":"Files are kept for {days, plural, one {# day} other {# days}}.","group_run":"Run of {date}","open_thread":"Open thread"}}}}