feat(tts): switch free voices to EdgeTTS worker mapping
This commit is contained in:
@@ -1,23 +1,28 @@
|
||||
/**
|
||||
/**
|
||||
* 火山引擎 TTS API 封装
|
||||
* V3 单向流式 + V1试用
|
||||
*/
|
||||
|
||||
const V3_URL = 'https://openspeech.bytedance.com/api/v3/tts/unidirectional';
|
||||
const FREE_V1_URL = 'https://hstts.velure.codes';
|
||||
const FREE_V1_URL = 'https://edgetts.velure.codes';
|
||||
|
||||
export const FREE_VOICES = [
|
||||
{ key: 'female_1', name: '桃夭', tag: '甜蜜仙子', gender: 'female' },
|
||||
{ key: 'female_2', name: '霜华', tag: '清冷仙子', gender: 'female' },
|
||||
{ key: 'female_3', name: '顾姐', tag: '御姐烟嗓', gender: 'female' },
|
||||
{ key: 'female_4', name: '苏菲', tag: '优雅知性', gender: 'female' },
|
||||
{ key: 'female_5', name: '嘉欣', tag: '港风甜心', gender: 'female' },
|
||||
{ key: 'female_6', name: '青梅', tag: '清秀少年音', gender: 'female' },
|
||||
{ key: 'female_7', name: '可莉', tag: '奶音萝莉', gender: 'female' },
|
||||
{ key: 'male_1', name: '夜枭', tag: '磁性低音', gender: 'male' },
|
||||
{ key: 'male_2', name: '君泽', tag: '温润公子', gender: 'male' },
|
||||
{ key: 'male_3', name: '沐阳', tag: '沉稳暖男', gender: 'male' },
|
||||
{ key: 'male_4', name: '梓辛', tag: '青春少年', gender: 'male' },
|
||||
{ key: 'female_1', name: '晓晓', tag: '温暖百变', gender: 'female' },
|
||||
{ key: 'female_2', name: '晓伊', tag: '清冷知性', gender: 'female' },
|
||||
{ key: 'female_3', name: '晓墨', tag: '情感丰富', gender: 'female' },
|
||||
{ key: 'female_4', name: '晓涵', tag: '温柔深情', gender: 'female' },
|
||||
{ key: 'female_5', name: '晓萱', tag: '沉稳大气', gender: 'female' },
|
||||
{ key: 'female_6', name: '晓睿', tag: '成熟知性', gender: 'female' },
|
||||
{ key: 'female_7', name: '晓甄', tag: '活力少女', gender: 'female' },
|
||||
{ key: 'male_1', name: '云希', tag: '少年温暖', gender: 'male' },
|
||||
{ key: 'male_2', name: '云健', tag: '阳刚有力', gender: 'male' },
|
||||
{ key: 'male_3', name: '云扬', tag: '专业播报', gender: 'male' },
|
||||
{ key: 'male_4', name: '云泽', tag: '沉稳磁性', gender: 'male' },
|
||||
{ key: 'en_female_1', name: 'Jenny', tag: '美式甜美', gender: 'female' },
|
||||
{ key: 'en_female_2', name: 'Aria', tag: '美式知性', gender: 'female' },
|
||||
{ key: 'en_male_1', name: 'Guy', tag: '美式磁性', gender: 'male' },
|
||||
{ key: 'ja_female_1', name: '七海', tag: '日式温柔', gender: 'female' },
|
||||
{ key: 'ja_male_1', name: '圭太', tag: '日式少年', gender: 'male' },
|
||||
];
|
||||
|
||||
export const FREE_DEFAULT_VOICE = 'female_1';
|
||||
@@ -333,3 +338,4 @@ export async function synthesizeFreeV1(params, options = {}) {
|
||||
|
||||
return { audioBase64: data.data };
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!DOCTYPE html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
@@ -1721,17 +1721,22 @@ let editingVoiceValue = null;
|
||||
let activeSaveBtn = null;
|
||||
|
||||
const TRIAL_VOICES = [
|
||||
{ key: 'female_1', name: '桃夭', tag: '甜蜜仙子', gender: 'female' },
|
||||
{ key: 'female_2', name: '霜华', tag: '清冷仙子', gender: 'female' },
|
||||
{ key: 'female_3', name: '顾姐', tag: '御姐烟嗓', gender: 'female' },
|
||||
{ key: 'female_4', name: '苏菲', tag: '优雅知性', gender: 'female' },
|
||||
{ key: 'female_5', name: '嘉欣', tag: '港风甜心', gender: 'female' },
|
||||
{ key: 'female_6', name: '青梅', tag: '清秀少年音', gender: 'female' },
|
||||
{ key: 'female_7', name: '可莉', tag: '奶音萝莉', gender: 'female' },
|
||||
{ key: 'male_1', name: '夜枭', tag: '磁性低音', gender: 'male' },
|
||||
{ key: 'male_2', name: '君泽', tag: '温润公子', gender: 'male' },
|
||||
{ key: 'male_3', name: '沐阳', tag: '沉稳暖男', gender: 'male' },
|
||||
{ key: 'male_4', name: '梓辛', tag: '青春少年', gender: 'male' },
|
||||
{ key: 'female_1', name: '晓晓', tag: '温暖百变', gender: 'female' },
|
||||
{ key: 'female_2', name: '晓伊', tag: '清冷知性', gender: 'female' },
|
||||
{ key: 'female_3', name: '晓墨', tag: '情感丰富', gender: 'female' },
|
||||
{ key: 'female_4', name: '晓涵', tag: '温柔深情', gender: 'female' },
|
||||
{ key: 'female_5', name: '晓萱', tag: '沉稳大气', gender: 'female' },
|
||||
{ key: 'female_6', name: '晓睿', tag: '成熟知性', gender: 'female' },
|
||||
{ key: 'female_7', name: '晓甄', tag: '活力少女', gender: 'female' },
|
||||
{ key: 'male_1', name: '云希', tag: '少年温暖', gender: 'male' },
|
||||
{ key: 'male_2', name: '云健', tag: '阳刚有力', gender: 'male' },
|
||||
{ key: 'male_3', name: '云扬', tag: '专业播报', gender: 'male' },
|
||||
{ key: 'male_4', name: '云泽', tag: '沉稳磁性', gender: 'male' },
|
||||
{ key: 'en_female_1', name: 'Jenny', tag: '美式甜美', gender: 'female' },
|
||||
{ key: 'en_female_2', name: 'Aria', tag: '美式知性', gender: 'female' },
|
||||
{ key: 'en_male_1', name: 'Guy', tag: '美式磁性', gender: 'male' },
|
||||
{ key: 'ja_female_1', name: '七海', tag: '日式温柔', gender: 'female' },
|
||||
{ key: 'ja_male_1', name: '圭太', tag: '日式少年', gender: 'male' },
|
||||
];
|
||||
const TRIAL_VOICE_KEYS = new Set(TRIAL_VOICES.map(v => v.key));
|
||||
|
||||
@@ -2477,3 +2482,4 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// ============ 导入 ============
|
||||
// ============ 导入 ============
|
||||
|
||||
import { event_types } from "../../../../../../script.js";
|
||||
import { extension_settings, getContext } from "../../../../../extensions.js";
|
||||
@@ -43,7 +43,9 @@ const TTS_DIRECTIVE_REGEX = /\[tts:([^\]]*)\]/gi;
|
||||
|
||||
const FREE_VOICE_KEYS = new Set([
|
||||
'female_1', 'female_2', 'female_3', 'female_4', 'female_5', 'female_6', 'female_7',
|
||||
'male_1', 'male_2', 'male_3', 'male_4'
|
||||
'male_1', 'male_2', 'male_3', 'male_4',
|
||||
'en_female_1', 'en_female_2', 'en_male_1',
|
||||
'ja_female_1', 'ja_male_1',
|
||||
]);
|
||||
|
||||
// ============ NovelDraw 兼容 ============
|
||||
@@ -1472,3 +1474,4 @@ export function cleanupTts() {
|
||||
cacheCounters.misses = 0;
|
||||
delete window.xiaobaixTts;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user