226 lines
9.7 KiB
TypeScript
226 lines
9.7 KiB
TypeScript
export const API_ENDPOINTS = {
|
|
AUTH: {
|
|
LOGIN: '/auth/token',
|
|
ME: '/auth/me',
|
|
CHANGE_PASSWORD: '/auth/change-password',
|
|
PREFERENCES: '/auth/preferences',
|
|
SET_ALIYUN_KEY: '/auth/aliyun-key',
|
|
VERIFY_ALIYUN_KEY: '/auth/aliyun-key/verify',
|
|
},
|
|
TTS: {
|
|
LANGUAGES: '/tts/languages',
|
|
SPEAKERS: '/tts/speakers',
|
|
CUSTOM_VOICE: '/tts/custom-voice',
|
|
VOICE_DESIGN: '/tts/voice-design',
|
|
VOICE_CLONE: '/tts/voice-clone',
|
|
},
|
|
JOBS: {
|
|
LIST: '/jobs',
|
|
GET: (id: number) => `/jobs/${id}`,
|
|
DELETE: (id: number) => `/jobs/${id}`,
|
|
AUDIO: (id: number) => `/jobs/${id}/download`,
|
|
},
|
|
USERS: {
|
|
LIST: '/users',
|
|
CREATE: '/users',
|
|
GET: (id: number) => `/users/${id}`,
|
|
UPDATE: (id: number) => `/users/${id}`,
|
|
DELETE: (id: number) => `/users/${id}`,
|
|
},
|
|
VOICE_DESIGNS: {
|
|
LIST: '/voice-designs',
|
|
CREATE: '/voice-designs',
|
|
GET: (id: number) => `/voice-designs/${id}`,
|
|
UPDATE: (id: number) => `/voice-designs/${id}`,
|
|
DELETE: (id: number) => `/voice-designs/${id}`,
|
|
},
|
|
} as const
|
|
|
|
export const LANGUAGE_NAMES: Record<string, string> = {
|
|
'Auto': '自动检测',
|
|
'Chinese': '中文',
|
|
'English': '英语',
|
|
'Japanese': '日语',
|
|
'Korean': '韩语',
|
|
'German': '德语',
|
|
'French': '法语',
|
|
'Russian': '俄语',
|
|
'Portuguese': '葡萄牙语',
|
|
'Spanish': '西班牙语',
|
|
'Italian': '意大利语',
|
|
'Cantonese': '粤语',
|
|
}
|
|
|
|
export const SPEAKER_DESCRIPTIONS_ZH: Record<string, string> = {
|
|
'Vivian': '女性,专业清晰',
|
|
'Serena': '女性,温柔温暖',
|
|
'Uncle_Fu': '男性,成熟权威',
|
|
'Dylan': '男性,年轻活力',
|
|
'Eric': '男性,沉稳稳重',
|
|
'Ryan': '男性,友好随和',
|
|
'Aiden': '男性,低沉浑厚',
|
|
'Ono_Anna': '女性,可爱活泼',
|
|
'Sohee': '女性,柔和悦耳',
|
|
}
|
|
|
|
export const DEFAULT_FORM_VALUES = {
|
|
CUSTOM_VOICE: {
|
|
text: '',
|
|
language: 'Auto',
|
|
speaker: '',
|
|
instruct: '',
|
|
},
|
|
VOICE_DESIGN: {
|
|
text: '',
|
|
language: 'Auto',
|
|
instruct: '',
|
|
},
|
|
VOICE_CLONE: {
|
|
text: '',
|
|
ref_audio: null,
|
|
ref_text: '',
|
|
},
|
|
} as const
|
|
|
|
export const PRESET_INSTRUCTS = [
|
|
{
|
|
label: '开心',
|
|
instruct: '非常开心',
|
|
text: '今天天气真好,我们一起去公园玩吧!',
|
|
},
|
|
{
|
|
label: '悲伤',
|
|
instruct: '很悲伤,带着哭腔',
|
|
text: '对不起,我真的尽力了,但还是让你失望了。',
|
|
},
|
|
{
|
|
label: '愤怒',
|
|
instruct: '非常愤怒,语气激烈',
|
|
text: '你怎么能这样做!这简直太过分了!',
|
|
},
|
|
{
|
|
label: '温柔关怀',
|
|
instruct: '温柔体贴,语速平缓,音调柔和,充满关怀和安慰',
|
|
text: '别担心,一切都会好起来的。我会一直陪在你身边。',
|
|
},
|
|
{
|
|
label: '兴奋激动',
|
|
instruct: '非常兴奋激动,语速加快,音调上扬,充满活力和热情',
|
|
text: '太棒了!我们终于成功了!这真是太令人激动了!',
|
|
},
|
|
{
|
|
label: '焦虑紧张',
|
|
instruct: '焦虑不安的语气,语速略快,音调不稳定,带有紧张和担忧',
|
|
text: '怎么办?时间不够了,我们来不及了,这可怎么办才好?',
|
|
},
|
|
{
|
|
label: '专业播音员',
|
|
instruct: '专业新闻播音员。语速:标准播音语速,吐字清晰。情绪:沉稳专业,不带个人感情色彩。语调:平直中略有起伏,重点词汇加重。性格特征:严谨、客观、权威。',
|
|
text: '据新华社报道,我国航天事业取得重大突破,神舟系列飞船成功完成载人飞行任务。',
|
|
},
|
|
{
|
|
label: '温暖导师',
|
|
instruct: '温暖导师。语速:不急不缓,娓娓道来。音调:平稳中带有鼓励性上扬。情绪:关怀、耐心、鼓励。性格:善解人意,循循善诱,充满正能量。',
|
|
text: '每个人都有自己的节奏,不要着急。慢慢来,你一定能找到属于自己的那条路。',
|
|
},
|
|
{
|
|
label: '活力少年',
|
|
instruct: '充满活力。语速:偏快,吐字利落。情绪:开朗乐观,精力充沛。语调:跳跃感强,抑扬顿挫。性格:外向、自信、热情,充满青春气息。',
|
|
text: '哇,这个游戏太酷了!咱们组队一起玩吧,我保证带你们飞!',
|
|
},
|
|
] as const
|
|
|
|
export const PRESET_VOICE_DESIGNS = [
|
|
{
|
|
label: '甜美少女',
|
|
instruct: '年轻女性,音色清甜明亮,略带少女的娇俏感。音高偏高,语调活泼富于变化。语速适中,吐字清晰。情绪愉悦轻松,充满青春活力。适合场景:客服语音、语音助手、娱乐内容。',
|
|
text: '您好,很高兴为您服务!请问有什么可以帮助您的吗?',
|
|
},
|
|
{
|
|
label: '成熟女性',
|
|
instruct: '成熟知性的女性声音,音色温润饱满,带有职业女性的干练气质。音高中等,音域稳定。语速适中偏快,条理清晰。情绪从容自信,传递专业可靠的感觉。',
|
|
text: '根据最新的市场分析报告,本季度业绩呈现稳步增长态势,各项指标均达到预期目标。',
|
|
},
|
|
{
|
|
label: '磁性男声',
|
|
instruct: '中低音男性声音,音色深沉磁性,富有感染力。语速偏慢,节奏沉稳。音量适中,声音浑厚有力。适合情感类、故事讲述、品牌宣传等场景。',
|
|
text: '夜深了,城市的灯火依然璀璨。每一盏灯下,都有一个关于梦想的故事。',
|
|
},
|
|
{
|
|
label: '活力青年',
|
|
instruct: '充满活力的年轻男性,音色明亮清晰,带有青春朝气。语速较快,节奏感强。情绪热情积极,富有感染力。适合运动、游戏、娱乐等场景。',
|
|
text: '兄弟们,准备好了吗?今天我们要挑战全新的副本,冲冲冲!',
|
|
},
|
|
{
|
|
label: '权威专家',
|
|
instruct: '中年男性专家形象,音色沉稳权威,声音浑厚有力。语速适中,吐字清晰标准。情绪严肃专业,传递信任感和专业度。适合学术讲座、知识科普、正式场合。',
|
|
text: '从历史发展的角度来看,科技创新始终是推动社会进步的核心动力。',
|
|
},
|
|
{
|
|
label: '温柔妈妈',
|
|
instruct: '温柔慈爱的中年女性,音色柔和温暖,充满母性关怀。语速舒缓,音调平和安抚。情绪温暖体贴,给人安全感。适合儿童内容、情感陪伴、睡前故事。',
|
|
text: '宝贝,该睡觉了。妈妈给你讲个故事,从前有一只小兔子,它住在森林里...',
|
|
},
|
|
{
|
|
label: '播音主持',
|
|
instruct: '专业播音主持人声音,音色饱满圆润,标准普通话发音。音高适中,音域宽广。语速标准,节奏把控精准。情绪专业沉稳,字正腔圆。适合新闻播报、节目主持、正式朗读。',
|
|
text: '各位听众朋友大家好,欢迎收听今天的节目。接下来为您带来今日要闻。',
|
|
},
|
|
{
|
|
label: '俏皮少女',
|
|
instruct: '俏皮可爱的少女音色,声音轻快灵动,带有少女特有的活泼感。音调偏高且富于变化,语气中带有撒娇和卖萌的元素。语速时快时慢,吐字清晰但带有可爱的语气词。',
|
|
text: '哎呀,人家不是故意的嘛~你就原谅我一次好不好?拜托拜托啦~',
|
|
},
|
|
] as const
|
|
|
|
export const PRESET_REF_TEXTS = [
|
|
{
|
|
label: '自然生活',
|
|
text: '在这个快节奏的世界里,我们总是在赶路,却忘了停下来听听内心的声音。其实,生活不仅仅是眼前的忙碌,还有远方的诗意和偶然发现的小确幸。希望这段录音,能像午后的微风一样,带给你一点点温柔和力量。无论未来如何变化,请记得保持对生活的热爱,去拥抱每一个灿烂的明天。',
|
|
},
|
|
{
|
|
label: '专业正式',
|
|
text: '科技的进步让我们能够跨越时空的界限,用数字化的方式延续情感与记忆。语音克隆不仅是精密的代码逻辑,更是连接人类与未来智能的纽带。通过深度学习与神经网络的不断演进,每一个细微的语调起伏,都能被精准地捕捉。让我们共同见证,技术如何赋予声音更具生命力的表达。',
|
|
},
|
|
{
|
|
label: '文学叙事',
|
|
text: '春天的风拂过柳梢,带着泥土的芬芳和花开的消息。你是否也曾期待过,在某个街角的转弯处,遇见那个久违的自己?无论是高亢的欢笑,还是低沉的呢喃,每一种声音都是独一无二的生命印记。让我们在此刻记录当下,让回忆在流淌的声音里,化作永恒的旋律。',
|
|
},
|
|
] as const
|
|
|
|
export const POLL_INTERVAL = 2000
|
|
|
|
export const TIMEOUT_WARNING = 30000
|
|
|
|
export const MAX_FILE_SIZE = 10 * 1024 * 1024
|
|
|
|
export const MIN_AUDIO_DURATION = 3
|
|
|
|
export const ADVANCED_PARAMS_INFO = {
|
|
max_new_tokens: {
|
|
label: '最大生成长度',
|
|
description: '控制生成音频的最大长度。值越大,可生成的音频越长,但处理时间也会增加',
|
|
tooltip: '建议值: 2048-4096。超过 8000 可能导致生成时间过长',
|
|
},
|
|
temperature: {
|
|
label: '温度',
|
|
description: '控制生成的随机性。值越高生成越随机多样,值越低越稳定一致',
|
|
tooltip: '推荐范围: 0.1-0.5 (稳定) | 0.6-1.0 (多样) | >1.0 (创意)',
|
|
},
|
|
top_k: {
|
|
label: 'Top K',
|
|
description: '采样时只考虑概率最高的 K 个候选。值越小生成越确定,越大越多样',
|
|
tooltip: '常用值: 20-50。过小可能导致重复,过大可能不连贯',
|
|
},
|
|
top_p: {
|
|
label: 'Top P (核采样)',
|
|
description: '累积概率阈值,只从累积概率达到 P 的候选中采样。控制输出多样性',
|
|
tooltip: '推荐值: 0.7-0.9。0.9 更自然多变,0.7 更稳定可控',
|
|
},
|
|
repetition_penalty: {
|
|
label: '重复惩罚',
|
|
description: '惩罚重复内容的生成。值越大越避免重复,但过大可能影响自然度',
|
|
tooltip: '建议范围: 1.0-1.2。1.0 表示无惩罚,1.05 适合大多数场景',
|
|
},
|
|
} as const
|