@breeze.blue/sdk 0.10.0 → 0.11.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/CHANGELOG.md +12 -1
- package/README.md +20 -0
- package/dist/_transform.js +5 -10
- package/dist/client.d.ts +6 -1
- package/dist/client.js +48 -12
- package/dist/types.d.ts +24 -11
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/voice-metadata.d.ts +3 -0
- package/dist/voice-metadata.js +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.0
|
|
4
|
+
|
|
5
|
+
- Added canonical Voice `tags`, personal tag overrides, favorite management,
|
|
6
|
+
exact tag filters, and `voices.updateTags()` / `favorite()` / `unfavorite()`.
|
|
7
|
+
- `voices.savePreview(...)` now requires `languageCode`, preventing saved
|
|
8
|
+
voices from being created without explicit reference-language metadata.
|
|
9
|
+
- Added `voices.metadataOptions()` and the typed `VoiceLanguageCode` contract
|
|
10
|
+
for discovering Voice Metadata codes and language-to-accent constraints.
|
|
11
|
+
- Sync and async TTS accept explicit sample-rate and bitrate output profiles,
|
|
12
|
+
such as `wav_48000` and `mp3_44100_128`.
|
|
13
|
+
|
|
3
14
|
## 0.10.0
|
|
4
15
|
|
|
5
16
|
- Added typed Voice Metadata codes and camelCase response fields for gender,
|
|
@@ -205,7 +216,7 @@
|
|
|
205
216
|
|
|
206
217
|
## 0.1.2
|
|
207
218
|
|
|
208
|
-
- Breaking: all request and response field names are now camelCase (e.g. `modelId`, `voiceId`, `voiceSettings`, `historyItemId`). The SDK transparently translates to the snake_case HTTP wire format on send and from snake_case on receive.
|
|
219
|
+
- Breaking: all request and response field names are now camelCase (e.g. `modelId`, `voiceId`, `voiceSettings`, `historyItemId`). The SDK transparently translates to the snake_case HTTP wire format on send and from snake_case on receive.
|
|
209
220
|
- Removed remaining ElevenLabs-positioning copy from the README and package keywords. Quickstart and reference examples use the published packages only.
|
|
210
221
|
|
|
211
222
|
## 0.1.1
|
package/README.md
CHANGED
|
@@ -393,6 +393,10 @@ Streaming text-to-speech defaults to `pcm` to reduce time to first audio. Pass
|
|
|
393
393
|
`{ outputFormat: "wav" }` or `{ outputFormat: "mp3" }` when you need that wire
|
|
394
394
|
format explicitly.
|
|
395
395
|
|
|
396
|
+
Sync and async text-to-speech also take a sample rate and, for the lossy encodings, a bitrate, such as
|
|
397
|
+
`{ outputFormat: "wav_48000" }`. Breeze resamples its native 24000 Hz output for
|
|
398
|
+
downstream compatibility; profiles carrying a sample rate are not available for streaming.
|
|
399
|
+
|
|
396
400
|
## Voices
|
|
397
401
|
|
|
398
402
|
Search every voice available to the account and inspect a single voice. Public
|
|
@@ -402,6 +406,10 @@ or voice ID.
|
|
|
402
406
|
|
|
403
407
|
```ts
|
|
404
408
|
const voices = await client.voices.search({ search: "calm documentary narrator" });
|
|
409
|
+
const taggedFavorites = await client.voices.search({
|
|
410
|
+
favoritesOnly: true,
|
|
411
|
+
tags: ["narration", "novel=三体"],
|
|
412
|
+
});
|
|
405
413
|
const firstVoiceId = voices.voices[0].voiceId;
|
|
406
414
|
|
|
407
415
|
const voice = await client.voices.get(firstVoiceId);
|
|
@@ -409,6 +417,11 @@ const settings = await client.voices.getSettings(firstVoiceId);
|
|
|
409
417
|
|
|
410
418
|
const randomVoice = await client.voices.random();
|
|
411
419
|
console.log(randomVoice.voiceId, randomVoice.name);
|
|
420
|
+
|
|
421
|
+
// Discover the current code-only Voice Metadata contract before building a form.
|
|
422
|
+
const metadataOptions = await client.voices.metadataOptions();
|
|
423
|
+
console.log(metadataOptions.languageCodes);
|
|
424
|
+
console.log(metadataOptions.accentCodesByLanguage.en);
|
|
412
425
|
```
|
|
413
426
|
|
|
414
427
|
Breeze voice creation is always two steps: produce a **preview**, let the
|
|
@@ -454,6 +467,7 @@ const saved = await client.voices.savePreview({
|
|
|
454
467
|
age: "middle_aged",
|
|
455
468
|
tone: ["warm", "articulate"],
|
|
456
469
|
accent: "american",
|
|
470
|
+
tags: ["narration", "novel=三体"],
|
|
457
471
|
});
|
|
458
472
|
```
|
|
459
473
|
|
|
@@ -468,12 +482,18 @@ await client.voices.edit(saved.voiceId, {
|
|
|
468
482
|
// null clears nullable metadata; [] clears tone. Omitted fields remain unchanged.
|
|
469
483
|
await client.voices.edit(saved.voiceId, { accent: null, tone: [] });
|
|
470
484
|
await client.voices.editSettings(saved.voiceId, { guidanceScale: 1.2 });
|
|
485
|
+
await client.voices.favorite(firstVoiceId);
|
|
486
|
+
await client.voices.updateTags(firstVoiceId, ["narration", "novel=三体"]);
|
|
487
|
+
await client.voices.updateTags(firstVoiceId, []); // Resume owner tag inheritance.
|
|
488
|
+
await client.voices.unfavorite(firstVoiceId);
|
|
471
489
|
await client.voices.delete(saved.voiceId);
|
|
472
490
|
```
|
|
473
491
|
|
|
474
492
|
Voice Metadata uses stable code values. `gender`, `age`, and `accent` may be
|
|
475
493
|
`null`; `tone` contains up to three distinct codes. English and Chinese use
|
|
476
494
|
different accent code sets, and other languages require `accent: null`.
|
|
495
|
+
Call `client.voices.metadataOptions()` to discover every accepted code and the
|
|
496
|
+
language-to-accent cascade at runtime.
|
|
477
497
|
|
|
478
498
|
## History, Models, and Account
|
|
479
499
|
|
package/dist/_transform.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// Keys whose values are user-defined dictionaries; we transform the key itself
|
|
2
|
-
// but never recurse into the value.
|
|
3
|
-
const OPAQUE_VALUE_KEYS = new Set(["labels"]);
|
|
4
1
|
function snakeToCamel(key) {
|
|
5
2
|
return key.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase());
|
|
6
3
|
}
|
|
@@ -15,24 +12,22 @@ function isPlainObject(value) {
|
|
|
15
12
|
const proto = Object.getPrototypeOf(value);
|
|
16
13
|
return proto === Object.prototype || proto === null;
|
|
17
14
|
}
|
|
18
|
-
function transform(value, keyFn
|
|
15
|
+
function transform(value, keyFn) {
|
|
19
16
|
if (Array.isArray(value)) {
|
|
20
|
-
return value.map((item) => transform(item, keyFn
|
|
17
|
+
return value.map((item) => transform(item, keyFn));
|
|
21
18
|
}
|
|
22
19
|
if (isPlainObject(value)) {
|
|
23
|
-
if (opaqueKey)
|
|
24
|
-
return value;
|
|
25
20
|
const out = {};
|
|
26
21
|
for (const [k, v] of Object.entries(value)) {
|
|
27
|
-
out[keyFn(k)] = transform(v, keyFn
|
|
22
|
+
out[keyFn(k)] = transform(v, keyFn);
|
|
28
23
|
}
|
|
29
24
|
return out;
|
|
30
25
|
}
|
|
31
26
|
return value;
|
|
32
27
|
}
|
|
33
28
|
export function camelizeKeys(value) {
|
|
34
|
-
return transform(value, snakeToCamel
|
|
29
|
+
return transform(value, snakeToCamel);
|
|
35
30
|
}
|
|
36
31
|
export function snakeizeKeys(value) {
|
|
37
|
-
return transform(value, camelToSnake
|
|
32
|
+
return transform(value, camelToSnake);
|
|
38
33
|
}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AudioResponse } from "./audio.js";
|
|
2
|
-
import type { AudioRequestOptions, BreezeBlueWebSocket, AsyncTextToSpeechJob, Balance, BreezeBlueClientOptions, GenericStatus, GenerationJob, HistoryItem, HistoryList, HistoryListParams, Model, RequestOptions, RealtimeTextToSpeechConnectOptions, RealtimeTextToSpeechEvent, RealtimeTextToSpeechManagedConnectOptions, RealtimeTextToSpeechMessage, RealtimeTextToSpeechSession, RealtimeTextToSpeechSessionRequest, SavedVoice, SaveVoiceRequest, StreamTextToSpeechOptions, TextToSpeechRequest, TtsEnhanceRequest, TtsEnhanceResponse, Usage, UsageParams, Voice, VoiceClonePreview, VoiceClonePreviewRequest, VoiceDesignRequest, VoiceDesignResponse, VoiceEditRequest, VoiceList, VoiceSearchParams, VoiceSettings } from "./types.js";
|
|
2
|
+
import type { AudioRequestOptions, BreezeBlueWebSocket, AsyncTextToSpeechJob, Balance, BreezeBlueClientOptions, GenericStatus, GenerationJob, HistoryItem, HistoryList, HistoryListParams, Model, RequestOptions, RealtimeTextToSpeechConnectOptions, RealtimeTextToSpeechEvent, RealtimeTextToSpeechManagedConnectOptions, RealtimeTextToSpeechMessage, RealtimeTextToSpeechSession, RealtimeTextToSpeechSessionRequest, SavedVoice, SaveVoiceRequest, StreamTextToSpeechOptions, TextToSpeechRequest, TtsEnhanceRequest, TtsEnhanceResponse, Usage, UsageParams, Voice, VoiceClonePreview, VoiceClonePreviewRequest, VoiceDesignRequest, VoiceDesignResponse, VoiceEditRequest, VoiceList, VoiceMetadataOptions, VoiceSearchParams, VoiceSettings } from "./types.js";
|
|
3
3
|
export declare class BreezeBlueClient {
|
|
4
4
|
readonly apiKey: string | undefined;
|
|
5
5
|
readonly baseUrl: string;
|
|
@@ -212,7 +212,12 @@ declare class VoicesResource {
|
|
|
212
212
|
search(params?: VoiceSearchParams, options?: RequestOptions): Promise<VoiceList>;
|
|
213
213
|
get(voiceId: string, options?: RequestOptions): Promise<Voice>;
|
|
214
214
|
random(options?: RequestOptions): Promise<Voice>;
|
|
215
|
+
/** Return stable Voice Metadata codes and language-accent constraints. */
|
|
216
|
+
metadataOptions(options?: RequestOptions): Promise<VoiceMetadataOptions>;
|
|
215
217
|
edit(voiceId: string, request: VoiceEditRequest, options?: RequestOptions): Promise<GenericStatus>;
|
|
218
|
+
updateTags(voiceId: string, tags: string[], options?: RequestOptions): Promise<Voice>;
|
|
219
|
+
favorite(voiceId: string, options?: RequestOptions): Promise<Voice>;
|
|
220
|
+
unfavorite(voiceId: string, options?: RequestOptions): Promise<Voice>;
|
|
216
221
|
delete(voiceId: string, options?: RequestOptions): Promise<GenericStatus>;
|
|
217
222
|
getSettings(voiceId: string, options?: RequestOptions): Promise<Required<VoiceSettings>>;
|
|
218
223
|
editSettings(voiceId: string, settings: VoiceSettings, options?: RequestOptions): Promise<Required<VoiceSettings>>;
|
package/dist/client.js
CHANGED
|
@@ -1494,18 +1494,39 @@ class VoicesResource {
|
|
|
1494
1494
|
* semantic and text relevance; personal voices match by name, description,
|
|
1495
1495
|
* or identifier.
|
|
1496
1496
|
*/
|
|
1497
|
-
search(params = {}, options) {
|
|
1498
|
-
|
|
1497
|
+
async search(params = {}, options) {
|
|
1498
|
+
const result = await this.client.requestJson("GET", "/v1/voices", params, undefined, options);
|
|
1499
|
+
return Array.isArray(result.voices)
|
|
1500
|
+
? { ...result, voices: result.voices.map(stripHiddenVoiceFields) }
|
|
1501
|
+
: result;
|
|
1499
1502
|
}
|
|
1500
|
-
get(voiceId, options) {
|
|
1501
|
-
|
|
1503
|
+
async get(voiceId, options) {
|
|
1504
|
+
const result = await this.client.requestJson("GET", `/v1/voices/${encodeURIComponent(voiceId)}`, undefined, undefined, options);
|
|
1505
|
+
return stripHiddenVoiceFields(result);
|
|
1502
1506
|
}
|
|
1503
|
-
random(options) {
|
|
1504
|
-
|
|
1507
|
+
async random(options) {
|
|
1508
|
+
const result = await this.client.requestJson("GET", "/v1/voices/random", undefined, undefined, options);
|
|
1509
|
+
return stripHiddenVoiceFields(result);
|
|
1510
|
+
}
|
|
1511
|
+
/** Return stable Voice Metadata codes and language-accent constraints. */
|
|
1512
|
+
metadataOptions(options) {
|
|
1513
|
+
return this.client.requestJson("GET", "/v1/voice-metadata/options", undefined, undefined, options);
|
|
1505
1514
|
}
|
|
1506
1515
|
edit(voiceId, request, options) {
|
|
1507
1516
|
return this.client.requestJson("PATCH", `/v1/voices/${encodeURIComponent(voiceId)}`, undefined, voiceEditForm(request), options);
|
|
1508
1517
|
}
|
|
1518
|
+
async updateTags(voiceId, tags, options) {
|
|
1519
|
+
const result = await this.client.requestJson("PUT", `/v1/voices/${encodeURIComponent(voiceId)}/tags`, undefined, { tags }, options);
|
|
1520
|
+
return stripHiddenVoiceFields(result);
|
|
1521
|
+
}
|
|
1522
|
+
async favorite(voiceId, options) {
|
|
1523
|
+
const result = await this.client.requestJson("PUT", `/v1/voices/${encodeURIComponent(voiceId)}/favorite`, undefined, undefined, options);
|
|
1524
|
+
return stripHiddenVoiceFields(result);
|
|
1525
|
+
}
|
|
1526
|
+
async unfavorite(voiceId, options) {
|
|
1527
|
+
const result = await this.client.requestJson("DELETE", `/v1/voices/${encodeURIComponent(voiceId)}/favorite`, undefined, undefined, options);
|
|
1528
|
+
return stripHiddenVoiceFields(result);
|
|
1529
|
+
}
|
|
1509
1530
|
delete(voiceId, options) {
|
|
1510
1531
|
return this.client.requestJson("DELETE", `/v1/voices/${encodeURIComponent(voiceId)}`, undefined, undefined, options);
|
|
1511
1532
|
}
|
|
@@ -1538,11 +1559,11 @@ class VoicesResource {
|
|
|
1538
1559
|
return this.client.requestAudio("GET", `/v1/voice-previews/${encodeURIComponent(generatedVoiceId)}/stream`, { outputFormat: options.outputFormat }, undefined, options);
|
|
1539
1560
|
}
|
|
1540
1561
|
/** Persist a clone or design preview as a real voice asset. */
|
|
1541
|
-
savePreview(request, options) {
|
|
1542
|
-
|
|
1562
|
+
async savePreview(request, options) {
|
|
1563
|
+
const result = await this.client.requestJson("POST", `/v1/voice-previews/${encodeURIComponent(request.generatedVoiceId)}/save`, undefined, {
|
|
1543
1564
|
voiceName: request.voiceName,
|
|
1544
1565
|
voiceDescription: request.voiceDescription,
|
|
1545
|
-
|
|
1566
|
+
tags: request.tags,
|
|
1546
1567
|
primaryCategoryCode: request.primaryCategoryCode,
|
|
1547
1568
|
visibility: request.visibility,
|
|
1548
1569
|
playedNotSelectedVoiceIds: request.playedNotSelectedVoiceIds,
|
|
@@ -1552,6 +1573,7 @@ class VoicesResource {
|
|
|
1552
1573
|
tone: request.tone,
|
|
1553
1574
|
accent: request.accent,
|
|
1554
1575
|
}, options);
|
|
1576
|
+
return stripHiddenVoiceFields(result);
|
|
1555
1577
|
}
|
|
1556
1578
|
}
|
|
1557
1579
|
class HistoryResource {
|
|
@@ -1654,7 +1676,13 @@ function buildUrl(baseUrl, path, params) {
|
|
|
1654
1676
|
for (const [key, value] of Object.entries(params ?? {})) {
|
|
1655
1677
|
if (value === undefined || value === null)
|
|
1656
1678
|
continue;
|
|
1657
|
-
|
|
1679
|
+
if (Array.isArray(value)) {
|
|
1680
|
+
for (const item of value)
|
|
1681
|
+
url.searchParams.append(key, String(item));
|
|
1682
|
+
}
|
|
1683
|
+
else {
|
|
1684
|
+
url.searchParams.set(key, String(value));
|
|
1685
|
+
}
|
|
1658
1686
|
}
|
|
1659
1687
|
return url.toString();
|
|
1660
1688
|
}
|
|
@@ -1684,7 +1712,7 @@ function clonePreviewForm(request) {
|
|
|
1684
1712
|
const form = new FormData();
|
|
1685
1713
|
form.set("name", request.name);
|
|
1686
1714
|
appendOptional(form, "description", request.description);
|
|
1687
|
-
appendOptional(form, "
|
|
1715
|
+
appendOptional(form, "language_code", request.languageCode);
|
|
1688
1716
|
appendOptional(form, "text", request.text);
|
|
1689
1717
|
appendOptional(form, "instructions", request.instructions);
|
|
1690
1718
|
for (const file of normalizeFiles(request.file, request.files, { required: true })) {
|
|
@@ -1696,7 +1724,10 @@ function voiceEditForm(request) {
|
|
|
1696
1724
|
const form = new FormData();
|
|
1697
1725
|
appendOptional(form, "name", request.name);
|
|
1698
1726
|
appendOptional(form, "description", request.description);
|
|
1699
|
-
|
|
1727
|
+
if (request.tags !== undefined) {
|
|
1728
|
+
for (const tag of request.tags)
|
|
1729
|
+
form.append("tags", tag);
|
|
1730
|
+
}
|
|
1700
1731
|
appendOptional(form, "primary_category_code", request.primaryCategoryCode);
|
|
1701
1732
|
appendOptional(form, "visibility", request.visibility);
|
|
1702
1733
|
appendOptional(form, "language_code", request.languageCode);
|
|
@@ -1717,6 +1748,11 @@ function voiceEditForm(request) {
|
|
|
1717
1748
|
}
|
|
1718
1749
|
return form;
|
|
1719
1750
|
}
|
|
1751
|
+
function stripHiddenVoiceFields(voice) {
|
|
1752
|
+
const result = { ...voice };
|
|
1753
|
+
delete result.labels;
|
|
1754
|
+
return result;
|
|
1755
|
+
}
|
|
1720
1756
|
function appendNullable(form, key, value) {
|
|
1721
1757
|
if (value === undefined)
|
|
1722
1758
|
return;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { VoiceAccent, VoiceAge, VoiceGender, VoiceTone } from "./voice-metadata.js";
|
|
1
|
+
import type { VoiceAccent, VoiceAge, VoiceGender, VoiceLanguageCode, VoiceTone } from "./voice-metadata.js";
|
|
2
2
|
export type JsonObject = Record<string, unknown>;
|
|
3
3
|
export type BreezeBlueFetch = typeof fetch;
|
|
4
4
|
export interface BreezeBlueClientOptions {
|
|
@@ -303,14 +303,15 @@ export interface Voice {
|
|
|
303
303
|
name: string;
|
|
304
304
|
origin: string;
|
|
305
305
|
voiceType: string;
|
|
306
|
-
|
|
306
|
+
tags: string[];
|
|
307
|
+
isFavorited: boolean;
|
|
307
308
|
previewUrl?: string | null;
|
|
308
309
|
settings: Required<VoiceSettings>;
|
|
309
310
|
description?: string | null;
|
|
310
311
|
createdAtUnix?: number | null;
|
|
311
312
|
primaryCategoryCode?: string | null;
|
|
312
313
|
visibility?: string | null;
|
|
313
|
-
languageCode:
|
|
314
|
+
languageCode: VoiceLanguageCode;
|
|
314
315
|
gender: VoiceGender | null;
|
|
315
316
|
age: VoiceAge | null;
|
|
316
317
|
tone: VoiceTone[];
|
|
@@ -321,12 +322,14 @@ export interface SavedVoice {
|
|
|
321
322
|
voiceId: string;
|
|
322
323
|
name: string;
|
|
323
324
|
origin: string;
|
|
325
|
+
tags: string[];
|
|
326
|
+
isFavorited: boolean;
|
|
324
327
|
previewUrl?: string | null;
|
|
325
328
|
description?: string | null;
|
|
326
329
|
createdAtUnix?: number | null;
|
|
327
330
|
primaryCategoryCode?: string | null;
|
|
328
331
|
visibility?: string | null;
|
|
329
|
-
languageCode:
|
|
332
|
+
languageCode: VoiceLanguageCode;
|
|
330
333
|
gender: VoiceGender | null;
|
|
331
334
|
age: VoiceAge | null;
|
|
332
335
|
tone: VoiceTone[];
|
|
@@ -340,9 +343,17 @@ export interface VoiceList {
|
|
|
340
343
|
page: number;
|
|
341
344
|
pageSize: number;
|
|
342
345
|
}
|
|
346
|
+
export interface VoiceMetadataOptions {
|
|
347
|
+
languageCodes: VoiceLanguageCode[];
|
|
348
|
+
genderCodes: VoiceGender[];
|
|
349
|
+
ageCodes: VoiceAge[];
|
|
350
|
+
toneCodes: VoiceTone[];
|
|
351
|
+
toneMaxItems: number;
|
|
352
|
+
accentCodesByLanguage: Record<VoiceLanguageCode, VoiceAccent[]>;
|
|
353
|
+
}
|
|
343
354
|
export interface VoiceSearchParams {
|
|
344
355
|
search?: string;
|
|
345
|
-
languageCode?:
|
|
356
|
+
languageCode?: VoiceLanguageCode;
|
|
346
357
|
origin?: "designed" | "cloned" | string;
|
|
347
358
|
voiceType?: "all" | "default" | "personal" | string;
|
|
348
359
|
sort?: "created_at_unix" | "name" | string;
|
|
@@ -350,6 +361,8 @@ export interface VoiceSearchParams {
|
|
|
350
361
|
nextPageToken?: string;
|
|
351
362
|
page?: number;
|
|
352
363
|
pageSize?: number;
|
|
364
|
+
favoritesOnly?: boolean;
|
|
365
|
+
tags?: string[];
|
|
353
366
|
}
|
|
354
367
|
export interface GenericStatus {
|
|
355
368
|
status: string;
|
|
@@ -365,8 +378,8 @@ export interface VoiceClonePreviewRequest {
|
|
|
365
378
|
file?: UploadData | UploadFile;
|
|
366
379
|
files?: Array<UploadData | UploadFile>;
|
|
367
380
|
description?: string;
|
|
368
|
-
labels?: Record<string, string>;
|
|
369
381
|
removeBackgroundNoise?: boolean;
|
|
382
|
+
languageCode?: VoiceLanguageCode;
|
|
370
383
|
text?: string;
|
|
371
384
|
instructions?: string;
|
|
372
385
|
}
|
|
@@ -377,10 +390,10 @@ export interface VoiceClonePreview {
|
|
|
377
390
|
export interface VoiceEditRequest {
|
|
378
391
|
name?: string;
|
|
379
392
|
description?: string;
|
|
380
|
-
|
|
393
|
+
tags?: string[];
|
|
381
394
|
primaryCategoryCode?: string;
|
|
382
395
|
visibility?: "private" | "public" | string;
|
|
383
|
-
languageCode?:
|
|
396
|
+
languageCode?: VoiceLanguageCode;
|
|
384
397
|
gender?: VoiceGender | null;
|
|
385
398
|
age?: VoiceAge | null;
|
|
386
399
|
tone?: VoiceTone[];
|
|
@@ -392,7 +405,7 @@ export interface VoiceDesignRequest {
|
|
|
392
405
|
voiceDescription: string;
|
|
393
406
|
text?: string;
|
|
394
407
|
modelId?: string;
|
|
395
|
-
languageCode?:
|
|
408
|
+
languageCode?: VoiceLanguageCode;
|
|
396
409
|
autoGenerateText?: boolean;
|
|
397
410
|
loudness?: number;
|
|
398
411
|
quality?: number;
|
|
@@ -414,11 +427,11 @@ export interface SaveVoiceRequest {
|
|
|
414
427
|
generatedVoiceId: string;
|
|
415
428
|
voiceName: string;
|
|
416
429
|
voiceDescription?: string | null;
|
|
417
|
-
|
|
430
|
+
tags?: string[];
|
|
418
431
|
primaryCategoryCode?: string;
|
|
419
432
|
visibility?: "private" | "public" | string;
|
|
420
433
|
playedNotSelectedVoiceIds?: string[];
|
|
421
|
-
languageCode
|
|
434
|
+
languageCode: VoiceLanguageCode;
|
|
422
435
|
gender?: VoiceGender | null;
|
|
423
436
|
age?: VoiceAge | null;
|
|
424
437
|
tone?: VoiceTone[];
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.
|
|
1
|
+
export declare const SDK_VERSION = "0.11.0";
|
|
2
2
|
export declare const SDK_NAME = "@breeze.blue/sdk";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.
|
|
1
|
+
export const SDK_VERSION = "0.11.0";
|
|
2
2
|
export const SDK_NAME = "@breeze.blue/sdk";
|
package/dist/voice-metadata.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare const VOICE_GENDER_CODES: readonly ["male", "female", "neutral"];
|
|
2
2
|
export declare const VOICE_AGE_CODES: readonly ["child", "young", "middle_aged", "old"];
|
|
3
3
|
export declare const VOICE_TONE_CODES: readonly ["warm", "calm", "bright", "gentle", "energetic", "authoritative", "sincere", "weary", "precise", "refined", "urgent", "friendly", "articulate", "steady", "playful", "compassionate", "reflective", "measured", "rhythmic", "passionate"];
|
|
4
|
+
export declare const VOICE_LANGUAGE_CODES: readonly ["ar", "cs", "de", "el", "en", "es", "fi", "fr", "hi", "id", "it", "ja", "ko", "nl", "pl", "pt", "ro", "ru", "th", "tr", "uk", "vi", "zh"];
|
|
5
|
+
export declare const VOICE_TONE_MAX_ITEMS: 3;
|
|
4
6
|
export declare const VOICE_ACCENT_CODES_BY_LANGUAGE: {
|
|
5
7
|
readonly en: readonly ["american", "british", "scottish", "irish", "australian", "canadian", "us_southern", "us_new_york", "indian", "south_african", "russian", "japanese", "korean", "chinese"];
|
|
6
8
|
readonly zh: readonly ["mandarin_guangdong", "mandarin_northeastern", "mandarin_shaanxi", "mandarin_shanghai", "mandarin_sichuan", "mandarin_yunnan", "mandarin_henan", "cantonese"];
|
|
@@ -8,4 +10,5 @@ export declare const VOICE_ACCENT_CODES_BY_LANGUAGE: {
|
|
|
8
10
|
export type VoiceGender = (typeof VOICE_GENDER_CODES)[number];
|
|
9
11
|
export type VoiceAge = (typeof VOICE_AGE_CODES)[number];
|
|
10
12
|
export type VoiceTone = (typeof VOICE_TONE_CODES)[number];
|
|
13
|
+
export type VoiceLanguageCode = (typeof VOICE_LANGUAGE_CODES)[number];
|
|
11
14
|
export type VoiceAccent = (typeof VOICE_ACCENT_CODES_BY_LANGUAGE)[keyof typeof VOICE_ACCENT_CODES_BY_LANGUAGE][number];
|
package/dist/voice-metadata.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
export const VOICE_GENDER_CODES = ["male", "female", "neutral"];
|
|
3
3
|
export const VOICE_AGE_CODES = ["child", "young", "middle_aged", "old"];
|
|
4
4
|
export const VOICE_TONE_CODES = ["warm", "calm", "bright", "gentle", "energetic", "authoritative", "sincere", "weary", "precise", "refined", "urgent", "friendly", "articulate", "steady", "playful", "compassionate", "reflective", "measured", "rhythmic", "passionate"];
|
|
5
|
+
export const VOICE_LANGUAGE_CODES = ["ar", "cs", "de", "el", "en", "es", "fi", "fr", "hi", "id", "it", "ja", "ko", "nl", "pl", "pt", "ro", "ru", "th", "tr", "uk", "vi", "zh"];
|
|
6
|
+
export const VOICE_TONE_MAX_ITEMS = 3;
|
|
5
7
|
export const VOICE_ACCENT_CODES_BY_LANGUAGE = {
|
|
6
8
|
en: ["american", "british", "scottish", "irish", "australian", "canadian", "us_southern", "us_new_york", "indian", "south_african", "russian", "japanese", "korean", "chinese"],
|
|
7
9
|
zh: ["mandarin_guangdong", "mandarin_northeastern", "mandarin_shaanxi", "mandarin_shanghai", "mandarin_sichuan", "mandarin_yunnan", "mandarin_henan", "cantonese"],
|