coze-coding-dev-sdk 0.2.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/LICENSE +21 -0
- package/README.md +881 -0
- package/bin/coze-coding-ai.js +3 -0
- package/dist/cli/commands/chat.d.ts +3 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +58 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/image.d.ts +3 -0
- package/dist/cli/commands/image.d.ts.map +1 -0
- package/dist/cli/commands/image.js +92 -0
- package/dist/cli/commands/image.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +55 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/video.d.ts +4 -0
- package/dist/cli/commands/video.d.ts.map +1 -0
- package/dist/cli/commands/video.js +74 -0
- package/dist/cli/commands/video.js.map +1 -0
- package/dist/cli/commands/voice.d.ts +4 -0
- package/dist/cli/commands/voice.d.ts.map +1 -0
- package/dist/cli/commands/voice.js +112 -0
- package/dist/cli/commands/voice.js.map +1 -0
- package/dist/cli/constants.d.ts +4 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +7 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +22 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils.d.ts +2 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +29 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/core/client.d.ts +10 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +62 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/config.d.ts +19 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +24 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/exceptions.d.ts +21 -0
- package/dist/core/exceptions.d.ts.map +1 -0
- package/dist/core/exceptions.js +44 -0
- package/dist/core/exceptions.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/image/client.d.ts +11 -0
- package/dist/image/client.d.ts.map +1 -0
- package/dist/image/client.js +34 -0
- package/dist/image/client.js.map +1 -0
- package/dist/image/index.d.ts +3 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +19 -0
- package/dist/image/index.js.map +1 -0
- package/dist/image/models.d.ts +61 -0
- package/dist/image/models.d.ts.map +1 -0
- package/dist/image/models.js +100 -0
- package/dist/image/models.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/client.d.ts +12 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/client.js +75 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/index.d.ts +3 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +8 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/models.d.ts +22 -0
- package/dist/llm/models.d.ts.map +1 -0
- package/dist/llm/models.js +11 -0
- package/dist/llm/models.js.map +1 -0
- package/dist/search/client.d.ts +21 -0
- package/dist/search/client.d.ts.map +1 -0
- package/dist/search/client.js +83 -0
- package/dist/search/client.js.map +1 -0
- package/dist/search/index.d.ts +3 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +19 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/models.d.ts +52 -0
- package/dist/search/models.d.ts.map +1 -0
- package/dist/search/models.js +70 -0
- package/dist/search/models.js.map +1 -0
- package/dist/video/client.d.ts +26 -0
- package/dist/video/client.d.ts.map +1 -0
- package/dist/video/client.js +71 -0
- package/dist/video/client.js.map +1 -0
- package/dist/video/index.d.ts +3 -0
- package/dist/video/index.d.ts.map +1 -0
- package/dist/video/index.js +19 -0
- package/dist/video/index.js.map +1 -0
- package/dist/video/models.d.ts +44 -0
- package/dist/video/models.d.ts.map +1 -0
- package/dist/video/models.js +31 -0
- package/dist/video/models.js.map +1 -0
- package/dist/voice/asr.d.ts +22 -0
- package/dist/voice/asr.d.ts.map +1 -0
- package/dist/voice/asr.js +50 -0
- package/dist/voice/asr.js.map +1 -0
- package/dist/voice/index.d.ts +4 -0
- package/dist/voice/index.d.ts.map +1 -0
- package/dist/voice/index.js +20 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/models.d.ts +37 -0
- package/dist/voice/models.d.ts.map +1 -0
- package/dist/voice/models.js +52 -0
- package/dist/voice/models.js.map +1 -0
- package/dist/voice/tts.d.ts +9 -0
- package/dist/voice/tts.d.ts.map +1 -0
- package/dist/voice/tts.js +100 -0
- package/dist/voice/tts.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ASRClient = void 0;
|
|
4
|
+
const client_1 = require("../core/client");
|
|
5
|
+
const exceptions_1 = require("../core/exceptions");
|
|
6
|
+
const models_1 = require("./models");
|
|
7
|
+
class ASRClient extends client_1.BaseClient {
|
|
8
|
+
constructor(config, customHeaders) {
|
|
9
|
+
super(config, customHeaders);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 识别音频文件中的语音内容
|
|
13
|
+
*
|
|
14
|
+
* 音频要求:
|
|
15
|
+
* - 音频时长 ≤ 2小时
|
|
16
|
+
* - 音频大小 ≤ 100MB
|
|
17
|
+
* - 支持编码: PCM/WAV/MP3/OGG OPUS
|
|
18
|
+
*
|
|
19
|
+
* @param request - ASR 请求参数
|
|
20
|
+
* @param request.uid - 用户唯一标识
|
|
21
|
+
* @param request.url - 音频文件 URL (与 base64Data 二选一)
|
|
22
|
+
* @param request.base64Data - Base64 编码的音频数据 (与 url 二选一)
|
|
23
|
+
* @returns 识别结果,包含文本、时长和详细信息
|
|
24
|
+
*/
|
|
25
|
+
async recognize(request) {
|
|
26
|
+
if (!request.url && !request.base64Data) {
|
|
27
|
+
throw new exceptions_1.ValidationError('必须提供 url 或 base64Data 其中之一', 'url/base64Data', undefined);
|
|
28
|
+
}
|
|
29
|
+
const apiRequest = (0, models_1.buildASRApiRequest)(request);
|
|
30
|
+
try {
|
|
31
|
+
const response = await this.request('POST', `${this.config.baseUrl}/api/v3/auc/bigmodel/recognize/flash`, apiRequest);
|
|
32
|
+
const result = response.result || {};
|
|
33
|
+
const text = result.text || '';
|
|
34
|
+
return {
|
|
35
|
+
text,
|
|
36
|
+
duration: result.duration,
|
|
37
|
+
utterances: result.utterances,
|
|
38
|
+
rawData: response,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (error instanceof exceptions_1.APIError) {
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
throw new exceptions_1.APIError(`ASR 请求异常: ${error.message}`, 500);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ASRClient = ASRClient;
|
|
50
|
+
//# sourceMappingURL=asr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asr.js","sourceRoot":"","sources":["../../src/voice/asr.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAE5C,mDAA+D;AAC/D,qCAAuE;AAEvE,MAAa,SAAU,SAAQ,mBAAU;IACvC,YAAY,MAAe,EAAE,aAAsC;QACjE,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,OAAmB;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,IAAI,4BAAe,CACvB,4BAA4B,EAC5B,gBAAgB,EAChB,SAAS,CACV,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,MAAM,EACN,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,sCAAsC,EAC5D,UAAU,CACX,CAAC;YAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAE/B,OAAO;gBACL,IAAI;gBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,QAAQ;aAClB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,YAAY,qBAAQ,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,qBAAQ,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF;AArDD,8BAqDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/voice/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./tts"), exports);
|
|
18
|
+
__exportStar(require("./asr"), exports);
|
|
19
|
+
__exportStar(require("./models"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/voice/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,wCAAsB;AACtB,2CAAyB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare class TTSConfig {
|
|
2
|
+
static readonly DEFAULT_SPEAKER = "zh_female_xiaohe_uranus_bigtts";
|
|
3
|
+
static readonly DEFAULT_AUDIO_FORMAT = "mp3";
|
|
4
|
+
static readonly DEFAULT_SAMPLE_RATE = 24000;
|
|
5
|
+
static readonly DEFAULT_SPEECH_RATE = 0;
|
|
6
|
+
static readonly DEFAULT_LOUDNESS_RATE = 0;
|
|
7
|
+
}
|
|
8
|
+
export type AudioFormat = 'pcm' | 'mp3' | 'ogg_opus';
|
|
9
|
+
export type SampleRate = 8000 | 16000 | 22050 | 24000 | 32000 | 44100 | 48000;
|
|
10
|
+
export interface TTSRequest {
|
|
11
|
+
uid: string;
|
|
12
|
+
text?: string;
|
|
13
|
+
ssml?: string;
|
|
14
|
+
speaker?: string;
|
|
15
|
+
audioFormat?: AudioFormat;
|
|
16
|
+
sampleRate?: SampleRate;
|
|
17
|
+
speechRate?: number;
|
|
18
|
+
loudnessRate?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface TTSResponse {
|
|
21
|
+
audioUri: string;
|
|
22
|
+
audioSize: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function buildTTSApiRequest(request: TTSRequest): any;
|
|
25
|
+
export interface ASRRequest {
|
|
26
|
+
uid?: string;
|
|
27
|
+
url?: string;
|
|
28
|
+
base64Data?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface ASRResponse {
|
|
31
|
+
text: string;
|
|
32
|
+
duration?: number;
|
|
33
|
+
utterances?: any[];
|
|
34
|
+
rawData: any;
|
|
35
|
+
}
|
|
36
|
+
export declare function buildASRApiRequest(request: ASRRequest): any;
|
|
37
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/voice/models.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,eAAe,oCAAoC;IACnE,MAAM,CAAC,QAAQ,CAAC,oBAAoB,SAAS;IAC7C,MAAM,CAAC,QAAQ,CAAC,mBAAmB,SAAS;IAC5C,MAAM,CAAC,QAAQ,CAAC,mBAAmB,KAAK;IACxC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,KAAK;CAC3C;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;AACrD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,GAAG,CAuB3D;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,OAAO,EAAE,GAAG,CAAC;CACd;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,GAAG,CAe3D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TTSConfig = void 0;
|
|
4
|
+
exports.buildTTSApiRequest = buildTTSApiRequest;
|
|
5
|
+
exports.buildASRApiRequest = buildASRApiRequest;
|
|
6
|
+
class TTSConfig {
|
|
7
|
+
}
|
|
8
|
+
exports.TTSConfig = TTSConfig;
|
|
9
|
+
TTSConfig.DEFAULT_SPEAKER = 'zh_female_xiaohe_uranus_bigtts';
|
|
10
|
+
TTSConfig.DEFAULT_AUDIO_FORMAT = 'mp3';
|
|
11
|
+
TTSConfig.DEFAULT_SAMPLE_RATE = 24000;
|
|
12
|
+
TTSConfig.DEFAULT_SPEECH_RATE = 0;
|
|
13
|
+
TTSConfig.DEFAULT_LOUDNESS_RATE = 0;
|
|
14
|
+
function buildTTSApiRequest(request) {
|
|
15
|
+
const params = {
|
|
16
|
+
user: {
|
|
17
|
+
uid: request.uid,
|
|
18
|
+
},
|
|
19
|
+
req_params: {
|
|
20
|
+
speaker: request.speaker || TTSConfig.DEFAULT_SPEAKER,
|
|
21
|
+
audio_params: {
|
|
22
|
+
format: request.audioFormat || TTSConfig.DEFAULT_AUDIO_FORMAT,
|
|
23
|
+
sample_rate: request.sampleRate || TTSConfig.DEFAULT_SAMPLE_RATE,
|
|
24
|
+
speech_rate: request.speechRate ?? TTSConfig.DEFAULT_SPEECH_RATE,
|
|
25
|
+
loudness_rate: request.loudnessRate ?? TTSConfig.DEFAULT_LOUDNESS_RATE,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
if (request.text) {
|
|
30
|
+
params.req_params.text = request.text;
|
|
31
|
+
}
|
|
32
|
+
else if (request.ssml) {
|
|
33
|
+
params.req_params.ssml = request.ssml;
|
|
34
|
+
}
|
|
35
|
+
return params;
|
|
36
|
+
}
|
|
37
|
+
function buildASRApiRequest(request) {
|
|
38
|
+
const audioData = {};
|
|
39
|
+
if (request.url) {
|
|
40
|
+
audioData.url = request.url;
|
|
41
|
+
}
|
|
42
|
+
else if (request.base64Data) {
|
|
43
|
+
audioData.data = request.base64Data;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
user: {
|
|
47
|
+
uid: request.uid,
|
|
48
|
+
},
|
|
49
|
+
audio: audioData,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/voice/models.ts"],"names":[],"mappings":";;;AA2BA,gDAuBC;AAeD,gDAeC;AAhFD,MAAa,SAAS;;AAAtB,8BAMC;AALiB,yBAAe,GAAG,gCAAgC,CAAC;AACnD,8BAAoB,GAAG,KAAK,CAAC;AAC7B,6BAAmB,GAAG,KAAK,CAAC;AAC5B,6BAAmB,GAAG,CAAC,CAAC;AACxB,+BAAqB,GAAG,CAAC,CAAC;AAsB5C,SAAgB,kBAAkB,CAAC,OAAmB;IACpD,MAAM,MAAM,GAAQ;QAClB,IAAI,EAAE;YACJ,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB;QACD,UAAU,EAAE;YACV,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,eAAe;YACrD,YAAY,EAAE;gBACZ,MAAM,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC,oBAAoB;gBAC7D,WAAW,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC,mBAAmB;gBAChE,WAAW,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC,mBAAmB;gBAChE,aAAa,EAAE,OAAO,CAAC,YAAY,IAAI,SAAS,CAAC,qBAAqB;aACvE;SACF;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACxC,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAeD,SAAgB,kBAAkB,CAAC,OAAmB;IACpD,MAAM,SAAS,GAAQ,EAAE,CAAC;IAE1B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAC9B,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC9B,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,OAAO;QACL,IAAI,EAAE;YACJ,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB;QACD,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseClient } from '../core/client';
|
|
2
|
+
import { Config } from '../core/config';
|
|
3
|
+
import { TTSRequest, TTSResponse } from './models';
|
|
4
|
+
export declare class TTSClient extends BaseClient {
|
|
5
|
+
constructor(config?: Config, customHeaders?: Record<string, string>);
|
|
6
|
+
synthesize(request: TTSRequest): Promise<TTSResponse>;
|
|
7
|
+
private processStreamResponse;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/voice/tts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EACL,UAAU,EACV,WAAW,EAGZ,MAAM,UAAU,CAAC;AAElB,qBAAa,SAAU,SAAQ,UAAU;gBAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI7D,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;YAuC7C,qBAAqB;CAoEpC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TTSClient = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const client_1 = require("../core/client");
|
|
9
|
+
const exceptions_1 = require("../core/exceptions");
|
|
10
|
+
const models_1 = require("./models");
|
|
11
|
+
class TTSClient extends client_1.BaseClient {
|
|
12
|
+
constructor(config, customHeaders) {
|
|
13
|
+
super(config, customHeaders);
|
|
14
|
+
}
|
|
15
|
+
async synthesize(request) {
|
|
16
|
+
if (!request.text && !request.ssml) {
|
|
17
|
+
throw new exceptions_1.ValidationError('必须提供 text 或 ssml 其中之一', 'text/ssml', undefined);
|
|
18
|
+
}
|
|
19
|
+
const apiRequest = (0, models_1.buildTTSApiRequest)(request);
|
|
20
|
+
const headers = {
|
|
21
|
+
...this.config.getHeaders(),
|
|
22
|
+
Connection: 'keep-alive',
|
|
23
|
+
};
|
|
24
|
+
try {
|
|
25
|
+
const response = await axios_1.default.post(`${this.config.baseUrl}/api/v3/tts/unidirectional`, apiRequest, {
|
|
26
|
+
headers,
|
|
27
|
+
responseType: 'stream',
|
|
28
|
+
timeout: this.config.timeout,
|
|
29
|
+
});
|
|
30
|
+
return await this.processStreamResponse(response);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (error.response) {
|
|
34
|
+
throw new exceptions_1.APIError(`TTS 请求失败: ${error.message}`, error.response.status, error.response.data);
|
|
35
|
+
}
|
|
36
|
+
throw new exceptions_1.APIError(`TTS 请求异常: ${error.message}`, 500);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async processStreamResponse(response) {
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
let audioUri = '';
|
|
42
|
+
let totalAudioSize = 0;
|
|
43
|
+
let buffer = '';
|
|
44
|
+
response.data.on('data', (chunk) => {
|
|
45
|
+
buffer += chunk.toString('utf-8');
|
|
46
|
+
const lines = buffer.split('\n');
|
|
47
|
+
buffer = lines.pop() || '';
|
|
48
|
+
for (const line of lines) {
|
|
49
|
+
if (!line.trim() || !line.startsWith('data:')) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const jsonStr = line.replace('data:', '').trim();
|
|
54
|
+
if (!jsonStr)
|
|
55
|
+
continue;
|
|
56
|
+
const data = JSON.parse(jsonStr);
|
|
57
|
+
if (data.code === 0 && data.data) {
|
|
58
|
+
const audioChunk = Buffer.from(data.data, 'base64');
|
|
59
|
+
totalAudioSize += audioChunk.length;
|
|
60
|
+
}
|
|
61
|
+
else if (data.code === 20000000) {
|
|
62
|
+
if (data.url) {
|
|
63
|
+
audioUri = data.url;
|
|
64
|
+
}
|
|
65
|
+
resolve({
|
|
66
|
+
audioUri,
|
|
67
|
+
audioSize: totalAudioSize,
|
|
68
|
+
});
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
else if (data.code > 0) {
|
|
72
|
+
reject(new exceptions_1.APIError(`合成音频失败: ${data.message || ''}`, data.code));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
reject(new exceptions_1.APIError(`响应解析失败: ${e.message}`, 500));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
response.data.on('end', () => {
|
|
83
|
+
if (!audioUri && totalAudioSize === 0) {
|
|
84
|
+
reject(new exceptions_1.APIError('未收到完整的音频数据', 500));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
resolve({
|
|
88
|
+
audioUri,
|
|
89
|
+
audioSize: totalAudioSize,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
response.data.on('error', (error) => {
|
|
94
|
+
reject(new exceptions_1.APIError(`流处理错误: ${error.message}`, 500));
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.TTSClient = TTSClient;
|
|
100
|
+
//# sourceMappingURL=tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../src/voice/tts.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "coze-coding-dev-sdk",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Coze Coding Dev SDK - 优雅的多功能 AI SDK,支持图片生成、视频生成、语音合成、语音识别、大语言模型和联网搜索",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"module": "dist/index.mjs",
|
|
8
|
+
"bin": {
|
|
9
|
+
"coze-coding-ai": "./bin/coze-coding-ai.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"dev": "tsc --watch",
|
|
14
|
+
"lint": "eslint src --ext .ts",
|
|
15
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
16
|
+
"test": "jest",
|
|
17
|
+
"prepublishOnly": "npm run build",
|
|
18
|
+
"publish:beta": "npm publish --tag beta",
|
|
19
|
+
"publish:latest": "npm publish --tag latest",
|
|
20
|
+
"link:local": "npm link",
|
|
21
|
+
"unlink:local": "npm unlink -g coze-coding-dev-sdk"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"coze",
|
|
25
|
+
"coze-coding",
|
|
26
|
+
"dev",
|
|
27
|
+
"ai",
|
|
28
|
+
"sdk",
|
|
29
|
+
"image-generation",
|
|
30
|
+
"video-generation",
|
|
31
|
+
"text-to-speech",
|
|
32
|
+
"speech-recognition",
|
|
33
|
+
"llm",
|
|
34
|
+
"search",
|
|
35
|
+
"doubao",
|
|
36
|
+
"seedream",
|
|
37
|
+
"typescript"
|
|
38
|
+
],
|
|
39
|
+
"author": "Coze Coding Dev Team <support@coze.com>",
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/coze/coze-coding-dev-sdk.git",
|
|
44
|
+
"directory": "packages/typescript"
|
|
45
|
+
},
|
|
46
|
+
"bugs": {
|
|
47
|
+
"url": "https://github.com/coze/coze-coding-dev-sdk/issues"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://github.com/coze/coze-coding-dev-sdk#readme",
|
|
50
|
+
"files": [
|
|
51
|
+
"dist",
|
|
52
|
+
"bin",
|
|
53
|
+
"README.md",
|
|
54
|
+
"LICENSE"
|
|
55
|
+
],
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"@langchain/core": "^1.1.8",
|
|
58
|
+
"@langchain/openai": "^1.2.0",
|
|
59
|
+
"axios": "^1.13.2",
|
|
60
|
+
"chalk": "^5.6.2",
|
|
61
|
+
"commander": "^14.0.2",
|
|
62
|
+
"ora": "^9.0.0"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@types/jest": "^29.0.0",
|
|
66
|
+
"@types/node": "^20.0.0",
|
|
67
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
68
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
69
|
+
"eslint": "^8.0.0",
|
|
70
|
+
"jest": "^29.0.0",
|
|
71
|
+
"prettier": "^3.0.0",
|
|
72
|
+
"ts-jest": "^29.0.0",
|
|
73
|
+
"ts-node": "^10.9.2",
|
|
74
|
+
"typescript": "^5.0.0"
|
|
75
|
+
},
|
|
76
|
+
"engines": {
|
|
77
|
+
"node": ">=18.0.0"
|
|
78
|
+
}
|
|
79
|
+
}
|