@breeze.blue/sdk 0.10.0 → 0.12.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 +18 -1
- package/README.md +33 -0
- package/dist/_transform.js +5 -10
- package/dist/client.d.ts +9 -2
- package/dist/client.js +51 -13
- package/dist/types.d.ts +30 -12
- 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 +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.12.0
|
|
4
|
+
|
|
5
|
+
- Voice listings preserve the `created_at_unix desc` default and support the
|
|
6
|
+
shared Daily Trend with `{ sort: "trend", voiceType: "default" }`, signed
|
|
7
|
+
snapshot pagination, and language/category/gender/age/tone/accent filters.
|
|
8
|
+
|
|
9
|
+
## 0.11.0
|
|
10
|
+
|
|
11
|
+
- Added canonical Voice `tags`, personal tag overrides, favorite management,
|
|
12
|
+
exact tag filters, and `voices.updateTags()` / `favorite()` / `unfavorite()`.
|
|
13
|
+
- `voices.savePreview(...)` now requires `languageCode`, preventing saved
|
|
14
|
+
voices from being created without explicit reference-language metadata.
|
|
15
|
+
- Added `voices.metadataOptions()` and the typed `VoiceLanguageCode` contract
|
|
16
|
+
for discovering Voice Metadata codes and language-to-accent constraints.
|
|
17
|
+
- Sync and async TTS accept explicit sample-rate and bitrate output profiles,
|
|
18
|
+
such as `wav_48000` and `mp3_44100_128`.
|
|
19
|
+
|
|
3
20
|
## 0.10.0
|
|
4
21
|
|
|
5
22
|
- Added typed Voice Metadata codes and camelCase response fields for gender,
|
|
@@ -205,7 +222,7 @@
|
|
|
205
222
|
|
|
206
223
|
## 0.1.2
|
|
207
224
|
|
|
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.
|
|
225
|
+
- 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
226
|
- Removed remaining ElevenLabs-positioning copy from the README and package keywords. Quickstart and reference examples use the published packages only.
|
|
210
227
|
|
|
211
228
|
## 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,18 @@ or voice ID.
|
|
|
402
406
|
|
|
403
407
|
```ts
|
|
404
408
|
const voices = await client.voices.search({ search: "calm documentary narrator" });
|
|
409
|
+
const newestFirst = await client.voices.search();
|
|
410
|
+
const dailyTrend = await client.voices.search({
|
|
411
|
+
voiceType: "default",
|
|
412
|
+
sort: "trend",
|
|
413
|
+
languageCode: "zh",
|
|
414
|
+
gender: ["female", "neutral"],
|
|
415
|
+
tone: ["warm"],
|
|
416
|
+
});
|
|
417
|
+
const taggedFavorites = await client.voices.search({
|
|
418
|
+
favoritesOnly: true,
|
|
419
|
+
tags: ["narration", "novel=三体"],
|
|
420
|
+
});
|
|
405
421
|
const firstVoiceId = voices.voices[0].voiceId;
|
|
406
422
|
|
|
407
423
|
const voice = await client.voices.get(firstVoiceId);
|
|
@@ -409,8 +425,18 @@ const settings = await client.voices.getSettings(firstVoiceId);
|
|
|
409
425
|
|
|
410
426
|
const randomVoice = await client.voices.random();
|
|
411
427
|
console.log(randomVoice.voiceId, randomVoice.name);
|
|
428
|
+
|
|
429
|
+
// Discover the current code-only Voice Metadata contract before building a form.
|
|
430
|
+
const metadataOptions = await client.voices.metadataOptions();
|
|
431
|
+
console.log(metadataOptions.languageCodes);
|
|
432
|
+
console.log(metadataOptions.accentCodesByLanguage.en);
|
|
412
433
|
```
|
|
413
434
|
|
|
435
|
+
Voice listings keep the published default of stable creation-time order from
|
|
436
|
+
newest to oldest. Use `{ sort: "trend", voiceType: "default" }` for the shared
|
|
437
|
+
Daily Trend order. Search queries remain relevance-ranked; Trend is only a
|
|
438
|
+
weak prior within the same relevance tier.
|
|
439
|
+
|
|
414
440
|
Breeze voice creation is always two steps: produce a **preview**, let the
|
|
415
441
|
user accept it, then **save the preview** as a real voice. Two ways to
|
|
416
442
|
produce a preview:
|
|
@@ -454,6 +480,7 @@ const saved = await client.voices.savePreview({
|
|
|
454
480
|
age: "middle_aged",
|
|
455
481
|
tone: ["warm", "articulate"],
|
|
456
482
|
accent: "american",
|
|
483
|
+
tags: ["narration", "novel=三体"],
|
|
457
484
|
});
|
|
458
485
|
```
|
|
459
486
|
|
|
@@ -468,12 +495,18 @@ await client.voices.edit(saved.voiceId, {
|
|
|
468
495
|
// null clears nullable metadata; [] clears tone. Omitted fields remain unchanged.
|
|
469
496
|
await client.voices.edit(saved.voiceId, { accent: null, tone: [] });
|
|
470
497
|
await client.voices.editSettings(saved.voiceId, { guidanceScale: 1.2 });
|
|
498
|
+
await client.voices.favorite(firstVoiceId);
|
|
499
|
+
await client.voices.updateTags(firstVoiceId, ["narration", "novel=三体"]);
|
|
500
|
+
await client.voices.updateTags(firstVoiceId, []); // Resume owner tag inheritance.
|
|
501
|
+
await client.voices.unfavorite(firstVoiceId);
|
|
471
502
|
await client.voices.delete(saved.voiceId);
|
|
472
503
|
```
|
|
473
504
|
|
|
474
505
|
Voice Metadata uses stable code values. `gender`, `age`, and `accent` may be
|
|
475
506
|
`null`; `tone` contains up to three distinct codes. English and Chinese use
|
|
476
507
|
different accent code sets, and other languages require `accent: null`.
|
|
508
|
+
Call `client.voices.metadataOptions()` to discover every accepted code and the
|
|
509
|
+
language-to-accent cascade at runtime.
|
|
477
510
|
|
|
478
511
|
## History, Models, and Account
|
|
479
512
|
|
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;
|
|
@@ -207,12 +207,19 @@ declare class VoicesResource {
|
|
|
207
207
|
/**
|
|
208
208
|
* Search every voice visible to the account. Catalog results use hybrid
|
|
209
209
|
* semantic and text relevance; personal voices match by name, description,
|
|
210
|
-
* or identifier.
|
|
210
|
+
* or identifier. Listings default to stable creation-time order from newest
|
|
211
|
+
* to oldest. Pass sort: "trend" with voiceType: "default" for the shared
|
|
212
|
+
* Daily Trend order.
|
|
211
213
|
*/
|
|
212
214
|
search(params?: VoiceSearchParams, options?: RequestOptions): Promise<VoiceList>;
|
|
213
215
|
get(voiceId: string, options?: RequestOptions): Promise<Voice>;
|
|
214
216
|
random(options?: RequestOptions): Promise<Voice>;
|
|
217
|
+
/** Return stable Voice Metadata codes and language-accent constraints. */
|
|
218
|
+
metadataOptions(options?: RequestOptions): Promise<VoiceMetadataOptions>;
|
|
215
219
|
edit(voiceId: string, request: VoiceEditRequest, options?: RequestOptions): Promise<GenericStatus>;
|
|
220
|
+
updateTags(voiceId: string, tags: string[], options?: RequestOptions): Promise<Voice>;
|
|
221
|
+
favorite(voiceId: string, options?: RequestOptions): Promise<Voice>;
|
|
222
|
+
unfavorite(voiceId: string, options?: RequestOptions): Promise<Voice>;
|
|
216
223
|
delete(voiceId: string, options?: RequestOptions): Promise<GenericStatus>;
|
|
217
224
|
getSettings(voiceId: string, options?: RequestOptions): Promise<Required<VoiceSettings>>;
|
|
218
225
|
editSettings(voiceId: string, settings: VoiceSettings, options?: RequestOptions): Promise<Required<VoiceSettings>>;
|
package/dist/client.js
CHANGED
|
@@ -1492,20 +1492,43 @@ class VoicesResource {
|
|
|
1492
1492
|
/**
|
|
1493
1493
|
* Search every voice visible to the account. Catalog results use hybrid
|
|
1494
1494
|
* semantic and text relevance; personal voices match by name, description,
|
|
1495
|
-
* or identifier.
|
|
1495
|
+
* or identifier. Listings default to stable creation-time order from newest
|
|
1496
|
+
* to oldest. Pass sort: "trend" with voiceType: "default" for the shared
|
|
1497
|
+
* Daily Trend order.
|
|
1496
1498
|
*/
|
|
1497
|
-
search(params = {}, options) {
|
|
1498
|
-
|
|
1499
|
+
async search(params = {}, options) {
|
|
1500
|
+
const result = await this.client.requestJson("GET", "/v1/voices", { sort: "created_at_unix", sortDirection: "desc", ...params }, undefined, options);
|
|
1501
|
+
return Array.isArray(result.voices)
|
|
1502
|
+
? { ...result, voices: result.voices.map(stripHiddenVoiceFields) }
|
|
1503
|
+
: result;
|
|
1499
1504
|
}
|
|
1500
|
-
get(voiceId, options) {
|
|
1501
|
-
|
|
1505
|
+
async get(voiceId, options) {
|
|
1506
|
+
const result = await this.client.requestJson("GET", `/v1/voices/${encodeURIComponent(voiceId)}`, undefined, undefined, options);
|
|
1507
|
+
return stripHiddenVoiceFields(result);
|
|
1502
1508
|
}
|
|
1503
|
-
random(options) {
|
|
1504
|
-
|
|
1509
|
+
async random(options) {
|
|
1510
|
+
const result = await this.client.requestJson("GET", "/v1/voices/random", undefined, undefined, options);
|
|
1511
|
+
return stripHiddenVoiceFields(result);
|
|
1512
|
+
}
|
|
1513
|
+
/** Return stable Voice Metadata codes and language-accent constraints. */
|
|
1514
|
+
metadataOptions(options) {
|
|
1515
|
+
return this.client.requestJson("GET", "/v1/voice-metadata/options", undefined, undefined, options);
|
|
1505
1516
|
}
|
|
1506
1517
|
edit(voiceId, request, options) {
|
|
1507
1518
|
return this.client.requestJson("PATCH", `/v1/voices/${encodeURIComponent(voiceId)}`, undefined, voiceEditForm(request), options);
|
|
1508
1519
|
}
|
|
1520
|
+
async updateTags(voiceId, tags, options) {
|
|
1521
|
+
const result = await this.client.requestJson("PUT", `/v1/voices/${encodeURIComponent(voiceId)}/tags`, undefined, { tags }, options);
|
|
1522
|
+
return stripHiddenVoiceFields(result);
|
|
1523
|
+
}
|
|
1524
|
+
async favorite(voiceId, options) {
|
|
1525
|
+
const result = await this.client.requestJson("PUT", `/v1/voices/${encodeURIComponent(voiceId)}/favorite`, undefined, undefined, options);
|
|
1526
|
+
return stripHiddenVoiceFields(result);
|
|
1527
|
+
}
|
|
1528
|
+
async unfavorite(voiceId, options) {
|
|
1529
|
+
const result = await this.client.requestJson("DELETE", `/v1/voices/${encodeURIComponent(voiceId)}/favorite`, undefined, undefined, options);
|
|
1530
|
+
return stripHiddenVoiceFields(result);
|
|
1531
|
+
}
|
|
1509
1532
|
delete(voiceId, options) {
|
|
1510
1533
|
return this.client.requestJson("DELETE", `/v1/voices/${encodeURIComponent(voiceId)}`, undefined, undefined, options);
|
|
1511
1534
|
}
|
|
@@ -1538,11 +1561,11 @@ class VoicesResource {
|
|
|
1538
1561
|
return this.client.requestAudio("GET", `/v1/voice-previews/${encodeURIComponent(generatedVoiceId)}/stream`, { outputFormat: options.outputFormat }, undefined, options);
|
|
1539
1562
|
}
|
|
1540
1563
|
/** Persist a clone or design preview as a real voice asset. */
|
|
1541
|
-
savePreview(request, options) {
|
|
1542
|
-
|
|
1564
|
+
async savePreview(request, options) {
|
|
1565
|
+
const result = await this.client.requestJson("POST", `/v1/voice-previews/${encodeURIComponent(request.generatedVoiceId)}/save`, undefined, {
|
|
1543
1566
|
voiceName: request.voiceName,
|
|
1544
1567
|
voiceDescription: request.voiceDescription,
|
|
1545
|
-
|
|
1568
|
+
tags: request.tags,
|
|
1546
1569
|
primaryCategoryCode: request.primaryCategoryCode,
|
|
1547
1570
|
visibility: request.visibility,
|
|
1548
1571
|
playedNotSelectedVoiceIds: request.playedNotSelectedVoiceIds,
|
|
@@ -1552,6 +1575,7 @@ class VoicesResource {
|
|
|
1552
1575
|
tone: request.tone,
|
|
1553
1576
|
accent: request.accent,
|
|
1554
1577
|
}, options);
|
|
1578
|
+
return stripHiddenVoiceFields(result);
|
|
1555
1579
|
}
|
|
1556
1580
|
}
|
|
1557
1581
|
class HistoryResource {
|
|
@@ -1654,7 +1678,13 @@ function buildUrl(baseUrl, path, params) {
|
|
|
1654
1678
|
for (const [key, value] of Object.entries(params ?? {})) {
|
|
1655
1679
|
if (value === undefined || value === null)
|
|
1656
1680
|
continue;
|
|
1657
|
-
|
|
1681
|
+
if (Array.isArray(value)) {
|
|
1682
|
+
for (const item of value)
|
|
1683
|
+
url.searchParams.append(key, String(item));
|
|
1684
|
+
}
|
|
1685
|
+
else {
|
|
1686
|
+
url.searchParams.set(key, String(value));
|
|
1687
|
+
}
|
|
1658
1688
|
}
|
|
1659
1689
|
return url.toString();
|
|
1660
1690
|
}
|
|
@@ -1684,7 +1714,7 @@ function clonePreviewForm(request) {
|
|
|
1684
1714
|
const form = new FormData();
|
|
1685
1715
|
form.set("name", request.name);
|
|
1686
1716
|
appendOptional(form, "description", request.description);
|
|
1687
|
-
appendOptional(form, "
|
|
1717
|
+
appendOptional(form, "language_code", request.languageCode);
|
|
1688
1718
|
appendOptional(form, "text", request.text);
|
|
1689
1719
|
appendOptional(form, "instructions", request.instructions);
|
|
1690
1720
|
for (const file of normalizeFiles(request.file, request.files, { required: true })) {
|
|
@@ -1696,7 +1726,10 @@ function voiceEditForm(request) {
|
|
|
1696
1726
|
const form = new FormData();
|
|
1697
1727
|
appendOptional(form, "name", request.name);
|
|
1698
1728
|
appendOptional(form, "description", request.description);
|
|
1699
|
-
|
|
1729
|
+
if (request.tags !== undefined) {
|
|
1730
|
+
for (const tag of request.tags)
|
|
1731
|
+
form.append("tags", tag);
|
|
1732
|
+
}
|
|
1700
1733
|
appendOptional(form, "primary_category_code", request.primaryCategoryCode);
|
|
1701
1734
|
appendOptional(form, "visibility", request.visibility);
|
|
1702
1735
|
appendOptional(form, "language_code", request.languageCode);
|
|
@@ -1717,6 +1750,11 @@ function voiceEditForm(request) {
|
|
|
1717
1750
|
}
|
|
1718
1751
|
return form;
|
|
1719
1752
|
}
|
|
1753
|
+
function stripHiddenVoiceFields(voice) {
|
|
1754
|
+
const result = { ...voice };
|
|
1755
|
+
delete result.labels;
|
|
1756
|
+
return result;
|
|
1757
|
+
}
|
|
1720
1758
|
function appendNullable(form, key, value) {
|
|
1721
1759
|
if (value === undefined)
|
|
1722
1760
|
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,16 +343,31 @@ 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;
|
|
357
|
+
primaryCategoryCode?: string;
|
|
358
|
+
gender?: VoiceGender[];
|
|
359
|
+
age?: VoiceAge[];
|
|
360
|
+
tone?: VoiceTone[];
|
|
361
|
+
accent?: VoiceAccent;
|
|
346
362
|
origin?: "designed" | "cloned" | string;
|
|
347
363
|
voiceType?: "all" | "default" | "personal" | string;
|
|
348
|
-
sort?: "created_at_unix" | "name" | string;
|
|
364
|
+
sort?: "created_at_unix" | "name" | "trend" | string;
|
|
349
365
|
sortDirection?: "asc" | "desc";
|
|
350
366
|
nextPageToken?: string;
|
|
351
367
|
page?: number;
|
|
352
368
|
pageSize?: number;
|
|
369
|
+
favoritesOnly?: boolean;
|
|
370
|
+
tags?: string[];
|
|
353
371
|
}
|
|
354
372
|
export interface GenericStatus {
|
|
355
373
|
status: string;
|
|
@@ -365,8 +383,8 @@ export interface VoiceClonePreviewRequest {
|
|
|
365
383
|
file?: UploadData | UploadFile;
|
|
366
384
|
files?: Array<UploadData | UploadFile>;
|
|
367
385
|
description?: string;
|
|
368
|
-
labels?: Record<string, string>;
|
|
369
386
|
removeBackgroundNoise?: boolean;
|
|
387
|
+
languageCode?: VoiceLanguageCode;
|
|
370
388
|
text?: string;
|
|
371
389
|
instructions?: string;
|
|
372
390
|
}
|
|
@@ -377,10 +395,10 @@ export interface VoiceClonePreview {
|
|
|
377
395
|
export interface VoiceEditRequest {
|
|
378
396
|
name?: string;
|
|
379
397
|
description?: string;
|
|
380
|
-
|
|
398
|
+
tags?: string[];
|
|
381
399
|
primaryCategoryCode?: string;
|
|
382
400
|
visibility?: "private" | "public" | string;
|
|
383
|
-
languageCode?:
|
|
401
|
+
languageCode?: VoiceLanguageCode;
|
|
384
402
|
gender?: VoiceGender | null;
|
|
385
403
|
age?: VoiceAge | null;
|
|
386
404
|
tone?: VoiceTone[];
|
|
@@ -392,7 +410,7 @@ export interface VoiceDesignRequest {
|
|
|
392
410
|
voiceDescription: string;
|
|
393
411
|
text?: string;
|
|
394
412
|
modelId?: string;
|
|
395
|
-
languageCode?:
|
|
413
|
+
languageCode?: VoiceLanguageCode;
|
|
396
414
|
autoGenerateText?: boolean;
|
|
397
415
|
loudness?: number;
|
|
398
416
|
quality?: number;
|
|
@@ -414,11 +432,11 @@ export interface SaveVoiceRequest {
|
|
|
414
432
|
generatedVoiceId: string;
|
|
415
433
|
voiceName: string;
|
|
416
434
|
voiceDescription?: string | null;
|
|
417
|
-
|
|
435
|
+
tags?: string[];
|
|
418
436
|
primaryCategoryCode?: string;
|
|
419
437
|
visibility?: "private" | "public" | string;
|
|
420
438
|
playedNotSelectedVoiceIds?: string[];
|
|
421
|
-
languageCode
|
|
439
|
+
languageCode: VoiceLanguageCode;
|
|
422
440
|
gender?: VoiceGender | null;
|
|
423
441
|
age?: VoiceAge | null;
|
|
424
442
|
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.12.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.12.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"],
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@breeze.blue/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "ESM-first TypeScript SDK for the Breeze Blue Developer API.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"author": "Breeze Blue <support@
|
|
6
|
+
"author": "Breeze Blue <support@breezeblue.ai>",
|
|
7
7
|
"homepage": "https://breezeblue.ai",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|