@supertone/supertone 0.1.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/.tshy/build.json +8 -0
- package/.tshy/commonjs.json +16 -0
- package/.tshy/esm.json +15 -0
- package/FUNCTIONS.md +93 -0
- package/LICENSE +21 -0
- package/README.md +251 -0
- package/RUNTIMES.md +48 -0
- package/custom_test/realtime_tts_player.ts +489 -0
- package/custom_test/test_real_api.ts +1803 -0
- package/custom_test/test_sdk.ts +259 -0
- package/custom_test/test_sdk_functions.ts +609 -0
- package/dist/commonjs/core.d.ts +10 -0
- package/dist/commonjs/core.d.ts.map +1 -0
- package/dist/commonjs/core.js +17 -0
- package/dist/commonjs/core.js.map +1 -0
- package/dist/commonjs/funcs/customVoicesCreateClonedVoice.d.ts +19 -0
- package/dist/commonjs/funcs/customVoicesCreateClonedVoice.d.ts.map +1 -0
- package/dist/commonjs/funcs/customVoicesCreateClonedVoice.js +151 -0
- package/dist/commonjs/funcs/customVoicesCreateClonedVoice.js.map +1 -0
- package/dist/commonjs/funcs/customVoicesDeleteCustomVoice.d.ts +18 -0
- package/dist/commonjs/funcs/customVoicesDeleteCustomVoice.d.ts.map +1 -0
- package/dist/commonjs/funcs/customVoicesDeleteCustomVoice.js +124 -0
- package/dist/commonjs/funcs/customVoicesDeleteCustomVoice.js.map +1 -0
- package/dist/commonjs/funcs/customVoicesEditCustomVoice.d.ts +19 -0
- package/dist/commonjs/funcs/customVoicesEditCustomVoice.d.ts.map +1 -0
- package/dist/commonjs/funcs/customVoicesEditCustomVoice.js +127 -0
- package/dist/commonjs/funcs/customVoicesEditCustomVoice.js.map +1 -0
- package/dist/commonjs/funcs/customVoicesGetCustomVoice.d.ts +19 -0
- package/dist/commonjs/funcs/customVoicesGetCustomVoice.d.ts.map +1 -0
- package/dist/commonjs/funcs/customVoicesGetCustomVoice.js +124 -0
- package/dist/commonjs/funcs/customVoicesGetCustomVoice.js.map +1 -0
- package/dist/commonjs/funcs/customVoicesListCustomVoices.d.ts +19 -0
- package/dist/commonjs/funcs/customVoicesListCustomVoices.d.ts.map +1 -0
- package/dist/commonjs/funcs/customVoicesListCustomVoices.js +123 -0
- package/dist/commonjs/funcs/customVoicesListCustomVoices.js.map +1 -0
- package/dist/commonjs/funcs/customVoicesSearchCustomVoices.d.ts +19 -0
- package/dist/commonjs/funcs/customVoicesSearchCustomVoices.d.ts.map +1 -0
- package/dist/commonjs/funcs/customVoicesSearchCustomVoices.js +125 -0
- package/dist/commonjs/funcs/customVoicesSearchCustomVoices.js.map +1 -0
- package/dist/commonjs/funcs/textToSpeechCreateSpeech.d.ts +25 -0
- package/dist/commonjs/funcs/textToSpeechCreateSpeech.d.ts.map +1 -0
- package/dist/commonjs/funcs/textToSpeechCreateSpeech.js +154 -0
- package/dist/commonjs/funcs/textToSpeechCreateSpeech.js.map +1 -0
- package/dist/commonjs/funcs/textToSpeechPredictDuration.d.ts +18 -0
- package/dist/commonjs/funcs/textToSpeechPredictDuration.d.ts.map +1 -0
- package/dist/commonjs/funcs/textToSpeechPredictDuration.js +135 -0
- package/dist/commonjs/funcs/textToSpeechPredictDuration.js.map +1 -0
- package/dist/commonjs/funcs/textToSpeechStreamSpeech.d.ts +25 -0
- package/dist/commonjs/funcs/textToSpeechStreamSpeech.d.ts.map +1 -0
- package/dist/commonjs/funcs/textToSpeechStreamSpeech.js +155 -0
- package/dist/commonjs/funcs/textToSpeechStreamSpeech.js.map +1 -0
- package/dist/commonjs/funcs/usageGetCreditBalance.d.ts +17 -0
- package/dist/commonjs/funcs/usageGetCreditBalance.d.ts.map +1 -0
- package/dist/commonjs/funcs/usageGetCreditBalance.js +104 -0
- package/dist/commonjs/funcs/usageGetCreditBalance.js.map +1 -0
- package/dist/commonjs/funcs/usageGetUsage.d.ts +19 -0
- package/dist/commonjs/funcs/usageGetUsage.d.ts.map +1 -0
- package/dist/commonjs/funcs/usageGetUsage.js +127 -0
- package/dist/commonjs/funcs/usageGetUsage.js.map +1 -0
- package/dist/commonjs/funcs/usageGetVoiceUsage.d.ts +18 -0
- package/dist/commonjs/funcs/usageGetVoiceUsage.d.ts.map +1 -0
- package/dist/commonjs/funcs/usageGetVoiceUsage.js +119 -0
- package/dist/commonjs/funcs/usageGetVoiceUsage.js.map +1 -0
- package/dist/commonjs/funcs/voicesGetVoice.d.ts +18 -0
- package/dist/commonjs/funcs/voicesGetVoice.d.ts.map +1 -0
- package/dist/commonjs/funcs/voicesGetVoice.js +120 -0
- package/dist/commonjs/funcs/voicesGetVoice.js.map +1 -0
- package/dist/commonjs/funcs/voicesListVoices.d.ts +18 -0
- package/dist/commonjs/funcs/voicesListVoices.d.ts.map +1 -0
- package/dist/commonjs/funcs/voicesListVoices.js +119 -0
- package/dist/commonjs/funcs/voicesListVoices.js.map +1 -0
- package/dist/commonjs/funcs/voicesSearchVoices.d.ts +18 -0
- package/dist/commonjs/funcs/voicesSearchVoices.d.ts.map +1 -0
- package/dist/commonjs/funcs/voicesSearchVoices.js +128 -0
- package/dist/commonjs/funcs/voicesSearchVoices.js.map +1 -0
- package/dist/commonjs/hooks/hooks.d.ts +25 -0
- package/dist/commonjs/hooks/hooks.d.ts.map +1 -0
- package/dist/commonjs/hooks/hooks.js +84 -0
- package/dist/commonjs/hooks/hooks.js.map +1 -0
- package/dist/commonjs/hooks/index.d.ts +3 -0
- package/dist/commonjs/hooks/index.d.ts.map +1 -0
- package/dist/commonjs/hooks/index.js +22 -0
- package/dist/commonjs/hooks/index.js.map +1 -0
- package/dist/commonjs/hooks/types.d.ts +76 -0
- package/dist/commonjs/hooks/types.d.ts.map +1 -0
- package/dist/commonjs/hooks/types.js +6 -0
- package/dist/commonjs/hooks/types.js.map +1 -0
- package/dist/commonjs/index.d.ts +6 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +48 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/lib/base64.d.ts +10 -0
- package/dist/commonjs/lib/base64.d.ts.map +1 -0
- package/dist/commonjs/lib/base64.js +71 -0
- package/dist/commonjs/lib/base64.js.map +1 -0
- package/dist/commonjs/lib/config.d.ts +38 -0
- package/dist/commonjs/lib/config.d.ts.map +1 -0
- package/dist/commonjs/lib/config.js +38 -0
- package/dist/commonjs/lib/config.js.map +1 -0
- package/dist/commonjs/lib/custom_utils/audio_utils.d.ts +74 -0
- package/dist/commonjs/lib/custom_utils/audio_utils.d.ts.map +1 -0
- package/dist/commonjs/lib/custom_utils/audio_utils.js +327 -0
- package/dist/commonjs/lib/custom_utils/audio_utils.js.map +1 -0
- package/dist/commonjs/lib/custom_utils/constants.d.ts +16 -0
- package/dist/commonjs/lib/custom_utils/constants.d.ts.map +1 -0
- package/dist/commonjs/lib/custom_utils/constants.js +22 -0
- package/dist/commonjs/lib/custom_utils/constants.js.map +1 -0
- package/dist/commonjs/lib/custom_utils/index.d.ts +11 -0
- package/dist/commonjs/lib/custom_utils/index.d.ts.map +1 -0
- package/dist/commonjs/lib/custom_utils/index.js +44 -0
- package/dist/commonjs/lib/custom_utils/index.js.map +1 -0
- package/dist/commonjs/lib/custom_utils/phoneme_utils.d.ts +42 -0
- package/dist/commonjs/lib/custom_utils/phoneme_utils.d.ts.map +1 -0
- package/dist/commonjs/lib/custom_utils/phoneme_utils.js +106 -0
- package/dist/commonjs/lib/custom_utils/phoneme_utils.js.map +1 -0
- package/dist/commonjs/lib/custom_utils/text_utils.d.ts +30 -0
- package/dist/commonjs/lib/custom_utils/text_utils.d.ts.map +1 -0
- package/dist/commonjs/lib/custom_utils/text_utils.js +125 -0
- package/dist/commonjs/lib/custom_utils/text_utils.js.map +1 -0
- package/dist/commonjs/lib/dlv.d.ts +14 -0
- package/dist/commonjs/lib/dlv.d.ts.map +1 -0
- package/dist/commonjs/lib/dlv.js +49 -0
- package/dist/commonjs/lib/dlv.js.map +1 -0
- package/dist/commonjs/lib/encodings.d.ts +52 -0
- package/dist/commonjs/lib/encodings.d.ts.map +1 -0
- package/dist/commonjs/lib/encodings.js +368 -0
- package/dist/commonjs/lib/encodings.js.map +1 -0
- package/dist/commonjs/lib/files.d.ts +13 -0
- package/dist/commonjs/lib/files.d.ts.map +1 -0
- package/dist/commonjs/lib/files.js +77 -0
- package/dist/commonjs/lib/files.js.map +1 -0
- package/dist/commonjs/lib/http.d.ts +67 -0
- package/dist/commonjs/lib/http.d.ts.map +1 -0
- package/dist/commonjs/lib/http.js +217 -0
- package/dist/commonjs/lib/http.js.map +1 -0
- package/dist/commonjs/lib/is-plain-object.d.ts +2 -0
- package/dist/commonjs/lib/is-plain-object.d.ts.map +1 -0
- package/dist/commonjs/lib/is-plain-object.js +41 -0
- package/dist/commonjs/lib/is-plain-object.js.map +1 -0
- package/dist/commonjs/lib/logger.d.ts +6 -0
- package/dist/commonjs/lib/logger.d.ts.map +1 -0
- package/dist/commonjs/lib/logger.js +6 -0
- package/dist/commonjs/lib/logger.js.map +1 -0
- package/dist/commonjs/lib/matchers.d.ts +59 -0
- package/dist/commonjs/lib/matchers.d.ts.map +1 -0
- package/dist/commonjs/lib/matchers.js +222 -0
- package/dist/commonjs/lib/matchers.js.map +1 -0
- package/dist/commonjs/lib/primitives.d.ts +26 -0
- package/dist/commonjs/lib/primitives.d.ts.map +1 -0
- package/dist/commonjs/lib/primitives.js +111 -0
- package/dist/commonjs/lib/primitives.js.map +1 -0
- package/dist/commonjs/lib/retries.d.ts +38 -0
- package/dist/commonjs/lib/retries.d.ts.map +1 -0
- package/dist/commonjs/lib/retries.js +153 -0
- package/dist/commonjs/lib/retries.js.map +1 -0
- package/dist/commonjs/lib/schemas.d.ts +19 -0
- package/dist/commonjs/lib/schemas.d.ts.map +1 -0
- package/dist/commonjs/lib/schemas.js +62 -0
- package/dist/commonjs/lib/schemas.js.map +1 -0
- package/dist/commonjs/lib/sdks.d.ts +63 -0
- package/dist/commonjs/lib/sdks.d.ts.map +1 -0
- package/dist/commonjs/lib/sdks.js +269 -0
- package/dist/commonjs/lib/sdks.js.map +1 -0
- package/dist/commonjs/lib/security.d.ts +83 -0
- package/dist/commonjs/lib/security.d.ts.map +1 -0
- package/dist/commonjs/lib/security.js +143 -0
- package/dist/commonjs/lib/security.js.map +1 -0
- package/dist/commonjs/lib/url.d.ts +5 -0
- package/dist/commonjs/lib/url.d.ts.map +1 -0
- package/dist/commonjs/lib/url.js +25 -0
- package/dist/commonjs/lib/url.js.map +1 -0
- package/dist/commonjs/models/apiconverttexttospeechusingcharacterrequest.d.ts +132 -0
- package/dist/commonjs/models/apiconverttexttospeechusingcharacterrequest.d.ts.map +1 -0
- package/dist/commonjs/models/apiconverttexttospeechusingcharacterrequest.js +144 -0
- package/dist/commonjs/models/apiconverttexttospeechusingcharacterrequest.js.map +1 -0
- package/dist/commonjs/models/apisampledata.d.ts +47 -0
- package/dist/commonjs/models/apisampledata.d.ts.map +1 -0
- package/dist/commonjs/models/apisampledata.js +75 -0
- package/dist/commonjs/models/apisampledata.js.map +1 -0
- package/dist/commonjs/models/converttexttospeechparameters.d.ts +53 -0
- package/dist/commonjs/models/converttexttospeechparameters.d.ts.map +1 -0
- package/dist/commonjs/models/converttexttospeechparameters.js +96 -0
- package/dist/commonjs/models/converttexttospeechparameters.js.map +1 -0
- package/dist/commonjs/models/createclonedvoiceuploadresponse.d.ts +32 -0
- package/dist/commonjs/models/createclonedvoiceuploadresponse.d.ts.map +1 -0
- package/dist/commonjs/models/createclonedvoiceuploadresponse.js +78 -0
- package/dist/commonjs/models/createclonedvoiceuploadresponse.js.map +1 -0
- package/dist/commonjs/models/errors/badrequesterrorresponse.d.ts +47 -0
- package/dist/commonjs/models/errors/badrequesterrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/badrequesterrorresponse.js +85 -0
- package/dist/commonjs/models/errors/badrequesterrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/forbiddenerrorresponse.d.ts +48 -0
- package/dist/commonjs/models/errors/forbiddenerrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/forbiddenerrorresponse.js +88 -0
- package/dist/commonjs/models/errors/forbiddenerrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/httpclienterrors.d.ts +44 -0
- package/dist/commonjs/models/errors/httpclienterrors.d.ts.map +1 -0
- package/dist/commonjs/models/errors/httpclienterrors.js +78 -0
- package/dist/commonjs/models/errors/httpclienterrors.js.map +1 -0
- package/dist/commonjs/models/errors/index.d.ts +15 -0
- package/dist/commonjs/models/errors/index.d.ts.map +1 -0
- package/dist/commonjs/models/errors/index.js +34 -0
- package/dist/commonjs/models/errors/index.js.map +1 -0
- package/dist/commonjs/models/errors/internalservererrorresponse.d.ts +48 -0
- package/dist/commonjs/models/errors/internalservererrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/internalservererrorresponse.js +88 -0
- package/dist/commonjs/models/errors/internalservererrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/notfounderrorresponse.d.ts +48 -0
- package/dist/commonjs/models/errors/notfounderrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/notfounderrorresponse.js +88 -0
- package/dist/commonjs/models/errors/notfounderrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/payloadtoolargeerrorresponse.d.ts +48 -0
- package/dist/commonjs/models/errors/payloadtoolargeerrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/payloadtoolargeerrorresponse.js +88 -0
- package/dist/commonjs/models/errors/payloadtoolargeerrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/paymentrequirederrorresponse.d.ts +48 -0
- package/dist/commonjs/models/errors/paymentrequirederrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/paymentrequirederrorresponse.js +88 -0
- package/dist/commonjs/models/errors/paymentrequirederrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/requesttimeouterrorresponse.d.ts +48 -0
- package/dist/commonjs/models/errors/requesttimeouterrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/requesttimeouterrorresponse.js +88 -0
- package/dist/commonjs/models/errors/requesttimeouterrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/responsevalidationerror.d.ts +26 -0
- package/dist/commonjs/models/errors/responsevalidationerror.d.ts.map +1 -0
- package/dist/commonjs/models/errors/responsevalidationerror.js +66 -0
- package/dist/commonjs/models/errors/responsevalidationerror.js.map +1 -0
- package/dist/commonjs/models/errors/sdkvalidationerror.d.ts +21 -0
- package/dist/commonjs/models/errors/sdkvalidationerror.d.ts.map +1 -0
- package/dist/commonjs/models/errors/sdkvalidationerror.js +129 -0
- package/dist/commonjs/models/errors/sdkvalidationerror.js.map +1 -0
- package/dist/commonjs/models/errors/supertonedefaulterror.d.ts +10 -0
- package/dist/commonjs/models/errors/supertonedefaulterror.d.ts.map +1 -0
- package/dist/commonjs/models/errors/supertonedefaulterror.js +34 -0
- package/dist/commonjs/models/errors/supertonedefaulterror.js.map +1 -0
- package/dist/commonjs/models/errors/supertoneerror.d.ts +19 -0
- package/dist/commonjs/models/errors/supertoneerror.d.ts.map +1 -0
- package/dist/commonjs/models/errors/supertoneerror.js +20 -0
- package/dist/commonjs/models/errors/supertoneerror.js.map +1 -0
- package/dist/commonjs/models/errors/toomanyrequestserrorresponse.d.ts +48 -0
- package/dist/commonjs/models/errors/toomanyrequestserrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/toomanyrequestserrorresponse.js +88 -0
- package/dist/commonjs/models/errors/toomanyrequestserrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/unauthorizederrorresponse.d.ts +48 -0
- package/dist/commonjs/models/errors/unauthorizederrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/unauthorizederrorresponse.js +88 -0
- package/dist/commonjs/models/errors/unauthorizederrorresponse.js.map +1 -0
- package/dist/commonjs/models/errors/unsupportedmediatypeerrorresponse.d.ts +47 -0
- package/dist/commonjs/models/errors/unsupportedmediatypeerrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/errors/unsupportedmediatypeerrorresponse.js +85 -0
- package/dist/commonjs/models/errors/unsupportedmediatypeerrorresponse.js.map +1 -0
- package/dist/commonjs/models/forbiddenerrorresponse.d.ts +45 -0
- package/dist/commonjs/models/forbiddenerrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/forbiddenerrorresponse.js +82 -0
- package/dist/commonjs/models/forbiddenerrorresponse.js.map +1 -0
- package/dist/commonjs/models/getapicharacterlistresponse.d.ts +43 -0
- package/dist/commonjs/models/getapicharacterlistresponse.d.ts.map +1 -0
- package/dist/commonjs/models/getapicharacterlistresponse.js +83 -0
- package/dist/commonjs/models/getapicharacterlistresponse.js.map +1 -0
- package/dist/commonjs/models/getapicharacterresponsedata.d.ts +88 -0
- package/dist/commonjs/models/getapicharacterresponsedata.d.ts.map +1 -0
- package/dist/commonjs/models/getapicharacterresponsedata.js +107 -0
- package/dist/commonjs/models/getapicharacterresponsedata.js.map +1 -0
- package/dist/commonjs/models/getcharacterbyidresponse.d.ts +88 -0
- package/dist/commonjs/models/getcharacterbyidresponse.d.ts.map +1 -0
- package/dist/commonjs/models/getcharacterbyidresponse.js +107 -0
- package/dist/commonjs/models/getcharacterbyidresponse.js.map +1 -0
- package/dist/commonjs/models/getcreditbalanceresponse.d.ts +32 -0
- package/dist/commonjs/models/getcreditbalanceresponse.d.ts.map +1 -0
- package/dist/commonjs/models/getcreditbalanceresponse.js +69 -0
- package/dist/commonjs/models/getcreditbalanceresponse.js.map +1 -0
- package/dist/commonjs/models/getcustomvoicelistresponse.d.ts +43 -0
- package/dist/commonjs/models/getcustomvoicelistresponse.d.ts.map +1 -0
- package/dist/commonjs/models/getcustomvoicelistresponse.js +83 -0
- package/dist/commonjs/models/getcustomvoicelistresponse.js.map +1 -0
- package/dist/commonjs/models/getcustomvoiceresponsedata.d.ts +42 -0
- package/dist/commonjs/models/getcustomvoiceresponsedata.d.ts.map +1 -0
- package/dist/commonjs/models/getcustomvoiceresponsedata.js +82 -0
- package/dist/commonjs/models/getcustomvoiceresponsedata.js.map +1 -0
- package/dist/commonjs/models/getsingleclonedvoiceresponse.d.ts +42 -0
- package/dist/commonjs/models/getsingleclonedvoiceresponse.d.ts.map +1 -0
- package/dist/commonjs/models/getsingleclonedvoiceresponse.js +82 -0
- package/dist/commonjs/models/getsingleclonedvoiceresponse.js.map +1 -0
- package/dist/commonjs/models/getusagelistv1response.d.ts +30 -0
- package/dist/commonjs/models/getusagelistv1response.d.ts.map +1 -0
- package/dist/commonjs/models/getusagelistv1response.js +70 -0
- package/dist/commonjs/models/getusagelistv1response.js.map +1 -0
- package/dist/commonjs/models/getusageresponsev1data.d.ts +67 -0
- package/dist/commonjs/models/getusageresponsev1data.d.ts.map +1 -0
- package/dist/commonjs/models/getusageresponsev1data.js +96 -0
- package/dist/commonjs/models/getusageresponsev1data.js.map +1 -0
- package/dist/commonjs/models/index.d.ts +29 -0
- package/dist/commonjs/models/index.d.ts.map +1 -0
- package/dist/commonjs/models/index.js +48 -0
- package/dist/commonjs/models/index.js.map +1 -0
- package/dist/commonjs/models/internalservererrorresponse.d.ts +45 -0
- package/dist/commonjs/models/internalservererrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/internalservererrorresponse.js +82 -0
- package/dist/commonjs/models/internalservererrorresponse.js.map +1 -0
- package/dist/commonjs/models/notfounderrorresponse.d.ts +45 -0
- package/dist/commonjs/models/notfounderrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/notfounderrorresponse.js +82 -0
- package/dist/commonjs/models/notfounderrorresponse.js.map +1 -0
- package/dist/commonjs/models/operations/createclonedvoice.d.ts +72 -0
- package/dist/commonjs/models/operations/createclonedvoice.d.ts.map +1 -0
- package/dist/commonjs/models/operations/createclonedvoice.js +114 -0
- package/dist/commonjs/models/operations/createclonedvoice.js.map +1 -0
- package/dist/commonjs/models/operations/createspeech.d.ts +161 -0
- package/dist/commonjs/models/operations/createspeech.d.ts.map +1 -0
- package/dist/commonjs/models/operations/createspeech.js +239 -0
- package/dist/commonjs/models/operations/createspeech.js.map +1 -0
- package/dist/commonjs/models/operations/deletecustomvoice.d.ts +29 -0
- package/dist/commonjs/models/operations/deletecustomvoice.d.ts.map +1 -0
- package/dist/commonjs/models/operations/deletecustomvoice.js +78 -0
- package/dist/commonjs/models/operations/deletecustomvoice.js.map +1 -0
- package/dist/commonjs/models/operations/editcustomvoice.d.ts +32 -0
- package/dist/commonjs/models/operations/editcustomvoice.d.ts.map +1 -0
- package/dist/commonjs/models/operations/editcustomvoice.js +83 -0
- package/dist/commonjs/models/operations/editcustomvoice.js.map +1 -0
- package/dist/commonjs/models/operations/getcustomvoice.d.ts +29 -0
- package/dist/commonjs/models/operations/getcustomvoice.d.ts.map +1 -0
- package/dist/commonjs/models/operations/getcustomvoice.js +78 -0
- package/dist/commonjs/models/operations/getcustomvoice.js.map +1 -0
- package/dist/commonjs/models/operations/getusage.d.ts +120 -0
- package/dist/commonjs/models/operations/getusage.d.ts.map +1 -0
- package/dist/commonjs/models/operations/getusage.js +142 -0
- package/dist/commonjs/models/operations/getusage.js.map +1 -0
- package/dist/commonjs/models/operations/getvoice.d.ts +29 -0
- package/dist/commonjs/models/operations/getvoice.d.ts.map +1 -0
- package/dist/commonjs/models/operations/getvoice.js +78 -0
- package/dist/commonjs/models/operations/getvoice.js.map +1 -0
- package/dist/commonjs/models/operations/getvoiceusage.d.ts +37 -0
- package/dist/commonjs/models/operations/getvoiceusage.d.ts.map +1 -0
- package/dist/commonjs/models/operations/getvoiceusage.js +82 -0
- package/dist/commonjs/models/operations/getvoiceusage.js.map +1 -0
- package/dist/commonjs/models/operations/index.d.ts +15 -0
- package/dist/commonjs/models/operations/index.d.ts.map +1 -0
- package/dist/commonjs/models/operations/index.js +34 -0
- package/dist/commonjs/models/operations/index.js.map +1 -0
- package/dist/commonjs/models/operations/listcustomvoices.d.ts +37 -0
- package/dist/commonjs/models/operations/listcustomvoices.d.ts.map +1 -0
- package/dist/commonjs/models/operations/listcustomvoices.js +82 -0
- package/dist/commonjs/models/operations/listcustomvoices.js.map +1 -0
- package/dist/commonjs/models/operations/listvoices.d.ts +37 -0
- package/dist/commonjs/models/operations/listvoices.d.ts.map +1 -0
- package/dist/commonjs/models/operations/listvoices.js +82 -0
- package/dist/commonjs/models/operations/listvoices.js.map +1 -0
- package/dist/commonjs/models/operations/predictduration.d.ts +60 -0
- package/dist/commonjs/models/operations/predictduration.d.ts.map +1 -0
- package/dist/commonjs/models/operations/predictduration.js +110 -0
- package/dist/commonjs/models/operations/predictduration.js.map +1 -0
- package/dist/commonjs/models/operations/searchcustomvoices.d.ts +47 -0
- package/dist/commonjs/models/operations/searchcustomvoices.d.ts.map +1 -0
- package/dist/commonjs/models/operations/searchcustomvoices.js +86 -0
- package/dist/commonjs/models/operations/searchcustomvoices.js.map +1 -0
- package/dist/commonjs/models/operations/searchvoices.d.ts +82 -0
- package/dist/commonjs/models/operations/searchvoices.d.ts.map +1 -0
- package/dist/commonjs/models/operations/searchvoices.js +104 -0
- package/dist/commonjs/models/operations/searchvoices.js.map +1 -0
- package/dist/commonjs/models/operations/streamspeech.d.ts +84 -0
- package/dist/commonjs/models/operations/streamspeech.d.ts.map +1 -0
- package/dist/commonjs/models/operations/streamspeech.js +161 -0
- package/dist/commonjs/models/operations/streamspeech.js.map +1 -0
- package/dist/commonjs/models/payloadtoolargeerrorresponse.d.ts +45 -0
- package/dist/commonjs/models/payloadtoolargeerrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/payloadtoolargeerrorresponse.js +82 -0
- package/dist/commonjs/models/payloadtoolargeerrorresponse.js.map +1 -0
- package/dist/commonjs/models/paymentrequirederrorresponse.d.ts +45 -0
- package/dist/commonjs/models/paymentrequirederrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/paymentrequirederrorresponse.js +82 -0
- package/dist/commonjs/models/paymentrequirederrorresponse.js.map +1 -0
- package/dist/commonjs/models/predictttsdurationusingcharacterrequest.d.ts +127 -0
- package/dist/commonjs/models/predictttsdurationusingcharacterrequest.d.ts.map +1 -0
- package/dist/commonjs/models/predictttsdurationusingcharacterrequest.js +139 -0
- package/dist/commonjs/models/predictttsdurationusingcharacterrequest.js.map +1 -0
- package/dist/commonjs/models/requesttimeouterrorresponse.d.ts +45 -0
- package/dist/commonjs/models/requesttimeouterrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/requesttimeouterrorresponse.js +82 -0
- package/dist/commonjs/models/requesttimeouterrorresponse.js.map +1 -0
- package/dist/commonjs/models/security.d.ts +29 -0
- package/dist/commonjs/models/security.d.ts.map +1 -0
- package/dist/commonjs/models/security.js +78 -0
- package/dist/commonjs/models/security.js.map +1 -0
- package/dist/commonjs/models/toomanyrequestserrorresponse.d.ts +45 -0
- package/dist/commonjs/models/toomanyrequestserrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/toomanyrequestserrorresponse.js +82 -0
- package/dist/commonjs/models/toomanyrequestserrorresponse.js.map +1 -0
- package/dist/commonjs/models/unauthorizederrorresponse.d.ts +45 -0
- package/dist/commonjs/models/unauthorizederrorresponse.d.ts.map +1 -0
- package/dist/commonjs/models/unauthorizederrorresponse.js +82 -0
- package/dist/commonjs/models/unauthorizederrorresponse.js.map +1 -0
- package/dist/commonjs/models/updateclonedvoicerequest.d.ts +37 -0
- package/dist/commonjs/models/updateclonedvoicerequest.d.ts.map +1 -0
- package/dist/commonjs/models/updateclonedvoicerequest.js +71 -0
- package/dist/commonjs/models/updateclonedvoicerequest.js.map +1 -0
- package/dist/commonjs/models/updateclonedvoiceresponse.d.ts +42 -0
- package/dist/commonjs/models/updateclonedvoiceresponse.d.ts.map +1 -0
- package/dist/commonjs/models/updateclonedvoiceresponse.js +82 -0
- package/dist/commonjs/models/updateclonedvoiceresponse.js.map +1 -0
- package/dist/commonjs/models/usageanalyticsresponse.d.ts +43 -0
- package/dist/commonjs/models/usageanalyticsresponse.d.ts.map +1 -0
- package/dist/commonjs/models/usageanalyticsresponse.js +83 -0
- package/dist/commonjs/models/usageanalyticsresponse.js.map +1 -0
- package/dist/commonjs/models/usagebucket.d.ts +43 -0
- package/dist/commonjs/models/usagebucket.d.ts.map +1 -0
- package/dist/commonjs/models/usagebucket.js +85 -0
- package/dist/commonjs/models/usagebucket.js.map +1 -0
- package/dist/commonjs/models/usageresult.d.ts +52 -0
- package/dist/commonjs/models/usageresult.d.ts.map +1 -0
- package/dist/commonjs/models/usageresult.js +92 -0
- package/dist/commonjs/models/usageresult.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/sdk/customvoices.d.ts +48 -0
- package/dist/commonjs/sdk/customvoices.d.ts.map +1 -0
- package/dist/commonjs/sdk/customvoices.js +72 -0
- package/dist/commonjs/sdk/customvoices.js.map +1 -0
- package/dist/commonjs/sdk/index.d.ts +2 -0
- package/dist/commonjs/sdk/index.d.ts.map +1 -0
- package/dist/commonjs/sdk/index.js +21 -0
- package/dist/commonjs/sdk/index.js.map +1 -0
- package/dist/commonjs/sdk/sdk.d.ts +16 -0
- package/dist/commonjs/sdk/sdk.d.ts.map +1 -0
- package/dist/commonjs/sdk/sdk.js +27 -0
- package/dist/commonjs/sdk/sdk.js.map +1 -0
- package/dist/commonjs/sdk/texttospeech.d.ts +62 -0
- package/dist/commonjs/sdk/texttospeech.d.ts.map +1 -0
- package/dist/commonjs/sdk/texttospeech.js +365 -0
- package/dist/commonjs/sdk/texttospeech.js.map +1 -0
- package/dist/commonjs/sdk/usage.d.ts +27 -0
- package/dist/commonjs/sdk/usage.d.ts.map +1 -0
- package/dist/commonjs/sdk/usage.js +42 -0
- package/dist/commonjs/sdk/usage.js.map +1 -0
- package/dist/commonjs/sdk/voices.d.ts +27 -0
- package/dist/commonjs/sdk/voices.d.ts.map +1 -0
- package/dist/commonjs/sdk/voices.js +42 -0
- package/dist/commonjs/sdk/voices.js.map +1 -0
- package/dist/commonjs/types/async.d.ts +23 -0
- package/dist/commonjs/types/async.d.ts.map +1 -0
- package/dist/commonjs/types/async.js +44 -0
- package/dist/commonjs/types/async.js.map +1 -0
- package/dist/commonjs/types/blobs.d.ts +4 -0
- package/dist/commonjs/types/blobs.d.ts.map +1 -0
- package/dist/commonjs/types/blobs.js +62 -0
- package/dist/commonjs/types/blobs.js.map +1 -0
- package/dist/commonjs/types/constdatetime.d.ts +3 -0
- package/dist/commonjs/types/constdatetime.d.ts.map +1 -0
- package/dist/commonjs/types/constdatetime.js +46 -0
- package/dist/commonjs/types/constdatetime.js.map +1 -0
- package/dist/commonjs/types/enums.d.ts +12 -0
- package/dist/commonjs/types/enums.d.ts.map +1 -0
- package/dist/commonjs/types/enums.js +10 -0
- package/dist/commonjs/types/enums.js.map +1 -0
- package/dist/commonjs/types/fp.d.ts +31 -0
- package/dist/commonjs/types/fp.d.ts.map +1 -0
- package/dist/commonjs/types/fp.js +37 -0
- package/dist/commonjs/types/fp.js.map +1 -0
- package/dist/commonjs/types/index.d.ts +8 -0
- package/dist/commonjs/types/index.d.ts.map +1 -0
- package/dist/commonjs/types/index.js +16 -0
- package/dist/commonjs/types/index.js.map +1 -0
- package/dist/commonjs/types/operations.d.ts +27 -0
- package/dist/commonjs/types/operations.d.ts.map +1 -0
- package/dist/commonjs/types/operations.js +83 -0
- package/dist/commonjs/types/operations.js.map +1 -0
- package/dist/commonjs/types/rfcdate.d.ts +21 -0
- package/dist/commonjs/types/rfcdate.d.ts.map +1 -0
- package/dist/commonjs/types/rfcdate.js +46 -0
- package/dist/commonjs/types/rfcdate.js.map +1 -0
- package/dist/commonjs/types/streams.d.ts +2 -0
- package/dist/commonjs/types/streams.d.ts.map +1 -0
- package/dist/commonjs/types/streams.js +18 -0
- package/dist/commonjs/types/streams.js.map +1 -0
- package/dist/esm/core.d.ts +10 -0
- package/dist/esm/core.d.ts.map +1 -0
- package/dist/esm/core.js +13 -0
- package/dist/esm/core.js.map +1 -0
- package/dist/esm/funcs/customVoicesCreateClonedVoice.d.ts +19 -0
- package/dist/esm/funcs/customVoicesCreateClonedVoice.d.ts.map +1 -0
- package/dist/esm/funcs/customVoicesCreateClonedVoice.js +115 -0
- package/dist/esm/funcs/customVoicesCreateClonedVoice.js.map +1 -0
- package/dist/esm/funcs/customVoicesDeleteCustomVoice.d.ts +18 -0
- package/dist/esm/funcs/customVoicesDeleteCustomVoice.d.ts.map +1 -0
- package/dist/esm/funcs/customVoicesDeleteCustomVoice.js +88 -0
- package/dist/esm/funcs/customVoicesDeleteCustomVoice.js.map +1 -0
- package/dist/esm/funcs/customVoicesEditCustomVoice.d.ts +19 -0
- package/dist/esm/funcs/customVoicesEditCustomVoice.d.ts.map +1 -0
- package/dist/esm/funcs/customVoicesEditCustomVoice.js +91 -0
- package/dist/esm/funcs/customVoicesEditCustomVoice.js.map +1 -0
- package/dist/esm/funcs/customVoicesGetCustomVoice.d.ts +19 -0
- package/dist/esm/funcs/customVoicesGetCustomVoice.d.ts.map +1 -0
- package/dist/esm/funcs/customVoicesGetCustomVoice.js +88 -0
- package/dist/esm/funcs/customVoicesGetCustomVoice.js.map +1 -0
- package/dist/esm/funcs/customVoicesListCustomVoices.d.ts +19 -0
- package/dist/esm/funcs/customVoicesListCustomVoices.d.ts.map +1 -0
- package/dist/esm/funcs/customVoicesListCustomVoices.js +87 -0
- package/dist/esm/funcs/customVoicesListCustomVoices.js.map +1 -0
- package/dist/esm/funcs/customVoicesSearchCustomVoices.d.ts +19 -0
- package/dist/esm/funcs/customVoicesSearchCustomVoices.d.ts.map +1 -0
- package/dist/esm/funcs/customVoicesSearchCustomVoices.js +89 -0
- package/dist/esm/funcs/customVoicesSearchCustomVoices.js.map +1 -0
- package/dist/esm/funcs/textToSpeechCreateSpeech.d.ts +25 -0
- package/dist/esm/funcs/textToSpeechCreateSpeech.d.ts.map +1 -0
- package/dist/esm/funcs/textToSpeechCreateSpeech.js +117 -0
- package/dist/esm/funcs/textToSpeechCreateSpeech.js.map +1 -0
- package/dist/esm/funcs/textToSpeechPredictDuration.d.ts +18 -0
- package/dist/esm/funcs/textToSpeechPredictDuration.d.ts.map +1 -0
- package/dist/esm/funcs/textToSpeechPredictDuration.js +99 -0
- package/dist/esm/funcs/textToSpeechPredictDuration.js.map +1 -0
- package/dist/esm/funcs/textToSpeechStreamSpeech.d.ts +25 -0
- package/dist/esm/funcs/textToSpeechStreamSpeech.d.ts.map +1 -0
- package/dist/esm/funcs/textToSpeechStreamSpeech.js +118 -0
- package/dist/esm/funcs/textToSpeechStreamSpeech.js.map +1 -0
- package/dist/esm/funcs/usageGetCreditBalance.d.ts +17 -0
- package/dist/esm/funcs/usageGetCreditBalance.d.ts.map +1 -0
- package/dist/esm/funcs/usageGetCreditBalance.js +68 -0
- package/dist/esm/funcs/usageGetCreditBalance.js.map +1 -0
- package/dist/esm/funcs/usageGetUsage.d.ts +19 -0
- package/dist/esm/funcs/usageGetUsage.d.ts.map +1 -0
- package/dist/esm/funcs/usageGetUsage.js +91 -0
- package/dist/esm/funcs/usageGetUsage.js.map +1 -0
- package/dist/esm/funcs/usageGetVoiceUsage.d.ts +18 -0
- package/dist/esm/funcs/usageGetVoiceUsage.d.ts.map +1 -0
- package/dist/esm/funcs/usageGetVoiceUsage.js +83 -0
- package/dist/esm/funcs/usageGetVoiceUsage.js.map +1 -0
- package/dist/esm/funcs/voicesGetVoice.d.ts +18 -0
- package/dist/esm/funcs/voicesGetVoice.d.ts.map +1 -0
- package/dist/esm/funcs/voicesGetVoice.js +84 -0
- package/dist/esm/funcs/voicesGetVoice.js.map +1 -0
- package/dist/esm/funcs/voicesListVoices.d.ts +18 -0
- package/dist/esm/funcs/voicesListVoices.d.ts.map +1 -0
- package/dist/esm/funcs/voicesListVoices.js +83 -0
- package/dist/esm/funcs/voicesListVoices.js.map +1 -0
- package/dist/esm/funcs/voicesSearchVoices.d.ts +18 -0
- package/dist/esm/funcs/voicesSearchVoices.d.ts.map +1 -0
- package/dist/esm/funcs/voicesSearchVoices.js +92 -0
- package/dist/esm/funcs/voicesSearchVoices.js.map +1 -0
- package/dist/esm/hooks/hooks.d.ts +25 -0
- package/dist/esm/hooks/hooks.d.ts.map +1 -0
- package/dist/esm/hooks/hooks.js +80 -0
- package/dist/esm/hooks/hooks.js.map +1 -0
- package/dist/esm/hooks/index.d.ts +3 -0
- package/dist/esm/hooks/index.d.ts.map +1 -0
- package/dist/esm/hooks/index.js +6 -0
- package/dist/esm/hooks/index.js.map +1 -0
- package/dist/esm/hooks/types.d.ts +76 -0
- package/dist/esm/hooks/types.d.ts.map +1 -0
- package/dist/esm/hooks/types.js +5 -0
- package/dist/esm/hooks/types.js.map +1 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/base64.d.ts +10 -0
- package/dist/esm/lib/base64.d.ts.map +1 -0
- package/dist/esm/lib/base64.js +29 -0
- package/dist/esm/lib/base64.js.map +1 -0
- package/dist/esm/lib/config.d.ts +38 -0
- package/dist/esm/lib/config.d.ts.map +1 -0
- package/dist/esm/lib/config.js +34 -0
- package/dist/esm/lib/config.js.map +1 -0
- package/dist/esm/lib/custom_utils/audio_utils.d.ts +74 -0
- package/dist/esm/lib/custom_utils/audio_utils.d.ts.map +1 -0
- package/dist/esm/lib/custom_utils/audio_utils.js +318 -0
- package/dist/esm/lib/custom_utils/audio_utils.js.map +1 -0
- package/dist/esm/lib/custom_utils/constants.d.ts +16 -0
- package/dist/esm/lib/custom_utils/constants.d.ts.map +1 -0
- package/dist/esm/lib/custom_utils/constants.js +19 -0
- package/dist/esm/lib/custom_utils/constants.js.map +1 -0
- package/dist/esm/lib/custom_utils/index.d.ts +11 -0
- package/dist/esm/lib/custom_utils/index.d.ts.map +1 -0
- package/dist/esm/lib/custom_utils/index.js +15 -0
- package/dist/esm/lib/custom_utils/index.js.map +1 -0
- package/dist/esm/lib/custom_utils/phoneme_utils.d.ts +42 -0
- package/dist/esm/lib/custom_utils/phoneme_utils.d.ts.map +1 -0
- package/dist/esm/lib/custom_utils/phoneme_utils.js +101 -0
- package/dist/esm/lib/custom_utils/phoneme_utils.js.map +1 -0
- package/dist/esm/lib/custom_utils/text_utils.d.ts +30 -0
- package/dist/esm/lib/custom_utils/text_utils.d.ts.map +1 -0
- package/dist/esm/lib/custom_utils/text_utils.js +121 -0
- package/dist/esm/lib/custom_utils/text_utils.js.map +1 -0
- package/dist/esm/lib/dlv.d.ts +14 -0
- package/dist/esm/lib/dlv.d.ts.map +1 -0
- package/dist/esm/lib/dlv.js +46 -0
- package/dist/esm/lib/dlv.js.map +1 -0
- package/dist/esm/lib/encodings.d.ts +52 -0
- package/dist/esm/lib/encodings.d.ts.map +1 -0
- package/dist/esm/lib/encodings.js +354 -0
- package/dist/esm/lib/encodings.js.map +1 -0
- package/dist/esm/lib/files.d.ts +13 -0
- package/dist/esm/lib/files.d.ts.map +1 -0
- package/dist/esm/lib/files.js +73 -0
- package/dist/esm/lib/files.js.map +1 -0
- package/dist/esm/lib/http.d.ts +67 -0
- package/dist/esm/lib/http.d.ts.map +1 -0
- package/dist/esm/lib/http.js +207 -0
- package/dist/esm/lib/http.js.map +1 -0
- package/dist/esm/lib/is-plain-object.d.ts +2 -0
- package/dist/esm/lib/is-plain-object.d.ts.map +1 -0
- package/dist/esm/lib/is-plain-object.js +38 -0
- package/dist/esm/lib/is-plain-object.js.map +1 -0
- package/dist/esm/lib/logger.d.ts +6 -0
- package/dist/esm/lib/logger.d.ts.map +1 -0
- package/dist/esm/lib/logger.js +5 -0
- package/dist/esm/lib/logger.js.map +1 -0
- package/dist/esm/lib/matchers.d.ts +59 -0
- package/dist/esm/lib/matchers.d.ts.map +1 -0
- package/dist/esm/lib/matchers.js +203 -0
- package/dist/esm/lib/matchers.js.map +1 -0
- package/dist/esm/lib/primitives.d.ts +26 -0
- package/dist/esm/lib/primitives.d.ts.map +1 -0
- package/dist/esm/lib/primitives.js +103 -0
- package/dist/esm/lib/primitives.js.map +1 -0
- package/dist/esm/lib/retries.d.ts +38 -0
- package/dist/esm/lib/retries.d.ts.map +1 -0
- package/dist/esm/lib/retries.js +147 -0
- package/dist/esm/lib/retries.js.map +1 -0
- package/dist/esm/lib/schemas.d.ts +19 -0
- package/dist/esm/lib/schemas.d.ts.map +1 -0
- package/dist/esm/lib/schemas.js +57 -0
- package/dist/esm/lib/schemas.js.map +1 -0
- package/dist/esm/lib/sdks.d.ts +63 -0
- package/dist/esm/lib/sdks.d.ts.map +1 -0
- package/dist/esm/lib/sdks.js +265 -0
- package/dist/esm/lib/sdks.js.map +1 -0
- package/dist/esm/lib/security.d.ts +83 -0
- package/dist/esm/lib/security.d.ts.map +1 -0
- package/dist/esm/lib/security.js +136 -0
- package/dist/esm/lib/security.js.map +1 -0
- package/dist/esm/lib/url.d.ts +5 -0
- package/dist/esm/lib/url.d.ts.map +1 -0
- package/dist/esm/lib/url.js +22 -0
- package/dist/esm/lib/url.js.map +1 -0
- package/dist/esm/models/apiconverttexttospeechusingcharacterrequest.d.ts +132 -0
- package/dist/esm/models/apiconverttexttospeechusingcharacterrequest.d.ts.map +1 -0
- package/dist/esm/models/apiconverttexttospeechusingcharacterrequest.js +106 -0
- package/dist/esm/models/apiconverttexttospeechusingcharacterrequest.js.map +1 -0
- package/dist/esm/models/apisampledata.d.ts +47 -0
- package/dist/esm/models/apisampledata.d.ts.map +1 -0
- package/dist/esm/models/apisampledata.js +37 -0
- package/dist/esm/models/apisampledata.js.map +1 -0
- package/dist/esm/models/converttexttospeechparameters.d.ts +53 -0
- package/dist/esm/models/converttexttospeechparameters.d.ts.map +1 -0
- package/dist/esm/models/converttexttospeechparameters.js +58 -0
- package/dist/esm/models/converttexttospeechparameters.js.map +1 -0
- package/dist/esm/models/createclonedvoiceuploadresponse.d.ts +32 -0
- package/dist/esm/models/createclonedvoiceuploadresponse.d.ts.map +1 -0
- package/dist/esm/models/createclonedvoiceuploadresponse.js +40 -0
- package/dist/esm/models/createclonedvoiceuploadresponse.js.map +1 -0
- package/dist/esm/models/errors/badrequesterrorresponse.d.ts +47 -0
- package/dist/esm/models/errors/badrequesterrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/badrequesterrorresponse.js +48 -0
- package/dist/esm/models/errors/badrequesterrorresponse.js.map +1 -0
- package/dist/esm/models/errors/forbiddenerrorresponse.d.ts +48 -0
- package/dist/esm/models/errors/forbiddenerrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/forbiddenerrorresponse.js +51 -0
- package/dist/esm/models/errors/forbiddenerrorresponse.js.map +1 -0
- package/dist/esm/models/errors/httpclienterrors.d.ts +44 -0
- package/dist/esm/models/errors/httpclienterrors.d.ts.map +1 -0
- package/dist/esm/models/errors/httpclienterrors.js +69 -0
- package/dist/esm/models/errors/httpclienterrors.js.map +1 -0
- package/dist/esm/models/errors/index.d.ts +15 -0
- package/dist/esm/models/errors/index.d.ts.map +1 -0
- package/dist/esm/models/errors/index.js +18 -0
- package/dist/esm/models/errors/index.js.map +1 -0
- package/dist/esm/models/errors/internalservererrorresponse.d.ts +48 -0
- package/dist/esm/models/errors/internalservererrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/internalservererrorresponse.js +51 -0
- package/dist/esm/models/errors/internalservererrorresponse.js.map +1 -0
- package/dist/esm/models/errors/notfounderrorresponse.d.ts +48 -0
- package/dist/esm/models/errors/notfounderrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/notfounderrorresponse.js +51 -0
- package/dist/esm/models/errors/notfounderrorresponse.js.map +1 -0
- package/dist/esm/models/errors/payloadtoolargeerrorresponse.d.ts +48 -0
- package/dist/esm/models/errors/payloadtoolargeerrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/payloadtoolargeerrorresponse.js +51 -0
- package/dist/esm/models/errors/payloadtoolargeerrorresponse.js.map +1 -0
- package/dist/esm/models/errors/paymentrequirederrorresponse.d.ts +48 -0
- package/dist/esm/models/errors/paymentrequirederrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/paymentrequirederrorresponse.js +51 -0
- package/dist/esm/models/errors/paymentrequirederrorresponse.js.map +1 -0
- package/dist/esm/models/errors/requesttimeouterrorresponse.d.ts +48 -0
- package/dist/esm/models/errors/requesttimeouterrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/requesttimeouterrorresponse.js +51 -0
- package/dist/esm/models/errors/requesttimeouterrorresponse.js.map +1 -0
- package/dist/esm/models/errors/responsevalidationerror.d.ts +26 -0
- package/dist/esm/models/errors/responsevalidationerror.d.ts.map +1 -0
- package/dist/esm/models/errors/responsevalidationerror.js +29 -0
- package/dist/esm/models/errors/responsevalidationerror.js.map +1 -0
- package/dist/esm/models/errors/sdkvalidationerror.d.ts +21 -0
- package/dist/esm/models/errors/sdkvalidationerror.d.ts.map +1 -0
- package/dist/esm/models/errors/sdkvalidationerror.js +91 -0
- package/dist/esm/models/errors/sdkvalidationerror.js.map +1 -0
- package/dist/esm/models/errors/supertonedefaulterror.d.ts +10 -0
- package/dist/esm/models/errors/supertonedefaulterror.d.ts.map +1 -0
- package/dist/esm/models/errors/supertonedefaulterror.js +30 -0
- package/dist/esm/models/errors/supertonedefaulterror.js.map +1 -0
- package/dist/esm/models/errors/supertoneerror.d.ts +19 -0
- package/dist/esm/models/errors/supertoneerror.d.ts.map +1 -0
- package/dist/esm/models/errors/supertoneerror.js +16 -0
- package/dist/esm/models/errors/supertoneerror.js.map +1 -0
- package/dist/esm/models/errors/toomanyrequestserrorresponse.d.ts +48 -0
- package/dist/esm/models/errors/toomanyrequestserrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/toomanyrequestserrorresponse.js +51 -0
- package/dist/esm/models/errors/toomanyrequestserrorresponse.js.map +1 -0
- package/dist/esm/models/errors/unauthorizederrorresponse.d.ts +48 -0
- package/dist/esm/models/errors/unauthorizederrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/unauthorizederrorresponse.js +51 -0
- package/dist/esm/models/errors/unauthorizederrorresponse.js.map +1 -0
- package/dist/esm/models/errors/unsupportedmediatypeerrorresponse.d.ts +47 -0
- package/dist/esm/models/errors/unsupportedmediatypeerrorresponse.d.ts.map +1 -0
- package/dist/esm/models/errors/unsupportedmediatypeerrorresponse.js +48 -0
- package/dist/esm/models/errors/unsupportedmediatypeerrorresponse.js.map +1 -0
- package/dist/esm/models/forbiddenerrorresponse.d.ts +45 -0
- package/dist/esm/models/forbiddenerrorresponse.d.ts.map +1 -0
- package/dist/esm/models/forbiddenerrorresponse.js +44 -0
- package/dist/esm/models/forbiddenerrorresponse.js.map +1 -0
- package/dist/esm/models/getapicharacterlistresponse.d.ts +43 -0
- package/dist/esm/models/getapicharacterlistresponse.d.ts.map +1 -0
- package/dist/esm/models/getapicharacterlistresponse.js +45 -0
- package/dist/esm/models/getapicharacterlistresponse.js.map +1 -0
- package/dist/esm/models/getapicharacterresponsedata.d.ts +88 -0
- package/dist/esm/models/getapicharacterresponsedata.d.ts.map +1 -0
- package/dist/esm/models/getapicharacterresponsedata.js +69 -0
- package/dist/esm/models/getapicharacterresponsedata.js.map +1 -0
- package/dist/esm/models/getcharacterbyidresponse.d.ts +88 -0
- package/dist/esm/models/getcharacterbyidresponse.d.ts.map +1 -0
- package/dist/esm/models/getcharacterbyidresponse.js +69 -0
- package/dist/esm/models/getcharacterbyidresponse.js.map +1 -0
- package/dist/esm/models/getcreditbalanceresponse.d.ts +32 -0
- package/dist/esm/models/getcreditbalanceresponse.d.ts.map +1 -0
- package/dist/esm/models/getcreditbalanceresponse.js +31 -0
- package/dist/esm/models/getcreditbalanceresponse.js.map +1 -0
- package/dist/esm/models/getcustomvoicelistresponse.d.ts +43 -0
- package/dist/esm/models/getcustomvoicelistresponse.d.ts.map +1 -0
- package/dist/esm/models/getcustomvoicelistresponse.js +45 -0
- package/dist/esm/models/getcustomvoicelistresponse.js.map +1 -0
- package/dist/esm/models/getcustomvoiceresponsedata.d.ts +42 -0
- package/dist/esm/models/getcustomvoiceresponsedata.d.ts.map +1 -0
- package/dist/esm/models/getcustomvoiceresponsedata.js +44 -0
- package/dist/esm/models/getcustomvoiceresponsedata.js.map +1 -0
- package/dist/esm/models/getsingleclonedvoiceresponse.d.ts +42 -0
- package/dist/esm/models/getsingleclonedvoiceresponse.d.ts.map +1 -0
- package/dist/esm/models/getsingleclonedvoiceresponse.js +44 -0
- package/dist/esm/models/getsingleclonedvoiceresponse.js.map +1 -0
- package/dist/esm/models/getusagelistv1response.d.ts +30 -0
- package/dist/esm/models/getusagelistv1response.d.ts.map +1 -0
- package/dist/esm/models/getusagelistv1response.js +32 -0
- package/dist/esm/models/getusagelistv1response.js.map +1 -0
- package/dist/esm/models/getusageresponsev1data.d.ts +67 -0
- package/dist/esm/models/getusageresponsev1data.d.ts.map +1 -0
- package/dist/esm/models/getusageresponsev1data.js +58 -0
- package/dist/esm/models/getusageresponsev1data.js.map +1 -0
- package/dist/esm/models/index.d.ts +29 -0
- package/dist/esm/models/index.d.ts.map +1 -0
- package/dist/esm/models/index.js +32 -0
- package/dist/esm/models/index.js.map +1 -0
- package/dist/esm/models/internalservererrorresponse.d.ts +45 -0
- package/dist/esm/models/internalservererrorresponse.d.ts.map +1 -0
- package/dist/esm/models/internalservererrorresponse.js +44 -0
- package/dist/esm/models/internalservererrorresponse.js.map +1 -0
- package/dist/esm/models/notfounderrorresponse.d.ts +45 -0
- package/dist/esm/models/notfounderrorresponse.d.ts.map +1 -0
- package/dist/esm/models/notfounderrorresponse.js +44 -0
- package/dist/esm/models/notfounderrorresponse.js.map +1 -0
- package/dist/esm/models/operations/createclonedvoice.d.ts +72 -0
- package/dist/esm/models/operations/createclonedvoice.d.ts.map +1 -0
- package/dist/esm/models/operations/createclonedvoice.js +74 -0
- package/dist/esm/models/operations/createclonedvoice.js.map +1 -0
- package/dist/esm/models/operations/createspeech.d.ts +161 -0
- package/dist/esm/models/operations/createspeech.d.ts.map +1 -0
- package/dist/esm/models/operations/createspeech.js +193 -0
- package/dist/esm/models/operations/createspeech.js.map +1 -0
- package/dist/esm/models/operations/deletecustomvoice.d.ts +29 -0
- package/dist/esm/models/operations/deletecustomvoice.d.ts.map +1 -0
- package/dist/esm/models/operations/deletecustomvoice.js +40 -0
- package/dist/esm/models/operations/deletecustomvoice.js.map +1 -0
- package/dist/esm/models/operations/editcustomvoice.d.ts +32 -0
- package/dist/esm/models/operations/editcustomvoice.d.ts.map +1 -0
- package/dist/esm/models/operations/editcustomvoice.js +45 -0
- package/dist/esm/models/operations/editcustomvoice.js.map +1 -0
- package/dist/esm/models/operations/getcustomvoice.d.ts +29 -0
- package/dist/esm/models/operations/getcustomvoice.d.ts.map +1 -0
- package/dist/esm/models/operations/getcustomvoice.js +40 -0
- package/dist/esm/models/operations/getcustomvoice.js.map +1 -0
- package/dist/esm/models/operations/getusage.d.ts +120 -0
- package/dist/esm/models/operations/getusage.d.ts.map +1 -0
- package/dist/esm/models/operations/getusage.js +104 -0
- package/dist/esm/models/operations/getusage.js.map +1 -0
- package/dist/esm/models/operations/getvoice.d.ts +29 -0
- package/dist/esm/models/operations/getvoice.d.ts.map +1 -0
- package/dist/esm/models/operations/getvoice.js +40 -0
- package/dist/esm/models/operations/getvoice.js.map +1 -0
- package/dist/esm/models/operations/getvoiceusage.d.ts +37 -0
- package/dist/esm/models/operations/getvoiceusage.d.ts.map +1 -0
- package/dist/esm/models/operations/getvoiceusage.js +44 -0
- package/dist/esm/models/operations/getvoiceusage.js.map +1 -0
- package/dist/esm/models/operations/index.d.ts +15 -0
- package/dist/esm/models/operations/index.d.ts.map +1 -0
- package/dist/esm/models/operations/index.js +18 -0
- package/dist/esm/models/operations/index.js.map +1 -0
- package/dist/esm/models/operations/listcustomvoices.d.ts +37 -0
- package/dist/esm/models/operations/listcustomvoices.d.ts.map +1 -0
- package/dist/esm/models/operations/listcustomvoices.js +44 -0
- package/dist/esm/models/operations/listcustomvoices.js.map +1 -0
- package/dist/esm/models/operations/listvoices.d.ts +37 -0
- package/dist/esm/models/operations/listvoices.d.ts.map +1 -0
- package/dist/esm/models/operations/listvoices.js +44 -0
- package/dist/esm/models/operations/listvoices.js.map +1 -0
- package/dist/esm/models/operations/predictduration.d.ts +60 -0
- package/dist/esm/models/operations/predictduration.d.ts.map +1 -0
- package/dist/esm/models/operations/predictduration.js +70 -0
- package/dist/esm/models/operations/predictduration.js.map +1 -0
- package/dist/esm/models/operations/searchcustomvoices.d.ts +47 -0
- package/dist/esm/models/operations/searchcustomvoices.d.ts.map +1 -0
- package/dist/esm/models/operations/searchcustomvoices.js +48 -0
- package/dist/esm/models/operations/searchcustomvoices.js.map +1 -0
- package/dist/esm/models/operations/searchvoices.d.ts +82 -0
- package/dist/esm/models/operations/searchvoices.d.ts.map +1 -0
- package/dist/esm/models/operations/searchvoices.js +66 -0
- package/dist/esm/models/operations/searchvoices.js.map +1 -0
- package/dist/esm/models/operations/streamspeech.d.ts +84 -0
- package/dist/esm/models/operations/streamspeech.d.ts.map +1 -0
- package/dist/esm/models/operations/streamspeech.js +119 -0
- package/dist/esm/models/operations/streamspeech.js.map +1 -0
- package/dist/esm/models/payloadtoolargeerrorresponse.d.ts +45 -0
- package/dist/esm/models/payloadtoolargeerrorresponse.d.ts.map +1 -0
- package/dist/esm/models/payloadtoolargeerrorresponse.js +44 -0
- package/dist/esm/models/payloadtoolargeerrorresponse.js.map +1 -0
- package/dist/esm/models/paymentrequirederrorresponse.d.ts +45 -0
- package/dist/esm/models/paymentrequirederrorresponse.d.ts.map +1 -0
- package/dist/esm/models/paymentrequirederrorresponse.js +44 -0
- package/dist/esm/models/paymentrequirederrorresponse.js.map +1 -0
- package/dist/esm/models/predictttsdurationusingcharacterrequest.d.ts +127 -0
- package/dist/esm/models/predictttsdurationusingcharacterrequest.d.ts.map +1 -0
- package/dist/esm/models/predictttsdurationusingcharacterrequest.js +101 -0
- package/dist/esm/models/predictttsdurationusingcharacterrequest.js.map +1 -0
- package/dist/esm/models/requesttimeouterrorresponse.d.ts +45 -0
- package/dist/esm/models/requesttimeouterrorresponse.d.ts.map +1 -0
- package/dist/esm/models/requesttimeouterrorresponse.js +44 -0
- package/dist/esm/models/requesttimeouterrorresponse.js.map +1 -0
- package/dist/esm/models/security.d.ts +29 -0
- package/dist/esm/models/security.d.ts.map +1 -0
- package/dist/esm/models/security.js +40 -0
- package/dist/esm/models/security.js.map +1 -0
- package/dist/esm/models/toomanyrequestserrorresponse.d.ts +45 -0
- package/dist/esm/models/toomanyrequestserrorresponse.d.ts.map +1 -0
- package/dist/esm/models/toomanyrequestserrorresponse.js +44 -0
- package/dist/esm/models/toomanyrequestserrorresponse.js.map +1 -0
- package/dist/esm/models/unauthorizederrorresponse.d.ts +45 -0
- package/dist/esm/models/unauthorizederrorresponse.d.ts.map +1 -0
- package/dist/esm/models/unauthorizederrorresponse.js +44 -0
- package/dist/esm/models/unauthorizederrorresponse.js.map +1 -0
- package/dist/esm/models/updateclonedvoicerequest.d.ts +37 -0
- package/dist/esm/models/updateclonedvoicerequest.d.ts.map +1 -0
- package/dist/esm/models/updateclonedvoicerequest.js +33 -0
- package/dist/esm/models/updateclonedvoicerequest.js.map +1 -0
- package/dist/esm/models/updateclonedvoiceresponse.d.ts +42 -0
- package/dist/esm/models/updateclonedvoiceresponse.d.ts.map +1 -0
- package/dist/esm/models/updateclonedvoiceresponse.js +44 -0
- package/dist/esm/models/updateclonedvoiceresponse.js.map +1 -0
- package/dist/esm/models/usageanalyticsresponse.d.ts +43 -0
- package/dist/esm/models/usageanalyticsresponse.d.ts.map +1 -0
- package/dist/esm/models/usageanalyticsresponse.js +45 -0
- package/dist/esm/models/usageanalyticsresponse.js.map +1 -0
- package/dist/esm/models/usagebucket.d.ts +43 -0
- package/dist/esm/models/usagebucket.d.ts.map +1 -0
- package/dist/esm/models/usagebucket.js +47 -0
- package/dist/esm/models/usagebucket.js.map +1 -0
- package/dist/esm/models/usageresult.d.ts +52 -0
- package/dist/esm/models/usageresult.d.ts.map +1 -0
- package/dist/esm/models/usageresult.js +54 -0
- package/dist/esm/models/usageresult.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/sdk/customvoices.d.ts +48 -0
- package/dist/esm/sdk/customvoices.d.ts.map +1 -0
- package/dist/esm/sdk/customvoices.js +68 -0
- package/dist/esm/sdk/customvoices.js.map +1 -0
- package/dist/esm/sdk/index.d.ts +2 -0
- package/dist/esm/sdk/index.d.ts.map +1 -0
- package/dist/esm/sdk/index.js +5 -0
- package/dist/esm/sdk/index.js.map +1 -0
- package/dist/esm/sdk/sdk.d.ts +16 -0
- package/dist/esm/sdk/sdk.d.ts.map +1 -0
- package/dist/esm/sdk/sdk.js +23 -0
- package/dist/esm/sdk/sdk.js.map +1 -0
- package/dist/esm/sdk/texttospeech.d.ts +62 -0
- package/dist/esm/sdk/texttospeech.d.ts.map +1 -0
- package/dist/esm/sdk/texttospeech.js +359 -0
- package/dist/esm/sdk/texttospeech.js.map +1 -0
- package/dist/esm/sdk/usage.d.ts +27 -0
- package/dist/esm/sdk/usage.d.ts.map +1 -0
- package/dist/esm/sdk/usage.js +38 -0
- package/dist/esm/sdk/usage.js.map +1 -0
- package/dist/esm/sdk/voices.d.ts +27 -0
- package/dist/esm/sdk/voices.d.ts.map +1 -0
- package/dist/esm/sdk/voices.js +38 -0
- package/dist/esm/sdk/voices.js.map +1 -0
- package/dist/esm/types/async.d.ts +23 -0
- package/dist/esm/types/async.d.ts.map +1 -0
- package/dist/esm/types/async.js +40 -0
- package/dist/esm/types/async.js.map +1 -0
- package/dist/esm/types/blobs.d.ts +4 -0
- package/dist/esm/types/blobs.d.ts.map +1 -0
- package/dist/esm/types/blobs.js +25 -0
- package/dist/esm/types/blobs.js.map +1 -0
- package/dist/esm/types/constdatetime.d.ts +3 -0
- package/dist/esm/types/constdatetime.d.ts.map +1 -0
- package/dist/esm/types/constdatetime.js +10 -0
- package/dist/esm/types/constdatetime.js.map +1 -0
- package/dist/esm/types/enums.d.ts +12 -0
- package/dist/esm/types/enums.d.ts.map +1 -0
- package/dist/esm/types/enums.js +7 -0
- package/dist/esm/types/enums.js.map +1 -0
- package/dist/esm/types/fp.d.ts +31 -0
- package/dist/esm/types/fp.d.ts.map +1 -0
- package/dist/esm/types/fp.js +31 -0
- package/dist/esm/types/fp.js.map +1 -0
- package/dist/esm/types/index.d.ts +8 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +8 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/operations.d.ts +27 -0
- package/dist/esm/types/operations.d.ts.map +1 -0
- package/dist/esm/types/operations.js +77 -0
- package/dist/esm/types/operations.js.map +1 -0
- package/dist/esm/types/rfcdate.d.ts +21 -0
- package/dist/esm/types/rfcdate.d.ts.map +1 -0
- package/dist/esm/types/rfcdate.js +42 -0
- package/dist/esm/types/rfcdate.js.map +1 -0
- package/dist/esm/types/streams.d.ts +2 -0
- package/dist/esm/types/streams.d.ts.map +1 -0
- package/dist/esm/types/streams.js +15 -0
- package/dist/esm/types/streams.js.map +1 -0
- package/eslint.config.mjs +22 -0
- package/examples/custom_voices/create_cloned_voice.ts +116 -0
- package/examples/custom_voices/delete_custom_voice.ts +98 -0
- package/examples/custom_voices/edit_custom_voice.ts +71 -0
- package/examples/custom_voices/get_custom_voice.ts +69 -0
- package/examples/custom_voices/list_custom_voices.ts +70 -0
- package/examples/custom_voices/search_custom_voices.ts +80 -0
- package/examples/package.json +18 -0
- package/examples/textToSpeechCreateSpeech.example.ts +32 -0
- package/examples/text_to_speech/create_speech.ts +97 -0
- package/examples/text_to_speech/create_speech_long_text.ts +104 -0
- package/examples/text_to_speech/create_speech_with_phonemes.ts +122 -0
- package/examples/text_to_speech/create_speech_with_voice_settings.ts +108 -0
- package/examples/text_to_speech/predict_duration.ts +69 -0
- package/examples/text_to_speech/stream_speech.ts +114 -0
- package/examples/text_to_speech/stream_speech_long_text.ts +139 -0
- package/examples/text_to_speech/stream_speech_with_phonemes.ts +169 -0
- package/examples/text_to_speech/stream_speech_with_voice_settings.ts +150 -0
- package/examples/usage/get_credit_balance.ts +48 -0
- package/examples/usage/get_usage.ts +74 -0
- package/examples/usage/get_voice_usage.ts +75 -0
- package/examples/voices/get_voice.ts +59 -0
- package/examples/voices/list_voices.ts +67 -0
- package/examples/voices/search_voices.ts +61 -0
- package/jsr.json +27 -0
- package/openapi.json +2569 -0
- package/package.json +125 -0
- package/src/core.ts +13 -0
- package/src/funcs/customVoicesCreateClonedVoice.ts +237 -0
- package/src/funcs/customVoicesDeleteCustomVoice.ts +184 -0
- package/src/funcs/customVoicesEditCustomVoice.ts +187 -0
- package/src/funcs/customVoicesGetCustomVoice.ts +184 -0
- package/src/funcs/customVoicesListCustomVoices.ts +184 -0
- package/src/funcs/customVoicesSearchCustomVoices.ts +188 -0
- package/src/funcs/textToSpeechCreateSpeech.ts +239 -0
- package/src/funcs/textToSpeechPredictDuration.ts +219 -0
- package/src/funcs/textToSpeechStreamSpeech.ts +240 -0
- package/src/funcs/usageGetCreditBalance.ts +142 -0
- package/src/funcs/usageGetUsage.ts +191 -0
- package/src/funcs/usageGetVoiceUsage.ts +166 -0
- package/src/funcs/voicesGetVoice.ts +167 -0
- package/src/funcs/voicesListVoices.ts +167 -0
- package/src/funcs/voicesSearchVoices.ts +176 -0
- package/src/hooks/hooks.ts +129 -0
- package/src/hooks/index.ts +6 -0
- package/src/hooks/types.ts +107 -0
- package/src/index.ts +9 -0
- package/src/lib/base64.ts +37 -0
- package/src/lib/config.ts +67 -0
- package/src/lib/custom_utils/audio_utils.ts +380 -0
- package/src/lib/custom_utils/constants.ts +21 -0
- package/src/lib/custom_utils/index.ts +31 -0
- package/src/lib/custom_utils/phoneme_utils.ts +134 -0
- package/src/lib/custom_utils/text_utils.ts +132 -0
- package/src/lib/dlv.ts +53 -0
- package/src/lib/encodings.ts +483 -0
- package/src/lib/files.ts +82 -0
- package/src/lib/http.ts +323 -0
- package/src/lib/is-plain-object.ts +43 -0
- package/src/lib/logger.ts +9 -0
- package/src/lib/matchers.ts +352 -0
- package/src/lib/primitives.ts +150 -0
- package/src/lib/retries.ts +218 -0
- package/src/lib/schemas.ts +91 -0
- package/src/lib/sdks.ts +402 -0
- package/src/lib/security.ts +263 -0
- package/src/lib/url.ts +33 -0
- package/src/models/apiconverttexttospeechusingcharacterrequest.ts +226 -0
- package/src/models/apisampledata.ts +86 -0
- package/src/models/converttexttospeechparameters.ts +119 -0
- package/src/models/createclonedvoiceuploadresponse.ts +80 -0
- package/src/models/errors/badrequesterrorresponse.ts +90 -0
- package/src/models/errors/forbiddenerrorresponse.ts +93 -0
- package/src/models/errors/httpclienterrors.ts +62 -0
- package/src/models/errors/index.ts +18 -0
- package/src/models/errors/internalservererrorresponse.ts +97 -0
- package/src/models/errors/notfounderrorresponse.ts +93 -0
- package/src/models/errors/payloadtoolargeerrorresponse.ts +97 -0
- package/src/models/errors/paymentrequirederrorresponse.ts +97 -0
- package/src/models/errors/requesttimeouterrorresponse.ts +97 -0
- package/src/models/errors/responsevalidationerror.ts +50 -0
- package/src/models/errors/sdkvalidationerror.ts +109 -0
- package/src/models/errors/supertonedefaulterror.ts +40 -0
- package/src/models/errors/supertoneerror.ts +35 -0
- package/src/models/errors/toomanyrequestserrorresponse.ts +97 -0
- package/src/models/errors/unauthorizederrorresponse.ts +95 -0
- package/src/models/errors/unsupportedmediatypeerrorresponse.ts +91 -0
- package/src/models/forbiddenerrorresponse.ts +97 -0
- package/src/models/getapicharacterlistresponse.ts +100 -0
- package/src/models/getapicharacterresponsedata.ts +169 -0
- package/src/models/getcharacterbyidresponse.ts +167 -0
- package/src/models/getcreditbalanceresponse.ts +69 -0
- package/src/models/getcustomvoicelistresponse.ts +98 -0
- package/src/models/getcustomvoiceresponsedata.ts +92 -0
- package/src/models/getsingleclonedvoiceresponse.ts +94 -0
- package/src/models/getusagelistv1response.ts +72 -0
- package/src/models/getusageresponsev1data.ts +131 -0
- package/src/models/index.ts +32 -0
- package/src/models/internalservererrorresponse.ts +99 -0
- package/src/models/notfounderrorresponse.ts +97 -0
- package/src/models/operations/createclonedvoice.ts +152 -0
- package/src/models/operations/createspeech.ts +401 -0
- package/src/models/operations/deletecustomvoice.ts +75 -0
- package/src/models/operations/editcustomvoice.ts +82 -0
- package/src/models/operations/getcustomvoice.ts +75 -0
- package/src/models/operations/getusage.ts +182 -0
- package/src/models/operations/getvoice.ts +73 -0
- package/src/models/operations/getvoiceusage.ts +87 -0
- package/src/models/operations/index.ts +18 -0
- package/src/models/operations/listcustomvoices.ts +87 -0
- package/src/models/operations/listvoices.ts +87 -0
- package/src/models/operations/predictduration.ts +149 -0
- package/src/models/operations/searchcustomvoices.ts +101 -0
- package/src/models/operations/searchvoices.ts +154 -0
- package/src/models/operations/streamspeech.ts +232 -0
- package/src/models/payloadtoolargeerrorresponse.ts +100 -0
- package/src/models/paymentrequirederrorresponse.ts +100 -0
- package/src/models/predictttsdurationusingcharacterrequest.ts +215 -0
- package/src/models/requesttimeouterrorresponse.ts +99 -0
- package/src/models/security.ts +71 -0
- package/src/models/toomanyrequestserrorresponse.ts +100 -0
- package/src/models/unauthorizederrorresponse.ts +97 -0
- package/src/models/updateclonedvoicerequest.ts +76 -0
- package/src/models/updateclonedvoiceresponse.ts +92 -0
- package/src/models/usageanalyticsresponse.ts +98 -0
- package/src/models/usagebucket.ts +96 -0
- package/src/models/usageresult.ts +108 -0
- package/src/sdk/customvoices.ts +118 -0
- package/src/sdk/index.ts +5 -0
- package/src/sdk/sdk.ts +31 -0
- package/src/sdk/texttospeech.ts +488 -0
- package/src/sdk/usage.ts +62 -0
- package/src/sdk/voices.ts +64 -0
- package/src/types/async.ts +68 -0
- package/src/types/blobs.ts +31 -0
- package/src/types/constdatetime.ts +15 -0
- package/src/types/enums.ts +16 -0
- package/src/types/fp.ts +50 -0
- package/src/types/index.ts +11 -0
- package/src/types/operations.ts +105 -0
- package/src/types/rfcdate.ts +54 -0
- package/src/types/streams.ts +21 -0
- package/tsconfig.json +41 -0
|
@@ -0,0 +1,1803 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Real API Integration Test Script
|
|
4
|
+
* Tests all SDK functionality with real Supertone API calls.
|
|
5
|
+
*
|
|
6
|
+
* Comprehensive TypeScript version of the Python test suite.
|
|
7
|
+
* Includes all API tests except parallel processing tests.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import * as fs from "fs";
|
|
11
|
+
import * as path from "path";
|
|
12
|
+
import { fileURLToPath } from "url";
|
|
13
|
+
import * as dotenv from "dotenv";
|
|
14
|
+
|
|
15
|
+
// Get the directory of the current module
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = path.dirname(__filename);
|
|
18
|
+
|
|
19
|
+
// Load environment variables from .env file in custom_test directory
|
|
20
|
+
dotenv.config({ path: path.join(__dirname, ".env") });
|
|
21
|
+
|
|
22
|
+
const API_KEY = process.env.SUPERTONE_API_KEY || "your-api-key-here";
|
|
23
|
+
|
|
24
|
+
interface TestResult {
|
|
25
|
+
[key: string]: boolean | null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Helper function to log detailed error information
|
|
30
|
+
*/
|
|
31
|
+
function logDetailedError(e: any, context?: string): void {
|
|
32
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
33
|
+
|
|
34
|
+
if (context) {
|
|
35
|
+
console.error(` š Context: ${context}`);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Validation errors (Zod)
|
|
39
|
+
if (e.message && e.message.includes("validation")) {
|
|
40
|
+
if (e.cause) {
|
|
41
|
+
console.error(` š Validation details:`);
|
|
42
|
+
try {
|
|
43
|
+
console.error(JSON.stringify(e.cause, null, 2));
|
|
44
|
+
} catch {
|
|
45
|
+
console.error(e.cause);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// HTTP errors
|
|
51
|
+
if (e.statusCode || e.status) {
|
|
52
|
+
console.error(` š Status: ${e.statusCode || e.status}`);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Response body if available
|
|
56
|
+
if (e.body) {
|
|
57
|
+
console.error(` š¦ Response body:`);
|
|
58
|
+
try {
|
|
59
|
+
console.error(JSON.stringify(e.body, null, 2));
|
|
60
|
+
} catch {
|
|
61
|
+
console.error(e.body);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Stack trace in debug mode
|
|
66
|
+
if (process.env.DEBUG && e.stack) {
|
|
67
|
+
console.error(` š Stack trace:`);
|
|
68
|
+
console.error(e.stack);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Helper function to inspect and log response object
|
|
74
|
+
*/
|
|
75
|
+
function inspectResponse(response: any, label: string = "Response"): void {
|
|
76
|
+
console.log(` š ${label} inspection:`);
|
|
77
|
+
console.log(` Type: ${typeof response}`);
|
|
78
|
+
console.log(` Constructor: ${response?.constructor?.name || "unknown"}`);
|
|
79
|
+
|
|
80
|
+
if (response) {
|
|
81
|
+
const keys = Object.keys(response);
|
|
82
|
+
console.log(` Keys: ${keys.join(", ") || "(none)"}`);
|
|
83
|
+
|
|
84
|
+
// Check for result property
|
|
85
|
+
if ("result" in response) {
|
|
86
|
+
const result = response.result;
|
|
87
|
+
console.log(` Result type: ${typeof result}`);
|
|
88
|
+
console.log(
|
|
89
|
+
` Result constructor: ${result?.constructor?.name || "unknown"}`
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
if (result && typeof result === "object") {
|
|
93
|
+
const resultKeys = Object.keys(result);
|
|
94
|
+
console.log(
|
|
95
|
+
` Result keys: ${resultKeys.join(", ") || "(empty object)"}`
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
// Check prototype
|
|
99
|
+
const proto = Object.getPrototypeOf(result);
|
|
100
|
+
if (proto && proto.constructor) {
|
|
101
|
+
console.log(` Result prototype: ${proto.constructor.name}`);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Check for stream methods
|
|
105
|
+
if ("getReader" in result) {
|
|
106
|
+
console.log(` ā Has getReader (ReadableStream-like)`);
|
|
107
|
+
}
|
|
108
|
+
if ("arrayBuffer" in result) {
|
|
109
|
+
console.log(` ā Has arrayBuffer method`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Helper function to extract audio data from various response types
|
|
118
|
+
*/
|
|
119
|
+
async function extractAudioData(response: any): Promise<Uint8Array> {
|
|
120
|
+
let result = response.result;
|
|
121
|
+
|
|
122
|
+
// Debug logging
|
|
123
|
+
console.log(` š Debug - result type: ${typeof result}`);
|
|
124
|
+
if (typeof result === "object" && result !== null) {
|
|
125
|
+
console.log(` š Debug - constructor: ${result.constructor.name}`);
|
|
126
|
+
console.log(` š Debug - keys: ${Object.keys(result).join(", ")}`);
|
|
127
|
+
console.log(` š Debug - has audioBase64: ${"audioBase64" in result}`);
|
|
128
|
+
console.log(` š Debug - has getReader: ${"getReader" in result}`);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Check for capital-case Result (SDK internal structure)
|
|
132
|
+
if (!result || (typeof result === "object" && Object.keys(result).length === 0)) {
|
|
133
|
+
console.log(` š” Checking SDK internal Result field...`);
|
|
134
|
+
if ((response as any).Result) {
|
|
135
|
+
result = (response as any).Result;
|
|
136
|
+
console.log(` ā
Found Result (capital R) - using that instead`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Debug response headers
|
|
141
|
+
if (response.headers) {
|
|
142
|
+
console.log(` š Debug - response headers:`, JSON.stringify(response.headers, null, 2));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (result instanceof Uint8Array) {
|
|
146
|
+
console.log(` ā
Detected: Uint8Array`);
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (result instanceof Blob) {
|
|
151
|
+
console.log(` ā
Detected: Blob`);
|
|
152
|
+
return new Uint8Array(await result.arrayBuffer());
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (result instanceof ArrayBuffer) {
|
|
156
|
+
console.log(` ā
Detected: ArrayBuffer`);
|
|
157
|
+
return new Uint8Array(result);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (typeof result === "object" && result !== null && "getReader" in result) {
|
|
161
|
+
console.log(` ā
Detected: ReadableStream`);
|
|
162
|
+
// ReadableStream
|
|
163
|
+
const reader = (result as ReadableStream<Uint8Array>).getReader();
|
|
164
|
+
const chunks: Uint8Array[] = [];
|
|
165
|
+
|
|
166
|
+
while (true) {
|
|
167
|
+
const { done, value } = await reader.read();
|
|
168
|
+
if (done) break;
|
|
169
|
+
if (value) chunks.push(value);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Merge all chunks
|
|
173
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
174
|
+
const merged = new Uint8Array(totalLength);
|
|
175
|
+
let offset = 0;
|
|
176
|
+
for (const chunk of chunks) {
|
|
177
|
+
merged.set(chunk, offset);
|
|
178
|
+
offset += chunk.length;
|
|
179
|
+
}
|
|
180
|
+
return merged;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Handle CreateSpeechResponseBody with audioBase64 (for phoneme responses)
|
|
184
|
+
if (
|
|
185
|
+
typeof result === "object" &&
|
|
186
|
+
result !== null &&
|
|
187
|
+
"audioBase64" in result
|
|
188
|
+
) {
|
|
189
|
+
console.log(` ā
Detected: audioBase64 object`);
|
|
190
|
+
const audioBase64 = (result as any).audioBase64;
|
|
191
|
+
if (typeof audioBase64 === "string") {
|
|
192
|
+
// Decode base64 to binary
|
|
193
|
+
const binaryString = atob(audioBase64);
|
|
194
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
195
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
196
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
197
|
+
}
|
|
198
|
+
return bytes;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Handle empty object case - this might happen when the SDK doesn't properly parse audio responses
|
|
203
|
+
if (
|
|
204
|
+
typeof result === "object" &&
|
|
205
|
+
result !== null &&
|
|
206
|
+
Object.keys(result).length === 0
|
|
207
|
+
) {
|
|
208
|
+
console.log(` ā ļø Warning: Empty result object detected`);
|
|
209
|
+
console.log(` š” This might be a parsing issue with the SDK`);
|
|
210
|
+
console.log(` š” Check if the response was actually a stream but got parsed as an empty object`);
|
|
211
|
+
|
|
212
|
+
throw new Error(
|
|
213
|
+
`Empty result object - SDK may have failed to parse audio stream response. ` +
|
|
214
|
+
`This usually happens when audio/* content-type responses are not properly handled.`
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Enhanced error message with debug info
|
|
219
|
+
const errorDetails = typeof result === "object" && result !== null
|
|
220
|
+
? `constructor: ${result.constructor.name}, keys: [${Object.keys(result).join(", ")}]`
|
|
221
|
+
: `value: ${result}`;
|
|
222
|
+
|
|
223
|
+
throw new Error(
|
|
224
|
+
`Unsupported result type: ${typeof result}, ${errorDetails}`
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Test credit balance retrieval
|
|
230
|
+
*/
|
|
231
|
+
async function testCreditBalance(): Promise<[boolean, any]> {
|
|
232
|
+
console.log("š° Credit Balance Test");
|
|
233
|
+
|
|
234
|
+
try {
|
|
235
|
+
const { Supertone } = await import("../src/index.js");
|
|
236
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
237
|
+
|
|
238
|
+
console.log(" š Retrieving credit balance...");
|
|
239
|
+
const response = await client.usage.getCreditBalance();
|
|
240
|
+
|
|
241
|
+
console.log(` ā
Credit Balance: ${response.balance}`);
|
|
242
|
+
return [true, response];
|
|
243
|
+
} catch (e: any) {
|
|
244
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
245
|
+
return [false, e];
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Test usage retrieval
|
|
251
|
+
*/
|
|
252
|
+
async function testGetUsage(): Promise<[boolean, any]> {
|
|
253
|
+
console.log("š Usage Analytics Test");
|
|
254
|
+
|
|
255
|
+
try {
|
|
256
|
+
const { Supertone } = await import("../src/index.js");
|
|
257
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
258
|
+
|
|
259
|
+
const endTime = new Date();
|
|
260
|
+
const startTime = new Date(endTime.getTime() - 7 * 24 * 60 * 60 * 1000);
|
|
261
|
+
|
|
262
|
+
console.log(
|
|
263
|
+
` š Retrieving usage from ${startTime.toISOString().split("T")[0]} to ${
|
|
264
|
+
endTime.toISOString().split("T")[0]
|
|
265
|
+
}...`
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
const response = await client.usage.getUsage({
|
|
269
|
+
startTime: startTime.toISOString(),
|
|
270
|
+
endTime: endTime.toISOString(),
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
console.log(
|
|
274
|
+
` ā
Success: ${response.data?.length || 0} usage record buckets`
|
|
275
|
+
);
|
|
276
|
+
console.log(` š Total buckets: ${response.total}`);
|
|
277
|
+
|
|
278
|
+
if (response.data && response.data.length > 0) {
|
|
279
|
+
for (const bucket of response.data.slice(0, 3)) {
|
|
280
|
+
console.log(` š
Bucket start: ${bucket.startingAt}`);
|
|
281
|
+
console.log(` Bucket end: ${bucket.endingAt}`);
|
|
282
|
+
console.log(` Results: ${bucket.results?.length || 0} items`);
|
|
283
|
+
|
|
284
|
+
if (bucket.results) {
|
|
285
|
+
const totalMinutes = bucket.results.reduce(
|
|
286
|
+
(sum, r) => sum + (r.minutesUsed || 0),
|
|
287
|
+
0
|
|
288
|
+
);
|
|
289
|
+
console.log(` Total usage: ${totalMinutes.toFixed(2)} minutes`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
} else {
|
|
293
|
+
console.log(" š No usage records for this period");
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return [true, response];
|
|
297
|
+
} catch (e: any) {
|
|
298
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
299
|
+
return [false, e];
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Test voice listing
|
|
305
|
+
*/
|
|
306
|
+
async function testListVoices(): Promise<[boolean, any]> {
|
|
307
|
+
console.log("šµ Voice List Test");
|
|
308
|
+
|
|
309
|
+
try {
|
|
310
|
+
const { Supertone } = await import("../src/index.js");
|
|
311
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
312
|
+
|
|
313
|
+
console.log(" š Retrieving voice list...");
|
|
314
|
+
const response = await client.voices.listVoices({ pageSize: 10 });
|
|
315
|
+
|
|
316
|
+
console.log(` ā
Success: ${response.items?.length || 0} voices`);
|
|
317
|
+
console.log(` š Total voices: ${response.total}`);
|
|
318
|
+
|
|
319
|
+
let firstVoiceId: string | null = null;
|
|
320
|
+
if (response.items && response.items.length > 0) {
|
|
321
|
+
const firstVoice = response.items[0];
|
|
322
|
+
firstVoiceId = firstVoice!.voiceId || null;
|
|
323
|
+
console.log(` š¤ First voice:`);
|
|
324
|
+
console.log(` ID: ${firstVoice!.voiceId}`);
|
|
325
|
+
console.log(` Name: ${firstVoice!.name}`);
|
|
326
|
+
console.log(
|
|
327
|
+
` Description: ${firstVoice!.description?.substring(0, 50)}...`
|
|
328
|
+
);
|
|
329
|
+
console.log(` Language: ${firstVoice!.language}`);
|
|
330
|
+
console.log(` Gender: ${firstVoice!.gender}`);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
return [true, { response, voiceId: firstVoiceId }];
|
|
334
|
+
} catch (e: any) {
|
|
335
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
336
|
+
return [false, e];
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Test voice search
|
|
342
|
+
*/
|
|
343
|
+
async function testSearchVoices(): Promise<[boolean, any]> {
|
|
344
|
+
console.log("š Voice Search Test");
|
|
345
|
+
|
|
346
|
+
try {
|
|
347
|
+
const { Supertone } = await import("../src/index.js");
|
|
348
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
349
|
+
|
|
350
|
+
console.log(" š Searching for female English voices...");
|
|
351
|
+
const response = await client.voices.searchVoices({
|
|
352
|
+
language: "en",
|
|
353
|
+
gender: "female",
|
|
354
|
+
pageSize: 10,
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
console.log(` ā
Search success: ${response.items?.length || 0} voices`);
|
|
358
|
+
|
|
359
|
+
if (response.items) {
|
|
360
|
+
for (const voice of response.items.slice(0, 5)) {
|
|
361
|
+
console.log(` š¤ ${voice.name} (${voice.voiceId})`);
|
|
362
|
+
console.log(
|
|
363
|
+
` Language: ${voice.language}, Gender: ${voice.gender}`
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
return [true, response];
|
|
369
|
+
} catch (e: any) {
|
|
370
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
371
|
+
return [false, e];
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Test voice detail retrieval
|
|
377
|
+
*/
|
|
378
|
+
async function testGetVoice(voiceId: string | null): Promise<[boolean, any]> {
|
|
379
|
+
console.log("š Voice Detail Test");
|
|
380
|
+
|
|
381
|
+
if (!voiceId) {
|
|
382
|
+
console.log(" ā ļø No voice ID available");
|
|
383
|
+
return [false, null];
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
try {
|
|
387
|
+
const { Supertone } = await import("../src/index.js");
|
|
388
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
389
|
+
|
|
390
|
+
console.log(` š Retrieving voice '${voiceId}' details...`);
|
|
391
|
+
const response = await client.voices.getVoice({ voiceId });
|
|
392
|
+
|
|
393
|
+
console.log(` ā
Success:`);
|
|
394
|
+
console.log(` Name: ${response.name}`);
|
|
395
|
+
console.log(` ID: ${response.voiceId}`);
|
|
396
|
+
console.log(` Description: ${response.description}`);
|
|
397
|
+
console.log(` Language: ${response.language}`);
|
|
398
|
+
console.log(` Gender: ${response.gender}`);
|
|
399
|
+
|
|
400
|
+
return [true, response];
|
|
401
|
+
} catch (e: any) {
|
|
402
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
403
|
+
return [false, e];
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Test custom voice listing
|
|
409
|
+
*/
|
|
410
|
+
async function testListCustomVoices(): Promise<[boolean, any]> {
|
|
411
|
+
console.log("šØ Custom Voice List Test");
|
|
412
|
+
|
|
413
|
+
try {
|
|
414
|
+
const { Supertone } = await import("../src/index.js");
|
|
415
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
416
|
+
|
|
417
|
+
console.log(" š Retrieving custom voice list...");
|
|
418
|
+
const response = await client.customVoices.listCustomVoices({
|
|
419
|
+
pageSize: 10,
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
console.log(` ā
Success: ${response.items?.length || 0} custom voices`);
|
|
423
|
+
console.log(` š Total custom voices: ${response.total}`);
|
|
424
|
+
|
|
425
|
+
let customVoiceId: string | null = null;
|
|
426
|
+
if (response.items) {
|
|
427
|
+
for (const voice of response.items) {
|
|
428
|
+
console.log(` š¤ ${voice.name} (${voice.voiceId})`);
|
|
429
|
+
console.log(` Description: ${voice.description}`);
|
|
430
|
+
if (!customVoiceId) {
|
|
431
|
+
customVoiceId = voice.voiceId || null;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
return [true, { response, voiceId: customVoiceId }];
|
|
437
|
+
} catch (e: any) {
|
|
438
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
439
|
+
return [false, e];
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* Test TTS duration prediction
|
|
445
|
+
*/
|
|
446
|
+
async function testPredictDuration(
|
|
447
|
+
voiceId: string | null
|
|
448
|
+
): Promise<[boolean, any]> {
|
|
449
|
+
console.log("ā±ļø TTS Duration Prediction Test");
|
|
450
|
+
|
|
451
|
+
if (!voiceId) {
|
|
452
|
+
console.log(" ā ļø No voice ID available");
|
|
453
|
+
return [false, null];
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
try {
|
|
457
|
+
const { Supertone } = await import("../src/index.js");
|
|
458
|
+
const models = await import("../src/models/index.js");
|
|
459
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
460
|
+
|
|
461
|
+
const testText = "Hello, this is a test message for duration prediction.";
|
|
462
|
+
console.log(` š Predicting duration for: "${testText}"`);
|
|
463
|
+
|
|
464
|
+
const response = await client.textToSpeech.predictDuration({
|
|
465
|
+
voiceId,
|
|
466
|
+
predictTTSDurationUsingCharacterRequest: {
|
|
467
|
+
text: testText,
|
|
468
|
+
language: models.PredictTTSDurationUsingCharacterRequestLanguage.En,
|
|
469
|
+
},
|
|
470
|
+
});
|
|
471
|
+
|
|
472
|
+
console.log(` ā
Predicted duration: ${response.duration}s`);
|
|
473
|
+
return [true, response];
|
|
474
|
+
} catch (e: any) {
|
|
475
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
476
|
+
return [false, e];
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Test TTS creation (WAV)
|
|
482
|
+
*/
|
|
483
|
+
async function testCreateSpeech(
|
|
484
|
+
voiceId: string | null
|
|
485
|
+
): Promise<[boolean, any]> {
|
|
486
|
+
console.log("š¤ TTS Creation Test (WAV)");
|
|
487
|
+
|
|
488
|
+
if (!voiceId) {
|
|
489
|
+
console.log(" ā ļø No voice ID available");
|
|
490
|
+
return [false, null];
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
try {
|
|
494
|
+
const { Supertone } = await import("../src/index.js");
|
|
495
|
+
const models = await import("../src/models/index.js");
|
|
496
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
497
|
+
|
|
498
|
+
const testText = "Hello! This is a test speech synthesis.";
|
|
499
|
+
console.log(` š Creating speech: "${testText}"`);
|
|
500
|
+
console.log(` Voice ID: ${voiceId}`);
|
|
501
|
+
console.log(` Format: WAV`);
|
|
502
|
+
console.log(" ā ļø This test consumes credits!");
|
|
503
|
+
|
|
504
|
+
const response = await client.textToSpeech.createSpeech({
|
|
505
|
+
voiceId,
|
|
506
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
507
|
+
text: testText,
|
|
508
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
509
|
+
outputFormat:
|
|
510
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
511
|
+
},
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
console.log(` ā
Speech created successfully`);
|
|
515
|
+
console.log(` Audio size: ${response.result ? "received" : "none"}`);
|
|
516
|
+
|
|
517
|
+
return [true, response];
|
|
518
|
+
} catch (e: any) {
|
|
519
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
520
|
+
return [false, e];
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* Test TTS streaming
|
|
526
|
+
*/
|
|
527
|
+
async function testStreamSpeech(
|
|
528
|
+
voiceId: string | null
|
|
529
|
+
): Promise<[boolean, any]> {
|
|
530
|
+
console.log("š” TTS Streaming Test");
|
|
531
|
+
|
|
532
|
+
if (!voiceId) {
|
|
533
|
+
console.log(" ā ļø No voice ID available");
|
|
534
|
+
return [false, null];
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
try {
|
|
538
|
+
const { Supertone } = await import("../src/index.js");
|
|
539
|
+
const models = await import("../src/models/index.js");
|
|
540
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
541
|
+
|
|
542
|
+
const testText = "Testing streaming speech synthesis.";
|
|
543
|
+
console.log(` š Streaming speech: "${testText}"`);
|
|
544
|
+
console.log(" ā ļø This test consumes credits!");
|
|
545
|
+
|
|
546
|
+
const response = await client.textToSpeech.streamSpeech({
|
|
547
|
+
voiceId,
|
|
548
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
549
|
+
text: testText,
|
|
550
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
551
|
+
outputFormat:
|
|
552
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
553
|
+
},
|
|
554
|
+
});
|
|
555
|
+
|
|
556
|
+
console.log(` ā
Stream started successfully`);
|
|
557
|
+
|
|
558
|
+
return [true, response];
|
|
559
|
+
} catch (e: any) {
|
|
560
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
561
|
+
return [false, e];
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Test voice-specific usage retrieval
|
|
567
|
+
*/
|
|
568
|
+
async function testGetVoiceUsage(): Promise<[boolean, any]> {
|
|
569
|
+
console.log("š¤ Voice Usage Test");
|
|
570
|
+
|
|
571
|
+
try {
|
|
572
|
+
const { Supertone } = await import("../src/index.js");
|
|
573
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
574
|
+
|
|
575
|
+
const endDate = new Date();
|
|
576
|
+
const startDate = new Date(endDate.getTime() - 7 * 24 * 60 * 60 * 1000);
|
|
577
|
+
|
|
578
|
+
console.log(
|
|
579
|
+
` š Retrieving voice usage from ${
|
|
580
|
+
startDate.toISOString().split("T")[0]
|
|
581
|
+
} to ${endDate.toISOString().split("T")[0]}...`
|
|
582
|
+
);
|
|
583
|
+
|
|
584
|
+
const response = await client.usage.getVoiceUsage({
|
|
585
|
+
startDate: startDate.toISOString().split("T")[0],
|
|
586
|
+
endDate: endDate.toISOString().split("T")[0],
|
|
587
|
+
});
|
|
588
|
+
|
|
589
|
+
console.log(
|
|
590
|
+
` ā
Success: ${response.usages?.length || 0} voice usage records`
|
|
591
|
+
);
|
|
592
|
+
|
|
593
|
+
if (response.usages && response.usages.length > 0) {
|
|
594
|
+
for (const usage of response.usages.slice(0, 5)) {
|
|
595
|
+
const voiceName =
|
|
596
|
+
usage.name || `Voice ${usage.voiceId?.substring(0, 8) || "Unknown"}`;
|
|
597
|
+
console.log(
|
|
598
|
+
` š¤ ${voiceName}: ${usage.totalMinutesUsed?.toFixed(2)}min`
|
|
599
|
+
);
|
|
600
|
+
console.log(` Voice ID: ${usage.voiceId}`);
|
|
601
|
+
if (usage.language) {
|
|
602
|
+
console.log(` Language: ${usage.language}`);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
} else {
|
|
606
|
+
console.log(" š No voice usage records for this period");
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
return [true, response];
|
|
610
|
+
} catch (e: any) {
|
|
611
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
612
|
+
return [false, e];
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* Test custom voice search
|
|
618
|
+
*/
|
|
619
|
+
async function testSearchCustomVoices(): Promise<[boolean, any]> {
|
|
620
|
+
console.log("š Custom Voice Search Test");
|
|
621
|
+
|
|
622
|
+
try {
|
|
623
|
+
const { Supertone } = await import("../src/index.js");
|
|
624
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
625
|
+
|
|
626
|
+
console.log(" š Searching custom voices...");
|
|
627
|
+
const response = await client.customVoices.searchCustomVoices({
|
|
628
|
+
pageSize: 10,
|
|
629
|
+
});
|
|
630
|
+
|
|
631
|
+
console.log(
|
|
632
|
+
` ā
Search success: ${response.items?.length || 0} custom voices`
|
|
633
|
+
);
|
|
634
|
+
|
|
635
|
+
if (response.items) {
|
|
636
|
+
for (const voice of response.items) {
|
|
637
|
+
console.log(` š¤ ${voice.name} (${voice.voiceId})`);
|
|
638
|
+
console.log(` Description: ${voice.description}`);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
return [true, response];
|
|
643
|
+
} catch (e: any) {
|
|
644
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
645
|
+
return [false, e];
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* Test custom voice detail retrieval
|
|
651
|
+
*/
|
|
652
|
+
async function testGetCustomVoice(
|
|
653
|
+
voiceId: string | null
|
|
654
|
+
): Promise<[boolean, any]> {
|
|
655
|
+
console.log("š Custom Voice Detail Test");
|
|
656
|
+
|
|
657
|
+
if (!voiceId) {
|
|
658
|
+
console.log(" ā ļø No custom voice ID available");
|
|
659
|
+
return [false, null];
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
try {
|
|
663
|
+
const { Supertone } = await import("../src/index.js");
|
|
664
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
665
|
+
|
|
666
|
+
console.log(` š Retrieving custom voice '${voiceId}' details...`);
|
|
667
|
+
const response = await client.customVoices.getCustomVoice({ voiceId });
|
|
668
|
+
|
|
669
|
+
console.log(` ā
Success:`);
|
|
670
|
+
console.log(` Name: ${response.name}`);
|
|
671
|
+
console.log(` ID: ${response.voiceId}`);
|
|
672
|
+
console.log(` Description: ${response.description}`);
|
|
673
|
+
|
|
674
|
+
return [true, response];
|
|
675
|
+
} catch (e: any) {
|
|
676
|
+
logDetailedError(e, "Get custom voice");
|
|
677
|
+
return [false, e];
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* Test custom voice creation
|
|
683
|
+
*/
|
|
684
|
+
async function testCreateClonedVoice(): Promise<[boolean, any]> {
|
|
685
|
+
console.log("šØ Custom Voice Creation Test");
|
|
686
|
+
|
|
687
|
+
// File is in custom_test directory
|
|
688
|
+
const audioFilePath = path.join(__dirname, "voice_sample.wav");
|
|
689
|
+
|
|
690
|
+
if (!fs.existsSync(audioFilePath)) {
|
|
691
|
+
console.log(` ā Audio file not found: ${audioFilePath}`);
|
|
692
|
+
console.log(` āļø Skipping test (not a failure)`);
|
|
693
|
+
return [true, null]; // Return success with null to skip, not fail
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
console.log(` š Using audio file: ${audioFilePath}`);
|
|
697
|
+
|
|
698
|
+
try {
|
|
699
|
+
const { Supertone } = await import("../src/index.js");
|
|
700
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
701
|
+
|
|
702
|
+
const stats = fs.statSync(audioFilePath);
|
|
703
|
+
const fileSize = stats.size;
|
|
704
|
+
const maxSize = 3 * 1024 * 1024; // 3MB
|
|
705
|
+
|
|
706
|
+
console.log(
|
|
707
|
+
` š File size: ${fileSize.toLocaleString()} bytes (${(
|
|
708
|
+
fileSize /
|
|
709
|
+
1024 /
|
|
710
|
+
1024
|
|
711
|
+
).toFixed(2)} MB)`
|
|
712
|
+
);
|
|
713
|
+
|
|
714
|
+
if (fileSize > maxSize) {
|
|
715
|
+
console.log(
|
|
716
|
+
` ā File exceeds 3MB limit: ${(fileSize / 1024 / 1024).toFixed(2)} MB`
|
|
717
|
+
);
|
|
718
|
+
return [false, null];
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
const timestamp = new Date()
|
|
722
|
+
.toLocaleString("en-US", {
|
|
723
|
+
month: "2-digit",
|
|
724
|
+
day: "2-digit",
|
|
725
|
+
hour: "2-digit",
|
|
726
|
+
minute: "2-digit",
|
|
727
|
+
hour12: false,
|
|
728
|
+
})
|
|
729
|
+
.replace(/[/, :]/g, "");
|
|
730
|
+
const voiceName = `Test Sample Voice ${timestamp}`;
|
|
731
|
+
const voiceDescription = `Test custom voice created at ${new Date().toISOString()}`;
|
|
732
|
+
|
|
733
|
+
console.log(` š Creating custom voice...`);
|
|
734
|
+
console.log(` File: ${audioFilePath}`);
|
|
735
|
+
console.log(` Name: ${voiceName}`);
|
|
736
|
+
console.log(` Description: ${voiceDescription}`);
|
|
737
|
+
console.log(
|
|
738
|
+
" ā ļø This test consumes credits and creates actual custom voice!"
|
|
739
|
+
);
|
|
740
|
+
|
|
741
|
+
const audioContent = fs.readFileSync(audioFilePath);
|
|
742
|
+
|
|
743
|
+
const response = await client.customVoices.createClonedVoice({
|
|
744
|
+
files: {
|
|
745
|
+
fileName: "voice_sample.wav",
|
|
746
|
+
content: audioContent,
|
|
747
|
+
},
|
|
748
|
+
name: voiceName,
|
|
749
|
+
description: voiceDescription,
|
|
750
|
+
});
|
|
751
|
+
|
|
752
|
+
console.log(` ā
Custom voice creation request successful!`);
|
|
753
|
+
console.log(` Voice ID: ${response.voiceId}`);
|
|
754
|
+
|
|
755
|
+
return [true, response];
|
|
756
|
+
} catch (e: any) {
|
|
757
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
758
|
+
return [false, e];
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
/**
|
|
763
|
+
* Test custom voice update
|
|
764
|
+
*/
|
|
765
|
+
async function testEditCustomVoice(
|
|
766
|
+
voiceId: string | null
|
|
767
|
+
): Promise<[boolean, any]> {
|
|
768
|
+
console.log("āļø Custom Voice Update Test");
|
|
769
|
+
|
|
770
|
+
if (!voiceId) {
|
|
771
|
+
console.log(" ā ļø No custom voice ID available");
|
|
772
|
+
return [false, null];
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
try {
|
|
776
|
+
const { Supertone } = await import("../src/index.js");
|
|
777
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
778
|
+
|
|
779
|
+
const timestamp = new Date().toISOString();
|
|
780
|
+
const testName = `Updated Test Voice ${timestamp}`;
|
|
781
|
+
const testDescription = `Updated description at ${timestamp}`;
|
|
782
|
+
|
|
783
|
+
console.log(` š Updating custom voice '${voiceId}'...`);
|
|
784
|
+
console.log(` New name: ${testName}`);
|
|
785
|
+
console.log(` New description: ${testDescription}`);
|
|
786
|
+
|
|
787
|
+
const response = await client.customVoices.editCustomVoice({
|
|
788
|
+
voiceId,
|
|
789
|
+
updateClonedVoiceRequest: {
|
|
790
|
+
name: testName,
|
|
791
|
+
description: testDescription,
|
|
792
|
+
},
|
|
793
|
+
});
|
|
794
|
+
|
|
795
|
+
console.log(` ā
Custom voice updated successfully`);
|
|
796
|
+
console.log(` Name: ${response.name}`);
|
|
797
|
+
console.log(` Description: ${response.description}`);
|
|
798
|
+
|
|
799
|
+
return [true, response];
|
|
800
|
+
} catch (e: any) {
|
|
801
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
802
|
+
return [false, e];
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* Test custom voice deletion
|
|
808
|
+
*/
|
|
809
|
+
async function testDeleteCustomVoice(
|
|
810
|
+
voiceId: string | null
|
|
811
|
+
): Promise<[boolean, any]> {
|
|
812
|
+
console.log("šļø Custom Voice Deletion Test");
|
|
813
|
+
|
|
814
|
+
if (!voiceId) {
|
|
815
|
+
console.log(" ā ļø No custom voice ID available");
|
|
816
|
+
return [false, null];
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
try {
|
|
820
|
+
const { Supertone } = await import("../src/index.js");
|
|
821
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
822
|
+
|
|
823
|
+
console.log(` š Deleting custom voice '${voiceId}'...`);
|
|
824
|
+
console.log(" ā ļø This test permanently deletes the custom voice!");
|
|
825
|
+
|
|
826
|
+
const response = await client.customVoices.deleteCustomVoice({ voiceId });
|
|
827
|
+
|
|
828
|
+
console.log(` ā
Custom voice deleted successfully`);
|
|
829
|
+
|
|
830
|
+
return [true, response];
|
|
831
|
+
} catch (e: any) {
|
|
832
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
833
|
+
return [false, e];
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
/**
|
|
838
|
+
* Test TTS with long text (auto-chunking at SDK level)
|
|
839
|
+
*/
|
|
840
|
+
async function testCreateSpeechLongText(
|
|
841
|
+
voiceId: string | null
|
|
842
|
+
): Promise<[boolean, any]> {
|
|
843
|
+
console.log("š Long Text Auto-Chunking TTS Test (300+ chars)");
|
|
844
|
+
|
|
845
|
+
if (!voiceId) {
|
|
846
|
+
console.log(" ā ļø No voice ID available");
|
|
847
|
+
return [false, null];
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
try {
|
|
851
|
+
const { Supertone } = await import("../src/index.js");
|
|
852
|
+
const models = await import("../src/models/index.js");
|
|
853
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
854
|
+
|
|
855
|
+
const longText = `
|
|
856
|
+
Hello! This is a very long text auto-chunking TTS test exceeding 300 characters.
|
|
857
|
+
The newly implemented SDK automatically divides long text into multiple chunks for processing.
|
|
858
|
+
Real-time streaming text-to-speech technology plays a crucial role in modern AI applications.
|
|
859
|
+
It is an indispensable technology especially in conversational services, live broadcasting, and real-time translation services.
|
|
860
|
+
Through the auto-chunking feature, long texts are naturally divided into multiple small segments for processing.
|
|
861
|
+
Each segment is intelligently segmented considering sentence and word boundaries, enabling natural speech generation.
|
|
862
|
+
Now users don't need to worry about text length, as the SDK automatically handles everything.
|
|
863
|
+
`.trim();
|
|
864
|
+
|
|
865
|
+
const actualLength = longText.length;
|
|
866
|
+
console.log(
|
|
867
|
+
` š Test text length: ${actualLength} characters (exceeds 300)`
|
|
868
|
+
);
|
|
869
|
+
console.log(` š§ Auto-chunking enabled for text segmentation`);
|
|
870
|
+
|
|
871
|
+
console.log(` š Converting long text with voice '${voiceId}'...`);
|
|
872
|
+
console.log(" ā ļø This test consumes credits!");
|
|
873
|
+
console.log(" ⨠SDK automatically chunks and processes the text");
|
|
874
|
+
|
|
875
|
+
const response = await client.textToSpeech.createSpeech({
|
|
876
|
+
voiceId,
|
|
877
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
878
|
+
text: longText,
|
|
879
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
880
|
+
outputFormat:
|
|
881
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
882
|
+
style: "neutral",
|
|
883
|
+
model: "sona_speech_1",
|
|
884
|
+
},
|
|
885
|
+
});
|
|
886
|
+
|
|
887
|
+
if (response.result) {
|
|
888
|
+
let audioSize = 0;
|
|
889
|
+
let audioData: Uint8Array;
|
|
890
|
+
|
|
891
|
+
if (response.result instanceof Uint8Array) {
|
|
892
|
+
audioSize = response.result.length;
|
|
893
|
+
audioData = response.result;
|
|
894
|
+
} else if (response.result instanceof Blob) {
|
|
895
|
+
audioSize = response.result.size;
|
|
896
|
+
audioData = new Uint8Array(await response.result.arrayBuffer());
|
|
897
|
+
} else if (
|
|
898
|
+
typeof response.result === "object" &&
|
|
899
|
+
"getReader" in response.result
|
|
900
|
+
) {
|
|
901
|
+
// ReadableStream
|
|
902
|
+
audioData = await extractAudioData(response);
|
|
903
|
+
audioSize = audioData.length;
|
|
904
|
+
} else {
|
|
905
|
+
audioData = new Uint8Array(0);
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
console.log(
|
|
909
|
+
` ā
Auto-chunking TTS success: ${audioSize} bytes audio generated`
|
|
910
|
+
);
|
|
911
|
+
console.log(` šÆ Long text successfully chunked and processed!`);
|
|
912
|
+
|
|
913
|
+
const outputFile = "test_auto_chunking_speech_output.wav";
|
|
914
|
+
fs.writeFileSync(outputFile, audioData);
|
|
915
|
+
console.log(` š¾ Auto-chunked audio file saved: ${outputFile}`);
|
|
916
|
+
|
|
917
|
+
const estimatedChunks = Math.ceil(actualLength / 300);
|
|
918
|
+
console.log(
|
|
919
|
+
` š Estimated chunks: ${estimatedChunks} (based on text length)`
|
|
920
|
+
);
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
return [true, response];
|
|
924
|
+
} catch (e: any) {
|
|
925
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
926
|
+
return [false, e];
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
/**
|
|
931
|
+
* Test TTS streaming with long text
|
|
932
|
+
*/
|
|
933
|
+
async function testStreamSpeechLongText(
|
|
934
|
+
voiceId: string | null
|
|
935
|
+
): Promise<[boolean, any]> {
|
|
936
|
+
console.log("š” Long Text Streaming TTS Test");
|
|
937
|
+
|
|
938
|
+
if (!voiceId) {
|
|
939
|
+
console.log(" ā ļø No voice ID available");
|
|
940
|
+
return [false, null];
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
try {
|
|
944
|
+
const { Supertone } = await import("../src/index.js");
|
|
945
|
+
const models = await import("../src/models/index.js");
|
|
946
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
947
|
+
|
|
948
|
+
const longText = `
|
|
949
|
+
Hello! This is a long text streaming test.
|
|
950
|
+
The SDK automatically chunks and streams the audio in real-time.
|
|
951
|
+
This enables efficient processing of longer content without waiting for complete generation.
|
|
952
|
+
`
|
|
953
|
+
.trim()
|
|
954
|
+
.repeat(3);
|
|
955
|
+
|
|
956
|
+
console.log(` š Streaming long text with voice '${voiceId}'...`);
|
|
957
|
+
console.log(` Text length: ${longText.length} characters`);
|
|
958
|
+
console.log(" ā ļø This test consumes credits!");
|
|
959
|
+
|
|
960
|
+
const response = await client.textToSpeech.streamSpeech({
|
|
961
|
+
voiceId,
|
|
962
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
963
|
+
text: longText,
|
|
964
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
965
|
+
outputFormat:
|
|
966
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
967
|
+
},
|
|
968
|
+
});
|
|
969
|
+
|
|
970
|
+
console.log(` ā
Stream started successfully`);
|
|
971
|
+
|
|
972
|
+
return [true, response];
|
|
973
|
+
} catch (e: any) {
|
|
974
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
975
|
+
return [false, e];
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
/**
|
|
980
|
+
* Test TTS with voice settings
|
|
981
|
+
*/
|
|
982
|
+
async function testCreateSpeechWithVoiceSettings(
|
|
983
|
+
voiceId: string | null
|
|
984
|
+
): Promise<[boolean, any]> {
|
|
985
|
+
console.log("šļø TTS with Voice Settings Test");
|
|
986
|
+
|
|
987
|
+
if (!voiceId) {
|
|
988
|
+
console.log(" ā ļø No voice ID available");
|
|
989
|
+
return [false, null];
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
try {
|
|
993
|
+
const { Supertone } = await import("../src/index.js");
|
|
994
|
+
const models = await import("../src/models/index.js");
|
|
995
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
996
|
+
|
|
997
|
+
const voiceSettings = {
|
|
998
|
+
pitchShift: 0.95,
|
|
999
|
+
pitchVariance: 1.1,
|
|
1000
|
+
speed: 0.9,
|
|
1001
|
+
};
|
|
1002
|
+
|
|
1003
|
+
console.log(
|
|
1004
|
+
` š TTS conversion with voice settings using voice '${voiceId}'...`
|
|
1005
|
+
);
|
|
1006
|
+
console.log(
|
|
1007
|
+
` Settings: pitchShift=${voiceSettings.pitchShift}, speed=${voiceSettings.speed}`
|
|
1008
|
+
);
|
|
1009
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1010
|
+
|
|
1011
|
+
const response = await client.textToSpeech.createSpeech({
|
|
1012
|
+
voiceId,
|
|
1013
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1014
|
+
text: "Hello world! This is a voice settings test. You can hear the adjusted pitch and speed.",
|
|
1015
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1016
|
+
outputFormat:
|
|
1017
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
1018
|
+
style: "neutral",
|
|
1019
|
+
model: "sona_speech_1",
|
|
1020
|
+
voiceSettings,
|
|
1021
|
+
includePhonemes: false,
|
|
1022
|
+
},
|
|
1023
|
+
});
|
|
1024
|
+
|
|
1025
|
+
console.log(` ā
TTS with voice settings success`);
|
|
1026
|
+
|
|
1027
|
+
if (response.result) {
|
|
1028
|
+
const outputFile = "test_voice_settings_speech_output.wav";
|
|
1029
|
+
const audioData = await extractAudioData(response);
|
|
1030
|
+
|
|
1031
|
+
fs.writeFileSync(outputFile, audioData);
|
|
1032
|
+
console.log(` š¾ Voice settings audio file saved: ${outputFile}`);
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
return [true, response];
|
|
1036
|
+
} catch (e: any) {
|
|
1037
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
1038
|
+
return [false, e];
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
/**
|
|
1043
|
+
* Test TTS with phoneme information
|
|
1044
|
+
*/
|
|
1045
|
+
async function testCreateSpeechWithPhonemes(
|
|
1046
|
+
voiceId: string | null
|
|
1047
|
+
): Promise<[boolean, any]> {
|
|
1048
|
+
console.log("š¤ TTS with Phoneme Information Test");
|
|
1049
|
+
|
|
1050
|
+
if (!voiceId) {
|
|
1051
|
+
console.log(" ā ļø No voice ID available");
|
|
1052
|
+
return [false, null];
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
try {
|
|
1056
|
+
const { Supertone } = await import("../src/index.js");
|
|
1057
|
+
const models = await import("../src/models/index.js");
|
|
1058
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1059
|
+
|
|
1060
|
+
console.log(
|
|
1061
|
+
` š TTS conversion with phonemes using voice '${voiceId}'...`
|
|
1062
|
+
);
|
|
1063
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1064
|
+
|
|
1065
|
+
const response = await client.textToSpeech.createSpeech({
|
|
1066
|
+
voiceId,
|
|
1067
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1068
|
+
text: "Hello world! This is a phoneme timing test.",
|
|
1069
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1070
|
+
outputFormat:
|
|
1071
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
1072
|
+
style: "neutral",
|
|
1073
|
+
model: "sona_speech_1",
|
|
1074
|
+
includePhonemes: true,
|
|
1075
|
+
},
|
|
1076
|
+
});
|
|
1077
|
+
|
|
1078
|
+
console.log(` ā
TTS with phonemes success`);
|
|
1079
|
+
|
|
1080
|
+
if (response.result) {
|
|
1081
|
+
const outputFile = "test_phoneme_speech_output.wav";
|
|
1082
|
+
|
|
1083
|
+
// Check if response is JSON with phonemes data
|
|
1084
|
+
if (
|
|
1085
|
+
typeof response.result === "object" &&
|
|
1086
|
+
"audioBase64" in response.result
|
|
1087
|
+
) {
|
|
1088
|
+
const audioData = await extractAudioData(response);
|
|
1089
|
+
fs.writeFileSync(outputFile, audioData);
|
|
1090
|
+
console.log(` š¾ Phoneme audio file saved: ${outputFile}`);
|
|
1091
|
+
|
|
1092
|
+
// Display phoneme information as JSON
|
|
1093
|
+
const phonemes = (response.result as any).phonemes;
|
|
1094
|
+
if (phonemes) {
|
|
1095
|
+
console.log(` š Phoneme data (JSON):`);
|
|
1096
|
+
console.log(JSON.stringify(phonemes, null, 2));
|
|
1097
|
+
console.log(` š Summary:`);
|
|
1098
|
+
console.log(` Symbols count: ${phonemes.symbols?.length || 0}`);
|
|
1099
|
+
console.log(
|
|
1100
|
+
` Durations count: ${phonemes.durations_seconds?.length || 0}`
|
|
1101
|
+
);
|
|
1102
|
+
console.log(
|
|
1103
|
+
` Start times count: ${
|
|
1104
|
+
phonemes.start_times_seconds?.length || 0
|
|
1105
|
+
}`
|
|
1106
|
+
);
|
|
1107
|
+
if (phonemes.symbols && phonemes.symbols.length > 0) {
|
|
1108
|
+
console.log(
|
|
1109
|
+
` First 5 symbols: ${phonemes.symbols.slice(0, 5).join(", ")}`
|
|
1110
|
+
);
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
} else {
|
|
1114
|
+
// Binary audio without phonemes
|
|
1115
|
+
const audioData = await extractAudioData(response);
|
|
1116
|
+
fs.writeFileSync(outputFile, audioData);
|
|
1117
|
+
console.log(` š¾ Phoneme audio file saved: ${outputFile}`);
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
return [true, response];
|
|
1122
|
+
} catch (e: any) {
|
|
1123
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
1124
|
+
return [false, e];
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
/**
|
|
1129
|
+
* Test TTS streaming with phonemes
|
|
1130
|
+
*/
|
|
1131
|
+
async function testStreamSpeechWithPhonemes(
|
|
1132
|
+
voiceId: string | null
|
|
1133
|
+
): Promise<[boolean, any]> {
|
|
1134
|
+
console.log("š” TTS Streaming with Phonemes Test");
|
|
1135
|
+
|
|
1136
|
+
if (!voiceId) {
|
|
1137
|
+
console.log(" ā ļø No voice ID available");
|
|
1138
|
+
return [false, null];
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
try {
|
|
1142
|
+
const { Supertone } = await import("../src/index.js");
|
|
1143
|
+
const models = await import("../src/models/index.js");
|
|
1144
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1145
|
+
|
|
1146
|
+
console.log(
|
|
1147
|
+
` š Streaming speech with phonemes for voice '${voiceId}'...`
|
|
1148
|
+
);
|
|
1149
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1150
|
+
|
|
1151
|
+
const response = await client.textToSpeech.streamSpeech({
|
|
1152
|
+
voiceId,
|
|
1153
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1154
|
+
text: "Streaming with phoneme timing information.",
|
|
1155
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1156
|
+
outputFormat:
|
|
1157
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
1158
|
+
includePhonemes: true,
|
|
1159
|
+
},
|
|
1160
|
+
});
|
|
1161
|
+
|
|
1162
|
+
console.log(` ā
Stream with phonemes started successfully`);
|
|
1163
|
+
|
|
1164
|
+
return [true, response];
|
|
1165
|
+
} catch (e: any) {
|
|
1166
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
1167
|
+
return [false, e];
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
/**
|
|
1172
|
+
* Test duration prediction with voice settings
|
|
1173
|
+
*/
|
|
1174
|
+
async function testPredictDurationWithVoiceSettings(
|
|
1175
|
+
voiceId: string | null
|
|
1176
|
+
): Promise<[boolean, any]> {
|
|
1177
|
+
console.log("ā±ļø Duration Prediction with Voice Settings Test");
|
|
1178
|
+
|
|
1179
|
+
if (!voiceId) {
|
|
1180
|
+
console.log(" ā ļø No voice ID available");
|
|
1181
|
+
return [false, null];
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
try {
|
|
1185
|
+
const { Supertone } = await import("../src/index.js");
|
|
1186
|
+
const models = await import("../src/models/index.js");
|
|
1187
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1188
|
+
|
|
1189
|
+
const voiceSettings = {
|
|
1190
|
+
speed: 0.8,
|
|
1191
|
+
};
|
|
1192
|
+
|
|
1193
|
+
console.log(
|
|
1194
|
+
` š Predicting duration with voice settings for voice '${voiceId}'...`
|
|
1195
|
+
);
|
|
1196
|
+
console.log(` Settings: speed=${voiceSettings.speed}`);
|
|
1197
|
+
|
|
1198
|
+
const response = await client.textToSpeech.predictDuration({
|
|
1199
|
+
voiceId,
|
|
1200
|
+
predictTTSDurationUsingCharacterRequest: {
|
|
1201
|
+
text: "This is a duration test with adjusted speed.",
|
|
1202
|
+
language: models.PredictTTSDurationUsingCharacterRequestLanguage.En,
|
|
1203
|
+
voiceSettings,
|
|
1204
|
+
},
|
|
1205
|
+
});
|
|
1206
|
+
|
|
1207
|
+
console.log(` ā
Predicted duration: ${response.duration}s`);
|
|
1208
|
+
|
|
1209
|
+
return [true, response];
|
|
1210
|
+
} catch (e: any) {
|
|
1211
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
1212
|
+
return [false, e];
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
/**
|
|
1217
|
+
* Test TTS streaming with voice settings
|
|
1218
|
+
*/
|
|
1219
|
+
async function testStreamSpeechWithVoiceSettings(
|
|
1220
|
+
voiceId: string | null
|
|
1221
|
+
): Promise<[boolean, any]> {
|
|
1222
|
+
console.log("š” TTS Streaming with Voice Settings Test");
|
|
1223
|
+
|
|
1224
|
+
if (!voiceId) {
|
|
1225
|
+
console.log(" ā ļø No voice ID available");
|
|
1226
|
+
return [false, null];
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
try {
|
|
1230
|
+
const { Supertone } = await import("../src/index.js");
|
|
1231
|
+
const models = await import("../src/models/index.js");
|
|
1232
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1233
|
+
|
|
1234
|
+
const voiceSettings = {
|
|
1235
|
+
pitchShift: 1.05,
|
|
1236
|
+
speed: 1.1,
|
|
1237
|
+
};
|
|
1238
|
+
|
|
1239
|
+
console.log(
|
|
1240
|
+
` š Streaming speech with voice settings for voice '${voiceId}'...`
|
|
1241
|
+
);
|
|
1242
|
+
console.log(
|
|
1243
|
+
` Settings: pitchShift=${voiceSettings.pitchShift}, speed=${voiceSettings.speed}`
|
|
1244
|
+
);
|
|
1245
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1246
|
+
|
|
1247
|
+
const response = await client.textToSpeech.streamSpeech({
|
|
1248
|
+
voiceId,
|
|
1249
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1250
|
+
text: "Streaming with adjusted voice settings.",
|
|
1251
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1252
|
+
outputFormat:
|
|
1253
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
1254
|
+
voiceSettings,
|
|
1255
|
+
},
|
|
1256
|
+
});
|
|
1257
|
+
|
|
1258
|
+
console.log(` ā
Stream with voice settings started successfully`);
|
|
1259
|
+
|
|
1260
|
+
return [true, response];
|
|
1261
|
+
} catch (e: any) {
|
|
1262
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
1263
|
+
return [false, e];
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
/**
|
|
1268
|
+
* Test MP3 format TTS
|
|
1269
|
+
*/
|
|
1270
|
+
async function testCreateSpeechMp3(
|
|
1271
|
+
voiceId: string | null
|
|
1272
|
+
): Promise<[boolean, any]> {
|
|
1273
|
+
console.log("š¤ MP3 Format TTS Test");
|
|
1274
|
+
|
|
1275
|
+
if (!voiceId) {
|
|
1276
|
+
console.log(" ā ļø No voice ID available");
|
|
1277
|
+
return [false, null];
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
try {
|
|
1281
|
+
const { Supertone } = await import("../src/index.js");
|
|
1282
|
+
const models = await import("../src/models/index.js");
|
|
1283
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1284
|
+
|
|
1285
|
+
console.log(` š MP3 TTS conversion with voice '${voiceId}'...`);
|
|
1286
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1287
|
+
|
|
1288
|
+
const response = await client.textToSpeech.createSpeech({
|
|
1289
|
+
voiceId,
|
|
1290
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1291
|
+
text: "Hello! This is an MP3 format SDK test. Let's verify if it works correctly.",
|
|
1292
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1293
|
+
outputFormat:
|
|
1294
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Mp3,
|
|
1295
|
+
style: "neutral",
|
|
1296
|
+
model: "sona_speech_1",
|
|
1297
|
+
},
|
|
1298
|
+
});
|
|
1299
|
+
|
|
1300
|
+
console.log(` ā
MP3 TTS conversion success`);
|
|
1301
|
+
|
|
1302
|
+
if (response.result) {
|
|
1303
|
+
const outputFile = "test_create_speech_output.mp3";
|
|
1304
|
+
const audioData = await extractAudioData(response);
|
|
1305
|
+
|
|
1306
|
+
fs.writeFileSync(outputFile, audioData);
|
|
1307
|
+
console.log(` š¾ MP3 audio file saved: ${outputFile}`);
|
|
1308
|
+
|
|
1309
|
+
// Verify MP3 header
|
|
1310
|
+
const header = audioData.slice(0, 10);
|
|
1311
|
+
if (header[0] === 0x49 && header[1] === 0x44 && header[2] === 0x33) {
|
|
1312
|
+
console.log(` ā
Valid MP3 file generated (ID3 tag)`);
|
|
1313
|
+
} else if (
|
|
1314
|
+
(header[0] === 0xff && header[1] === 0xfb) ||
|
|
1315
|
+
(header[0] === 0xff && header[1] === 0xfa)
|
|
1316
|
+
) {
|
|
1317
|
+
console.log(` ā
Valid MP3 file generated (MPEG frame)`);
|
|
1318
|
+
} else {
|
|
1319
|
+
console.log(
|
|
1320
|
+
` š MP3 header: ${Array.from(header.slice(0, 10))
|
|
1321
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
1322
|
+
.join(" ")} (needs verification)`
|
|
1323
|
+
);
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
return [true, response];
|
|
1328
|
+
} catch (e: any) {
|
|
1329
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
1330
|
+
return [false, e];
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
/**
|
|
1335
|
+
* Test MP3 format with long text
|
|
1336
|
+
*/
|
|
1337
|
+
async function testCreateSpeechLongTextMp3(
|
|
1338
|
+
voiceId: string | null
|
|
1339
|
+
): Promise<[boolean, any]> {
|
|
1340
|
+
console.log("š Long Text MP3 Auto-Chunking TTS Test (300+ chars)");
|
|
1341
|
+
|
|
1342
|
+
if (!voiceId) {
|
|
1343
|
+
console.log(" ā ļø No voice ID available");
|
|
1344
|
+
return [false, null];
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
try {
|
|
1348
|
+
const { Supertone } = await import("../src/index.js");
|
|
1349
|
+
const models = await import("../src/models/index.js");
|
|
1350
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1351
|
+
|
|
1352
|
+
const longText = `
|
|
1353
|
+
Hello! This is a very long text MP3 auto-chunking TTS test exceeding 300 characters.
|
|
1354
|
+
The newly implemented SDK automatically divides long text into multiple chunks for processing.
|
|
1355
|
+
Real-time streaming text-to-speech technology plays a crucial role in modern AI applications.
|
|
1356
|
+
It is an indispensable technology especially in conversational services, live broadcasting, and real-time translation services.
|
|
1357
|
+
Through the auto-chunking feature, long texts are naturally divided into multiple small segments for processing.
|
|
1358
|
+
Each segment is intelligently segmented considering sentence and word boundaries, enabling natural speech generation.
|
|
1359
|
+
Now users don't need to worry about text length or output format, as the SDK automatically handles everything in MP3 format too.
|
|
1360
|
+
`.trim();
|
|
1361
|
+
|
|
1362
|
+
const actualLength = longText.length;
|
|
1363
|
+
console.log(
|
|
1364
|
+
` š Test text length: ${actualLength} characters (exceeds 300)`
|
|
1365
|
+
);
|
|
1366
|
+
console.log(` š§ Auto-chunking enabled for MP3 format`);
|
|
1367
|
+
|
|
1368
|
+
console.log(` š Converting long text to MP3 with voice '${voiceId}'...`);
|
|
1369
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1370
|
+
|
|
1371
|
+
const response = await client.textToSpeech.createSpeech({
|
|
1372
|
+
voiceId,
|
|
1373
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1374
|
+
text: longText,
|
|
1375
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1376
|
+
outputFormat:
|
|
1377
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Mp3,
|
|
1378
|
+
style: "neutral",
|
|
1379
|
+
model: "sona_speech_1",
|
|
1380
|
+
},
|
|
1381
|
+
});
|
|
1382
|
+
|
|
1383
|
+
console.log(` ā
MP3 auto-chunking TTS success`);
|
|
1384
|
+
|
|
1385
|
+
if (response.result) {
|
|
1386
|
+
const outputFile = "test_auto_chunking_speech_output.mp3";
|
|
1387
|
+
const audioData = await extractAudioData(response);
|
|
1388
|
+
|
|
1389
|
+
fs.writeFileSync(outputFile, audioData);
|
|
1390
|
+
console.log(` š¾ Auto-chunked MP3 audio file saved: ${outputFile}`);
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
return [true, response];
|
|
1394
|
+
} catch (e: any) {
|
|
1395
|
+
logDetailedError(e, "MP3 long text auto-chunking");
|
|
1396
|
+
return [false, e];
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
/**
|
|
1401
|
+
* Test MP3 streaming
|
|
1402
|
+
*/
|
|
1403
|
+
async function testStreamSpeechMp3(
|
|
1404
|
+
voiceId: string | null
|
|
1405
|
+
): Promise<[boolean, any]> {
|
|
1406
|
+
console.log("š” MP3 Streaming Test");
|
|
1407
|
+
|
|
1408
|
+
if (!voiceId) {
|
|
1409
|
+
console.log(" ā ļø No voice ID available");
|
|
1410
|
+
return [false, null];
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
try {
|
|
1414
|
+
const { Supertone } = await import("../src/index.js");
|
|
1415
|
+
const models = await import("../src/models/index.js");
|
|
1416
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1417
|
+
|
|
1418
|
+
console.log(` š Streaming MP3 speech with voice '${voiceId}'...`);
|
|
1419
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1420
|
+
|
|
1421
|
+
const response = await client.textToSpeech.streamSpeech({
|
|
1422
|
+
voiceId,
|
|
1423
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1424
|
+
text: "Testing MP3 streaming speech synthesis.",
|
|
1425
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1426
|
+
outputFormat:
|
|
1427
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Mp3,
|
|
1428
|
+
},
|
|
1429
|
+
});
|
|
1430
|
+
|
|
1431
|
+
console.log(` ā
MP3 stream started successfully`);
|
|
1432
|
+
|
|
1433
|
+
return [true, response];
|
|
1434
|
+
} catch (e: any) {
|
|
1435
|
+
console.error(` ā Error: ${e.message || e}`);
|
|
1436
|
+
return [false, e];
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1440
|
+
/**
|
|
1441
|
+
* Test MP3 streaming with long text
|
|
1442
|
+
*/
|
|
1443
|
+
async function testStreamSpeechLongTextMp3(
|
|
1444
|
+
voiceId: string | null
|
|
1445
|
+
): Promise<[boolean, any]> {
|
|
1446
|
+
console.log("š” Long Text MP3 Streaming Test");
|
|
1447
|
+
|
|
1448
|
+
if (!voiceId) {
|
|
1449
|
+
console.log(" ā ļø No voice ID available");
|
|
1450
|
+
return [false, null];
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
try {
|
|
1454
|
+
const { Supertone } = await import("../src/index.js");
|
|
1455
|
+
const models = await import("../src/models/index.js");
|
|
1456
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1457
|
+
|
|
1458
|
+
const longText = `
|
|
1459
|
+
Hello! This is a long text MP3 streaming test.
|
|
1460
|
+
The SDK automatically chunks and streams the MP3 audio in real-time.
|
|
1461
|
+
This enables efficient processing of longer content without waiting for complete generation.
|
|
1462
|
+
`
|
|
1463
|
+
.trim()
|
|
1464
|
+
.repeat(3);
|
|
1465
|
+
|
|
1466
|
+
console.log(` š Streaming long text MP3 with voice '${voiceId}'...`);
|
|
1467
|
+
console.log(` Text length: ${longText.length} characters`);
|
|
1468
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1469
|
+
|
|
1470
|
+
const response = await client.textToSpeech.streamSpeech({
|
|
1471
|
+
voiceId,
|
|
1472
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1473
|
+
text: longText,
|
|
1474
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1475
|
+
outputFormat:
|
|
1476
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Mp3,
|
|
1477
|
+
},
|
|
1478
|
+
});
|
|
1479
|
+
|
|
1480
|
+
console.log(` ā
Long text MP3 stream started successfully`);
|
|
1481
|
+
|
|
1482
|
+
return [true, response];
|
|
1483
|
+
} catch (e: any) {
|
|
1484
|
+
logDetailedError(e, "MP3 long text streaming");
|
|
1485
|
+
return [false, e];
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
/**
|
|
1490
|
+
* Test TTS with automatic chunking (long text)
|
|
1491
|
+
* Note: Now createSpeech automatically handles chunking for long text
|
|
1492
|
+
*/
|
|
1493
|
+
async function testCreateSpeechWithChunking(
|
|
1494
|
+
voiceId: string | null
|
|
1495
|
+
): Promise<[boolean, any]> {
|
|
1496
|
+
console.log("š TTS with Auto-Chunking Test (via createSpeech)");
|
|
1497
|
+
|
|
1498
|
+
if (!voiceId) {
|
|
1499
|
+
console.log(" ā ļø No voice ID available");
|
|
1500
|
+
return [false, null];
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
try {
|
|
1504
|
+
const { Supertone } = await import("../src/index.js");
|
|
1505
|
+
const models = await import("../src/models/index.js");
|
|
1506
|
+
const client = new Supertone({ apiKey: API_KEY });
|
|
1507
|
+
|
|
1508
|
+
// Long text that exceeds typical limits
|
|
1509
|
+
const longText =
|
|
1510
|
+
"This is a longer test text. ".repeat(20) +
|
|
1511
|
+
"It will be automatically chunked and merged.";
|
|
1512
|
+
|
|
1513
|
+
console.log(` š Creating speech with auto-chunking`);
|
|
1514
|
+
console.log(` Text length: ${longText.length} characters`);
|
|
1515
|
+
console.log(" ⨠Using createSpeech() - automatically chunks internally");
|
|
1516
|
+
console.log(" ā ļø This test consumes credits!");
|
|
1517
|
+
|
|
1518
|
+
// Now just use regular createSpeech - it handles chunking automatically
|
|
1519
|
+
const response = await client.textToSpeech.createSpeech({
|
|
1520
|
+
voiceId,
|
|
1521
|
+
apiConvertTextToSpeechUsingCharacterRequest: {
|
|
1522
|
+
text: longText,
|
|
1523
|
+
language: models.APIConvertTextToSpeechUsingCharacterRequestLanguage.En,
|
|
1524
|
+
outputFormat:
|
|
1525
|
+
models.APIConvertTextToSpeechUsingCharacterRequestOutputFormat.Wav,
|
|
1526
|
+
},
|
|
1527
|
+
});
|
|
1528
|
+
|
|
1529
|
+
console.log(` ā
Speech created and merged successfully`);
|
|
1530
|
+
console.log(` šÆ Chunking handled automatically by SDK`);
|
|
1531
|
+
|
|
1532
|
+
return [true, response];
|
|
1533
|
+
} catch (e: any) {
|
|
1534
|
+
logDetailedError(e, "Auto-chunking TTS");
|
|
1535
|
+
return [false, e];
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
/**
|
|
1540
|
+
* Main test execution
|
|
1541
|
+
*/
|
|
1542
|
+
async function main(): Promise<boolean> {
|
|
1543
|
+
console.log("š§Ŗ Real API Integration Test Start");
|
|
1544
|
+
console.log("=".repeat(60));
|
|
1545
|
+
console.log(
|
|
1546
|
+
"ā ļø WARNING: These tests make real API calls and consume credits!"
|
|
1547
|
+
);
|
|
1548
|
+
console.log("=".repeat(60));
|
|
1549
|
+
console.log("");
|
|
1550
|
+
|
|
1551
|
+
const testResults: TestResult = {};
|
|
1552
|
+
let voiceIdForTTS: string | null = null;
|
|
1553
|
+
let customVoiceId: string | null = null;
|
|
1554
|
+
let createdCustomVoiceId: string | null = null;
|
|
1555
|
+
|
|
1556
|
+
// 1. Usage Tests
|
|
1557
|
+
console.log("\nš° Usage & Credit Tests");
|
|
1558
|
+
console.log("-".repeat(60));
|
|
1559
|
+
|
|
1560
|
+
let [success, result] = await testCreditBalance();
|
|
1561
|
+
testResults["credit_balance"] = success;
|
|
1562
|
+
|
|
1563
|
+
[success, result] = await testGetUsage();
|
|
1564
|
+
testResults["get_usage"] = success;
|
|
1565
|
+
|
|
1566
|
+
[success, result] = await testGetVoiceUsage();
|
|
1567
|
+
testResults["get_voice_usage"] = success;
|
|
1568
|
+
|
|
1569
|
+
// 2. Voice Tests
|
|
1570
|
+
console.log("\nšµ Voice Tests");
|
|
1571
|
+
console.log("-".repeat(60));
|
|
1572
|
+
|
|
1573
|
+
[success, result] = await testListVoices();
|
|
1574
|
+
testResults["list_voices"] = success;
|
|
1575
|
+
if (success && result.voiceId) {
|
|
1576
|
+
voiceIdForTTS = result.voiceId;
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
[success, result] = await testSearchVoices();
|
|
1580
|
+
testResults["search_voices"] = success;
|
|
1581
|
+
|
|
1582
|
+
[success, result] = await testGetVoice(voiceIdForTTS);
|
|
1583
|
+
testResults["get_voice"] = success;
|
|
1584
|
+
|
|
1585
|
+
// 3. Custom Voice Tests
|
|
1586
|
+
console.log("\nšØ Custom Voice Tests");
|
|
1587
|
+
console.log("-".repeat(60));
|
|
1588
|
+
|
|
1589
|
+
[success, result] = await testListCustomVoices();
|
|
1590
|
+
testResults["list_custom_voices"] = success;
|
|
1591
|
+
if (success && result.voiceId) {
|
|
1592
|
+
customVoiceId = result.voiceId;
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
[success, result] = await testSearchCustomVoices();
|
|
1596
|
+
testResults["search_custom_voices"] = success;
|
|
1597
|
+
|
|
1598
|
+
[success, result] = await testGetCustomVoice(customVoiceId);
|
|
1599
|
+
testResults["get_custom_voice"] = success;
|
|
1600
|
+
|
|
1601
|
+
// 4. Custom Voice Creation/Edit/Delete Tests
|
|
1602
|
+
console.log("\nšØ Custom Voice Management Tests");
|
|
1603
|
+
console.log("-".repeat(60));
|
|
1604
|
+
console.log("ā ļø These tests consume credits and modify custom voices!");
|
|
1605
|
+
console.log("");
|
|
1606
|
+
|
|
1607
|
+
[success, result] = await testCreateClonedVoice();
|
|
1608
|
+
testResults["create_cloned_voice"] = success;
|
|
1609
|
+
if (success && result?.voiceId) {
|
|
1610
|
+
createdCustomVoiceId = result.voiceId;
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
if (createdCustomVoiceId) {
|
|
1614
|
+
[success, result] = await testEditCustomVoice(createdCustomVoiceId);
|
|
1615
|
+
testResults["edit_custom_voice"] = success;
|
|
1616
|
+
|
|
1617
|
+
console.log("\nāøļø Pausing before deletion to allow voice to be used...");
|
|
1618
|
+
console.log(
|
|
1619
|
+
"ā ļø Note: In production, ensure voice is no longer needed before deletion"
|
|
1620
|
+
);
|
|
1621
|
+
|
|
1622
|
+
[success, result] = await testDeleteCustomVoice(createdCustomVoiceId);
|
|
1623
|
+
testResults["delete_custom_voice"] = success;
|
|
1624
|
+
} else {
|
|
1625
|
+
console.log("āļø Skipping edit/delete tests (no custom voice created)");
|
|
1626
|
+
testResults["edit_custom_voice"] = null;
|
|
1627
|
+
testResults["delete_custom_voice"] = null;
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
// 5. TTS Basic Tests (only if voice ID available)
|
|
1631
|
+
if (voiceIdForTTS) {
|
|
1632
|
+
console.log("\nš¤ Text-to-Speech Basic Tests");
|
|
1633
|
+
console.log("-".repeat(60));
|
|
1634
|
+
console.log("ā ļø These tests consume credits!");
|
|
1635
|
+
console.log("");
|
|
1636
|
+
|
|
1637
|
+
[success, result] = await testPredictDuration(voiceIdForTTS);
|
|
1638
|
+
testResults["predict_duration"] = success;
|
|
1639
|
+
|
|
1640
|
+
[success, result] = await testCreateSpeech(voiceIdForTTS);
|
|
1641
|
+
testResults["create_speech_wav"] = success;
|
|
1642
|
+
|
|
1643
|
+
[success, result] = await testStreamSpeech(voiceIdForTTS);
|
|
1644
|
+
testResults["stream_speech"] = success;
|
|
1645
|
+
|
|
1646
|
+
// 6. TTS Long Text Tests
|
|
1647
|
+
console.log("\nš Text-to-Speech Long Text Tests");
|
|
1648
|
+
console.log("-".repeat(60));
|
|
1649
|
+
console.log("ā ļø These tests consume more credits!");
|
|
1650
|
+
console.log("");
|
|
1651
|
+
|
|
1652
|
+
[success, result] = await testCreateSpeechLongText(voiceIdForTTS);
|
|
1653
|
+
testResults["create_speech_long_text"] = success;
|
|
1654
|
+
|
|
1655
|
+
[success, result] = await testStreamSpeechLongText(voiceIdForTTS);
|
|
1656
|
+
testResults["stream_speech_long_text"] = success;
|
|
1657
|
+
|
|
1658
|
+
[success, result] = await testCreateSpeechWithChunking(voiceIdForTTS);
|
|
1659
|
+
testResults["create_speech_chunking"] = success;
|
|
1660
|
+
|
|
1661
|
+
// 7. TTS with Voice Settings Tests
|
|
1662
|
+
console.log("\nšļø Text-to-Speech with Voice Settings Tests");
|
|
1663
|
+
console.log("-".repeat(60));
|
|
1664
|
+
console.log("ā ļø These tests consume credits!");
|
|
1665
|
+
console.log("");
|
|
1666
|
+
|
|
1667
|
+
[success, result] = await testCreateSpeechWithVoiceSettings(voiceIdForTTS);
|
|
1668
|
+
testResults["create_speech_voice_settings"] = success;
|
|
1669
|
+
|
|
1670
|
+
[success, result] = await testPredictDurationWithVoiceSettings(
|
|
1671
|
+
voiceIdForTTS
|
|
1672
|
+
);
|
|
1673
|
+
testResults["predict_duration_voice_settings"] = success;
|
|
1674
|
+
|
|
1675
|
+
[success, result] = await testStreamSpeechWithVoiceSettings(voiceIdForTTS);
|
|
1676
|
+
testResults["stream_speech_voice_settings"] = success;
|
|
1677
|
+
|
|
1678
|
+
// 8. TTS with Phonemes Tests
|
|
1679
|
+
console.log("\nš¤ Text-to-Speech with Phonemes Tests");
|
|
1680
|
+
console.log("-".repeat(60));
|
|
1681
|
+
console.log("ā ļø These tests consume credits!");
|
|
1682
|
+
console.log("");
|
|
1683
|
+
|
|
1684
|
+
[success, result] = await testCreateSpeechWithPhonemes(voiceIdForTTS);
|
|
1685
|
+
testResults["create_speech_phonemes"] = success;
|
|
1686
|
+
|
|
1687
|
+
[success, result] = await testStreamSpeechWithPhonemes(voiceIdForTTS);
|
|
1688
|
+
testResults["stream_speech_phonemes"] = success;
|
|
1689
|
+
|
|
1690
|
+
// 9. MP3 Format Tests
|
|
1691
|
+
console.log("\nšµ MP3 Format Tests");
|
|
1692
|
+
console.log("-".repeat(60));
|
|
1693
|
+
console.log("ā ļø These tests consume credits!");
|
|
1694
|
+
console.log("");
|
|
1695
|
+
|
|
1696
|
+
[success, result] = await testCreateSpeechMp3(voiceIdForTTS);
|
|
1697
|
+
testResults["create_speech_mp3"] = success;
|
|
1698
|
+
|
|
1699
|
+
[success, result] = await testCreateSpeechLongTextMp3(voiceIdForTTS);
|
|
1700
|
+
testResults["create_speech_long_text_mp3"] = success;
|
|
1701
|
+
|
|
1702
|
+
[success, result] = await testStreamSpeechMp3(voiceIdForTTS);
|
|
1703
|
+
testResults["stream_speech_mp3"] = success;
|
|
1704
|
+
|
|
1705
|
+
[success, result] = await testStreamSpeechLongTextMp3(voiceIdForTTS);
|
|
1706
|
+
testResults["stream_speech_long_text_mp3"] = success;
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1709
|
+
// Results Summary
|
|
1710
|
+
console.log("\n" + "=".repeat(60));
|
|
1711
|
+
console.log("š§Ŗ Integration Test Results Summary:");
|
|
1712
|
+
console.log("");
|
|
1713
|
+
|
|
1714
|
+
let passed = 0;
|
|
1715
|
+
let total = 0;
|
|
1716
|
+
|
|
1717
|
+
for (const [testName, testResult] of Object.entries(testResults)) {
|
|
1718
|
+
let status: string;
|
|
1719
|
+
if (testResult === null) {
|
|
1720
|
+
status = "āļø SKIP";
|
|
1721
|
+
} else if (testResult) {
|
|
1722
|
+
status = "ā
PASS";
|
|
1723
|
+
passed++;
|
|
1724
|
+
total++;
|
|
1725
|
+
} else {
|
|
1726
|
+
status = "ā FAIL";
|
|
1727
|
+
total++;
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
console.log(` ${testName}: ${status}`);
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1733
|
+
console.log("");
|
|
1734
|
+
console.log(`Total ${passed}/${total} tests passed`);
|
|
1735
|
+
console.log("");
|
|
1736
|
+
|
|
1737
|
+
if (passed === total) {
|
|
1738
|
+
console.log(
|
|
1739
|
+
"š All integration tests passed! SDK works correctly with real API."
|
|
1740
|
+
);
|
|
1741
|
+
console.log("");
|
|
1742
|
+
console.log("ā
SDK ready for deployment!");
|
|
1743
|
+
} else {
|
|
1744
|
+
console.log("ā ļø Some tests failed. Please check:");
|
|
1745
|
+
console.log(" ⢠API key is valid");
|
|
1746
|
+
console.log(" ⢠Account has sufficient credits");
|
|
1747
|
+
console.log(" ⢠Network connection is stable");
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1750
|
+
console.log("");
|
|
1751
|
+
console.log("š Tested APIs:");
|
|
1752
|
+
console.log(" ⢠Usage: getCreditBalance, getUsage, getVoiceUsage");
|
|
1753
|
+
console.log(" ⢠Voices: listVoices, searchVoices, getVoice");
|
|
1754
|
+
console.log(
|
|
1755
|
+
" ⢠Custom Voices: listCustomVoices, searchCustomVoices, getCustomVoice"
|
|
1756
|
+
);
|
|
1757
|
+
console.log(
|
|
1758
|
+
" ⢠Custom Voice Management: createClonedVoice, editCustomVoice, deleteCustomVoice"
|
|
1759
|
+
);
|
|
1760
|
+
console.log(
|
|
1761
|
+
" ⢠Text-to-Speech: predictDuration, createSpeech, streamSpeech"
|
|
1762
|
+
);
|
|
1763
|
+
console.log(" ⢠TTS Long Text: createSpeechLongText, streamSpeechLongText");
|
|
1764
|
+
console.log(
|
|
1765
|
+
" ⢠TTS with Voice Settings: createSpeechWithVoiceSettings, predictDurationWithVoiceSettings, streamSpeechWithVoiceSettings"
|
|
1766
|
+
);
|
|
1767
|
+
console.log(
|
|
1768
|
+
" ⢠TTS with Phonemes: createSpeechWithPhonemes, streamSpeechWithPhonemes"
|
|
1769
|
+
);
|
|
1770
|
+
console.log(
|
|
1771
|
+
" ⢠MP3 Format: createSpeechMp3, createSpeechLongTextMp3, streamSpeechMp3, streamSpeechLongTextMp3"
|
|
1772
|
+
);
|
|
1773
|
+
console.log(
|
|
1774
|
+
" ⢠Custom Features: Auto-chunking in createSpeech/streamSpeech (transparent)"
|
|
1775
|
+
);
|
|
1776
|
+
|
|
1777
|
+
if (customVoiceId) {
|
|
1778
|
+
console.log("");
|
|
1779
|
+
console.log(`šØ Found existing custom voice: ${customVoiceId}`);
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
if (createdCustomVoiceId) {
|
|
1783
|
+
console.log(`š Created and deleted custom voice: ${createdCustomVoiceId}`);
|
|
1784
|
+
}
|
|
1785
|
+
|
|
1786
|
+
console.log("");
|
|
1787
|
+
console.log("š” Note: This is a comprehensive test suite.");
|
|
1788
|
+
console.log(
|
|
1789
|
+
" Excludes parallel processing tests (see Python version for those)"
|
|
1790
|
+
);
|
|
1791
|
+
|
|
1792
|
+
return passed === total;
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1795
|
+
// Run tests
|
|
1796
|
+
main()
|
|
1797
|
+
.then((success) => {
|
|
1798
|
+
process.exit(success ? 0 : 1);
|
|
1799
|
+
})
|
|
1800
|
+
.catch((error) => {
|
|
1801
|
+
console.error("ā Test execution failed:", error);
|
|
1802
|
+
process.exit(1);
|
|
1803
|
+
});
|