diff --git a/modules/tts/tts-overlay.html b/modules/tts/tts-overlay.html index 421d13f..cc28524 100644 --- a/modules/tts/tts-overlay.html +++ b/modules/tts/tts-overlay.html @@ -12,9 +12,8 @@ * { margin: 0; padding: 0; box-sizing: border-box; } :root { - /* ═══════════════════════════════════════════════════════════════ - 极简科技风配色 - 黑白灰 + 单色点缀 - ═══════════════════════════════════════════════════════════════ */ + /* ══════════════════════════════════════════════════════════════? 极简科技风配?- 黑白?+ 单色点缀 + ══════════════════════════════════════════════════════════════?*/ /* 背景层次 */ --bg-primary: #0a0a0c; @@ -34,12 +33,12 @@ --border-light: rgba(255, 255, 255, 0.12); --border-focus: rgba(140, 200, 255, 0.4); - /* 唯一强调色 - 淡青蓝(科技感) */ + /* 唯一强调?- 淡青蓝(科技感) */ --accent: #8cc8ff; --accent-soft: rgba(140, 200, 255, 0.1); --accent-glow: rgba(140, 200, 255, 0.15); - /* 功能色 - 极低饱和度 */ + /* 功能?- 极低饱和?*/ --success: #90d4a0; --success-soft: rgba(144, 212, 160, 0.08); --error: #e08080; @@ -83,9 +82,8 @@ body { min-height: -webkit-fill-available; } -/* ═══════════════════════════════════════════════════════════════ - Header - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Header + ══════════════════════════════════════════════════════════════?*/ .app-header { display: flex; @@ -167,9 +165,8 @@ body { border-color: var(--border-light); } -/* ═══════════════════════════════════════════════════════════════ - Layout - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Layout + ══════════════════════════════════════════════════════════════?*/ .app-body { display: flex; @@ -200,9 +197,8 @@ body { -webkit-overflow-scrolling: touch; } -/* ═══════════════════════════════════════════════════════════════ - Navigation - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Navigation + ══════════════════════════════════════════════════════════════?*/ .nav-item { display: flex; @@ -232,9 +228,8 @@ body { margin: 8px 0; } -/* ═══════════════════════════════════════════════════════════════ - Views - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Views + ══════════════════════════════════════════════════════════════?*/ .view { display: none; @@ -263,9 +258,8 @@ body { color: var(--text-muted); } -/* ═══════════════════════════════════════════════════════════════ - Cards - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Cards + ══════════════════════════════════════════════════════════════?*/ .card { background: var(--bg-secondary); @@ -284,9 +278,8 @@ body { letter-spacing: 0.08em; } -/* ═══════════════════════════════════════════════════════════════ - Forms - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Forms + ══════════════════════════════════════════════════════════════?*/ .form-group { margin-bottom: 16px; } .form-group:last-child { margin-bottom: 0; } @@ -354,9 +347,8 @@ select.input { cursor: pointer; } color: var(--text-secondary); } -/* ═══════════════════════════════════════════════════════════════ - Buttons - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Buttons + ══════════════════════════════════════════════════════════════?*/ .btn { display: inline-flex; @@ -414,9 +406,8 @@ select.input { cursor: pointer; } pointer-events: none; } -/* ═══════════════════════════════════════════════════════════════ - Slider - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Slider + ══════════════════════════════════════════════════════════════?*/ .slider-row { display: flex; align-items: center; gap: 12px; } .slider-row input[type="range"] { @@ -435,9 +426,8 @@ select.input { cursor: pointer; } font-variant-numeric: tabular-nums; } -/* ═══════════════════════════════════════════════════════════════ - Rules Editor - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Rules Editor + ══════════════════════════════════════════════════════════════?*/ .rules-editor { border: 1px solid var(--border); @@ -519,9 +509,7 @@ select.input { cursor: pointer; } color: var(--error); } -/* ═══════════════════════════════════════════════════════════════ - Current Voice Card - 极简版 - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Current Voice Card - 极简? ══════════════════════════════════════════════════════════════?*/ .current-voice-card { background: var(--bg-tertiary); @@ -584,9 +572,7 @@ select.input { cursor: pointer; } margin-top: 2px; } -/* ═══════════════════════════════════════════════════════════════ - Source Badge - 极简黑白版 - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Source Badge - 极简黑白? ══════════════════════════════════════════════════════════════?*/ .source-badge { display: inline-flex; @@ -599,7 +585,7 @@ select.input { cursor: pointer; } letter-spacing: 0.02em; } -/* 试用 - 白色/浅色调 */ +/* 试用 - 白色/浅色?*/ .source-badge.trial { background: var(--tag-free-bg); color: var(--tag-free); @@ -613,9 +599,7 @@ select.input { cursor: pointer; } border: 1px solid rgba(140, 200, 255, 0.15); } -/* ═══════════════════════════════════════════════════════════════ - Voice Tabs - 极简版 - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Voice Tabs - 极简? ══════════════════════════════════════════════════════════════?*/ .voice-tabs { display: flex; @@ -666,9 +650,8 @@ select.input { cursor: pointer; } .voice-panel { display: none; } .voice-panel.active { display: block; } -/* ═══════════════════════════════════════════════════════════════ - Test Voice Box - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Test Voice Box + ══════════════════════════════════════════════════════════════?*/ .test-voice-box { background: var(--bg-tertiary); @@ -694,9 +677,8 @@ select.input { cursor: pointer; } .test-voice-status.playing { color: var(--accent); } .test-voice-status.error { color: var(--error); } -/* ═══════════════════════════════════════════════════════════════ - Voice Filters - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Voice Filters + ══════════════════════════════════════════════════════════════?*/ .voice-filters { display: flex; @@ -727,9 +709,7 @@ select.input { cursor: pointer; } } .voice-search .input { flex: 1; } -/* ═══════════════════════════════════════════════════════════════ - Voice List - 极简版 - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Voice List - 极简? ══════════════════════════════════════════════════════════════?*/ .voice-list { display: flex; @@ -789,7 +769,7 @@ select.input { cursor: pointer; } background: var(--accent); } .voice-item.selected .voice-item-radio::after { - content: '✓'; + content: '?; color: var(--bg-primary); font-size: 9px; font-weight: bold; @@ -874,9 +854,8 @@ select.input { cursor: pointer; } font-size: 13px; } -/* ═══════════════════════════════════════════════════════════════ - API Status Box - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? API Status Box + ══════════════════════════════════════════════════════════════?*/ .api-status-box { display: flex; @@ -921,9 +900,8 @@ select.input { cursor: pointer; } margin-top: 2px; } -/* ═══════════════════════════════════════════════════════════════ - Stats Card - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Stats Card + ══════════════════════════════════════════════════════════════?*/ .stats-card { display: flex; @@ -955,9 +933,7 @@ select.input { cursor: pointer; } letter-spacing: 0.05em; } -/* ═══════════════════════════════════════════════════════════════ - Tip Box - 极简版 - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Tip Box - 极简? ══════════════════════════════════════════════════════════════?*/ .tip-box { display: flex; @@ -984,9 +960,8 @@ select.input { cursor: pointer; } color: var(--accent); } -/* ═══════════════════════════════════════════════════════════════ - Guide Box - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Guide Box + ══════════════════════════════════════════════════════════════?*/ .guide-box { background: var(--bg-tertiary); @@ -1074,9 +1049,8 @@ select.input { cursor: pointer; } } .guide-link a { color: var(--accent); } -/* ═══════════════════════════════════════════════════════════════ - Mobile Navigation - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Mobile Navigation + ══════════════════════════════════════════════════════════════?*/ .mobile-nav { display: none; @@ -1119,9 +1093,8 @@ select.input { cursor: pointer; } .mobile-nav-item:hover { color: var(--text-muted); } .mobile-nav-item.active { color: var(--accent); } -/* ═══════════════════════════════════════════════════════════════ - Responsive - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Responsive + ══════════════════════════════════════════════════════════════?*/ @media (max-width: 768px) { .app-sidebar { display: none; } @@ -1178,9 +1151,8 @@ select.input { cursor: pointer; } .mobile-nav-item { min-height: 44px; } } -/* ═══════════════════════════════════════════════════════════════ - Scrollbar - ═══════════════════════════════════════════════════════════════ */ +/* ══════════════════════════════════════════════════════════════? Scrollbar + ══════════════════════════════════════════════════════════════?*/ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } @@ -1206,7 +1178,7 @@ select.input { cursor: pointer; }
鉴权
- + + 预设? @@ -1343,27 +1313,26 @@ select.input { cursor: pointer; }
- +

- 点击选中设为默认。试用 无需配置,鉴权 需配置 API + 点击选中设为默认?span class="source-badge trial">试用 无需配置?span class="source-badge auth">鉴权 需配置 API

- 暂无音色,请从「试用」或「预设库」添加 -
+ 暂无音色,请从「试用」或「预设库」添?
手动添加复刻音色 鉴权
- +
@@ -1380,7 +1349,7 @@ select.input { cursor: pointer; }
- +
@@ -1390,22 +1359,22 @@ select.input { cursor: pointer; }
- +
- +
-
使用预设音色库需要先配置鉴权 API,请前往「基础配置」页面设置。
+
使用预设音色库需要先配置鉴权 API,请前往「基础配置」页面设置?/div>
- +
@@ -1442,7 +1411,7 @@ select.input { cursor: pointer; }
- +
@@ -1458,30 +1427,30 @@ select.input { cursor: pointer; }
-
计费与缓存
+
计费与缓?/div>
- +
- +
-
过滤与识别
+
过滤与识?/div>
- +
- +
@@ -1510,7 +1479,7 @@ select.input { cursor: pointer; }

缓存管理

-

本地音频缓存统计与清理

+

本地音频缓存统计与清?/p>

@@ -1530,7 +1499,7 @@ select.input { cursor: pointer; }
0
-
未命中
+
未命?/div>
@@ -1544,11 +1513,11 @@ select.input { cursor: pointer; }
- +
- +
@@ -1566,48 +1535,47 @@ select.input { cursor: pointer; }

使用说明

-

配音指令与开通流程

+

配音指令与开通流?/p>

配音指令

-

格式:[tts:speaker=音色名;emotion=情绪;context=语气提示] 放在正文前一行

-

speaker、emotion、context 三个参数可任意组合、任意顺序,用分号分隔

+

格式?code>[tts:speaker=音色?emotion=情绪;context=语气提示] 放在正文前一?/p> +

speaker、emotion、context 三个参数可任意组合、任意顺序,用分号分?/p>

每遇到一个新 [tts:...] 块会分段朗读,按顺序播放

-

未写 speaker= 的块使用当前选中的默认音色

+

未写 speaker= 的块使用当前选中的默认音?/p> -

音色(speaker)

-

只能指定"我的音色"中保存的名称。例如保存了名为"小白"的音色,则可用 speaker=小白

+

音色(speaker?/strong>

+

只能指定"我的音色"中保存的名称。例如保存了名为"小白"的音色,则可?speaker=小白?/p>

情感(emotion)可用值:

-
中文:开心、悲伤、生气、惊讶、恐惧、厌恶、激动、冷漠、中性、沮丧、撒娇、害羞、安慰、鼓励、咆哮、焦急、温柔、讲故事、自然讲述、情感电台、磁性、广告营销、气泡音、低语、新闻播报、娱乐八卦、方言、对话、闲聊、温暖、深情、权威
-
+                    
中文:开心、悲伤、生气、惊讶、恐惧、厌恶、激动、冷漠、中性、沮丧、撒娇、害羞、安慰、鼓励、咆哮、焦急、温柔、讲故事、自然讲述、情感电台、磁性、广告营销、气泡音、低语、新闻播报、娱乐八卦、方言、对话、闲聊、温暖、深情、权?
 英文:happy, sad, angry, surprised, fear, hate, excited, coldness, neutral, depressed, lovey-dovey, shy, comfort, tension, tender, storytelling, radio, magnetic, advertising, vocal-fry, asmr, news, entertainment, dialect, chat, warm, affectionate, authoritative
-

语气提示(context)仅对 seed-tts-2.0 生效:

-

例如:"用更委屈的语气"、"放慢一点,压低音量"

+

语气提示(context?/strong>仅对 seed-tts-2.0 生效?/p> +

例如?用更委屈的语??放慢一点,压低音量"

复刻音色使用

    -
  1. 在火山官网复刻音色
  2. -
  3. 获取音色ID(格式 S_xxxxxxxx
  4. -
  5. 在"音色管理" → "我的音色"中添加
  6. +
  7. 在火山官网复刻音?/li> +
  8. 获取音色ID(格?S_xxxxxxxx?/li> +
  9. ?音色管理" ?"我的音色"中添?/li>
-
以下是鉴权模式的开通教程,试用音色无需配置。
+
以下是鉴权模式的开通教?/strong>,试用音色无需配置?/div>
-

开启 CORS 代理

+

开?CORS 代理

    -
  1. 打开酒馆目录的 config.yaml
  2. -
  3. 将 enableCorsProxy 改为 true 并保存
  4. -
  5. 重启酒馆(重启容器/进程,不是 F5 刷新)
  6. +
  7. 打开酒馆目录?config.yaml
  8. +
  9. ?enableCorsProxy 改为 true 并保?/li> +
  10. 重启酒馆(重启容?进程,不?F5 刷新?/li>
@@ -1616,7 +1584,7 @@ select.input { cursor: pointer; } - 开通管理 + 开通管?>
                 </div>
 
                 <div class= @@ -1653,10 +1621,7 @@ select.input { cursor: pointer; } - \ No newline at end of file +