@visionengine/audio-tts 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-zh.md +31 -0
- package/README.md +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +274 -0
- package/dist/server.js.map +1 -0
- package/dist/voices.d.ts +25 -0
- package/dist/voices.d.ts.map +1 -0
- package/dist/voices.js +176 -0
- package/dist/voices.js.map +1 -0
- package/package.json +51 -0
package/README-zh.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# @visionengine/audio-tts
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## 安装
|
|
7
|
+
|
|
8
|
+
### 作为 MCP 服务器使用
|
|
9
|
+
|
|
10
|
+
将以下配置添加到您的 MCP 客户端配置文件中:
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
{
|
|
14
|
+
"mcpServers": {
|
|
15
|
+
"ve-image-generate": {
|
|
16
|
+
"type": "local",
|
|
17
|
+
"command": "npx",
|
|
18
|
+
"args": ["-y", "@visionengine/audio-tts@latest"],
|
|
19
|
+
"transport": "stdio",
|
|
20
|
+
"env": {
|
|
21
|
+
"API_URL":"",
|
|
22
|
+
"X-Api-App-Id": "",
|
|
23
|
+
"X-Api-Access-Key": "",
|
|
24
|
+
"X-Api-Resource-Id":"",
|
|
25
|
+
"WORKDIR": "./public"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @visionengine/audio-tts
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,6CAA6C;AAC7C,MAAM,CAAC,KAAK,CAAC;IACX,aAAa,EAAE,OAAO;CACvB,CAAC,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlC,QAAA,MAAM,MAAM,8CAGV,CAAC;AA6VH,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { FastMCP } from "fastmcp";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import * as https from "https";
|
|
6
|
+
import * as http from "http";
|
|
7
|
+
import { filterVoicesByLanguage } from "./voices.js";
|
|
8
|
+
const server = new FastMCP({
|
|
9
|
+
name: "VE Audio TTS",
|
|
10
|
+
version: "1.0.0",
|
|
11
|
+
});
|
|
12
|
+
// Get configuration from environment variables
|
|
13
|
+
const API_URL = process.env.API_URL || "https://openspeech.bytedance.com/api/v3/tts/unidirectional";
|
|
14
|
+
const X_API_APP_ID = process.env.X_API_APP_ID || "";
|
|
15
|
+
const X_API_ACCESS_KEY = process.env.X_API_ACCESS_KEY || "";
|
|
16
|
+
const X_API_RESOURCE_ID = process.env.X_API_RESOURCE_ID || "seed-tts-2.0";
|
|
17
|
+
const WORKDIR = process.env.WORKDIR || "./";
|
|
18
|
+
// Generate unique filename with timestamp
|
|
19
|
+
function generateFilename(format) {
|
|
20
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
21
|
+
const randomSuffix = Math.random().toString(36).substring(2, 8);
|
|
22
|
+
return `tts_${timestamp}_${randomSuffix}.${format === "ogg_opus" ? "ogg" : format}`;
|
|
23
|
+
}
|
|
24
|
+
// Ensure WORKDIR exists
|
|
25
|
+
async function ensureWorkdir() {
|
|
26
|
+
const resolvedPath = path.resolve(WORKDIR);
|
|
27
|
+
try {
|
|
28
|
+
await fs.promises.access(resolvedPath);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
await fs.promises.mkdir(resolvedPath, { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Make HTTP POST request with streaming response
|
|
35
|
+
function httpPostStream(url, headers, body) {
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
const parsedUrl = new URL(url);
|
|
38
|
+
const isHttps = parsedUrl.protocol === "https:";
|
|
39
|
+
const httpModule = isHttps ? https : http;
|
|
40
|
+
const options = {
|
|
41
|
+
hostname: parsedUrl.hostname,
|
|
42
|
+
port: parsedUrl.port || (isHttps ? 443 : 80),
|
|
43
|
+
path: parsedUrl.pathname + parsedUrl.search,
|
|
44
|
+
method: "POST",
|
|
45
|
+
headers: {
|
|
46
|
+
...headers,
|
|
47
|
+
"Content-Type": "application/json",
|
|
48
|
+
"Content-Length": Buffer.byteLength(body),
|
|
49
|
+
"Connection": "keep-alive",
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
const req = httpModule.request(options, (res) => {
|
|
53
|
+
const chunks = [];
|
|
54
|
+
const audioData = [];
|
|
55
|
+
let buffer = "";
|
|
56
|
+
res.on("data", (chunk) => {
|
|
57
|
+
chunks.push(chunk);
|
|
58
|
+
buffer += chunk.toString("utf-8");
|
|
59
|
+
// Process line by line
|
|
60
|
+
const lines = buffer.split("\n");
|
|
61
|
+
buffer = lines.pop() || "";
|
|
62
|
+
for (const line of lines) {
|
|
63
|
+
if (!line.trim())
|
|
64
|
+
continue;
|
|
65
|
+
try {
|
|
66
|
+
const data = JSON.parse(line);
|
|
67
|
+
if (data.code === 0 && data.data) {
|
|
68
|
+
// Decode base64 audio data
|
|
69
|
+
const audioChunk = Buffer.from(data.data, "base64");
|
|
70
|
+
audioData.push(audioChunk);
|
|
71
|
+
}
|
|
72
|
+
else if (data.code === 20000000) {
|
|
73
|
+
// Synthesis complete
|
|
74
|
+
if (data.usage) {
|
|
75
|
+
console.log(`TTS usage: ${data.usage.text_words} characters`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (data.code > 0 && data.code !== 20000000) {
|
|
79
|
+
// Error response
|
|
80
|
+
reject(new Error(`TTS API error: ${data.code} - ${data.message}`));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Continue if JSON parse fails (incomplete data)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
res.on("end", () => {
|
|
90
|
+
// Process remaining buffer
|
|
91
|
+
if (buffer.trim()) {
|
|
92
|
+
try {
|
|
93
|
+
const data = JSON.parse(buffer);
|
|
94
|
+
if (data.code === 0 && data.data) {
|
|
95
|
+
const audioChunk = Buffer.from(data.data, "base64");
|
|
96
|
+
audioData.push(audioChunk);
|
|
97
|
+
}
|
|
98
|
+
else if (data.code > 0 && data.code !== 20000000) {
|
|
99
|
+
reject(new Error(`TTS API error: ${data.code} - ${data.message}`));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Ignore parse errors at end
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (audioData.length === 0) {
|
|
108
|
+
reject(new Error("No audio data received from TTS API"));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
resolve(Buffer.concat(audioData));
|
|
112
|
+
});
|
|
113
|
+
res.on("error", reject);
|
|
114
|
+
});
|
|
115
|
+
req.on("error", reject);
|
|
116
|
+
req.write(body);
|
|
117
|
+
req.end();
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// Call TTS API and save audio file
|
|
121
|
+
async function synthesizeSpeech(options) {
|
|
122
|
+
if (!X_API_APP_ID || !X_API_ACCESS_KEY) {
|
|
123
|
+
throw new Error("X_API_APP_ID and X_API_ACCESS_KEY environment variables are required");
|
|
124
|
+
}
|
|
125
|
+
await ensureWorkdir();
|
|
126
|
+
const format = options.format || "mp3";
|
|
127
|
+
const sampleRate = options.sampleRate || 24000;
|
|
128
|
+
const fileName = generateFilename(format);
|
|
129
|
+
const filePath = path.resolve(WORKDIR, fileName);
|
|
130
|
+
// Build additions object
|
|
131
|
+
const additions = {
|
|
132
|
+
cache_config: {
|
|
133
|
+
text_type: 1,
|
|
134
|
+
use_cache: true,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
if (options.explicitLanguage) {
|
|
138
|
+
additions.explicit_language = options.explicitLanguage;
|
|
139
|
+
}
|
|
140
|
+
if (options.disableMarkdownFilter !== undefined) {
|
|
141
|
+
additions.disable_markdown_filter = options.disableMarkdownFilter;
|
|
142
|
+
}
|
|
143
|
+
if (options.contextTexts && options.contextTexts.length > 0) {
|
|
144
|
+
additions.context_texts = options.contextTexts;
|
|
145
|
+
}
|
|
146
|
+
if (options.pitch !== undefined) {
|
|
147
|
+
additions.post_process = { pitch: options.pitch };
|
|
148
|
+
}
|
|
149
|
+
// Build request body
|
|
150
|
+
const requestBody = {
|
|
151
|
+
user: {
|
|
152
|
+
uid: "mcp-user",
|
|
153
|
+
},
|
|
154
|
+
req_params: {
|
|
155
|
+
text: options.text,
|
|
156
|
+
speaker: options.speaker,
|
|
157
|
+
audio_params: {
|
|
158
|
+
format,
|
|
159
|
+
sample_rate: sampleRate,
|
|
160
|
+
},
|
|
161
|
+
additions: JSON.stringify(additions),
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
// Add optional audio params
|
|
165
|
+
if (options.speechRate !== undefined) {
|
|
166
|
+
requestBody.req_params.audio_params.speech_rate = options.speechRate;
|
|
167
|
+
}
|
|
168
|
+
if (options.loudnessRate !== undefined) {
|
|
169
|
+
requestBody.req_params.audio_params.loudness_rate = options.loudnessRate;
|
|
170
|
+
}
|
|
171
|
+
if (options.emotion) {
|
|
172
|
+
requestBody.req_params.audio_params.emotion = options.emotion;
|
|
173
|
+
}
|
|
174
|
+
if (options.emotionScale !== undefined) {
|
|
175
|
+
requestBody.req_params.audio_params.emotion_scale = options.emotionScale;
|
|
176
|
+
}
|
|
177
|
+
// Build headers
|
|
178
|
+
const headers = {
|
|
179
|
+
"X-Api-App-Id": X_API_APP_ID,
|
|
180
|
+
"X-Api-Access-Key": X_API_ACCESS_KEY,
|
|
181
|
+
"X-Api-Resource-Id": X_API_RESOURCE_ID,
|
|
182
|
+
};
|
|
183
|
+
// Make request and get audio data
|
|
184
|
+
const audioBuffer = await httpPostStream(API_URL, headers, JSON.stringify(requestBody));
|
|
185
|
+
// Save audio file
|
|
186
|
+
await fs.promises.writeFile(filePath, audioBuffer);
|
|
187
|
+
await fs.promises.chmod(filePath, 0o644);
|
|
188
|
+
return {
|
|
189
|
+
filePath,
|
|
190
|
+
fileName,
|
|
191
|
+
size: audioBuffer.length,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
// Tool: tts - Text to Speech synthesis
|
|
195
|
+
server.addTool({
|
|
196
|
+
annotations: {
|
|
197
|
+
openWorldHint: true,
|
|
198
|
+
readOnlyHint: false,
|
|
199
|
+
title: "Text to Speech",
|
|
200
|
+
},
|
|
201
|
+
description: "Synthesize speech from text using Volcengine TTS API. Generates audio file and saves to WORKDIR.",
|
|
202
|
+
execute: async (args) => {
|
|
203
|
+
const result = await synthesizeSpeech({
|
|
204
|
+
text: args.text,
|
|
205
|
+
speaker: args.speaker,
|
|
206
|
+
format: args.format,
|
|
207
|
+
sampleRate: args.sampleRate,
|
|
208
|
+
speechRate: args.speechRate,
|
|
209
|
+
loudnessRate: args.loudnessRate,
|
|
210
|
+
emotion: args.emotion,
|
|
211
|
+
emotionScale: args.emotionScale,
|
|
212
|
+
contextTexts: args.contextTexts,
|
|
213
|
+
explicitLanguage: args.explicitLanguage,
|
|
214
|
+
disableMarkdownFilter: args.disableMarkdownFilter,
|
|
215
|
+
pitch: args.pitch,
|
|
216
|
+
});
|
|
217
|
+
return JSON.stringify({
|
|
218
|
+
success: true,
|
|
219
|
+
message: "Audio file generated successfully",
|
|
220
|
+
filePath: result.filePath,
|
|
221
|
+
fileName: result.fileName,
|
|
222
|
+
size: result.size,
|
|
223
|
+
sizeKB: (result.size / 1024).toFixed(2) + " KB",
|
|
224
|
+
}, null, 2);
|
|
225
|
+
},
|
|
226
|
+
name: "tts",
|
|
227
|
+
parameters: z.object({
|
|
228
|
+
text: z.string().describe("Text content to synthesize into speech"),
|
|
229
|
+
speaker: z.string().describe("Voice speaker ID (e.g., 'zh_female_vv_uranus_bigtts'). Use list-voices tool to get available voices."),
|
|
230
|
+
format: z.enum(["mp3", "ogg_opus", "pcm"]).optional().describe("Audio format: mp3 (default), ogg_opus, or pcm"),
|
|
231
|
+
sampleRate: z.enum(["8000", "16000", "22050", "24000", "32000", "44100", "48000"]).transform(Number).optional().describe("Audio sample rate in Hz. Default: 24000"),
|
|
232
|
+
speechRate: z.number().min(-50).max(100).optional().describe("Speech rate: -50 (0.5x) to 100 (2.0x). Default: 0 (normal speed)"),
|
|
233
|
+
loudnessRate: z.number().min(-50).max(100).optional().describe("Volume: -50 (0.5x) to 100 (2.0x). Default: 0 (normal volume)"),
|
|
234
|
+
emotion: z.string().optional().describe("Emotion setting for supported voices (e.g., 'happy', 'sad', 'angry')"),
|
|
235
|
+
emotionScale: z.number().min(1).max(5).optional().describe("Emotion intensity: 1-5. Default: 4"),
|
|
236
|
+
contextTexts: z.array(z.string()).optional().describe("Context hints for TTS 2.0 to adjust style (e.g., ['Please speak slowly'])"),
|
|
237
|
+
explicitLanguage: z.string().optional().describe("Explicit language: zh-cn, en, ja, es-mx, id, pt-br, de, fr, or 'crosslingual'"),
|
|
238
|
+
disableMarkdownFilter: z.boolean().optional().describe("Disable markdown parsing. Default: false"),
|
|
239
|
+
pitch: z.number().min(-12).max(12).optional().describe("Pitch adjustment: -12 to 12. Default: 0"),
|
|
240
|
+
}),
|
|
241
|
+
});
|
|
242
|
+
// Tool: list-voices - Query available voices by language
|
|
243
|
+
server.addTool({
|
|
244
|
+
annotations: {
|
|
245
|
+
openWorldHint: true,
|
|
246
|
+
readOnlyHint: true,
|
|
247
|
+
title: "List Available Voices",
|
|
248
|
+
},
|
|
249
|
+
description: "Query available TTS voices filtered by language. Returns voice information including ID, name, gender, and description.",
|
|
250
|
+
execute: async (args) => {
|
|
251
|
+
const filteredVoices = filterVoicesByLanguage(args.language);
|
|
252
|
+
const voiceList = filteredVoices.map((voice) => ({
|
|
253
|
+
voiceType: voice.VoiceType,
|
|
254
|
+
name: voice.Name,
|
|
255
|
+
gender: voice.Gender,
|
|
256
|
+
age: voice.Age,
|
|
257
|
+
description: voice.Description,
|
|
258
|
+
categories: voice.Categories.flatMap((c) => c.Categories),
|
|
259
|
+
languages: voice.Languages.map((l) => l.Language),
|
|
260
|
+
trialURL: voice.TrialURL,
|
|
261
|
+
}));
|
|
262
|
+
return JSON.stringify({
|
|
263
|
+
total: voiceList.length,
|
|
264
|
+
language: args.language || "all",
|
|
265
|
+
voices: voiceList,
|
|
266
|
+
}, null, 2);
|
|
267
|
+
},
|
|
268
|
+
name: "list-voices",
|
|
269
|
+
parameters: z.object({
|
|
270
|
+
language: z.string().optional().describe("Filter by language code: zh, zh-cn, en, ja, es, id, pt, de, fr. Leave empty for all voices."),
|
|
271
|
+
}),
|
|
272
|
+
});
|
|
273
|
+
export { server };
|
|
274
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/voices.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface Voice {
|
|
2
|
+
ID: string;
|
|
3
|
+
VoiceType: string;
|
|
4
|
+
Name: string;
|
|
5
|
+
Avatar: string;
|
|
6
|
+
Gender: string;
|
|
7
|
+
Age: string;
|
|
8
|
+
Categories: {
|
|
9
|
+
Categories: string[];
|
|
10
|
+
}[];
|
|
11
|
+
Languages: {
|
|
12
|
+
Language: string;
|
|
13
|
+
Text: string;
|
|
14
|
+
Flag: string;
|
|
15
|
+
}[];
|
|
16
|
+
Emotions: string[];
|
|
17
|
+
Description: string;
|
|
18
|
+
Status: string;
|
|
19
|
+
ResourceID: string;
|
|
20
|
+
TrialURL: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const voices: Voice[];
|
|
23
|
+
export declare const languageMap: Record<string, string[]>;
|
|
24
|
+
export declare function filterVoicesByLanguage(language?: string): Voice[];
|
|
25
|
+
//# sourceMappingURL=voices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACvC,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,EAuJzB,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAWhD,CAAC;AAGF,wBAAgB,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAgBjE"}
|
package/dist/voices.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
export const voices = [
|
|
2
|
+
{
|
|
3
|
+
ID: "7574011450654457882",
|
|
4
|
+
VoiceType: "zh_female_xiaohe_uranus_bigtts",
|
|
5
|
+
Name: "小何 2.0",
|
|
6
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/小何.png",
|
|
7
|
+
Gender: "女",
|
|
8
|
+
Age: "青年",
|
|
9
|
+
Categories: [{ Categories: ["通用场景"] }],
|
|
10
|
+
Languages: [{ Language: "zh-cn", Text: "清晨的阳光跳上窗台,让我们带着笑脸,去赴一场春天的约会吧!", Flag: "🇨🇳🇺🇸" }],
|
|
11
|
+
Emotions: [],
|
|
12
|
+
Description: "声线甜美有活力的妹妹,活泼开朗,笑容明媚。",
|
|
13
|
+
Status: "online",
|
|
14
|
+
ResourceID: "seed-tts-2.0",
|
|
15
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/zh_female_xiaohe_uranus_bigtts.mp3"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
ID: "7569915035259256875",
|
|
19
|
+
VoiceType: "zh_female_vv_uranus_bigtts",
|
|
20
|
+
Name: "Vivi 2.0",
|
|
21
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/vivi_v2.png",
|
|
22
|
+
Gender: "女",
|
|
23
|
+
Age: "青年",
|
|
24
|
+
Categories: [{ Categories: ["通用场景"] }],
|
|
25
|
+
Languages: [{ Language: "zh-cn", Text: "今天的阳光真好啊!感觉整个人都充满了活力呢。真想去外面跑一跑,去探索那些有趣的地方,去邂逅一些奇妙的事情。生活嘛,就该这样自由自在、充满朝气的呀!哈哈!", Flag: "🇨🇳" }],
|
|
26
|
+
Emotions: [],
|
|
27
|
+
Description: "语调平稳、咬字柔和、自带治愈安抚力的女声音色",
|
|
28
|
+
Status: "online",
|
|
29
|
+
ResourceID: "seed-tts-2.0",
|
|
30
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/zh_female_vv_uranus_bigtts.wav"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
ID: "7574012101065179182",
|
|
34
|
+
VoiceType: "zh_male_taocheng_uranus_bigtts",
|
|
35
|
+
Name: "小天 2.0",
|
|
36
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/小天.png",
|
|
37
|
+
Gender: "男",
|
|
38
|
+
Age: "青年",
|
|
39
|
+
Categories: [{ Categories: ["通用场景"] }],
|
|
40
|
+
Languages: [{ Language: "zh-cn", Text: "宝贝别着急,每颗星星都散发着属于自己的光芒,慢慢长大,你也会闪闪发光。", Flag: "🇨🇳🇺🇸" }],
|
|
41
|
+
Emotions: [],
|
|
42
|
+
Description: "眉目清朗男大,清澈温润有朝气,开朗真诚。",
|
|
43
|
+
Status: "online",
|
|
44
|
+
ResourceID: "seed-tts-2.0",
|
|
45
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/zh_male_taocheng_uranus_bigtts.mp3"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
ID: "7574011909091885094",
|
|
49
|
+
VoiceType: "zh_male_m191_uranus_bigtts",
|
|
50
|
+
Name: "云舟 2.0",
|
|
51
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/云舟.png",
|
|
52
|
+
Gender: "男",
|
|
53
|
+
Age: "青年",
|
|
54
|
+
Categories: [{ Categories: ["通用场景"] }],
|
|
55
|
+
Languages: [{ Language: "zh-cn", Text: "风穿过林间的低语,像清泉淌过心尖,听着就好像可以吹散所有烦恼。", Flag: "🇨🇳🇺🇸" }],
|
|
56
|
+
Emotions: [],
|
|
57
|
+
Description: "声音磁性的男生,成熟理性,做事有条理,让人信赖。",
|
|
58
|
+
Status: "online",
|
|
59
|
+
ResourceID: "seed-tts-2.0",
|
|
60
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/zh_male_m191_uranus_bigtts.mp3"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
ID: "7569913658966016042",
|
|
64
|
+
VoiceType: "zh_female_santongyongns_saturn_bigtts",
|
|
65
|
+
Name: "流畅女声",
|
|
66
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/流畅女声.png",
|
|
67
|
+
Gender: "女",
|
|
68
|
+
Age: "青年",
|
|
69
|
+
Categories: [{ Categories: ["视频配音"] }],
|
|
70
|
+
Languages: [{ Language: "zh-cn", Text: "这家奶茶店的珍珠超有嚼劲!三分糖加冰,一口下去又甜又清爽,夏天喝这个真的太绝啦!", Flag: "🇨🇳" }],
|
|
71
|
+
Emotions: [],
|
|
72
|
+
Description: "语调顺滑自然、咬字利落不拖沓、适配多种场景的百搭女声音色",
|
|
73
|
+
Status: "online",
|
|
74
|
+
ResourceID: "seed-tts-2.0",
|
|
75
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/流畅女声.wav"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
ID: "7569915380160921663",
|
|
79
|
+
VoiceType: "zh_female_meilinvyou_saturn_bigtts",
|
|
80
|
+
Name: "魅力女友",
|
|
81
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/魅力女友_v2.png",
|
|
82
|
+
Gender: "女",
|
|
83
|
+
Age: "青年",
|
|
84
|
+
Categories: [{ Categories: ["视频配音"] }],
|
|
85
|
+
Languages: [{ Language: "zh-cn", Text: "这支豆沙色的口红,涂在唇上是柔雾感,像傍晚的晚霞落在嘴角,不张扬,却能让你回头率满满。", Flag: "🇨🇳" }],
|
|
86
|
+
Emotions: [],
|
|
87
|
+
Description: "嗲软轻飘的轻熟美人,妩媚有耐心,温柔勾人。",
|
|
88
|
+
Status: "online",
|
|
89
|
+
ResourceID: "seed-tts-2.0",
|
|
90
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/zh_female_meilinvyou_saturn_bigtts.wav"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
ID: "7569915380160905279",
|
|
94
|
+
VoiceType: "zh_female_mizai_saturn_bigtts",
|
|
95
|
+
Name: "黑猫侦探社咪仔",
|
|
96
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/黑猫侦探社咪仔.png",
|
|
97
|
+
Gender: "女",
|
|
98
|
+
Age: "青年",
|
|
99
|
+
Categories: [{ Categories: ["视频配音"] }],
|
|
100
|
+
Languages: [{ Language: "zh-cn", Text: "杨绛先生说:我们曾如此渴望命运的波澜,到最后才发现,人生最曼妙的风景,是内心的淡定与从容。愿你也能在喧嚣里,守住这份平静。", Flag: "🇨🇳" }],
|
|
101
|
+
Emotions: [],
|
|
102
|
+
Description: "语调沉稳、咬字扎实、自带踏实和包容感的女声音色",
|
|
103
|
+
Status: "online",
|
|
104
|
+
ResourceID: "seed-tts-2.0",
|
|
105
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/zh_female_mizai_saturn_bigtts.wav"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
ID: "7569915035259256875",
|
|
109
|
+
VoiceType: "saturn_zh_male_tiancaitongzhuo_tob",
|
|
110
|
+
Name: "天才同桌",
|
|
111
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/天才同桌.png",
|
|
112
|
+
Gender: "男",
|
|
113
|
+
Age: "青年",
|
|
114
|
+
Categories: [{ Categories: ["角色扮演"] }],
|
|
115
|
+
Languages: [{ Language: "zh-cn", Text: "这么基础的公式还弄不明白?不过没关系,我现在跟你讲,你认真听好了啊!这个公式其实很简单,你看,只把这个关键值代进去,再按这三步推导,就能得出结果..明白了吗?", Flag: "🇨🇳" }],
|
|
116
|
+
Emotions: [],
|
|
117
|
+
Description: "语气明快利落、咬字清晰带活力、聪明机敏又毒舌的少年音色",
|
|
118
|
+
Status: "online",
|
|
119
|
+
ResourceID: "seed-tts-2.0",
|
|
120
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/saturn_zh_male_tiancaitongzhuo_tob.wav"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
ID: "7569915380160856127",
|
|
124
|
+
VoiceType: "saturn_zh_female_cancan_tob",
|
|
125
|
+
Name: "知性灿灿",
|
|
126
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/灿灿.png",
|
|
127
|
+
Gender: "女",
|
|
128
|
+
Age: "青年",
|
|
129
|
+
Categories: [{ Categories: ["角色扮演"] }],
|
|
130
|
+
Languages: [{ Language: "zh-cn", Text: "早上出门忘记带伞了,走到半路下起了小雨。我没跑,就慢慢走在雨里,感受雨滴落在头发上的轻凉。走了大概十分钟,雨居然停了。我摸了摸微湿的发梢,忽然明白 —— 有时候不用急着躲避风雨,或许它并不会持续太久,反而能让你多感受一种天气的味道。", Flag: "🇨🇳" }],
|
|
131
|
+
Emotions: [],
|
|
132
|
+
Description: "语气温柔平缓、带有些许软绵感却又善解人意的少女音色",
|
|
133
|
+
Status: "online",
|
|
134
|
+
ResourceID: "seed-tts-2.0",
|
|
135
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/saturn_zh_female_cancan_tob.wav"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
ID: "7569915035259273259",
|
|
139
|
+
VoiceType: "zh_female_jitangnv_saturn_bigtts",
|
|
140
|
+
Name: "鸡汤女",
|
|
141
|
+
Avatar: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/avatar/鸡汤女.png",
|
|
142
|
+
Gender: "女",
|
|
143
|
+
Age: "青年",
|
|
144
|
+
Categories: [{ Categories: ["视频配音"] }],
|
|
145
|
+
Languages: [{ Language: "zh-cn", Text: "早安呀~新的一天不用急着追赶别人,先喝杯热粥,把自己照顾好,再慢慢去遇见今天的小美好。", Flag: "🇨🇳" }],
|
|
146
|
+
Emotions: [],
|
|
147
|
+
Description: "语气轻软、尾音轻落、带有自然呼吸感且十分亲切的女声音色",
|
|
148
|
+
Status: "online",
|
|
149
|
+
ResourceID: "seed-tts-2.0",
|
|
150
|
+
TrialURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/lm_hz_ihsph/ljhwZthlaukjlkulzlp/portal/bigtts/zh_female_jitangnv_saturn_bigtts.wav"
|
|
151
|
+
}
|
|
152
|
+
];
|
|
153
|
+
// Language code mapping
|
|
154
|
+
export const languageMap = {
|
|
155
|
+
"zh": ["zh-cn", "zh"],
|
|
156
|
+
"zh-cn": ["zh-cn", "zh"],
|
|
157
|
+
"en": ["en", "en-us", "en-gb"],
|
|
158
|
+
"en-us": ["en", "en-us"],
|
|
159
|
+
"ja": ["ja"],
|
|
160
|
+
"es": ["es", "es-mx"],
|
|
161
|
+
"id": ["id"],
|
|
162
|
+
"pt": ["pt", "pt-br"],
|
|
163
|
+
"de": ["de"],
|
|
164
|
+
"fr": ["fr"]
|
|
165
|
+
};
|
|
166
|
+
// Filter voices by language
|
|
167
|
+
export function filterVoicesByLanguage(language) {
|
|
168
|
+
if (!language) {
|
|
169
|
+
return voices;
|
|
170
|
+
}
|
|
171
|
+
const normalizedLang = language.toLowerCase();
|
|
172
|
+
const matchLanguages = languageMap[normalizedLang] || [normalizedLang];
|
|
173
|
+
return voices.filter(voice => voice.Languages.some(lang => matchLanguages.some(matchLang => lang.Language.toLowerCase().includes(matchLang) ||
|
|
174
|
+
matchLang.includes(lang.Language.toLowerCase()))));
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=voices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voices.js","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@visionengine/audio-tts",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "VisionEngine Audio TTS MCP Server - Text-to-speech synthesis and voice list query service",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"ve-audio-tts": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"README-zh.md"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"clear": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
18
|
+
"test": "vitest run",
|
|
19
|
+
"test:watch": "vitest",
|
|
20
|
+
"prepublishOnly": "npm run build"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"mcp",
|
|
24
|
+
"tts",
|
|
25
|
+
"text-to-speech",
|
|
26
|
+
"audio",
|
|
27
|
+
"speech-synthesis",
|
|
28
|
+
"volcengine",
|
|
29
|
+
"visionengine"
|
|
30
|
+
],
|
|
31
|
+
"author": "ve@visionengine-tech.com",
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/crazyyanchao/ve-mcp.git",
|
|
36
|
+
"directory": "packages/audio-tts"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://visionengine-tech.com/mcp",
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"fastmcp": "^3.26.8",
|
|
41
|
+
"zod": "^4.1.12"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^24.10.1",
|
|
45
|
+
"typescript": "^5.8.3",
|
|
46
|
+
"vitest": "^3.1.3"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=18.0.0"
|
|
50
|
+
}
|
|
51
|
+
}
|