@breeze.blue/sdk 0.17.0 → 0.19.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 +10 -0
- package/README.md +45 -1
- package/dist/client.d.ts +12 -3
- package/dist/client.js +25 -3
- package/dist/types.d.ts +59 -6
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/voice-metadata.d.ts +6 -2
- package/dist/voice-metadata.js +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.19.0
|
|
4
|
+
|
|
5
|
+
- Create Voice Remix candidates from custom descriptions or curated presets, with automatic input preparation and Expressive (4) as the default strength.
|
|
6
|
+
- List Remix presets, reuse a prepared performance across candidates, and read source metadata and original-audio comparisons.
|
|
7
|
+
- Retry Remix submissions with an idempotency key and save candidates using their source voice's name and description by default.
|
|
8
|
+
|
|
9
|
+
## 0.18.0
|
|
10
|
+
|
|
11
|
+
- Create asynchronous speech jobs with word timestamps and read timing from completed job results.
|
|
12
|
+
|
|
3
13
|
## 0.17.0
|
|
4
14
|
|
|
5
15
|
- Generate synchronous speech or stream audio with word timestamps and safe stream cleanup.
|
package/README.md
CHANGED
|
@@ -436,7 +436,8 @@ console.log(metadataOptions.accentCodesByLanguage.en);
|
|
|
436
436
|
|
|
437
437
|
Voice listings keep the published default of stable creation-time order from
|
|
438
438
|
newest to oldest. Use `{ sort: "trend", voiceType: "default" }` for the shared
|
|
439
|
-
Daily Trend order.
|
|
439
|
+
Daily Trend order. Eligible voices not yet ranked follow the snapshot members;
|
|
440
|
+
returned page tokens pin the initial supplemental candidates. Search queries remain relevance-ranked; Trend is only a
|
|
440
441
|
weak prior within the same relevance tier.
|
|
441
442
|
|
|
442
443
|
Breeze voice creation is always two steps: produce a **preview**, let the
|
|
@@ -487,6 +488,45 @@ while (localized.status !== "ready") {
|
|
|
487
488
|
generatedVoiceId = localized.generatedVoiceId!;
|
|
488
489
|
```
|
|
489
490
|
|
|
491
|
+
Voice Remix creates a same-language candidate from an owned or official voice
|
|
492
|
+
and a custom description or preset. Each successful candidate uses the Voice Design candidate
|
|
493
|
+
price. The source remains unchanged.
|
|
494
|
+
|
|
495
|
+
```ts
|
|
496
|
+
const remixJob = await client.voices.createRemixPreview({
|
|
497
|
+
voiceId: firstVoiceId,
|
|
498
|
+
prompt: "Make the voice warmer and more expressive.",
|
|
499
|
+
guidanceScale: 4,
|
|
500
|
+
});
|
|
501
|
+
let remix = await client.voices.getRemixPreview(remixJob.generationJobId);
|
|
502
|
+
while (remix.status !== "ready") {
|
|
503
|
+
if (remix.status === "failed" || remix.status === "cancelled") {
|
|
504
|
+
throw new Error(remix.error?.detail ?? remix.status);
|
|
505
|
+
}
|
|
506
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
507
|
+
remix = await client.voices.getRemixPreview(remixJob.generationJobId);
|
|
508
|
+
}
|
|
509
|
+
generatedVoiceId = remix.generatedVoiceId!;
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
Use `streamPreview` and `savePreview` with the generated ID to audition and save
|
|
513
|
+
a private, independent voice. A client timeout leaves the server job running.
|
|
514
|
+
|
|
515
|
+
Custom input is enhanced into an instruction and matching script in the source
|
|
516
|
+
language. List templates with `client.voices.listRemixPresets()` and pass
|
|
517
|
+
`presetId` instead of `prompt` to use one. Edited templates are enhanced;
|
|
518
|
+
unchanged templates are translated only when the source language differs.
|
|
519
|
+
|
|
520
|
+
To compare strengths, call `client.voices.prepareRemixPreview(...)` first and
|
|
521
|
+
pass its `preparationToken` to each create call with the same input. The token
|
|
522
|
+
lasts 24 hours. Values 2 / 4 / 6 / 8 mean Stable / Expressive / Creative / Intense;
|
|
523
|
+
4 is the default. Web Auto compares separate candidates at 4, 6, and 8.
|
|
524
|
+
Use `options.headers["Idempotency-Key"]` to retry uncertain submissions safely,
|
|
525
|
+
with a distinct key per candidate. Status includes `comparisonAudioUrl`,
|
|
526
|
+
`comparisonText`, and `sourceVoice`. Saving without `voiceName` or
|
|
527
|
+
`voiceDescription` uses the source values.
|
|
528
|
+
See the [Voice Remix guide](https://docs.breezeblue.ai/guides/voice-remix).
|
|
529
|
+
|
|
490
530
|
For the fastest first audio, generate one design preview as a live 24 kHz mono
|
|
491
531
|
PCM response. The Node `stream()` helper consumes the response body directly;
|
|
492
532
|
a clean end means `generatedVoiceId` is ready to save:
|
|
@@ -609,3 +649,7 @@ Pass `voiceSettings: { volume: 1.5 }` to apply a request-level linear amplitude
|
|
|
609
649
|
Stream audio and word/token timestamps with `client.textToSpeech.streamWithTimestamps(...)`. Use `for await` to consume chunks containing `audioBase64` and `wordTimestamps`; breaking iteration closes the stream. Decode the audio separately and merge repeated word indices. See [Speech timing](https://docs.breezeblue.ai/guides/speech-timing) for complete examples and timing semantics.
|
|
610
650
|
|
|
611
651
|
For a complete response, use `client.textToSpeech.convertWithTimestamps(...)`. It returns base64 audio, its content type, and the full word/token timestamp list. Decode the audio before saving or playback. See [Speech timing](https://docs.breezeblue.ai/guides/speech-timing) and [Convert with timestamps](https://docs.breezeblue.ai/api-reference/text-to-speech/convert-with-timestamps).
|
|
652
|
+
|
|
653
|
+
For background generation with timing, use `client.textToSpeech.createJobWithTimestamps(...)`. Poll with `client.generationJobs.get(jobId)`; a ready job includes `wordTimestamps` and the audio download URL.
|
|
654
|
+
|
|
655
|
+
Clone preview creation accepts an omitted name. The server uses the filename stem or `Cloned Voice`; saving a Clone preview without a name keeps its preview name. Other preview types still require a save name. Explicit names longer than 80 Unicode characters are rejected.
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SpeechTimingStream, type SpeechWithTimestamps } from "./timestamps.js";
|
|
2
2
|
import { AudioResponse } from "./audio.js";
|
|
3
|
-
import type { AudioRequestOptions, BreezeBlueWebSocket, AsyncTextToSpeechJob, Balance, BreezeBlueClientOptions, CurrentApiKeyResponse, 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, VoiceDesignStreamRequest, VoiceEditRequest, VoiceList, VoiceLocalizeJob, VoiceLocalizePreviewRequest, VoiceLocalizePreviewStatus, VoiceMetadataOptions, VoiceRandomParams, VoiceSearchParams, VoiceSettings } from "./types.js";
|
|
3
|
+
import type { AudioRequestOptions, BreezeBlueWebSocket, AsyncTextToSpeechJob, Balance, BreezeBlueClientOptions, CurrentApiKeyResponse, 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, VoiceDesignStreamRequest, VoiceEditRequest, VoiceList, VoiceLocalizeJob, VoiceLocalizePreviewRequest, VoiceLocalizePreviewStatus, VoiceRemixPreviewRequest, VoiceRemixPrepareRequest, VoiceRemixPresets, VoiceRemixPreparation, VoiceRemixJob, VoiceRemixPreviewStatus, VoiceMetadataOptions, VoiceRandomParams, VoiceSearchParams, VoiceSettings } from "./types.js";
|
|
4
4
|
export declare class BreezeBlueClient {
|
|
5
5
|
readonly apiKey: string | undefined;
|
|
6
6
|
readonly baseUrl: string;
|
|
@@ -26,6 +26,7 @@ declare class TextToSpeechResource {
|
|
|
26
26
|
constructor(client: BreezeBlueClient);
|
|
27
27
|
convert(voiceId: string, request: TextToSpeechRequest, options?: AudioRequestOptions): Promise<AudioResponse>;
|
|
28
28
|
createJob(voiceId: string, request: TextToSpeechRequest, options?: AudioRequestOptions): Promise<AsyncTextToSpeechJob>;
|
|
29
|
+
createJobWithTimestamps(voiceId: string, request: TextToSpeechRequest, options?: AudioRequestOptions): Promise<AsyncTextToSpeechJob>;
|
|
29
30
|
stream(voiceId: string, request: TextToSpeechRequest, options?: StreamTextToSpeechOptions): Promise<AudioResponse>;
|
|
30
31
|
convertWithTimestamps(voiceId: string, request: TextToSpeechRequest, options?: AudioRequestOptions): Promise<SpeechWithTimestamps>;
|
|
31
32
|
streamWithTimestamps(voiceId: string, request: TextToSpeechRequest & {
|
|
@@ -251,6 +252,14 @@ declare class VoicesResource {
|
|
|
251
252
|
* A clean end means `generatedVoiceId` is ready for {@link savePreview}.
|
|
252
253
|
*/
|
|
253
254
|
streamDesignPreview(request: VoiceDesignStreamRequest, options?: RequestOptions): Promise<AudioResponse>;
|
|
255
|
+
/** List curated voice changes and their sample recordings. */
|
|
256
|
+
listRemixPresets(options?: RequestOptions): Promise<VoiceRemixPresets>;
|
|
257
|
+
/** Prepare once without generating audio; reuse the token for 24 hours with the same input. */
|
|
258
|
+
prepareRemixPreview(request: VoiceRemixPrepareRequest, options?: RequestOptions): Promise<VoiceRemixPreparation>;
|
|
259
|
+
/** Create one candidate. Custom input is enhanced automatically; guidance defaults to 4. */
|
|
260
|
+
createRemixPreview(request: VoiceRemixPreviewRequest, options?: RequestOptions): Promise<VoiceRemixJob>;
|
|
261
|
+
/** A polling timeout does not cancel the server task. Keep the job ID to resume polling. */
|
|
262
|
+
getRemixPreview(generationJobId: string, options?: RequestOptions): Promise<VoiceRemixPreviewStatus>;
|
|
254
263
|
/**
|
|
255
264
|
* Start a preview that speaks an existing voice in another language.
|
|
256
265
|
* Localization runs as a background job: poll the returned
|
|
@@ -265,9 +274,9 @@ declare class VoicesResource {
|
|
|
265
274
|
* is set only when the job ends in `failed`.
|
|
266
275
|
*/
|
|
267
276
|
getLocalizePreview(generationJobId: string, options?: RequestOptions): Promise<VoiceLocalizePreviewStatus>;
|
|
268
|
-
/** Download
|
|
277
|
+
/** Download a ready Design, Clone, Remix or Localize preview. */
|
|
269
278
|
streamPreview(generatedVoiceId: string, options?: AudioRequestOptions): Promise<AudioResponse>;
|
|
270
|
-
/**
|
|
279
|
+
/** Save a ready preview; Remix defaults name and description to its source. */
|
|
271
280
|
savePreview(request: SaveVoiceRequest, options?: RequestOptions): Promise<SavedVoice>;
|
|
272
281
|
}
|
|
273
282
|
declare class HistoryResource {
|
package/dist/client.js
CHANGED
|
@@ -113,6 +113,9 @@ class TextToSpeechResource {
|
|
|
113
113
|
createJob(voiceId, request, options = {}) {
|
|
114
114
|
return this.client.requestJson("POST", `/v1/text-to-speech/${encodeURIComponent(voiceId)}`, { outputFormat: options.outputFormat, delivery: "async" }, request, options);
|
|
115
115
|
}
|
|
116
|
+
createJobWithTimestamps(voiceId, request, options = {}) {
|
|
117
|
+
return this.client.requestJson("POST", `/v1/text-to-speech/${encodeURIComponent(voiceId)}/with-timestamps`, { outputFormat: options.outputFormat, delivery: "async" }, request, options);
|
|
118
|
+
}
|
|
116
119
|
stream(voiceId, request, options = {}) {
|
|
117
120
|
return this.client.requestAudio("POST", `/v1/text-to-speech/${encodeURIComponent(voiceId)}/stream`, {
|
|
118
121
|
outputFormat: options.outputFormat,
|
|
@@ -1577,6 +1580,22 @@ class VoicesResource {
|
|
|
1577
1580
|
streamDesignPreview(request, options) {
|
|
1578
1581
|
return this.client.requestAudio("POST", "/v1/voice-previews/design/stream", undefined, request, options);
|
|
1579
1582
|
}
|
|
1583
|
+
/** List curated voice changes and their sample recordings. */
|
|
1584
|
+
listRemixPresets(options) {
|
|
1585
|
+
return this.client.requestJson("GET", "/v1/voice-previews/remix/presets", undefined, undefined, options);
|
|
1586
|
+
}
|
|
1587
|
+
/** Prepare once without generating audio; reuse the token for 24 hours with the same input. */
|
|
1588
|
+
prepareRemixPreview(request, options) {
|
|
1589
|
+
return this.client.requestJson("POST", "/v1/voice-previews/remix/prepare", undefined, request, options);
|
|
1590
|
+
}
|
|
1591
|
+
/** Create one candidate. Custom input is enhanced automatically; guidance defaults to 4. */
|
|
1592
|
+
createRemixPreview(request, options) {
|
|
1593
|
+
return this.client.requestJson("POST", "/v1/voice-previews/remix", undefined, request, options);
|
|
1594
|
+
}
|
|
1595
|
+
/** A polling timeout does not cancel the server task. Keep the job ID to resume polling. */
|
|
1596
|
+
getRemixPreview(generationJobId, options) {
|
|
1597
|
+
return this.client.requestJson("GET", `/v1/voice-previews/remix/${encodeURIComponent(generationJobId)}`, undefined, undefined, options);
|
|
1598
|
+
}
|
|
1580
1599
|
/**
|
|
1581
1600
|
* Start a preview that speaks an existing voice in another language.
|
|
1582
1601
|
* Localization runs as a background job: poll the returned
|
|
@@ -1595,11 +1614,11 @@ class VoicesResource {
|
|
|
1595
1614
|
getLocalizePreview(generationJobId, options) {
|
|
1596
1615
|
return this.client.requestJson("GET", `/v1/voice-previews/localize/${encodeURIComponent(generationJobId)}`, undefined, undefined, options);
|
|
1597
1616
|
}
|
|
1598
|
-
/** Download
|
|
1617
|
+
/** Download a ready Design, Clone, Remix or Localize preview. */
|
|
1599
1618
|
streamPreview(generatedVoiceId, options = {}) {
|
|
1600
1619
|
return this.client.requestAudio("GET", `/v1/voice-previews/${encodeURIComponent(generatedVoiceId)}/stream`, { outputFormat: options.outputFormat }, undefined, options);
|
|
1601
1620
|
}
|
|
1602
|
-
/**
|
|
1621
|
+
/** Save a ready preview; Remix defaults name and description to its source. */
|
|
1603
1622
|
async savePreview(request, options) {
|
|
1604
1623
|
const result = await this.client.requestJson("POST", `/v1/voice-previews/${encodeURIComponent(request.generatedVoiceId)}/save`, undefined, {
|
|
1605
1624
|
voiceName: request.voiceName,
|
|
@@ -1751,6 +1770,9 @@ function mergeHeaders(headers, input) {
|
|
|
1751
1770
|
new Headers(input).forEach((value, key) => headers.set(key, value));
|
|
1752
1771
|
}
|
|
1753
1772
|
function clonePreviewForm(request) {
|
|
1773
|
+
if (request.name != null && typeof request.name !== "string") {
|
|
1774
|
+
throw new BreezeBlueConfigurationError("Clone name must be a string or null.");
|
|
1775
|
+
}
|
|
1754
1776
|
if (request.removeBackgroundNoise) {
|
|
1755
1777
|
throw new BreezeBlueConfigurationError("removeBackgroundNoise is not supported by the Breeze Developer API.");
|
|
1756
1778
|
}
|
|
@@ -1760,7 +1782,7 @@ function clonePreviewForm(request) {
|
|
|
1760
1782
|
}
|
|
1761
1783
|
}
|
|
1762
1784
|
const form = new FormData();
|
|
1763
|
-
form
|
|
1785
|
+
appendOptional(form, "name", request.name ?? undefined);
|
|
1764
1786
|
appendOptional(form, "description", request.description);
|
|
1765
1787
|
for (const file of normalizeFiles(request.file, request.files, { required: true })) {
|
|
1766
1788
|
appendFile(form, "files", file);
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WordTimestamp } from "./timestamps.js";
|
|
2
|
+
import type { VoiceAccent, VoiceWritableAccent, VoiceAge, VoiceGender, VoiceLanguageCode, VoiceTone } from "./voice-metadata.js";
|
|
2
3
|
export type JsonObject = Record<string, unknown>;
|
|
3
4
|
export type BreezeBlueFetch = typeof fetch;
|
|
4
5
|
export interface BreezeBlueClientOptions {
|
|
@@ -276,6 +277,7 @@ export interface GenerationJobError {
|
|
|
276
277
|
detail: string;
|
|
277
278
|
}
|
|
278
279
|
export interface GenerationJob {
|
|
280
|
+
wordTimestamps?: WordTimestamp[];
|
|
279
281
|
generationJobId: string;
|
|
280
282
|
historyItemId: string;
|
|
281
283
|
status: string;
|
|
@@ -359,7 +361,7 @@ export interface VoiceMetadataOptions {
|
|
|
359
361
|
ageCodes: VoiceAge[];
|
|
360
362
|
toneCodes: VoiceTone[];
|
|
361
363
|
toneMaxItems: number;
|
|
362
|
-
accentCodesByLanguage: Record<VoiceLanguageCode,
|
|
364
|
+
accentCodesByLanguage: Record<VoiceLanguageCode, VoiceWritableAccent[]>;
|
|
363
365
|
}
|
|
364
366
|
export interface VoiceRandomParams {
|
|
365
367
|
/** Only pick from voices whose saved audio language matches this code. */
|
|
@@ -375,6 +377,7 @@ export interface VoiceSearchParams {
|
|
|
375
377
|
age?: VoiceAge[];
|
|
376
378
|
tone?: VoiceTone[];
|
|
377
379
|
accent?: VoiceAccent;
|
|
380
|
+
accentMode?: "all" | "unmarked";
|
|
378
381
|
origin?: "designed" | "cloned" | string;
|
|
379
382
|
voiceType?: "all" | "default" | "personal" | string;
|
|
380
383
|
sort?: "created_at_unix" | "name" | "trend" | string;
|
|
@@ -398,7 +401,7 @@ export interface UploadFile {
|
|
|
398
401
|
contentType?: string;
|
|
399
402
|
}
|
|
400
403
|
export interface VoiceClonePreviewRequest {
|
|
401
|
-
name
|
|
404
|
+
name?: string | null;
|
|
402
405
|
file?: UploadData | UploadFile;
|
|
403
406
|
files?: Array<UploadData | UploadFile>;
|
|
404
407
|
description?: string;
|
|
@@ -418,7 +421,7 @@ export interface VoiceEditRequest {
|
|
|
418
421
|
gender?: VoiceGender | null;
|
|
419
422
|
age?: VoiceAge | null;
|
|
420
423
|
tone?: VoiceTone[];
|
|
421
|
-
accent?:
|
|
424
|
+
accent?: VoiceWritableAccent | null;
|
|
422
425
|
file?: UploadData | UploadFile;
|
|
423
426
|
files?: Array<UploadData | UploadFile>;
|
|
424
427
|
}
|
|
@@ -451,6 +454,56 @@ export interface VoiceDesignResponse {
|
|
|
451
454
|
previews: VoiceDesignPreview[];
|
|
452
455
|
text: string;
|
|
453
456
|
}
|
|
457
|
+
export interface VoiceRemixPrepareRequest {
|
|
458
|
+
voiceId: string;
|
|
459
|
+
prompt?: string;
|
|
460
|
+
presetId?: string;
|
|
461
|
+
}
|
|
462
|
+
export interface VoiceRemixPreviewRequest extends VoiceRemixPrepareRequest {
|
|
463
|
+
guidanceScale?: number;
|
|
464
|
+
preparationToken?: string;
|
|
465
|
+
}
|
|
466
|
+
export interface VoiceRemixSource {
|
|
467
|
+
voiceId: string | null;
|
|
468
|
+
name: string | null;
|
|
469
|
+
description: string | null;
|
|
470
|
+
}
|
|
471
|
+
export interface VoiceRemixPreset {
|
|
472
|
+
id: string;
|
|
473
|
+
category: string;
|
|
474
|
+
name: string;
|
|
475
|
+
prompt: string;
|
|
476
|
+
script: string;
|
|
477
|
+
language: string;
|
|
478
|
+
guidanceScale: number;
|
|
479
|
+
previewAudioUrl: string;
|
|
480
|
+
}
|
|
481
|
+
export interface VoiceRemixPresets {
|
|
482
|
+
presets: VoiceRemixPreset[];
|
|
483
|
+
exampleVoiceId: string;
|
|
484
|
+
}
|
|
485
|
+
export interface VoiceRemixPreparation {
|
|
486
|
+
preparationToken: string;
|
|
487
|
+
languageCode: VoiceLanguageCode;
|
|
488
|
+
instruction: string;
|
|
489
|
+
text: string;
|
|
490
|
+
sourceVoice: VoiceRemixSource;
|
|
491
|
+
}
|
|
492
|
+
export interface VoiceRemixJob {
|
|
493
|
+
generationJobId: string;
|
|
494
|
+
status: string;
|
|
495
|
+
}
|
|
496
|
+
export interface VoiceRemixPreviewStatus extends VoiceRemixJob {
|
|
497
|
+
languageCode?: VoiceLanguageCode | null;
|
|
498
|
+
generatedVoiceId?: string | null;
|
|
499
|
+
text?: string | null;
|
|
500
|
+
error?: GenerationJobError | null;
|
|
501
|
+
instruction?: string | null;
|
|
502
|
+
guidanceScale?: number | null;
|
|
503
|
+
sourceVoice?: VoiceRemixSource | null;
|
|
504
|
+
comparisonAudioUrl?: string | null;
|
|
505
|
+
comparisonText?: string | null;
|
|
506
|
+
}
|
|
454
507
|
export interface VoiceLocalizePreviewRequest {
|
|
455
508
|
voiceId: string;
|
|
456
509
|
languageCode: VoiceLanguageCode;
|
|
@@ -470,7 +523,7 @@ export interface VoiceLocalizePreviewStatus {
|
|
|
470
523
|
}
|
|
471
524
|
export interface SaveVoiceRequest {
|
|
472
525
|
generatedVoiceId: string;
|
|
473
|
-
voiceName
|
|
526
|
+
voiceName?: string | null;
|
|
474
527
|
voiceDescription?: string | null;
|
|
475
528
|
tags?: string[];
|
|
476
529
|
primaryCategoryCode?: string;
|
|
@@ -480,7 +533,7 @@ export interface SaveVoiceRequest {
|
|
|
480
533
|
gender?: VoiceGender | null;
|
|
481
534
|
age?: VoiceAge | null;
|
|
482
535
|
tone?: VoiceTone[];
|
|
483
|
-
accent?:
|
|
536
|
+
accent?: VoiceWritableAccent | null;
|
|
484
537
|
}
|
|
485
538
|
export interface HistoryItem {
|
|
486
539
|
historyItemId: string;
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.
|
|
1
|
+
export declare const SDK_VERSION = "0.19.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.19.0";
|
|
2
2
|
export const SDK_NAME = "@breeze.blue/sdk";
|
package/dist/voice-metadata.d.ts
CHANGED
|
@@ -5,10 +5,14 @@ export declare const VOICE_LANGUAGE_CODES: readonly ["af", "ar", "bg", "bn", "bs
|
|
|
5
5
|
export declare const VOICE_TONE_MAX_ITEMS: 3;
|
|
6
6
|
export declare const VOICE_ACCENT_CODES_BY_LANGUAGE: {
|
|
7
7
|
readonly en: readonly ["american", "british", "scottish", "irish", "australian", "canadian", "us_southern", "us_new_york", "indian", "south_african", "russian", "japanese", "korean", "chinese"];
|
|
8
|
-
readonly zh: readonly ["
|
|
8
|
+
readonly zh: readonly ["mandarin_northeastern", "mandarin_shaanxi", "mandarin_shanghai", "mandarin_sichuan", "mandarin_henan", "mandarin_beijing", "mandarin_taiwan", "cantonese"];
|
|
9
9
|
};
|
|
10
10
|
export type VoiceGender = (typeof VOICE_GENDER_CODES)[number];
|
|
11
11
|
export type VoiceAge = (typeof VOICE_AGE_CODES)[number];
|
|
12
12
|
export type VoiceTone = (typeof VOICE_TONE_CODES)[number];
|
|
13
13
|
export type VoiceLanguageCode = (typeof VOICE_LANGUAGE_CODES)[number];
|
|
14
|
-
export
|
|
14
|
+
export declare const VOICE_LEGACY_ACCENT_CODES_BY_LANGUAGE: {
|
|
15
|
+
readonly zh: readonly ["mandarin_guangdong", "mandarin_yunnan"];
|
|
16
|
+
};
|
|
17
|
+
export type VoiceWritableAccent = (typeof VOICE_ACCENT_CODES_BY_LANGUAGE)[keyof typeof VOICE_ACCENT_CODES_BY_LANGUAGE][number];
|
|
18
|
+
export type VoiceAccent = VoiceWritableAccent | "mandarin_guangdong" | "mandarin_yunnan";
|
package/dist/voice-metadata.js
CHANGED
|
@@ -6,5 +6,6 @@ export const VOICE_LANGUAGE_CODES = ["af", "ar", "bg", "bn", "bs", "ca", "cs", "
|
|
|
6
6
|
export const VOICE_TONE_MAX_ITEMS = 3;
|
|
7
7
|
export const VOICE_ACCENT_CODES_BY_LANGUAGE = {
|
|
8
8
|
en: ["american", "british", "scottish", "irish", "australian", "canadian", "us_southern", "us_new_york", "indian", "south_african", "russian", "japanese", "korean", "chinese"],
|
|
9
|
-
zh: ["
|
|
9
|
+
zh: ["mandarin_northeastern", "mandarin_shaanxi", "mandarin_shanghai", "mandarin_sichuan", "mandarin_henan", "mandarin_beijing", "mandarin_taiwan", "cantonese"],
|
|
10
10
|
};
|
|
11
|
+
export const VOICE_LEGACY_ACCENT_CODES_BY_LANGUAGE = { "zh": ["mandarin_guangdong", "mandarin_yunnan"] };
|