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.
Files changed (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +881 -0
  3. package/bin/coze-coding-ai.js +3 -0
  4. package/dist/cli/commands/chat.d.ts +3 -0
  5. package/dist/cli/commands/chat.d.ts.map +1 -0
  6. package/dist/cli/commands/chat.js +58 -0
  7. package/dist/cli/commands/chat.js.map +1 -0
  8. package/dist/cli/commands/image.d.ts +3 -0
  9. package/dist/cli/commands/image.d.ts.map +1 -0
  10. package/dist/cli/commands/image.js +92 -0
  11. package/dist/cli/commands/image.js.map +1 -0
  12. package/dist/cli/commands/search.d.ts +3 -0
  13. package/dist/cli/commands/search.d.ts.map +1 -0
  14. package/dist/cli/commands/search.js +55 -0
  15. package/dist/cli/commands/search.js.map +1 -0
  16. package/dist/cli/commands/video.d.ts +4 -0
  17. package/dist/cli/commands/video.d.ts.map +1 -0
  18. package/dist/cli/commands/video.js +74 -0
  19. package/dist/cli/commands/video.js.map +1 -0
  20. package/dist/cli/commands/voice.d.ts +4 -0
  21. package/dist/cli/commands/voice.d.ts.map +1 -0
  22. package/dist/cli/commands/voice.js +112 -0
  23. package/dist/cli/commands/voice.js.map +1 -0
  24. package/dist/cli/constants.d.ts +4 -0
  25. package/dist/cli/constants.d.ts.map +1 -0
  26. package/dist/cli/constants.js +7 -0
  27. package/dist/cli/constants.js.map +1 -0
  28. package/dist/cli/index.d.ts +2 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +22 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/cli/utils.d.ts +2 -0
  33. package/dist/cli/utils.d.ts.map +1 -0
  34. package/dist/cli/utils.js +29 -0
  35. package/dist/cli/utils.js.map +1 -0
  36. package/dist/core/client.d.ts +10 -0
  37. package/dist/core/client.d.ts.map +1 -0
  38. package/dist/core/client.js +62 -0
  39. package/dist/core/client.js.map +1 -0
  40. package/dist/core/config.d.ts +19 -0
  41. package/dist/core/config.d.ts.map +1 -0
  42. package/dist/core/config.js +24 -0
  43. package/dist/core/config.js.map +1 -0
  44. package/dist/core/exceptions.d.ts +21 -0
  45. package/dist/core/exceptions.d.ts.map +1 -0
  46. package/dist/core/exceptions.js +44 -0
  47. package/dist/core/exceptions.js.map +1 -0
  48. package/dist/core/index.d.ts +4 -0
  49. package/dist/core/index.d.ts.map +1 -0
  50. package/dist/core/index.js +14 -0
  51. package/dist/core/index.js.map +1 -0
  52. package/dist/image/client.d.ts +11 -0
  53. package/dist/image/client.d.ts.map +1 -0
  54. package/dist/image/client.js +34 -0
  55. package/dist/image/client.js.map +1 -0
  56. package/dist/image/index.d.ts +3 -0
  57. package/dist/image/index.d.ts.map +1 -0
  58. package/dist/image/index.js +19 -0
  59. package/dist/image/index.js.map +1 -0
  60. package/dist/image/models.d.ts +61 -0
  61. package/dist/image/models.d.ts.map +1 -0
  62. package/dist/image/models.js +100 -0
  63. package/dist/image/models.js.map +1 -0
  64. package/dist/index.d.ts +7 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +23 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/llm/client.d.ts +12 -0
  69. package/dist/llm/client.d.ts.map +1 -0
  70. package/dist/llm/client.js +75 -0
  71. package/dist/llm/client.js.map +1 -0
  72. package/dist/llm/index.d.ts +3 -0
  73. package/dist/llm/index.d.ts.map +1 -0
  74. package/dist/llm/index.js +8 -0
  75. package/dist/llm/index.js.map +1 -0
  76. package/dist/llm/models.d.ts +22 -0
  77. package/dist/llm/models.d.ts.map +1 -0
  78. package/dist/llm/models.js +11 -0
  79. package/dist/llm/models.js.map +1 -0
  80. package/dist/search/client.d.ts +21 -0
  81. package/dist/search/client.d.ts.map +1 -0
  82. package/dist/search/client.js +83 -0
  83. package/dist/search/client.js.map +1 -0
  84. package/dist/search/index.d.ts +3 -0
  85. package/dist/search/index.d.ts.map +1 -0
  86. package/dist/search/index.js +19 -0
  87. package/dist/search/index.js.map +1 -0
  88. package/dist/search/models.d.ts +52 -0
  89. package/dist/search/models.d.ts.map +1 -0
  90. package/dist/search/models.js +70 -0
  91. package/dist/search/models.js.map +1 -0
  92. package/dist/video/client.d.ts +26 -0
  93. package/dist/video/client.d.ts.map +1 -0
  94. package/dist/video/client.js +71 -0
  95. package/dist/video/client.js.map +1 -0
  96. package/dist/video/index.d.ts +3 -0
  97. package/dist/video/index.d.ts.map +1 -0
  98. package/dist/video/index.js +19 -0
  99. package/dist/video/index.js.map +1 -0
  100. package/dist/video/models.d.ts +44 -0
  101. package/dist/video/models.d.ts.map +1 -0
  102. package/dist/video/models.js +31 -0
  103. package/dist/video/models.js.map +1 -0
  104. package/dist/voice/asr.d.ts +22 -0
  105. package/dist/voice/asr.d.ts.map +1 -0
  106. package/dist/voice/asr.js +50 -0
  107. package/dist/voice/asr.js.map +1 -0
  108. package/dist/voice/index.d.ts +4 -0
  109. package/dist/voice/index.d.ts.map +1 -0
  110. package/dist/voice/index.js +20 -0
  111. package/dist/voice/index.js.map +1 -0
  112. package/dist/voice/models.d.ts +37 -0
  113. package/dist/voice/models.d.ts.map +1 -0
  114. package/dist/voice/models.js +52 -0
  115. package/dist/voice/models.js.map +1 -0
  116. package/dist/voice/tts.d.ts +9 -0
  117. package/dist/voice/tts.d.ts.map +1 -0
  118. package/dist/voice/tts.js +100 -0
  119. package/dist/voice/tts.js.map +1 -0
  120. 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,4 @@
1
+ export * from './tts';
2
+ export * from './asr';
3
+ export * from './models';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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
+ }