Feat/tts stt voices languages from api server (#376)

* support fetching tts/stt language and voice from api server

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip
This commit is contained in:
Hoan Luu Huu
2024-01-12 19:34:22 +07:00
committed by GitHub
parent 353c7cfff8
commit 8b9c7ca9c0
30 changed files with 427 additions and 11745 deletions
+17 -30
View File
@@ -91,12 +91,9 @@ import type {
DeleteAccount,
ChangePassword,
SignIn,
GetVoices,
LanguageOption,
VoiceOption,
GetLanguages,
GoogleCustomVoice,
GoogleCustomVoicesQuery,
SpeechSupportedLanguagesAndVoices,
} from "./types";
import { Availability, StatusCodes } from "./types";
import { JaegerRoot } from "./jaeger-types";
@@ -336,32 +333,6 @@ export const postSpeechService = (
return postFetch<SidResponse, Partial<SpeechCredential>>(apiUrl, payload);
};
export const postSpeechServiceVoices = (
sid: string,
payload: Partial<GetVoices>
) => {
const userData = parseJwt(getToken());
const apiUrl =
userData.scope === USER_ACCOUNT
? `${API_ACCOUNTS}/${userData.account_sid}/SpeechCredentials/voices`
: `${API_SERVICE_PROVIDERS}/${sid}/SpeechCredentials/voices`;
return postFetch<VoiceOption[], Partial<GetVoices>>(apiUrl, payload);
};
export const postSpeechServiceLanguages = (
sid: string,
payload: Partial<GetLanguages>
) => {
const userData = parseJwt(getToken());
const apiUrl =
userData.scope === USER_ACCOUNT
? `${API_ACCOUNTS}/${userData.account_sid}/SpeechCredentials/languages`
: `${API_SERVICE_PROVIDERS}/${sid}/SpeechCredentials/languages`;
return postFetch<LanguageOption[], Partial<GetLanguages>>(apiUrl, payload);
};
export const postMsTeamsTentant = (payload: Partial<MSTeamsTenant>) => {
return postFetch<SidResponse, Partial<MSTeamsTenant>>(
API_MS_TEAMS_TENANTS,
@@ -900,6 +871,22 @@ export const getPrice = () => {
return getFetch<PriceInfo[]>(API_PRICE);
};
export const getSpeechSupportedLanguagesAndVoices = (
sid: string | undefined,
vendor: string,
label: string
) => {
const userData = parseJwt(getToken());
const apiUrl =
(userData.scope === USER_ACCOUNT
? `${API_ACCOUNTS}/${userData.account_sid}`
: `${API_SERVICE_PROVIDERS}/${sid}`) +
`/SpeechCredentials/speech/supportedLanguagesAndVoices?vendor=${vendor}${
label ? `&label=${label}` : ""
}`;
return getFetch<SpeechSupportedLanguagesAndVoices>(apiUrl);
};
/** Hooks for components to fetch data with refetch method */
/** :GET /{apiPath} -- this is generic for any fetch of data collections */
+6 -12
View File
@@ -1,4 +1,4 @@
import type { Vendor } from "src/vendor/types";
import type { Language, Model, Vendor, VoiceLanguage } from "src/vendor/types";
/** Simple types */
@@ -697,21 +697,15 @@ export interface SignIn {
account_sid?: null | string;
}
export interface GetVoices {
export interface GetLanguagesAndVoices {
vendor: string;
label: string;
}
export interface VoiceOption extends SelectorOptions {
[key: string]: unknown;
}
export interface GetLanguages extends GetVoices {
[key: string]: unknown;
}
export interface LanguageOption extends SelectorOptions {
[key: string]: unknown;
export interface SpeechSupportedLanguagesAndVoices {
tts: VoiceLanguage[];
stt: Language[];
models: Model[];
}
export interface ElevenLabsOptions {
@@ -16,7 +16,6 @@ import {
LANG_EN_US,
VENDOR_GOOGLE,
LANG_EN_US_STANDARD_C,
useSpeechVendors,
VENDOR_CUSTOM,
} from "src/vendor";
import {
@@ -61,7 +60,6 @@ type ApplicationFormProps = {
export const ApplicationForm = ({ application }: ApplicationFormProps) => {
const navigate = useNavigate();
const { synthesis, recognizers } = useSpeechVendors();
const user = useSelectState("user");
const currentServiceProvider = useSelectState("currentServiceProvider");
const [accounts] = useServiceProviderData<Account[]>("Accounts");
@@ -685,14 +683,12 @@ export const ApplicationForm = ({ application }: ApplicationFormProps) => {
}
accountSid={accountSid}
credentials={credentials}
synthesis={synthesis}
ttsVendor={[synthVendor, setSynthVendor]}
ttsVendorOptions={ttsVendorOptions}
ttsVoice={[synthVoice, setSynthVoice]}
ttsLang={[synthLang, setSynthLang]}
ttsLabelOptions={ttsLabelOptions}
ttsLabel={[synthLabel, setSynthLabel]}
recognizers={recognizers}
sttVendor={[recogVendor, setRecogVendor]}
sttVendorOptions={sttVendorOptions}
sttLang={[recogLang, setRecogLang]}
@@ -716,7 +712,6 @@ export const ApplicationForm = ({ application }: ApplicationFormProps) => {
}
accountSid={accountSid}
credentials={credentials}
synthesis={synthesis}
ttsVendor={[
fallbackSpeechSynthsisVendor,
setFallbackSpeechSynthsisVendor,
@@ -735,7 +730,6 @@ export const ApplicationForm = ({ application }: ApplicationFormProps) => {
fallbackSpeechSynthsisLabel,
setFallbackSpeechSynthsisLabel,
]}
recognizers={recognizers}
sttVendor={[
fallbackSpeechRecognizerVendor,
setFallbackSpeechRecognizerVendor,
@@ -1,13 +1,16 @@
import React, { useEffect, useRef, useState } from "react";
import {
getGoogleCustomVoices,
postSpeechServiceLanguages,
postSpeechServiceVoices,
getSpeechSupportedLanguagesAndVoices,
} from "src/api";
import { SpeechCredential } from "src/api/types";
import { USER_ADMIN } from "src/api/constants";
import {
SpeechCredential,
SpeechSupportedLanguagesAndVoices,
} from "src/api/types";
import { Selector } from "src/components/forms";
import { SelectorOption } from "src/components/forms/selector";
import { useSelectState } from "src/store";
import { toastError, useSelectState } from "src/store";
import { hasLength } from "src/utils";
import {
ELEVENLABS_LANG_EN,
@@ -25,22 +28,17 @@ import {
VENDOR_SONIOX,
VENDOR_WELLSAID,
VENDOR_WHISPER,
useTtsModels,
} from "src/vendor";
import {
LabelOptions,
Language,
RecognizerVendors,
SynthesisVendors,
VendorOptions,
Voice,
VoiceLanguage,
} from "src/vendor/types";
type SpeechProviderSelectionProbs = {
accountSid: string;
serviceProviderSid: string;
credentials: SpeechCredential[] | undefined;
synthesis: SynthesisVendors | undefined;
ttsVendor: [
keyof SynthesisVendors,
React.Dispatch<React.SetStateAction<keyof SynthesisVendors>>
@@ -50,7 +48,6 @@ type SpeechProviderSelectionProbs = {
ttsLang: [string, React.Dispatch<React.SetStateAction<string>>];
ttsLabelOptions: LabelOptions[];
ttsLabel: [string, React.Dispatch<React.SetStateAction<string>>];
recognizers: RecognizerVendors | undefined;
sttVendor: [
keyof RecognizerVendors,
React.Dispatch<React.SetStateAction<keyof RecognizerVendors>>
@@ -65,20 +62,23 @@ export const SpeechProviderSelection = ({
accountSid,
serviceProviderSid,
credentials,
synthesis,
ttsVendor: [synthVendor, setSynthVendor],
ttsVendorOptions,
ttsVoice: [synthVoice, setSynthVoice],
ttsLang: [synthLang, setSynthLang],
ttsLabelOptions,
ttsLabel: [synthLabel, setSynthLabel],
recognizers,
sttVendor: [recogVendor, setRecogVendor],
sttVendorOptions,
sttLang: [recogLang, setRecogLang],
sttLabelOptions,
sttLabel: [recogLabel, setRecogLabel],
}: SpeechProviderSelectionProbs) => {
const user = useSelectState("user");
const [
synthesisSupportedLanguagesAndVoices,
setSynthesisSupportedLanguagesAndVoices,
] = useState<SpeechSupportedLanguagesAndVoices | null>();
const [selectedCredential, setSelectedCredential] = useState<
SpeechCredential | undefined
>();
@@ -88,117 +88,55 @@ export const SpeechProviderSelection = ({
const [synthesisLanguageOptions, setSynthesisLanguageOptions] = useState<
SelectorOption[]
>([]);
const [synthesisModelOptions, setSynthesisModelOptions] = useState<
SelectorOption[]
>([]);
const [
synthesisGoogleCustomVoiceOptions,
setSynthesisGoogleCustomVoiceOptions,
] = useState<SelectorOption[]>([]);
const [recogLanguageOptions, setRecogLanguageOptions] = useState<
SelectorOption[]
>([]);
const currentVendor = useRef("");
const currentServiceProvider = useSelectState("currentServiceProvider");
const currentVendor = useRef(synthVendor);
const ttsModels = useTtsModels();
// Get Synthesis languages and voices
useEffect(() => {
/** When Custom Vendor is used, user you have to input the lange and voice. */
if (synthVendor.toString().startsWith(VENDOR_CUSTOM)) {
setSynthVoice("");
return;
}
currentVendor.current = synthVendor;
if (
!synthesis ||
synthVendor.startsWith("custom:") ||
synthVendor === VENDOR_DEEPGRAM
!user ||
(user?.scope === USER_ADMIN &&
!currentServiceProvider?.service_provider_sid)
) {
return;
}
const voiceOpts = synthesis[synthVendor as keyof SynthesisVendors]
.filter((lang: VoiceLanguage) => {
// ELEVENLABS has same voice for all lange, take voices from the 1st language
// Only first language has voices, the rest has empty voices
if (synthVendor === VENDOR_ELEVENLABS && lang.voices.length > 0) {
return true;
}
return lang.code === synthLang;
})
.flatMap((lang: VoiceLanguage) =>
lang.voices.map((voice: Voice) => ({
name: voice.name,
value: voice.value,
}))
) as Voice[];
setSynthesisVoiceOptions(voiceOpts);
configSynthesis();
}, [synthVendor, synthLabel, currentServiceProvider]);
const langOpts = synthesis[synthVendor as keyof SynthesisVendors].map(
(lang: VoiceLanguage) => ({
name: lang.name,
value: lang.code,
})
);
setSynthesisLanguageOptions(langOpts);
if (synthVendor === VENDOR_ELEVENLABS) {
postSpeechServiceVoices(
currentServiceProvider
? currentServiceProvider.service_provider_sid
: "",
{
vendor: synthVendor,
label: synthLabel,
}
).then(({ json }) => {
// If after successfully fetching data, vendor is still good, then apply value
if (currentVendor.current !== VENDOR_ELEVENLABS) {
return;
}
if (json.length > 0) {
setSynthesisVoiceOptions(json);
}
});
postSpeechServiceLanguages(
currentServiceProvider
? currentServiceProvider.service_provider_sid
: "",
{
vendor: synthVendor,
label: synthLabel,
}
).then(({ json }) => {
if (json.length > 0) {
setSynthesisLanguageOptions(json);
}
});
} else if (synthVendor === VENDOR_GOOGLE) {
getGoogleCustomVoices({
...(synthLabel && { label: synthLabel }),
account_sid: accountSid,
service_provider_sid: serviceProviderSid,
}).then(({ json }) => {
// If after successfully fetching data, vendor is still good, then apply value
if (currentVendor.current !== VENDOR_GOOGLE) {
return;
}
const customVOices = json.map((v) => ({
name: `${v.name} (Custom)`,
value: `custom_${v.google_custom_voice_sid}`,
}));
const options = synthesis[synthVendor as keyof SynthesisVendors]
.filter((lang: VoiceLanguage) => {
return lang.code === synthLang;
})
.flatMap((lang: VoiceLanguage) =>
lang.voices.map((voice: Voice) => ({
name: voice.name,
value: voice.value,
}))
) as Voice[];
setSynthesisVoiceOptions([...customVOices, ...options]);
if (customVOices.length > 0) {
setSynthVoice(customVOices[0].value);
}
});
// Get Recognizer languages and voices
useEffect(() => {
/** When Custom Vendor is used, user you have to input the lange and voice. */
if (recogVendor.toString().startsWith(VENDOR_CUSTOM)) {
setRecogLang(LANG_EN_US);
return;
}
}, [
synthVendor,
synthesis,
synthLabel,
accountSid,
serviceProviderSid,
synthLang,
]);
if (
!user ||
(user?.scope === USER_ADMIN &&
!currentServiceProvider?.service_provider_sid)
) {
return;
}
configRecognizer();
}, [recogVendor, recogLabel, currentServiceProvider]);
useEffect(() => {
if (credentials) {
@@ -218,294 +156,355 @@ export const SpeechProviderSelection = ({
setRecogLabel(sttLabelOptions[0].value);
}
}, [ttsLabelOptions, sttLabelOptions]);
const configSynthesis = () => {
getSpeechSupportedLanguagesAndVoices(
currentServiceProvider?.service_provider_sid,
synthVendor,
synthLabel
)
.then(({ json }) => {
setSynthesisSupportedLanguagesAndVoices(json);
// Extract model
if (json.models && json.models.length) {
setSynthesisModelOptions(json.models);
if (synthVendor === VENDOR_DEEPGRAM) {
setSynthVoice(json.models[0].value);
return;
}
}
if (json.tts && json.tts.length) {
// Extract Language
const langOpts = json.tts.map((lang) => ({
name: lang.name,
value: lang.value,
}));
const nLang = langOpts.length ? langOpts[0].value : "";
setSynthesisLanguageOptions(langOpts);
// Extract Voice
const voicesOpts =
json.tts.find((lang) => {
if (synthVendor === VENDOR_ELEVENLABS && lang.voices.length > 0) {
return true;
}
return lang.value === nLang;
})?.voices || [];
setSynthesisVoiceOptions(voicesOpts);
if (synthVendor === VENDOR_GOOGLE) {
getGoogleCustomVoices({
...(synthLabel && { label: synthLabel }),
account_sid: accountSid,
service_provider_sid: serviceProviderSid,
}).then(({ json }) => {
// If after successfully fetching data, vendor is still good, then apply value
if (currentVendor.current !== VENDOR_GOOGLE) {
return;
}
const customVOices = json.map((v) => ({
name: `${v.name} (Custom)`,
value: `custom_${v.google_custom_voice_sid}`,
}));
setSynthesisGoogleCustomVoiceOptions(customVOices);
setSynthesisVoiceOptions([...customVOices, ...voicesOpts]);
if (customVOices.length > 0) {
setSynthVoice(customVOices[0].value);
}
});
}
// Default setting
if (synthVendor === VENDOR_GOOGLE && synthLang === LANG_EN_US) {
setSynthVoice(LANG_EN_US_STANDARD_C);
return;
}
if (synthVendor === VENDOR_ELEVENLABS) {
// Samve Voices applied to all languages
// Voices are only available for the 1st language.
setSynthLang(ELEVENLABS_LANG_EN);
setSynthVoice(voicesOpts[0].value);
return;
}
if (synthVendor === VENDOR_WHISPER) {
const newLang = json.tts.find((lang) => lang.value === LANG_EN_US);
setSynthLang(LANG_EN_US);
setSynthVoice(newLang!.voices[0].value);
return;
}
/** Google and AWS have different language lists */
/** If the new language doesn't map then default to "en-US" */
let newLang = json.tts.find((lang) => lang.value === synthLang);
if (newLang) {
setSynthVoice(newLang.voices[0].value);
return;
}
newLang = json.tts.find((lang) => lang.value === LANG_EN_US);
setSynthLang(LANG_EN_US);
setSynthVoice(newLang!.voices[0].value);
}
})
.catch((error) => {
toastError(error.msg);
});
};
const configRecognizer = () => {
getSpeechSupportedLanguagesAndVoices(
currentServiceProvider?.service_provider_sid,
recogVendor,
recogLabel
)
.then(({ json }) => {
// Extract Language
const langOpts = json.stt.map((lang) => ({
name: lang.name,
value: lang.value,
}));
setRecogLanguageOptions(langOpts);
/**When vendor is custom, Language is input by user */
if (recogVendor.toString() === VENDOR_CUSTOM) return;
/** Google and AWS have different language lists */
/** If the new language doesn't map then default to "en-US" */
const newLang = json.stt.find((lang) => lang.value === recogLang);
if (
(recogVendor === VENDOR_GOOGLE || recogVendor === VENDOR_AWS) &&
!newLang
) {
setRecogLang(LANG_EN_US);
}
// Default colbalt language
if (recogVendor === VENDOR_COBALT) {
setRecogLang(LANG_COBALT_EN_US);
}
})
.catch((error) => {
toastError(error.msg);
});
};
return (
<>
{synthesis && (
<fieldset>
<label htmlFor="synthesis_vendor">Speech synthesis vendor</label>
<Selector
id="synthesis_vendor"
name="synthesis_vendor"
value={synthVendor}
options={ttsVendorOptions.filter(
(vendor) =>
vendor.value != VENDOR_ASSEMBLYAI &&
vendor.value != VENDOR_SONIOX &&
vendor.value !== VENDOR_CUSTOM &&
vendor.value !== VENDOR_COBALT
)}
onChange={(e) => {
const vendor = e.target.value as keyof SynthesisVendors;
setSynthVendor(vendor);
setSynthLabel("");
/** When Custom Vendor is used, user you have to input the lange and voice. */
if (vendor.toString().startsWith(VENDOR_CUSTOM)) {
setSynthVoice("");
return;
}
/** DEEPGRAM only support voice */
if (vendor.toString().startsWith(VENDOR_DEEPGRAM)) {
if (ttsModels) {
setSynthVoice(ttsModels[VENDOR_DEEPGRAM][0].value);
}
return;
}
/** When using Google and en-US, ensure "Standard-C" is used as default */
if (
e.target.value === VENDOR_GOOGLE &&
synthLang === LANG_EN_US
) {
setSynthVoice(LANG_EN_US_STANDARD_C);
return;
}
if (vendor === VENDOR_ELEVENLABS) {
// Samve Voices applied to all languages
// Voices are only available for the 1st language.
setSynthLang(ELEVENLABS_LANG_EN);
setSynthVoice(synthesis[vendor][0].voices[0].value);
return;
}
if (vendor === VENDOR_WHISPER) {
const newLang = synthesis[vendor].find(
(lang) => lang.code === LANG_EN_US
);
setSynthLang(LANG_EN_US);
setSynthVoice(newLang!.voices[0].value);
return;
}
/** Google and AWS have different language lists */
/** If the new language doesn't map then default to "en-US" */
let newLang = synthesis[vendor].find(
(lang) => lang.code === synthLang
);
if (newLang) {
setSynthVoice(newLang.voices[0].value);
return;
}
newLang = synthesis[vendor].find(
(lang) => lang.code === LANG_EN_US
);
setSynthLang(LANG_EN_US);
setSynthVoice(newLang!.voices[0].value);
}}
/>
{hasLength(ttsLabelOptions) && (
<>
<label htmlFor="synthesis_label">Label</label>
<Selector
id="systhesis_label"
name="systhesis_label"
value={synthLabel}
options={ttsLabelOptions}
onChange={(e) => {
setSynthLabel(e.target.value);
}}
/>
</>
<fieldset>
<label htmlFor="synthesis_vendor">Speech synthesis vendor</label>
<Selector
id="synthesis_vendor"
name="synthesis_vendor"
value={synthVendor}
options={ttsVendorOptions.filter(
(vendor) =>
vendor.value != VENDOR_ASSEMBLYAI &&
vendor.value != VENDOR_SONIOX &&
vendor.value !== VENDOR_CUSTOM &&
vendor.value !== VENDOR_COBALT
)}
{ttsModels && synthVendor === VENDOR_DEEPGRAM && (
onChange={(e) => {
const vendor = e.target.value as keyof SynthesisVendors;
setSynthVendor(vendor);
setSynthLabel("");
setSynthesisLanguageOptions([]);
setSynthesisVoiceOptions([]);
}}
/>
{hasLength(ttsLabelOptions) && (
<>
<label htmlFor="synthesis_label">Label</label>
<Selector
id="systhesis_label"
name="systhesis_label"
value={synthLabel}
options={ttsLabelOptions}
onChange={(e) => {
setSynthLabel(e.target.value);
}}
/>
</>
)}
{synthesisModelOptions && synthVendor === VENDOR_DEEPGRAM && (
<>
<label htmlFor="synthesis_lang">Model</label>
<Selector
id="synthesis_voice"
name="synthesis_voice"
value={synthVoice}
options={synthesisModelOptions}
onChange={(e) => setSynthVoice(e.target.value)}
/>
</>
)}
{synthVendor &&
!synthVendor.toString().startsWith(VENDOR_CUSTOM) &&
synthVendor !== VENDOR_DEEPGRAM &&
synthLang && (
<>
<label htmlFor="synthesis_lang">Model</label>
<label htmlFor="synthesis_lang">Language</label>
<Selector
id="synthesis_voice"
name="synthesis_voice"
value={synthVoice}
options={ttsModels[synthVendor]}
onChange={(e) => setSynthVoice(e.target.value)}
/>
</>
)}
{synthVendor &&
!synthVendor.toString().startsWith(VENDOR_CUSTOM) &&
synthVendor !== VENDOR_DEEPGRAM &&
synthLang && (
<>
<label htmlFor="synthesis_lang">Language</label>
<Selector
id="synthesis_lang"
name="synthesis_lang"
value={synthLang}
options={synthesisLanguageOptions}
onChange={(e) => {
const language = e.target.value;
setSynthLang(language);
/** When using Google and en-US, ensure "Standard-C" is used as default */
if (
synthVendor === VENDOR_GOOGLE &&
language === LANG_EN_US
) {
setSynthVoice(LANG_EN_US_STANDARD_C);
return;
}
const newLang = synthesis[
synthVendor as keyof SynthesisVendors
].find((lang) => lang.code === language);
setSynthVoice(newLang!.voices[0].value);
}}
/>
<label htmlFor="synthesis_voice">Voice</label>
{synthVendor === VENDOR_MICROSOFT &&
selectedCredential &&
selectedCredential.use_custom_tts ? (
<input
id="custom_microsoft_synthesis_voice"
type="text"
name="custom_microsoft_synthesis_voice"
placeholder="Required"
required
value={synthVoice}
onChange={(e) => {
setSynthVoice(e.target.value);
}}
/>
) : (
<Selector
id="synthesis_voice"
name="synthesis_voice"
value={synthVoice}
options={synthesisVoiceOptions}
onChange={(e) => setSynthVoice(e.target.value)}
/>
)}
</>
)}
{synthVendor.toString().startsWith(VENDOR_CUSTOM) && (
<>
<label htmlFor="custom_vendor_synthesis_lang">Language</label>
<input
id="custom_vendor_synthesis_lang"
type="text"
name="custom_vendor_synthesis_lang"
placeholder="Required"
required
id="synthesis_lang"
name="synthesis_lang"
value={synthLang}
options={synthesisLanguageOptions}
onChange={(e) => {
setSynthLang(e.target.value);
const language = e.target.value;
setSynthLang(language);
/** When using Google and en-US, ensure "Standard-C" is used as default */
if (
synthVendor === VENDOR_GOOGLE &&
language === LANG_EN_US
) {
setSynthVoice(LANG_EN_US_STANDARD_C);
return;
}
const voices =
synthesisSupportedLanguagesAndVoices?.tts.find(
(lang) => lang.value === language
)?.voices || [];
if (
synthVendor === VENDOR_GOOGLE &&
synthesisGoogleCustomVoiceOptions &&
synthesisGoogleCustomVoiceOptions.length
) {
setSynthesisVoiceOptions([
...synthesisGoogleCustomVoiceOptions,
...voices,
]);
} else {
setSynthesisVoiceOptions(voices);
}
setSynthVoice(voices[0].value);
}}
/>
<label htmlFor="custom_vendor_synthesis_voice">Voice</label>
<input
id="custom_vendor_synthesis_voice"
type="text"
name="custom_vendor_synthesis_voice"
placeholder="Required"
required
value={synthVoice}
onChange={(e) => {
setSynthVoice(e.target.value);
}}
/>
</>
)}
</fieldset>
)}
{recognizers && (
<fieldset>
<label htmlFor="recognizer_vendor">Speech recognizer vendor</label>
<Selector
id="recognizer_vendor"
name="recognizer_vendor"
value={recogVendor}
options={sttVendorOptions.filter(
(vendor) =>
vendor.value != VENDOR_WELLSAID &&
vendor.value != VENDOR_ELEVENLABS &&
vendor.value != VENDOR_WHISPER &&
vendor.value !== VENDOR_CUSTOM
)}
onChange={(e) => {
const vendor = e.target.value as keyof RecognizerVendors;
setRecogVendor(vendor);
setRecogLabel("");
/**When vendor is custom, Language is input by user */
if (vendor.toString() === VENDOR_CUSTOM) return;
/** Google and AWS have different language lists */
/** If the new language doesn't map then default to "en-US" */
const newLang = recognizers[vendor].find(
(lang: Language) => lang.code === recogLang
);
if (
(vendor === VENDOR_GOOGLE || vendor === VENDOR_AWS) &&
!newLang
) {
setRecogLang(LANG_EN_US);
}
// Default colbalt language
if (vendor === VENDOR_COBALT) {
setRecogLang(LANG_COBALT_EN_US);
}
}}
/>
{hasLength(sttLabelOptions) && (
<>
<label htmlFor="recog_label">Label</label>
<Selector
id="recog_label"
name="recog_label"
value={recogLabel}
options={sttLabelOptions}
onChange={(e) => {
setRecogLabel(e.target.value);
}}
/>
</>
)}
{recogVendor &&
!recogVendor.toString().startsWith(VENDOR_CUSTOM) &&
recogLang && (
<>
<label htmlFor="recognizer_lang">Language</label>
<Selector
id="recognizer_lang"
name="recognizer_lang"
value={recogLang}
options={recognizers[
recogVendor as keyof RecognizerVendors
].map((lang: Language) => ({
name: lang.name,
value: lang.code,
}))}
<label htmlFor="synthesis_voice">Voice</label>
{synthVendor === VENDOR_MICROSOFT &&
selectedCredential &&
selectedCredential.use_custom_tts ? (
<input
id="custom_microsoft_synthesis_voice"
type="text"
name="custom_microsoft_synthesis_voice"
placeholder="Required"
required
value={synthVoice}
onChange={(e) => {
setRecogLang(e.target.value);
setSynthVoice(e.target.value);
}}
/>
</>
)}
{recogVendor.toString().startsWith(VENDOR_CUSTOM) && (
) : (
<Selector
id="synthesis_voice"
name="synthesis_voice"
value={synthVoice}
options={synthesisVoiceOptions}
onChange={(e) => setSynthVoice(e.target.value)}
/>
)}
</>
)}
{synthVendor.toString().startsWith(VENDOR_CUSTOM) && (
<>
<label htmlFor="custom_vendor_synthesis_lang">Language</label>
<input
id="custom_vendor_synthesis_lang"
type="text"
name="custom_vendor_synthesis_lang"
placeholder="Required"
required
value={synthLang}
onChange={(e) => {
setSynthLang(e.target.value);
}}
/>
<label htmlFor="custom_vendor_synthesis_voice">Voice</label>
<input
id="custom_vendor_synthesis_voice"
type="text"
name="custom_vendor_synthesis_voice"
placeholder="Required"
required
value={synthVoice}
onChange={(e) => {
setSynthVoice(e.target.value);
}}
/>
</>
)}
</fieldset>
<fieldset>
<label htmlFor="recognizer_vendor">Speech recognizer vendor</label>
<Selector
id="recognizer_vendor"
name="recognizer_vendor"
value={recogVendor}
options={sttVendorOptions.filter(
(vendor) =>
vendor.value != VENDOR_WELLSAID &&
vendor.value != VENDOR_ELEVENLABS &&
vendor.value != VENDOR_WHISPER &&
vendor.value !== VENDOR_CUSTOM
)}
onChange={(e) => {
const vendor = e.target.value as keyof RecognizerVendors;
setRecogVendor(vendor);
setRecogLabel("");
setRecogLanguageOptions([]);
}}
/>
{hasLength(sttLabelOptions) && (
<>
<label htmlFor="recog_label">Label</label>
<Selector
id="recog_label"
name="recog_label"
value={recogLabel}
options={sttLabelOptions}
onChange={(e) => {
setRecogLabel(e.target.value);
}}
/>
</>
)}
{recogVendor &&
!recogVendor.toString().startsWith(VENDOR_CUSTOM) &&
recogLang && (
<>
<label htmlFor="custom_vendor_recognizer_voice">Language</label>
<input
id="custom_vendor_recognizer_voice"
type="text"
name="custom_vendor_recognizer_voice"
placeholder="Required"
required
<label htmlFor="recognizer_lang">Language</label>
<Selector
id="recognizer_lang"
name="recognizer_lang"
value={recogLang}
options={recogLanguageOptions}
onChange={(e) => {
setRecogLang(e.target.value);
}}
/>
</>
)}
</fieldset>
)}
{recogVendor.toString().startsWith(VENDOR_CUSTOM) && (
<>
<label htmlFor="custom_vendor_recognizer_voice">Language</label>
<input
id="custom_vendor_recognizer_voice"
type="text"
name="custom_vendor_recognizer_voice"
placeholder="Required"
required
value={recogLang}
onChange={(e) => {
setRecogLang(e.target.value);
}}
/>
</>
)}
</fieldset>
</>
);
};
@@ -16,6 +16,7 @@ import { toastError, toastSuccess, useSelectState } from "src/store";
import {
deleteGoogleCustomVoice,
getGoogleCustomVoices,
getSpeechSupportedLanguagesAndVoices,
postGoogleCustomVoice,
postSpeechService,
putGoogleCustomVoice,
@@ -39,7 +40,6 @@ import {
VENDOR_ELEVENLABS,
VENDOR_ASSEMBLYAI,
VENDOR_WHISPER,
useTtsModels,
} from "src/vendor";
import { MSG_REQUIRED_FIELDS } from "src/constants";
import {
@@ -56,7 +56,7 @@ import type {
RegionVendors,
GoogleServiceKey,
Vendor,
TtsModels,
Model,
} from "src/vendor/types";
import type {
Account,
@@ -140,7 +140,7 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
const [useCustomVoicesCheck, setUseCustomVoicesCheck] = useState(false);
const [customVoices, setCustomVoices] = useState<GoogleCustomVoice[]>([]);
const [customVoicesMessage, setCustomVoicesMessage] = useState("");
const ttsModels = useTtsModels();
const [ttsModels, setTtsModels] = useState<Model[]>([]);
const [optionsInitialChecked, setOptionsInitialChecked] = useState(false);
const [options, setOptions] = useState("");
const [tmpOptions, setTmpOptions] = useState("");
@@ -366,6 +366,22 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
}
};
useEffect(() => {
if (vendor === VENDOR_ELEVENLABS || vendor === VENDOR_WHISPER) {
getSpeechSupportedLanguagesAndVoices(
currentServiceProvider?.service_provider_sid,
vendor,
""
).then(({ json }) => {
if (json.models) {
setTtsModels(json.models);
}
});
} else {
setTtsModels([]);
}
}, [vendor]);
useEffect(() => {
setLocation();
if (credential && credential.data) {
@@ -582,13 +598,11 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
setApiKey("");
setGoogleServiceKey(null);
if (
ttsModels &&
ttsModels.length > 0 &&
(e.target.value === VENDOR_ELEVENLABS ||
e.target.value === VENDOR_WHISPER)
) {
setTtsModelId(
ttsModels[e.target.value as keyof TtsModels][0].value
);
setTtsModelId(ttsModels[0].value);
}
}}
disabled={credential ? true : false}
@@ -1120,14 +1134,14 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
</fieldset>
)}
{(vendor == VENDOR_ELEVENLABS || vendor == VENDOR_WHISPER) &&
ttsModels && (
ttsModels.length > 0 && (
<fieldset>
<label htmlFor={`${vendor}_tts_model_id`}>Model</label>
<Selector
id={"tts_model_id"}
name={"tts_model_id"}
value={ttsModelId}
options={ttsModels[vendor as keyof TtsModels]}
options={ttsModels}
onChange={(e) => {
setTtsModelId(e.target.value);
}}
+1 -130
View File
@@ -1,12 +1,6 @@
import { useEffect, useState } from "react";
import type {
VendorOptions,
SynthesisVendors,
RecognizerVendors,
RegionVendors,
TtsModels,
} from "./types";
import type { VendorOptions, RegionVendors } from "./types";
export const LANG_EN_US = "en-US";
export const ELEVENLABS_LANG_EN = "en";
@@ -86,38 +80,6 @@ export const vendors: VendorOptions[] = [
},
].sort((a, b) => a.name.localeCompare(b.name)) as VendorOptions[];
export const useTtsModels = () => {
const [models, setModels] = useState<TtsModels>();
useEffect(() => {
let ignore = false;
Promise.all([
import("./speech-synthsis-models/elevenlabs-models"),
import("./speech-synthsis-models/whisper-models"),
import("./speech-synthsis-models/deepgram-models"),
]).then(
([
{ default: elevenlabs },
{ default: whisper },
{ default: deepgram },
]) => {
if (!ignore) {
setModels({
elevenlabs,
whisper,
deepgram,
});
}
}
);
return function cleanup() {
ignore = true;
};
}, []);
return models;
};
export const useRegionVendors = () => {
const [regions, setRegions] = useState<RegionVendors>();
@@ -151,94 +113,3 @@ export const useRegionVendors = () => {
return regions;
};
export const useSpeechVendors = () => {
const [speech, setSpeech] = useState<{
synthesis?: SynthesisVendors;
recognizers?: RecognizerVendors;
}>({});
useEffect(() => {
let ignore = false;
Promise.all([
import("./speech-recognizer/aws-speech-recognizer-lang"),
import("./speech-recognizer/google-speech-recognizer-lang"),
import("./speech-recognizer/ms-speech-recognizer-lang"),
import("./speech-recognizer/nuance-speech-recognizer-lang"),
import("./speech-recognizer/deepgram-speech-recognizer-lang"),
import("./speech-recognizer/ibm-speech-recognizer-lang"),
import("./speech-recognizer/nvidia-speech-recognizer-lang"),
import("./speech-recognizer/soniox-speech-recognizer-lang"),
import("./speech-recognizer/cobalt-speech-recognizer-lang"),
import("./speech-recognizer/assemblyai-speech-recognizer-lang"),
import("./speech-synthesis/aws-speech-synthesis-lang"),
import("./speech-synthesis/google-speech-synthesis-lang"),
import("./speech-synthesis/ms-speech-synthesis-lang"),
import("./speech-synthesis/wellsaid-speech-synthesis-lang"),
import("./speech-synthesis/nuance-speech-synthesis-lang"),
import("./speech-synthesis/ibm-speech-synthesis-lang"),
import("./speech-synthesis/nvidia-speech-synthesis-lang"),
import("./speech-synthesis/elevellabs-speech-synthesis-lang"),
import("./speech-synthesis/whisper-speech-synthesis-lang"),
]).then(
([
{ default: awsRecognizer },
{ default: googleRecognizer },
{ default: msRecognizer },
{ default: nuanceRecognizer },
{ default: deepgramRecognizer },
{ default: ibmRecognizer },
{ default: nvidiaRecognizer },
{ default: sonioxRecognizer },
{ default: cobaltRecognizer },
{ default: assemblyaiRecognizer },
{ default: awsSynthesis },
{ default: googleSynthesis },
{ default: msSynthesis },
{ default: wellsaidSynthesis },
{ default: nuanceSynthesis },
{ default: ibmSynthesis },
{ default: nvidiaynthesis },
{ default: elevenLabsSynthesis },
{ default: whisperSynthesis },
]) => {
if (!ignore) {
setSpeech({
synthesis: {
aws: awsSynthesis,
google: googleSynthesis,
microsoft: msSynthesis,
wellsaid: wellsaidSynthesis,
nuance: nuanceSynthesis,
ibm: ibmSynthesis,
nvidia: nvidiaynthesis,
elevenlabs: elevenLabsSynthesis,
whisper: whisperSynthesis,
// Deepgram just have model which includes language, voice
deepgram: [],
},
recognizers: {
aws: awsRecognizer,
google: googleRecognizer,
microsoft: msRecognizer,
nuance: nuanceRecognizer,
deepgram: deepgramRecognizer,
ibm: ibmRecognizer,
nvidia: nvidiaRecognizer,
soniox: sonioxRecognizer,
cobalt: cobaltRecognizer,
assemblyai: assemblyaiRecognizer,
},
});
}
}
);
return function cleanup() {
ignore = true;
};
}, []);
return speech;
};
@@ -1,26 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{ name: "Global English", code: "en" },
{ name: "Australian English", code: "en_au" },
{ name: "British English", code: "en_uk" },
{ name: "US English", code: "en_us" },
{ name: "Spanish", code: "es" },
{ name: "French", code: "fr" },
{ name: "German", code: "de" },
{ name: "Italian", code: "it" },
{ name: "Portuguese", code: "pt" },
{ name: "Dutch", code: "nl" },
{ name: "Hindi", code: "hi" },
{ name: "Japanese", code: "ja" },
{ name: "Chinese", code: "zh" },
{ name: "Finnish", code: "fi" },
{ name: "Korean", code: "ko" },
{ name: "Polish", code: "pl" },
{ name: "Russian", code: "ru" },
{ name: "Turkish", code: "tr" },
{ name: "Ukrainian", code: "uk" },
{ name: "Vietnamese", code: "vi" },
];
export default languages;
@@ -1,14 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{ name: "Australian English", code: "en-AU" },
{ name: "British English", code: "en-GB" },
{ name: "US English", code: "en-US" },
{ name: "French", code: "fr-FR" },
{ name: "Canadian French", code: "fr-CA" },
{ name: "German", code: "de-DE" },
{ name: "Italian", code: "it-IT" },
{ name: "US Spanish", code: "es-US" },
];
export default languages;
@@ -1,30 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{
name: "English US",
code: "en_US-8khz",
},
{
name: "English UK",
code: "en_UK-8khz",
},
{
name: "Spanish",
code: "es_xx-8khz",
},
{
name: "French",
code: "fr_fr-8khz",
},
{
name: "Russian",
code: "ru_ru-8khz",
},
{
name: "Portuguese",
code: "pt_br-8khz",
},
];
export default languages;
@@ -1,142 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{
name: "Chinese - general",
code: "zh",
},
{
name: "Chinese (China)",
code: "zh-CN",
},
{
name: "Chinese (Taiwan)",
code: "zh-TW",
},
{
name: "Dutch - general",
code: "nl",
},
{
name: "English - general",
code: "en",
},
{
name: "English (Australia)",
code: "en-AU",
},
{
name: "English (United Kingdom)",
code: "en-GB",
},
{
name: "English (India)",
code: "en-IN",
},
{
name: "English (New Zealand)",
code: "en-NZ",
},
{
name: "English (United States)",
code: "en-US",
},
{
name: "French - general",
code: "fr",
},
{
name: "French (Canada)",
code: "fr-CA",
},
{
name: "German - general",
code: "de",
},
{
name: "Hindi - general",
code: "hi",
},
{
name: "Hindi (Roman Script)",
code: "hi-Latin",
},
{
name: "Indonesian - general",
code: "in",
},
{
name: "Italian - general",
code: "it",
},
{
name: "Japanese - general",
code: "ja",
},
{
name: "Korean - general",
code: "ko",
},
{
name: "Norwegian - general",
code: "no",
},
{
name: "Polish - general",
code: "pl",
},
{
name: "Portuguese - general",
code: "pt",
},
{
name: "Portuguese (Brazil)",
code: "pt-BR",
},
{
name: "Portuguese (Portugal)",
code: "pt-PT",
},
{
name: "Russian - general",
code: "ru",
},
{
name: "Spanish - general",
code: "es",
},
{
name: "Spanish (Latin America)",
code: "es-419",
},
{
name: "Swedish - general",
code: "sv",
},
{
name: "Turkish - general",
code: "tr",
},
{
name: "Ukrainian - general",
code: "uk",
},
{
name: "Flemish - general",
code: "nl-BE",
},
{
name: "Danish - general",
code: "da",
},
{
name: "Tamil - general",
code: "ta",
},
{
name: "Tamasheq - general",
code: "taq",
},
];
export default languages;
@@ -1,134 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{ name: "Afrikaans (South Africa)", code: "af-ZA" },
{ name: "Albanian (Albania)", code: "sq-AL" },
{ name: "Amharic (Ethiopia)", code: "am-ET" },
{ name: "Arabic (Algeria)", code: "ar-DZ" },
{ name: "Arabic (Bahrain)", code: "ar-BH" },
{ name: "Arabic (Egypt)", code: "ar-EG" },
{ name: "Arabic (Iraq)", code: "ar-IQ" },
{ name: "Arabic (Israel)", code: "ar-IL" },
{ name: "Arabic (Jordan)", code: "ar-JO" },
{ name: "Arabic (Kuwait)", code: "ar-KW" },
{ name: "Arabic (Lebanon)", code: "ar-LB" },
{ name: "Arabic (Morocco)", code: "ar-MA" },
{ name: "Arabic (Oman)", code: "ar-OM" },
{ name: "Arabic (Qatar)", code: "ar-QA" },
{ name: "Arabic (Saudi Arabia)", code: "ar-SA" },
{ name: "Arabic (State of Palestine)", code: "ar-PS" },
{ name: "Arabic (Tunisia)", code: "ar-TN" },
{ name: "Arabic (United Arab Emirates)", code: "ar-AE" },
{ name: "Armenian (Armenia)", code: "hy-AM" },
{ name: "Azerbaijani (Azerbaijan)", code: "az-AZ" },
{ name: "Basque (Spain)", code: "eu-ES" },
{ name: "Bengali (Bangladesh)", code: "bn-BD" },
{ name: "Bengali (India)", code: "bn-IN" },
{ name: "Bulgarian (Bulgaria)", code: "bg-BG" },
{ name: "Burmese (Myanmar)", code: "my-MM" },
{ name: "Catalan (Spain)", code: "ca-ES" },
{ name: "Chinese, Cantonese (Traditional, Hong Kong)", code: "yue-Hant-HK" },
{ name: "Chinese, Mandarin (Simplified, China)", code: "zh" },
{ name: "Chinese, Mandarin (Simplified, Hong Kong)", code: "zh-HK" },
{ name: "Chinese, Mandarin (Simplified, Taiwan)", code: "zh-TW" },
{ name: "Croatian (Croatia)", code: "hr-HR" },
{ name: "Czech (Czech Republic)", code: "cs-CZ" },
{ name: "Danish (Denmark)", code: "da-DK" },
{ name: "Dutch (Belgium)", code: "nl-BE" },
{ name: "Dutch (Netherlands)", code: "nl-NL" },
{ name: "English (Australia)", code: "en-AU" },
{ name: "English (Canada)", code: "en-CA" },
{ name: "English (Ghana)", code: "en-GH" },
{ name: "English (India)", code: "en-IN" },
{ name: "English (Ireland)", code: "en-IE" },
{ name: "English (Kenya)", code: "en-KE" },
{ name: "English (New Zealand)", code: "en-NZ" },
{ name: "English (Nigeria)", code: "en-NG" },
{ name: "English (Philippines)", code: "en-PH" },
{ name: "English (Singapore)", code: "en-SG" },
{ name: "English (South Africa)", code: "en-ZA" },
{ name: "English (Tanzania)", code: "en-TZ" },
{ name: "English (United Kingdom)", code: "en-GB" },
{ name: "English (United States)", code: "en-US" },
{ name: "Estonian (Estonia)", code: "et-EE" },
{ name: "Filipino (Philippines)", code: "fil-PH" },
{ name: "Finnish (Finland)", code: "fi-FI" },
{ name: "French (Canada)", code: "fr-CA" },
{ name: "French (France)", code: "fr-FR" },
{ name: "Galician (Spain)", code: "gl-ES" },
{ name: "Georgian (Georgia)", code: "ka-GE" },
{ name: "German (Germany)", code: "de-DE" },
{ name: "Greek (Greece)", code: "el-GR" },
{ name: "Gujarati (India)", code: "gu-IN" },
{ name: "Hebrew (Israel)", code: "he-IL" },
{ name: "Hindi (India)", code: "hi-IN" },
{ name: "Hungarian (Hungary)", code: "hu-HU" },
{ name: "Icelandic (Iceland)", code: "is-IS" },
{ name: "Indonesian (Indonesia)", code: "id-ID" },
{ name: "Italian (Italy)", code: "it-IT" },
{ name: "Japanese (Japan)", code: "ja-JP" },
{ name: "Javanese (Indonesia)", code: "jv-ID" },
{ name: "Kannada (India)", code: "kn-IN" },
{ name: "Khmer (Cambodia)", code: "km-KH" },
{ name: "Korean (South Korea)", code: "ko-KR" },
{ name: "Lao (Laos)", code: "lo-LA" },
{ name: "Latvian (Latvia)", code: "lv-LV" },
{ name: "Lithuanian (Lithuania)", code: "lt-LT" },
{ name: "Macedonian (North Macedonia)", code: "mk-MK" },
{ name: "Malay (Malaysia)", code: "ms-MY" },
{ name: "Malayalam (India)", code: "ml-IN" },
{ name: "Marathi (India)", code: "mr-IN" },
{ name: "Mongolian (Mongolia)", code: "mn-MN" },
{ name: "Nepali (Nepal)", code: "ne-NP" },
{ name: "Norwegian Bokmål (Norway)", code: "nb-NO" },
{ name: "Persian (Iran)", code: "fa-IR" },
{ name: "Polish (Poland)", code: "pl-PL" },
{ name: "Portuguese (Brazil)", code: "pt-BR" },
{ name: "Portuguese (Portugal)", code: "pt-PT" },
{ name: "Punjabi (Gurmukhi, India)", code: "pa-guru-IN" },
{ name: "Romanian (Romania)", code: "ro-RO" },
{ name: "Russian (Russia)", code: "ru-RU" },
{ name: "Serbian (Serbia)", code: "sr-RS" },
{ name: "Sinhala (Sri Lanka)", code: "si-LK" },
{ name: "Slovak (Slovakia)", code: "sk-SK" },
{ name: "Slovenian (Slovenia)", code: "sl-SI" },
{ name: "Spanish (Argentina)", code: "es-AR" },
{ name: "Spanish (Bolivia)", code: "es-BO" },
{ name: "Spanish (Chile)", code: "es-CL" },
{ name: "Spanish (Colombia)", code: "es-CO" },
{ name: "Spanish (Costa Rica)", code: "es-CR" },
{ name: "Spanish (Dominican Republic)", code: "es-DO" },
{ name: "Spanish (Ecuador)", code: "es-EC" },
{ name: "Spanish (El Salvador)", code: "es-SV" },
{ name: "Spanish (Guatemala)", code: "es-GT" },
{ name: "Spanish (Honduras)", code: "es-HN" },
{ name: "Spanish (Mexico)", code: "es-MX" },
{ name: "Spanish (Nicaragua)", code: "es-NI" },
{ name: "Spanish (Panama)", code: "es-PA" },
{ name: "Spanish (Paraguay)", code: "es-PY" },
{ name: "Spanish (Peru)", code: "es-PE" },
{ name: "Spanish (Puerto Rico)", code: "es-PR" },
{ name: "Spanish (Spain)", code: "es-ES" },
{ name: "Spanish (United States)", code: "es-US" },
{ name: "Spanish (Uruguay)", code: "es-UY" },
{ name: "Spanish (Venezuela)", code: "es-VE" },
{ name: "Sundanese (Indonesia)", code: "su-ID" },
{ name: "Swahili (Kenya)", code: "sw-KE" },
{ name: "Swahili (Tanzania)", code: "sw-TZ" },
{ name: "Swedish (Sweden)", code: "sv-SE" },
{ name: "Tamil (India)", code: "ta-IN" },
{ name: "Tamil (Malaysia)", code: "ta-MY" },
{ name: "Tamil (Singapore)", code: "ta-SG" },
{ name: "Tamil (Sri Lanka)", code: "ta-LK" },
{ name: "Telugu (India)", code: "te-IN" },
{ name: "Thai (Thailand)", code: "th-TH" },
{ name: "Turkish (Turkey)", code: "tr-TR" },
{ name: "Ukrainian (Ukraine)", code: "uk-UA" },
{ name: "Urdu (India)", code: "ur-IN" },
{ name: "Urdu (Pakistan)", code: "ur-PK" },
{ name: "Uzbek (Uzbekistan)", code: "uz-UZ" },
{ name: "Vietnamese (Vietnam)", code: "vi-VN" },
{ name: "Zulu (South Africa)", code: "zu-ZA" },
];
export default languages;
@@ -1,86 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{
name: "Arabic (Modern Standard)",
code: "ar-MS_Telephony",
},
{
name: "Chinese (Mandarin)",
code: "zh-CN_Telephony",
},
{
name: "Czech ",
code: "cs-CZ_Telephony",
},
{
name: "Dutch (Belgian)",
code: "nl-BE_Telephony",
},
{
name: "Dutch (Netherlands)",
code: "nl-NL_Telephony",
},
{
name: "English (all supported dialects)",
code: "en-WW_Medical_Telephony",
},
{
name: "English (Australian)",
code: "en-AU_Telephony",
},
{
name: "English (Indian)",
code: "en-IN_Telephony",
},
{
name: "English (United Kingdom)",
code: "en-GB_Telephony",
},
{
name: "English (United States)",
code: "en-US_Telephony",
},
{
name: "French (Canadian)",
code: "fr-CA_Telephony",
},
{
name: "French (France)",
code: "fr-FR_Telephony",
},
{
name: "German",
code: "de-DE_Telephony",
},
{
name: "Hindi (Indian)",
code: "hi-IN_Telephony",
},
{
name: "Italian",
code: "it-IT_Telephony",
},
{
name: "Korean",
code: "ko-KR_Telephony",
},
{
name: "Portuguese (Brazilian)",
code: "pt-BR_Telephony",
},
{
name: "Spanish (Mexican)",
code: "es-LA_Telephony",
},
{
name: "Spanish (Castilian)",
code: "es-ES_Telephony",
},
{
name: "Swedish ",
code: "sv-SE_Telephony",
},
];
export default languages;
@@ -1,494 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{
name: "Afrikaans (South Africa)",
code: "af-ZA",
},
{
name: "Amharic (Ethiopia)",
code: "am-ET",
},
{
name: "Arabic (Algeria)",
code: "ar-DZ",
},
{
name: "Arabic (Bahrain)",
code: "ar-BH",
},
{
name: "Arabic (Egypt)",
code: "ar-EG",
},
{
name: "Arabic (Iraq)",
code: "ar-IQ",
},
{
name: "Arabic (Israel)",
code: "ar-IL",
},
{
name: "Arabic (Jordan)",
code: "ar-JO",
},
{
name: "Arabic (Kuwait)",
code: "ar-KW",
},
{
name: "Arabic (Lebanon)",
code: "ar-LB",
},
{
name: "Arabic (Libya)",
code: "ar-LY",
},
{
name: "Arabic (Morocco)",
code: "ar-MA",
},
{
name: "Arabic (Oman)",
code: "ar-OM",
},
{
name: "Arabic (Qatar)",
code: "ar-QA",
},
{
name: "Arabic (Saudi Arabia)",
code: "ar-SA",
},
{
name: "Arabic (Palestinian Authority)",
code: "ar-PS",
},
{
name: "Arabic (Syria)",
code: "ar-SY",
},
{
name: "Arabic (Tunisia)",
code: "ar-TN",
},
{
name: "Arabic (United Arab Emirates)",
code: "ar-AE",
},
{
name: "Arabic (Yemen)",
code: "ar-YE",
},
{
name: "Bulgarian (Bulgaria)",
code: "bg-BG",
},
{
name: "Bengali (India)",
code: "bn-IN",
},
{
name: "Catalan (Spain)",
code: "ca-ES",
},
{
name: "Chinese (Cantonese, Traditional)",
code: "zh-HK",
},
{
name: "Chinese (Mandarin, Simplified)",
code: "zh-CN",
},
{
name: "Chinese (Taiwanese Mandarin)",
code: "zh-TW",
},
{
name: "Croatian (Croatia)",
code: "hr-HR",
},
{
name: "Czech (Czech)",
code: "cs-CZ",
},
{
name: "Danish (Denmark)",
code: "da-DK",
},
{
name: "Dutch (Netherlands)",
code: "nl-NL",
},
{
name: "Dutch (Belgium)",
code: "nl-BE",
},
{
name: "English (Australia)",
code: "en-AU",
},
{
name: "English (Canada)",
code: "en-CA",
},
{
name: "English (Ghana)",
code: "en-GH",
},
{
name: "English (Hong Kong)",
code: "en-HK",
},
{
name: "English (India)",
code: "en-IN",
},
{
name: "English (Ireland)",
code: "en-IE",
},
{
name: "English (Kenya)",
code: "en-KE",
},
{
name: "English (New Zealand)",
code: "en-NZ",
},
{
name: "English (Nigeria)",
code: "en-NG",
},
{
name: "English (Philippines)",
code: "en-PH",
},
{
name: "English (Singapore)",
code: "en-SG",
},
{
name: "English (South Africa)",
code: "en-ZA",
},
{
name: "English (Tanzania)",
code: "en-TZ",
},
{
name: "English (United Kingdom)",
code: "en-GB",
},
{
name: "English (United States)",
code: "en-US",
},
{
name: "Estonian(Estonia)",
code: "et-EE",
},
{
name: "Filipino (Philippines)",
code: "fil-PH",
},
{
name: "Finnish (Finland)",
code: "fi-FI",
},
{
name: "French (Belgium)",
code: "fr-BE",
},
{
name: "French (Canada)",
code: "fr-CA",
},
{
name: "French (France)",
code: "fr-FR",
},
{
name: "French (Switzerland)",
code: "fr-CH",
},
{
name: "German (Austria)",
code: "de-AT",
},
{
name: "German (Switzerland)",
code: "de-CH",
},
{
name: "German (Germany)",
code: "de-DE",
},
{
name: "Greek (Greece)",
code: "el-GR",
},
{
name: "Gujarati (Indian)",
code: "gu-IN",
},
{
name: "Hebrew (Israel)",
code: "he-IL",
},
{
name: "Hindi (India)",
code: "hi-IN",
},
{
name: "Hungarian (Hungary)",
code: "hu-HU",
},
{
name: "Indonesian (Indonesia)",
code: "id-ID",
},
{
name: "Icelandic (Iceland)",
code: "is-IS",
},
{
name: "Irish (Ireland)",
code: "ga-IE",
},
{
name: "Italian (Italy)",
code: "it-IT",
},
{
name: "Japanese (Japan)",
code: "ja-JP",
},
{
name: "Javanese (Indonesia)",
code: "jv-ID",
},
{
name: "Kannada (India)",
code: "kn-IN",
},
{
name: "Khmer (Cambodia)",
code: "km-KH",
},
{
name: "Korean (Korea)",
code: "ko-KR",
},
{
name: "Latvian (Latvia)",
code: "lv-LV",
},
{
name: "Lao (Laos)",
code: "lo-LA",
},
{
name: "Lithuanian (Lithuania)",
code: "lt-LT",
},
{
name: "Malay (Malaysia)",
code: "ms-MY",
},
{
name: "Macedonian (North Macedonia)",
code: "mk-MK",
},
{
name: "Maltese (Malta)",
code: "mt-MT",
},
{
name: "Marathi (India)",
code: "mr-IN",
},
{
name: "Burmese (Myanmar)",
code: "my-MM",
},
{
name: "Norwegian (Bokmål, Norway)",
code: "nb-NO",
},
{
name: "Persian (Iran)",
code: "fa-IR",
},
{
name: "Polish (Poland)",
code: "pl-PL",
},
{
name: "Portuguese (Brazil)",
code: "pt-BR",
},
{
name: "Portuguese (Portugal)",
code: "pt-PT",
},
{
name: "Romanian (Romania)",
code: "ro-RO",
},
{
name: "Russian (Russia)",
code: "ru-RU",
},
{
name: "Slovak (Slovakia)",
code: "sk-SK",
},
{
name: "Slovenian (Slovenia)",
code: "sl-SI",
},
{
name: "Spanish (Argentina)",
code: "es-AR",
},
{
name: "Spanish (Bolivia)",
code: "es-BO",
},
{
name: "Spanish (Chile)",
code: "es-CL",
},
{
name: "Spanish (Colombia)",
code: "es-CO",
},
{
name: "Spanish (Costa Rica)",
code: "es-CR",
},
{
name: "Spanish (Cuba)",
code: "es-CU",
},
{
name: "Spanish (Dominican Republic)",
code: "es-DO",
},
{
name: "Spanish (Ecuador)",
code: "es-EC",
},
{
name: "Spanish (El Salvador)",
code: "es-SV",
},
{
name: "Spanish (Equatorial Guinea)",
code: "es-GQ",
},
{
name: "Spanish (Guatemala)",
code: "es-GT",
},
{
name: "Spanish (Honduras)",
code: "es-HN",
},
{
name: "Spanish (Mexico)",
code: "es-MX",
},
{
name: "Spanish (Nicaragua)",
code: "es-NI",
},
{
name: "Spanish (Panama)",
code: "es-PA",
},
{
name: "Spanish (Paraguay)",
code: "es-PY",
},
{
name: "Spanish (Peru)",
code: "es-PE",
},
{
name: "Spanish (Puerto Rico)",
code: "es-PR",
},
{
name: "Spanish (Spain)",
code: "es-ES",
},
{
name: "Spanish (Uruguay)",
code: "es-UY",
},
{
name: "Spanish (USA)",
code: "es-US",
},
{
name: "Spanish (Venezuela)",
code: "es-VE",
},
{
name: "Swahili (Kenya)",
code: "sw-KE",
},
{
name: "Swahili (Tanzania)",
code: "sw-TZ",
},
{
name: "Sinhala (Sri Lanka)",
code: "si-LK",
},
{
name: "Swedish (Sweden)",
code: "sv-SE",
},
{
name: "Serbian (Serbia)",
code: "sr-RS",
},
{
name: "Tamil (India)",
code: "ta-IN",
},
{
name: "Telugu (India)",
code: "te-IN",
},
{
name: "Thai (Thailand)",
code: "th-TH",
},
{
name: "Turkish (Turkey)",
code: "tr-TR",
},
{
name: "Ukrainian (Ukraine)",
code: "uk-UA",
},
{
name: "Uzbek (Uzbekistan)",
code: "uz-UZ",
},
{
name: "Zulu (South Africa)",
code: "zu-ZA",
},
{
name: "Vietnamese (Vietnam)",
code: "vi-VN",
},
];
export default languages;
@@ -1,211 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{
name: "Arabic (Worldwide)",
code: "ar-WW",
codeMix: "ara-XWW",
},
{
name: "Catalan (Spain)",
code: "ca-ES",
codeMix: "cat-ESP",
},
{
name: "Croatian (Croatia)",
code: "hr-HR",
codeMix: "hrv-HRV",
},
{
name: "Czech (Czech Republic)",
code: "cs-CZ",
codeMix: "ces-CZE",
},
{
name: "Danish (Denmark)",
code: "da-DK",
codeMix: "dan-DNK",
},
{
name: "Dutch (Netherlands)",
code: "nl-NL",
codeMix: "nld-NLD",
},
{
name: "English (Australia)",
code: "en-AU",
codeMix: "eng-AUS",
},
{
name: "English (United States)",
code: "en-US",
codeMix: "eng-USA",
},
{
name: "English (India)",
code: "en-IN",
codeMix: "eng-IND",
},
{
name: "English (United Kingdom)",
code: "en-GB",
codeMix: "eng-GBR",
},
{
name: "Finnish (Finland)",
code: "fi-FI",
codeMix: "fin-FIN",
},
{
name: "French (Canada)",
code: "fr-CA",
codeMix: "fra-CAN",
},
{
name: "French (France)",
code: "fr-FR",
codeMix: "fra-FRA",
},
{
name: "German (Germany)",
code: "de-DE",
codeMix: "deu-DEU",
},
{
name: "Greek (Greece)",
code: "el-GR",
codeMix: "ell-GRC",
},
{
name: "Hebrew (Israel)",
code: "he-IL",
codeMix: "heb-ISR",
},
{
name: "Hindi (India)",
code: "hi-IN",
codeMix: "hin-IND",
},
{
name: "Hungarian (Hungary)",
code: "hu-HU",
codeMix: "hun-HUN",
},
{
name: "Indonesian (Indonesia)",
code: "id-ID",
codeMix: "ind-IDN",
},
{
name: "Italian (Italy)",
code: "it-IT",
codeMix: "ita-ITA",
},
{
name: "Japanese (Japan)",
code: "ja-JP",
codeMix: "jpn-JPN",
},
{
name: "Korean (South Korea)",
code: "ko-KR",
codeMix: "kor-KOR",
},
{
name: "Malay (Malaysia)",
code: "ms-MY",
codeMix: "zlm-MYS",
},
{
name: "Norwegian (Norway)",
code: "no-NO",
codeMix: "nor-NOR",
},
{
name: "Polish (Poland)",
code: "pl-PL",
codeMix: "pol-POL",
},
{
name: "Portuguese (Brazil)",
code: "pt-BR",
codeMix: "por-BRA",
},
{
name: "Portuguese (Portugal)",
code: "pt-PT",
codeMix: "por-PRT",
},
{
name: "Romanian (Romania)",
code: "ro-RO",
codeMix: "ron-ROU",
},
{
name: "Russian (Russia)",
code: "ru-RU",
codeMix: "rus-RUS",
},
{
name: "Shanghainese (China)",
code: "zh-WU",
codeMix: "wuu-CHN",
},
{
name: "Mandarin (China)",
code: "zh-CN",
codeMix: "cmn-CHN",
},
{
name: "Slovak (Slovakia)",
code: "sk-SK",
codeMix: "slk-SVK",
},
{
name: "Spanish (Spain)",
code: "es-ES",
codeMix: "spa-ESP",
},
{
name: "Spanish (Latin America)",
code: "es-US",
codeMix: "spa-XLA",
},
{
name: "Swedish (Sweden)",
code: "sv-SE",
codeMix: "swe-SWE",
},
{
name: "Thai (Thailand)",
code: "th-TH",
codeMix: "tha-THA",
},
{
name: "Cantonese (Hong Kong)",
code: "cn-HK",
codeMix: "yue-CHS",
},
{
name: "Mandarin (Taiwan)",
code: "zh-TW",
codeMix: "cmn-TWN",
},
{
name: "Turkish (Turkey)",
code: "tr-TR",
codeMix: "tur-TUR",
},
{
name: "Ukrainian (Ukraine)",
code: "uk-UA",
codeMix: "ukr-UKR",
},
{
name: "Vietnamese (Vietnam)",
code: "vi-VN",
codeMix: "vie-VNM",
},
];
export default languages;
@@ -1,62 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{
name: "Arabic",
code: "ar-AR",
},
{
name: "English",
code: "en-US",
},
{
name: "English - GB",
code: "en-GB",
},
{
name: "Spanish - US",
code: "es-US",
},
{
name: "Spanish",
code: "es-ES",
},
{
name: "German",
code: "de-DE",
},
{
name: "French",
code: "fr-FR",
},
{
name: "Hindi",
code: "hi-IN",
},
{
name: "Russian",
code: "ru-RU",
},
{
name: "Korean",
code: "ko-KR",
},
{
name: "Brazilian-Portuguese",
code: "pt-BR",
},
{
name: "Japanese",
code: "ja-JP",
},
{
name: "Italian",
code: "it-IT",
},
{
name: "Mandarin",
code: "zh-CN",
},
];
export default languages;
@@ -1,10 +0,0 @@
import type { Language } from "../types";
export const languages: Language[] = [
{
name: "English (United States)",
code: "en-US",
},
];
export default languages;
-217
View File
@@ -1,217 +0,0 @@
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [
{
code: "arb",
name: "Arabic",
voices: [{ value: "Zeina", name: "Zeina (Female)" }],
},
{
code: "cmn-CN",
name: "Chinese, Mandarin",
voices: [{ value: "Zhiyu", name: "Zhiyu (Female)" }],
},
{
code: "da-DK",
name: "Danish",
voices: [
{ value: "Naja", name: "Naja (Female)" },
{ value: "Mads", name: "Mads (Male)" },
],
},
{
code: "nl-NL",
name: "Dutch",
voices: [
{ value: "Lotte", name: "Lotte (Female)" },
{ value: "Ruben", name: "Ruben (Male)" },
],
},
{
code: "en-AU",
name: "English (Australian)",
voices: [
{ value: "Nicole", name: "Nicole (Female)" },
{ value: "Russell", name: "Russell (Male)" },
],
},
{
code: "en-GB",
name: "English (British)",
voices: [
{ value: "Amy", name: "Amy (Female)" },
{ value: "Emma", name: "Emma (Female)" },
{ value: "Brian", name: "Brian (Male)" },
],
},
{
code: "en-IN",
name: "English (Indian)",
voices: [
{ value: "Aditi", name: "Aditi (Female)" },
{ value: "Raveena", name: "Raveena (Female)" },
],
},
{
code: "en-US",
name: "English (US)",
voices: [
{ value: "Joanna", name: "Joanna (Female)" },
{ value: "Kendra", name: "Kendra (Female)" },
{ value: "Kimberly", name: "Kimberly (Female)" },
{ value: "Ivy", name: "Ivy (Female child)" },
{ value: "Salli", name: "Salli (Female)" },
{ value: "Joey", name: "Joey (Male)" },
{ value: "Matthew", name: "Matthew (Male)" },
{ value: "Justin", name: "Justin (Male child)" },
],
},
{
code: "en-GB-WLS",
name: "English (Welsh)",
voices: [{ value: "Geraint", name: "Geraint (Male)" }],
},
{
code: "fr-FR",
name: "French",
voices: [
{ value: "Celine", name: "Céline (Female)" },
{ value: "Lea", name: "Léa (Female)" },
{ value: "Mathieu", name: "Mathieu (Male)" },
],
},
{
code: "fr-CA",
name: "French (Canadian)",
voices: [{ value: "Chantal", name: "Chantal (Female)" }],
},
{
code: "de-DE",
name: "German",
voices: [
{ value: "Marlene", name: "Marlene (Female)" },
{ value: "Vicki", name: "Vicki (Female)" },
{ value: "Hans", name: "Hans (Male)" },
],
},
{
code: "hi-IN",
name: "Hindi",
voices: [{ value: "Aditi", name: "Aditi (Female)" }],
},
{
code: "is-IS",
name: "Icelandic",
voices: [
{ value: "Dora", name: "Dóra (Female)" },
{ value: "Karl", name: "Karl (Male)" },
],
},
{
code: "it-IT",
name: "Italian",
voices: [
{ value: "Carla", name: "Carla (Female)" },
{ value: "Bianca", name: "Bianca (Female)" },
{ value: "Giorgio", name: "Giorgio (Male)" },
],
},
{
code: "ja-JP",
name: "Japanese",
voices: [
{ value: "Mizuki", name: "Mizuki (Female)" },
{ value: "Takumi", name: "Takumi (Male)" },
],
},
{
code: "ko-KR",
name: "Korean",
voices: [{ value: "Seoyeon", name: "Seoyeon (Female)" }],
},
{
code: "nb-NO",
name: "Norwegian",
voices: [{ value: "Liv", name: "Liv (Female)" }],
},
{
code: "pl-PL",
name: "Polish",
voices: [
{ value: "Ewa", name: "Ewa (Female)" },
{ value: "Maja", name: "Maja (Female)" },
{ value: "Jacek", name: "Jacek (Male)" },
{ value: "Jan", name: "Jan (Male)" },
],
},
{
code: "pt-BR",
name: "Portuguese (Brazilian)",
voices: [
{ value: "Camila", name: "Camila (Female)" },
{ value: "Vitoria", name: "Vitória (Female)" },
{ value: "Ricardo", name: "Ricardo (Male)" },
],
},
{
code: "pt-PT",
name: "Portuguese (European)",
voices: [
{ value: "Ines", name: "Inês (Female)" },
{ value: "Cristiano", name: "Cristiano (Male)" },
],
},
{
code: "ro-RO",
name: "Romanian",
voices: [{ value: "Carmen", name: "Carmen (Female)" }],
},
{
code: "ru-RU",
name: "Russian",
voices: [
{ value: "Tatyana", name: "Tatyana (Female)" },
{ value: "Maxim", name: "Maxim (Male)" },
],
},
{
code: "es-ES",
name: "Spanish (European)",
voices: [
{ value: "Conchita", name: "Conchita (Female)" },
{ value: "Lucia", name: "Lucia (Female)" },
{ value: "Enrique", name: "Enrique (Male)" },
],
},
{
code: "es-MX",
name: "Spanish (Mexican)",
voices: [{ value: "Mia", name: "Mia (Female)" }],
},
{
code: "es-US",
name: "Spanish (US)",
voices: [
{ value: "Lupe", name: "Lupe (Female)" },
{ value: "Penelope", name: "Penélope (Female)" },
{ value: "Miguel", name: "Miguel (Male)" },
],
},
{
code: "sv-SE",
name: "Swedish",
voices: [{ value: "Astrid", name: "Astrid (Female)" }],
},
{
code: "tr-TR",
name: "Turkish",
voices: [{ value: "Filiz", name: "Filiz (Female)" }],
},
{
code: "cy-GB",
name: "Welsh",
voices: [{ value: "Gwyneth", name: "Gwyneth (Female)" }],
},
];
export default languages;
@@ -1,196 +0,0 @@
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [
{
code: "ar",
name: "Arabic",
voices: [
{
value: "pNInz6obpgDQGcFmaJgB",
name: "Adam - american, deep, middle aged, male, narration",
},
{
value: "ErXwobaYiN019PkySvjV",
name: "Antoni - american, well-rounded, young, male, narration",
},
{
value: "VR6AewLTigWG4xSOukaG",
name: "Arnold - american, crisp, middle aged, male, narration",
},
{
value: "EXAVITQu4vr4xnSDxMaL",
name: "Bella - american, soft, young, female, narration",
},
{
value: "N2lVS1w4EtoT3dr4eOWO",
name: "Callum - american, hoarse, middle aged, male, video games",
},
{
value: "IKne3meq5aSn9XLyUdCD",
name: "Charlie - australian, casual, middle aged, male, conversational",
},
{
value: "XB0fDUnXU5powFXDhCwa",
name: "Charlotte - english-swedish, seductive, middle aged, female, video games",
},
{
value: "2EiwWnXFnvU5JabPnv8n",
name: "Clyde - american, war veteran, middle aged, male, video games",
},
{
value: "onwK4e9ZLuTAKqWW03F9",
name: "Daniel - british, deep, middle aged, male, news presenter",
},
{
value: "CYw3kZ02Hs0563khs1Fj",
name: "Dave - british-essex, conversational, young, male, video games",
},
{
value: "AZnzlk1XvdvUeBnXmlld",
name: "Domi - american, strong, young, female, narration",
},
{
value: "ThT5KcBeYPX3keUQqHPh",
name: "Dorothy - british, pleasant, young, female, children's stories",
},
{
value: "MF3mGyEYCl7XYWbV9V6O",
name: "Elli - american, emotional, young, female, narration",
},
{
value: "LcfcDJNUP1GQjkzn1xUU",
name: "Emily - american, calm, young, female, meditation",
},
{
value: "g5CIjZEefAph4nQFvHAz",
name: "Ethan - american, undefined, young, male, ASMR",
},
{
value: "D38z5RcWu1voky8WS1ja",
name: "Fin - irish, sailor, old, male, video games",
},
{
value: "jsCqWAovK2LkecY7zXl4",
name: "Freya - american, undefined, young, female, undefined",
},
{
value: "jBpfuIE2acCO8z3wKNLl",
name: "Gigi - american, childlish, young, female, animation",
},
{
value: "zcAOhNBS3c14rBihAFp1",
name: "Giovanni - english-italian, foreigner, young, male, audiobook",
},
{
value: "z9fAnlkpzviPz146aGWa",
name: "Glinda - american, witch, middle aged, female, video games",
},
{
value: "oWAxZDx7w5VEj9dCyTzz",
name: "Grace - american-southern, undefined, young, female, audiobook ",
},
{
value: "SOYHLrjzK2X1ezoPC6cr",
name: "Harry - american, anxious, young, male, video games",
},
{
value: "ZQe5CZNOzWyzPSCn5a3c",
name: "James - australian, calm , old, male, news",
},
{
value: "bVMeCyTHy58xNoL34h3p",
name: "Jeremy - american-irish, excited, young, male, narration",
},
{
value: "t0jbNlBVZ17f02VDIeMI",
name: "Jessie - american, raspy , old, male, video games",
},
{
value: "Zlb1dXrM653N07WRdFW3",
name: "Joseph - british, undefined, middle aged, male, news",
},
{
value: "TxGEqnHWrfWFTfGW9XjX",
name: "Josh - american, deep, young, male, narration",
},
{
value: "TX3LPaxmHKxFdv7VOQHJ",
name: "Liam - american, undefined, young, male, narration",
},
{
value: "XrExE9yKIg1WjnnlVkGX",
name: "Matilda - american, warm, young, female, audiobook",
},
{
value: "Yko7PKHZNXotIFUBG7I9",
name: "Matthew - british, undefined, middle aged, male, audiobook",
},
{
value: "flq6f7yk4E4fJM5XTYuZ",
name: "Michael - american, undefined, old, male, audiobook",
},
{
value: "zrHiDhphv9ZnVXBqCLjz",
name: "Mimi - english-swedish, childish, young, female, animation",
},
{
value: "piTKgcLEGmPE4e6mEKli",
name: "Nicole - american, whisper, young, female, audiobook",
},
{
value: "ODq5zmih8GrVes37Dizd",
name: "Patrick - american, shouty, middle aged, male, video games",
},
{
value: "21m00Tcm4TlvDq8ikWAM",
name: "Rachel - american, calm, young, female, narration",
},
{
value: "wViXBPUzp2ZZixB1xQuM",
name: "Ryan - american, soldier, middle aged, male, audiobook",
},
{
value: "yoZ06aMxZJJ28mfd3POQ",
name: "Sam - american, raspy, young, male, narration",
},
{
value: "pMsXgVXv3BLzUgSXRplE",
name: "Serena - american, pleasant, middle aged, female, interactive",
},
{
value: "GBv7mTt0atIp3Br8iCZE",
name: "Thomas - american, calm, young, male, meditation",
},
],
},
{ code: "bg", name: "Bulgarian", voices: [] },
{ code: "zh", name: "Chinese", voices: [] },
{ code: "hr", name: "Croatian", voices: [] },
{ code: "cs", name: "Czech", voices: [] },
{ code: "da", name: "Danish", voices: [] },
{ code: "nl", name: "Dutch", voices: [] },
{ code: "en", name: "English", voices: [] },
{ code: "fil", name: "Filipino", voices: [] },
{ code: "fi", name: "Finnish", voices: [] },
{ code: "fr", name: "French", voices: [] },
{ code: "de", name: "German", voices: [] },
{ code: "el", name: "Greek", voices: [] },
{ code: "hi", name: "Hindi", voices: [] },
{ code: "id", name: "Indonesian", voices: [] },
{ code: "it", name: "Italian", voices: [] },
{ code: "ja", name: "Japanese", voices: [] },
{ code: "ko", name: "Korean", voices: [] },
{ code: "ms", name: "Malay", voices: [] },
{ code: "pl", name: "Polish", voices: [] },
{ code: "pt", name: "Portuguese", voices: [] },
{ code: "ro", name: "Romanian", voices: [] },
{ code: "ru", name: "Russian", voices: [] },
{ code: "sk", name: "Slovak", voices: [] },
{ code: "es", name: "Spanish", voices: [] },
{ code: "sv", name: "Swedish", voices: [] },
{ code: "ta", name: "Tamil", voices: [] },
{ code: "tr", name: "Turkish", voices: [] },
{ code: "uk", name: "Ukrainian", voices: [] },
];
export default languages;
@@ -1,800 +0,0 @@
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [
{
code: "ar-XA",
name: "Arabic",
voices: [
{ value: "ar-XA-Standard-A", name: "Standard-A (Female)" },
{ value: "ar-XA-Standard-B", name: "Standard-B (Male)" },
{ value: "ar-XA-Standard-C", name: "Standard-C (Male)" },
{ value: "ar-XA-Standard-D", name: "Standard-D (Female)" },
{ value: "ar-XA-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "ar-XA-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "ar-XA-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "ar-XA-Wavenet-D", name: "Wavenet-D (Female)" },
],
},
{
code: "af-ZA",
name: "Afrikaans (South Africa)",
voices: [{ value: "af-ZA-Standard-A", name: "Standard-A (Female)" }],
},
{
code: "bn-IN",
name: "Bengali (India)",
voices: [
{ value: "bn-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "bn-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "bn-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "bn-IN-Wavenet-B", name: "Wavenet-B (Male)" },
],
},
{
code: "bg-BG",
name: "Bulgarian (Bulgaria)",
voices: [{ value: "bg-BG-Standard-A", name: "Standard-A (Female)" }],
},
{
code: "ca-ES",
name: "Catalan (Spain)",
voices: [{ value: "ca-ES-Standard-A", name: "Standard-A (Female)" }],
},
{
code: "cs-CZ",
name: "Czech (Czech Republic)",
voices: [
{ value: "cs-CZ-Standard-A", name: "Standard-A (Female)" },
{ value: "cs-CZ-Wavenet-A", name: "Wavenet-A (Female)" },
],
},
{
code: "da-DK",
name: "Danish (Denmark)",
voices: [
{ value: "da-DK-Standard-A", name: "Standard-A (Female)" },
{ value: "da-DK-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "da-DK-Neural2-D", name: "Neural2-D (Female)" },
{ value: "da-DK-Neural2-F", name: "Neural2-F (Male)" },
{ value: "da-DK-Standard-C", name: "Standard-C (Male)" },
{ value: "da-DK-Standard-D", name: "Standard-D (Female)" },
{ value: "da-DK-Standard-E", name: "Standard-E (Female)" },
{ value: "da-DK-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "da-DK-Wavenet-D", name: "Wavenet-D (Female)" },
{ value: "da-DK-Wavenet-E", name: "Wavenet-E (Female)" },
],
},
{
code: "eu-ES",
name: "Basque (Spain)",
voices: [{ value: "eu-ES-Standard-A", name: "Standard-A (Female)" }],
},
{
code: "nl-NL",
name: "Dutch (Netherlands)",
voices: [
{ value: "nl-NL-Standard-A", name: "Standard-A (Female)" },
{ value: "nl-NL-Standard-B", name: "Standard-B (Male)" },
{ value: "nl-NL-Standard-C", name: "Standard-C (Male)" },
{ value: "nl-NL-Standard-D", name: "Standard-D (Female)" },
{ value: "nl-NL-Standard-E", name: "Standard-E (Female)" },
{ value: "nl-NL-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "nl-NL-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "nl-NL-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "nl-NL-Wavenet-D", name: "Wavenet-D (Female)" },
{ value: "nl-NL-Wavenet-E", name: "Wavenet-E (Female)" },
],
},
{
code: "en-AU",
name: "English (Australia)",
voices: [
{ value: "en-AU-Standard-A", name: "Standard-A (Female)" },
{ value: "en-AU-Standard-B", name: "Standard-B (Male)" },
{ value: "en-AU-Standard-C", name: "Standard-C (Female)" },
{ value: "en-AU-Standard-D", name: "Standard-D (Male)" },
{ value: "en-AU-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "en-AU-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "en-AU-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "en-AU-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "en-AU-Neural2-A", name: "Neural2-A (Female)" },
{ value: "en-AU-Neural2-B", name: "Neural2-B (Male)" },
{ value: "en-AU-Neural2-C", name: "Neural2-C (Female)" },
{ value: "en-AU-Neural2-D", name: "Neural2-D (Male)" },
{ value: "en-AU-Polyglot-1", name: "Polyglot-1 (Male)" },
{ value: "en-AU-News-E", name: "News-E (Female)" },
{ value: "en-AU-News-F", name: "News-F (Female)" },
{ value: "en-AU-News-G", name: "News-G (Male)" },
],
},
{
code: "en-IN",
name: "English (India)",
voices: [
{ value: "en-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "en-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "en-IN-Standard-C", name: "Standard-C (Male)" },
{ value: "en-IN-Standard-D", name: "Standard-D (Female)" },
{ value: "en-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "en-IN-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "en-IN-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "en-IN-Wavenet-D", name: "Wavenet-D (Female)" },
{ value: "en-IN-Neural2-A", name: "Neural2-A (Female)" },
{ value: "en-IN-Neural2-B", name: "Neural2-B (Male)" },
{ value: "en-IN-Neural2-C", name: "Neural2-C (Male)" },
{ value: "en-IN-Neural2-D", name: "Neural2-D (Female)" },
],
},
{
code: "en-GB",
name: "English (UK)",
voices: [
{ value: "en-GB-Standard-A", name: "Standard-A (Female)" },
{ value: "en-GB-Standard-B", name: "Standard-B (Male)" },
{ value: "en-GB-Standard-C", name: "Standard-C (Female)" },
{ value: "en-GB-Standard-D", name: "Standard-D (Male)" },
{ value: "en-GB-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "en-GB-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "en-GB-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "en-GB-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "en-GB-Neural2-A", name: "Neural2-A (Female)" },
{ value: "en-GB-Neural2-B", name: "Neural2-B (Male)" },
{ value: "en-GB-Neural2-C", name: "Neural2-C (Female)" },
{ value: "en-GB-Neural2-D", name: "Neural2-D (Male)" },
{ value: "en-GB-Neural2-F", name: "Neural2-F (Female)" },
{ value: "en-GB-News-G", name: "News-G (Female)" },
{ value: "en-GB-News-H", name: "News-H (Female)" },
{ value: "en-GB-News-I", name: "News-I (Female)" },
{ value: "en-GB-News-J", name: "News-J (Male)" },
{ value: "en-GB-News-K", name: "News-K (Male)" },
{ value: "en-GB-News-L", name: "News-L (Male)" },
{ value: "en-GB-News-M", name: "News-M (Male)" },
{ value: "en-GB-Studio-B", name: "Studio-B (Male)" },
{ value: "en-GB-Studio-C", name: "Studio-C (Female)" },
{ value: "en-GB-Wavenet-F", name: "Wavenet-F (Female)" },
{ value: "en-GB-Standard-F", name: "Standard-F (Female)" },
],
},
{
code: "en-US",
name: "English (US)",
voices: [
{ value: "en-US-Standard-B", name: "Standard-B (Male)" },
{ value: "en-US-Standard-C", name: "Standard-C (Female)" },
{ value: "en-US-Standard-D", name: "Standard-D (Male)" },
{ value: "en-US-Standard-E", name: "Standard-E (Female)" },
{ value: "en-US-Wavenet-A", name: "Wavenet-A (Male)" },
{ value: "en-US-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "en-US-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "en-US-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "en-US-Wavenet-E", name: "Wavenet-E (Female)" },
{ value: "en-US-Wavenet-F", name: "Wavenet-F (Female)" },
{ value: "en-US-Neural2-A", name: "Neural2-A (Male)" },
{ value: "en-US-Neural2-C", name: "Neural2-C (Female)" },
{ value: "en-US-Neural2-D", name: "Neural2-D (Male)" },
{ value: "en-US-Neural2-E", name: "Neural2-E (Female)" },
{ value: "en-US-Neural2-F", name: "Neural2-F (Female)" },
{ value: "en-US-Neural2-G", name: "Neural2-G (Female)" },
{ value: "en-US-Neural2-H", name: "Neural2-H (Female)" },
{ value: "en-US-Neural2-I", name: "Neural2-I (Male)" },
{ value: "en-US-Neural2-J", name: "Neural2-J (Male)" },
{ value: "en-US-Studio-M", name: "Studio-M (Male)" },
{ value: "en-US-Studio-O", name: "Studio-M (Female)" },
{ value: "en-US-Polyglot-1", name: "Polyglot-1 (Male)" },
{ value: "en-US-News-K", name: "News-K (Female)" },
{ value: "en-US-News-L", name: "News-L (Female)" },
{ value: "en-US-News-M", name: "News-M (Male)" },
{ value: "en-US-News-N", name: "News-N (Male)" },
{ value: "en-US-Standard-A", name: "Standard-A (Male)" },
{ value: "en-US-Standard-F", name: "Standard-F (Female)" },
{ value: "en-US-Standard-G", name: "Standard-G (Female)" },
{ value: "en-US-Standard-H", name: "Standard-H (Female)" },
{ value: "en-US-Standard-I", name: "Standard-I (Male)" },
{ value: "en-US-Standard-J", name: "Standard-J (Male)" },
{ value: "en-US-Wavenet-G", name: "Wavenet-G (Female)" },
{ value: "en-US-Wavenet-H", name: "Wavenet-H (Female)" },
{ value: "en-US-Wavenet-I", name: "Wavenet-I (Male)" },
{ value: "en-US-Wavenet-J", name: "Wavenet-J (Male)" },
],
},
{
code: "fil-PH",
name: "Filipino (Philippines)",
voices: [
{ value: "fil-PH-Standard-A", name: "Standard-A (Female)" },
{ value: "fil-PH-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "fil-ph-Neural2-A", name: "Neural2-A (Female)" },
{ value: "fil-ph-Neural2-D", name: "Neural2-A (Male)" },
{ value: "fil-PH-Standard-B", name: "Standard-B (Female)" },
{ value: "fil-PH-Standard-C", name: "Standard-C (Male)" },
{ value: "fil-PH-Standard-D", name: "Standard-D (Male)" },
{ value: "fil-PH-Wavenet-B", name: "Wavenet-B (Female)" },
{ value: "fil-PH-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "fil-PH-Wavenet-D", name: "Wavenet-D (Male)" },
],
},
{
code: "fi-FI",
name: "Finnish (Finland)",
voices: [
{ value: "fi-FI-Standard-A", name: "Standard-A (Female)" },
{ value: "fi-FI-Wavenet-A", name: "Wavenet-A (Female)" },
],
},
{
code: "fr-CA",
name: "French (Canada)",
voices: [
{ value: "fr-CA-Standard-A", name: "Standard-A (Female)" },
{ value: "fr-CA-Standard-B", name: "Standard-B (Male)" },
{ value: "fr-CA-Standard-C", name: "Standard-C (Female)" },
{ value: "fr-CA-Standard-D", name: "Standard-D (Male)" },
{ value: "fr-CA-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "fr-CA-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "fr-CA-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "fr-CA-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "fr-CA-Neural2-A", name: "Neural2-A (Female)" },
{ value: "fr-CA-Neural2-B", name: "Neural2-B (Male)" },
{ value: "fr-CA-Neural2-C", name: "Neural2-C (Female)" },
{ value: "fr-CA-Neural2-D", name: "Neural2-D (Male)" },
],
},
{
code: "fr-FR",
name: "French (France)",
voices: [
{ value: "fr-FR-Standard-A", name: "Standard-A (Female)" },
{ value: "fr-FR-Standard-B", name: "Standard-B (Male)" },
{ value: "fr-FR-Standard-C", name: "Standard-C (Female)" },
{ value: "fr-FR-Standard-D", name: "Standard-D (Male)" },
{ value: "fr-FR-Standard-E", name: "Standard-E (Female)" },
{ value: "fr-FR-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "fr-FR-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "fr-FR-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "fr-FR-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "fr-FR-Wavenet-E", name: "Wavenet-E (Female)" },
{ value: "fr-FR-Neural2-A", name: "Neural2-A (Female)" },
{ value: "fr-FR-Neural2-B", name: "Neural2-B (Male)" },
{ value: "fr-FR-Neural2-C", name: "Neural2-C (Female)" },
{ value: "fr-FR-Neural2-D", name: "Neural2-D (Male)" },
{ value: "fr-FR-Neural2-E", name: "Neural2-E (Female)" },
{ value: "fr-FR-Polyglot-1", name: "Polyglot-1 (Male)" },
{ value: "fr-FR-Studio-A", name: "Studio-A (Female)" },
{ value: "fr-FR-Studio-D", name: "Studio-D (Male)" },
],
},
{
code: "de-DE",
name: "German (Germany)",
voices: [
{ value: "de-DE-Standard-A", name: "Standard-A (Female)" },
{ value: "de-DE-Standard-B", name: "Standard-B (Male)" },
{ value: "de-DE-Standard-E", name: "Standard-E (Male)" },
{ value: "de-DE-Standard-F", name: "Standard-F (Female)" },
{ value: "de-DE-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "de-DE-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "de-DE-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "de-DE-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "de-DE-Wavenet-E", name: "Wavenet-E (Male)" },
{ value: "de-DE-Wavenet-F", name: "Wavenet-F (Female)" },
{ value: "de-DE-Neural2-B", name: "Neural2-B (Male)" },
{ value: "de-DE-Neural2-C", name: "Neural2-C (Female)" },
{ value: "de-DE-Neural2-D", name: "Neural2-D (Male)" },
{ value: "de-DE-Neural2-F", name: "Neural2-F (Female)" },
{ value: "de-DE-Polyglot-1", name: "Polyglot-1 (Male)" },
{ value: "de-DE-Neural2-A", name: "Neural2-A (Female)" },
{ value: "de-DE-Standard-C", name: "Standard-C (Female)" },
{ value: "de-DE-Standard-D", name: "Standard-D (Male)" },
{ value: "de-DE-Studio-B", name: "Studio-B (Male)" },
{ value: "de-DE-Studio-C", name: "Studio-C (Female)" },
],
},
{
code: "el-GR",
name: "Greek (Greece)",
voices: [
{ value: "el-GR-Standard-A", name: "Standard-A (Female)" },
{ value: "el-GR-Wavenet-A", name: "Wavenet-A (Female)" },
],
},
{
code: "gl-ES",
name: "Galician (Spain)",
voices: [{ value: "gl-ES-Standard-A", name: "Standard-A (Female)" }],
},
{
code: "gu-IN",
name: "Gujarati (India)",
voices: [
{ value: "gu-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "gu-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "gu-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "gu-IN-Wavenet-B", name: "Wavenet-B (Male)" },
],
},
{
code: "he-IL",
name: "Hebrew (Israel)",
voices: [
{ value: "he-IL-Standard-A", name: "Standard-A (Female)" },
{ value: "he-IL-Standard-B", name: "Standard-B (Male)" },
{ value: "he-IL-Standard-C", name: "Standard-C (Female)" },
{ value: "he-IL-Standard-D", name: "Standard-D (Male)" },
{ value: "he-IL-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "he-IL-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "he-IL-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "he-IL-Wavenet-D", name: "Wavenet-D (Male)" },
],
},
{
code: "hi-IN",
name: "Hindi (India)",
voices: [
{ value: "hi-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "hi-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "hi-IN-Standard-C", name: "Standard-C (Male)" },
{ value: "hi-IN-Standard-D", name: "Standard-D (Female)" },
{ value: "hi-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "hi-IN-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "hi-IN-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "hi-IN-Wavenet-D", name: "Wavenet-D (Female)" },
{ value: "hi-IN-Neural2-A", name: "Neural2-A (Female)" },
{ value: "hi-IN-Neural2-B", name: "Neural2-B (Male)" },
{ value: "hi-IN-Neural2-C", name: "Neural2-C (Male)" },
{ value: "hi-IN-Neural2-D", name: "Neural2-D (Female)" },
],
},
{
code: "hu-HU",
name: "Hungarian (Hungary)",
voices: [
{ value: "hu-HU-Standard-A", name: "Standard-A (Female)" },
{ value: "hu-HU-Wavenet-A", name: "Wavenet-A (Female)" },
],
},
{
code: "is-IS",
name: "Icelandic (Iceland)",
voices: [{ value: "is-IS-Standard-A", name: "Standard-A (Female)" }],
},
{
code: "id-ID",
name: "Indonesian (Indonesia)",
voices: [
{ value: "id-ID-Standard-A", name: "Standard-A (Female)" },
{ value: "id-ID-Standard-B", name: "Standard-B (Male)" },
{ value: "id-ID-Standard-C", name: "Standard-C (Male)" },
{ value: "id-ID-Standard-D", name: "Standard-D (Female)" },
{ value: "id-ID-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "id-ID-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "id-ID-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "id-ID-Wavenet-D", name: "Wavenet-D (Female)" },
],
},
{
code: "it-IT",
name: "Italian (Italy)",
voices: [
{ value: "it-IT-Standard-A", name: "Standard-A (Female)" },
{ value: "it-IT-Standard-B", name: "Standard-B (Female)" },
{ value: "it-IT-Standard-C", name: "Standard-C (Male)" },
{ value: "it-IT-Standard-D", name: "Standard-D (Male)" },
{ value: "it-IT-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "it-IT-Wavenet-B", name: "Wavenet-B (Female)" },
{ value: "it-IT-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "it-IT-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "it-IT-Neural2-A", name: "Neural2-A (Female)" },
{ value: "it-IT-Neural2-C", name: "Neural2-C (Male)" },
],
},
{
code: "ja-JP",
name: "Japanese (Japan)",
voices: [
{ value: "ja-JP-Standard-A", name: "Standard-A (Female)" },
{ value: "ja-JP-Standard-B", name: "Standard-B (Female)" },
{ value: "ja-JP-Standard-C", name: "Standard-C (Male)" },
{ value: "ja-JP-Standard-D", name: "Standard-D (Male)" },
{ value: "ja-JP-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "ja-JP-Wavenet-B", name: "Wavenet-B (Female)" },
{ value: "ja-JP-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "ja-JP-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "ja-JP-Neural2-B", name: "Neural2-B (Female)" },
{ value: "ja-JP-Neural2-C", name: "Neural2-C (Male)" },
{ value: "ja-JP-Neural2-D", name: "Neural2-D (Male)" },
],
},
{
code: "kn-IN",
name: "Kannada (India)",
voices: [
{ value: "kn-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "kn-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "kn-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "kn-IN-Wavenet-B", name: "Wavenet-B (Male)" },
],
},
{
code: "ko-KR",
name: "Korean (South Korea)",
voices: [
{ value: "ko-KR-Standard-A", name: "Standard-A (Female)" },
{ value: "ko-KR-Standard-B", name: "Standard-B (Female)" },
{ value: "ko-KR-Standard-C", name: "Standard-C (Male)" },
{ value: "ko-KR-Standard-D", name: "Standard-D (Male)" },
{ value: "ko-KR-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "ko-KR-Wavenet-B", name: "Wavenet-B (Female)" },
{ value: "ko-KR-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "ko-KR-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "ko-KR-Neural2-A", name: "Neural2-A (Female)" },
{ value: "ko-KR-Neural2-B", name: "Neural2-B (Female)" },
{ value: "ko-KR-Neural2-C", name: "Neural2-C (Male)" },
],
},
{
code: "lv-LV",
name: "Latvian (Latvia)",
voices: [{ value: "lv-LV-Standard-A", name: "Standard-A (Male)" }],
},
{
code: "lt-LT",
name: "Lithuanian (Lithuania)",
voices: [{ value: "lt-LT-Standard-A", name: "Standard-A (Male)" }],
},
{
code: "cmn-CN",
name: "Mandarin Chinese",
voices: [
{ value: "cmn-CN-Standard-A", name: "Standard-A (Female)" },
{ value: "cmn-CN-Standard-B", name: "Standard-B (Male)" },
{ value: "cmn-CN-Standard-C", name: "Standard-C (Male)" },
{ value: "cmn-CN-Standard-D", name: "Standard-D (Female)" },
{ value: "cmn-CN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "cmn-CN-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "cmn-CN-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "cmn-CN-Wavenet-D", name: "Wavenet-D (Female)" },
],
},
{
code: "cmn-TW",
name: "Mandarin Chinese (Traditional)",
voices: [
{ value: "cmn-TW-Standard-A-Alpha", name: "Standard-A-Alpha (Female)" },
{ value: "cmn-TW-Standard-B-Alpha", name: "Standard-B-Alpha (Male)" },
{ value: "cmn-TW-Standard-C-Alpha", name: "Standard-C-Alpha (Male)" },
{ value: "cmn-TW-Wavenet-A-Alpha", name: "Wavenet-A-Alpha (Female)" },
{ value: "cmn-TW-Wavenet-B-Alpha", name: "Wavenet-B-Alpha (Male)" },
{ value: "cmn-TW-Wavenet-C-Alpha", name: "Wavenet-C-Alpha (Male)" },
],
},
{
code: "ms-MY",
name: "Malay (Malaysia)",
voices: [
{ value: "ms-MY-Standard-A", name: "Standard-A (Female)" },
{ value: "ms-MY-Standard-B", name: "Standard-B (Male)" },
{ value: "ms-MY-Standard-C", name: "Standard-C (Female)" },
{ value: "ms-MY-Standard-D", name: "Standard-D (Male)" },
{ value: "ms-MY-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "ms-MY-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "ms-MY-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "ms-MY-Wavenet-D", name: "Wavenet-D (Male)" },
],
},
{
code: "ml-IN",
name: "Malayalam (India)",
voices: [
{ value: "ml-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "ml-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "ml-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "ml-IN-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "ml-IN-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "ml-IN-Wavenet-D", name: "Wavenet-D (Male)" },
],
},
{
code: "mr-IN",
name: "Marathi (India)",
voices: [
{ value: "mr-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "mr-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "mr-IN-Standard-C", name: "Standard-C (Female)" },
{ value: "mr-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "mr-IN-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "mr-IN-Wavenet-C", name: "Wavenet-C (Female)" },
],
},
{
code: "nb-NO",
name: "Norwegian (Norway)",
voices: [
{ value: "nb-NO-Standard-A", name: "Standard-A (Female)" },
{ value: "nb-NO-Standard-B", name: "Standard-B (Male)" },
{ value: "nb-NO-Standard-C", name: "Standard-C (Female)" },
{ value: "nb-NO-Standard-D", name: "Standard-D (Male)" },
{ value: "nb-no-Standard-E", name: "Standard-E (Female)" },
{ value: "nb-NO-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "nb-NO-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "nb-NO-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "nb-NO-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "nb-no-Wavenet-E", name: "Wavenet-E (Female)" },
],
},
{
code: "nl-BE",
name: "Dutch (Belgium)",
voices: [
{ value: "nl-BE-Standard-A", name: "Standard-A (Female)" },
{ value: "nl-BE-Standard-B", name: "Standard-B (Male)" },
{ value: "nl-BE-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "nl-BE-Wavenet-B", name: "Wavenet-B (Male)" },
],
},
{
code: "pl-PL",
name: "Polish (Poland)",
voices: [
{ value: "pl-PL-Standard-A", name: "Standard-A (Female)" },
{ value: "pl-PL-Standard-B", name: "Standard-B (Male)" },
{ value: "pl-PL-Standard-C", name: "Standard-C (Male)" },
{ value: "pl-PL-Standard-D", name: "Standard-D (Female)" },
{ value: "pl-PL-Standard-E", name: "Standard-E (Female)" },
{ value: "pl-PL-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "pl-PL-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "pl-PL-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "pl-PL-Wavenet-D", name: "Wavenet-D (Female)" },
{ value: "pl-PL-Wavenet-E", name: "Wavenet-E (Female)" },
],
},
{
code: "pa-IN",
name: "Punjabi (India)",
voices: [
{ value: "pa-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "pa-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "pa-IN-Standard-C", name: "Standard-C (Female)" },
{ value: "pa-IN-Standard-D", name: "Standard-D (Male)" },
{ value: "pa-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "pa-IN-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "pa-IN-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "pa-IN-Wavenet-D", name: "Wavenet-D (Male)" },
],
},
{
code: "pt-BR",
name: "Portuguese (Brazil)",
voices: [
{ value: "pt-BR-Standard-A", name: "Standard-A (Female)" },
{ value: "pt-BR-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "pt-BR-Neural2-A", name: "Neural2-A (Female)" },
{ value: "pt-BR-Neural2-B", name: "Neural2-B (Male)" },
{ value: "pt-BR-Neural2-C", name: "Neural2-C (Female)" },
{ value: "pt-BR-Standard-B", name: "Standard-B (Male)" },
{ value: "pt-BR-Standard-C", name: "Standard-C (Female)" },
{ value: "pt-BR-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "pt-BR-Wavenet-C", name: "Wavenet-C (Female)" },
],
},
{
code: "pt-PT",
name: "Portuguese (Portugal)",
voices: [
{ value: "pt-PT-Standard-A", name: "Standard-A (Female)" },
{ value: "pt-PT-Standard-B", name: "Standard-B (Male)" },
{ value: "pt-PT-Standard-C", name: "Standard-C (Male)" },
{ value: "pt-PT-Standard-D", name: "Standard-D (Female)" },
{ value: "pt-PT-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "pt-PT-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "pt-PT-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "pt-PT-Wavenet-D", name: "Wavenet-D (Female)" },
],
},
{
code: "ro-RO",
name: "Romanian (Romania)",
voices: [
{ value: "ro-RO-Standard-A", name: "Standard-A (Female)" },
{ value: "ro-RO-Wavenet-A", name: "Wavenet-A (Female)" },
],
},
{
code: "ru-RU",
name: "Russian (Russia)",
voices: [
{ value: "ru-RU-Standard-A", name: "Standard-A (Female)" },
{ value: "ru-RU-Standard-B", name: "Standard-B (Male)" },
{ value: "ru-RU-Standard-C", name: "Standard-C (Female)" },
{ value: "ru-RU-Standard-D", name: "Standard-D (Male)" },
{ value: "ru-RU-Standard-E", name: "Standard-E (Female)" },
{ value: "ru-RU-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "ru-RU-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "ru-RU-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "ru-RU-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "ru-RU-Wavenet-E", name: "Wavenet-E (Female)" },
],
},
{
code: "sk-SK",
name: "Slovak (Slovakia)",
voices: [
{ value: "sk-SK-Standard-A", name: "Standard-A (Female)" },
{ value: "sk-SK-Wavenet-A", name: "Wavenet-A (Female)" },
],
},
{
code: "sr-RS",
name: "Serbian (Cyrillic)",
voices: [{ value: "sr-RS-Standard-A", name: "Standard-A (Female)" }],
},
{
code: "es-ES",
name: "Spanish (Spain)",
voices: [
{ value: "es-ES-Standard-A", name: "Standard-A (Female)" },
{ value: "es-ES-Neural2-A", name: "Neural2-A (Female)" },
{ value: "es-ES-Neural2-B", name: "Neural2-B (Male)" },
{ value: "es-ES-Neural2-C", name: "Neural2-C (Female)" },
{ value: "es-ES-Neural2-D", name: "Neural2-D (Female)" },
{ value: "es-ES-Neural2-E", name: "Neural2-E (Female)" },
{ value: "es-ES-Neural2-F", name: "Neural2-F (Male)" },
{ value: "es-ES-Polyglot-1", name: "Polyglot-1 (Male)" },
{ value: "es-ES-Standard-B", name: "Standard-B (Male)" },
{ value: "es-ES-Standard-C", name: "Standard-C (Female)" },
{ value: "es-ES-Standard-D", name: "Standard-D (Female)" },
{ value: "es-ES-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "es-ES-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "es-ES-Wavenet-D", name: "Wavenet-D (Female)" },
],
},
{
code: "es-US",
name: "Spanish (US)",
voices: [
{ value: "es-US-Neural2-A", name: "Neural2-A (Female)" },
{ value: "es-US-Neural2-B", name: "Neural2-B (Male)" },
{ value: "es-US-Neural2-C", name: "Neural2-C (Male)" },
{ value: "es-US-Studio-B", name: "Studio-B (Male)" },
{ value: "es-US-Polyglot-1", name: "Polyglot-1 (Male)" },
{ value: "es-US-News-D", name: "News-D (Male)" },
{ value: "es-US-News-E", name: "News-E (Male)" },
{ value: "es-US-News-F", name: "News-F (Female)" },
{ value: "es-US-News-G", name: "News-G (Female)" },
{ value: "es-US-Standard-A", name: "Standard-A (Female)" },
{ value: "es-US-Standard-B", name: "Standard-B (Male)" },
{ value: "es-US-Standard-C", name: "Standard-C (Male)" },
{ value: "es-US-Studio-B", name: "Studio-B (Male)" },
{ value: "es-US-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "es-US-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "es-US-Wavenet-C", name: "Wavenet-C (Male)" },
],
},
{
code: "sv-SE",
name: "Swedish (Sweden)",
voices: [
{ value: "sv-SE-Standard-A", name: "Standard-A (Female)" },
{ value: "sv-SE-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "sv-SE-Standard-B", name: "Standard-B (Female)" },
{ value: "sv-SE-Standard-C", name: "Standard-C (Female)" },
{ value: "sv-SE-Standard-D", name: "Standard-D (Male)" },
{ value: "sv-SE-Standard-E", name: "Standard-E (Male)" },
{ value: "sv-SE-Wavenet-B", name: "Wavenet-B (Female)" },
{ value: "sv-SE-Wavenet-C", name: "Wavenet-C (Male)" },
{ value: "sv-SE-Wavenet-D", name: "Wavenet-D (Female)" },
{ value: "sv-SE-Wavenet-E", name: "Wavenet-E (Male)" },
],
},
{
code: "ta-IN",
name: "Tamil (India)",
voices: [
{ value: "ta-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "ta-IN-Standard-B", name: "Standard-B (Male)" },
{ value: "ta-IN-Standard-C", name: "Standard-C (Female)" },
{ value: "ta-IN-Standard-D", name: "Standard-D (Male)" },
{ value: "ta-IN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "ta-IN-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "ta-IN-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "ta-IN-Wavenet-D", name: "Wavenet-D (Male)" },
],
},
{
code: "te-IN",
name: "Telugu (India)",
voices: [
{ value: "te-IN-Standard-A", name: "Standard-A (Female)" },
{ value: "te-IN-Standard-B", name: "Standard-B (Male)" },
],
},
{
code: "tr-TR",
name: "Turkish (Turkey)",
voices: [
{ value: "tr-TR-Standard-A", name: "Standard-A (Female)" },
{ value: "tr-TR-Standard-B", name: "Standard-B (Male)" },
{ value: "tr-TR-Standard-C", name: "Standard-C (Female)" },
{ value: "tr-TR-Standard-D", name: "Standard-D (Female)" },
{ value: "tr-TR-Standard-E", name: "Standard-E (Male)" },
{ value: "tr-TR-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "tr-TR-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "tr-TR-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "tr-TR-Wavenet-D", name: "Wavenet-D (Female)" },
{ value: "tr-TR-Wavenet-E", name: "Wavenet-E (Male)" },
],
},
{
code: "uk-UA",
name: "Ukrainian (Ukraine)",
voices: [
{ value: "uk-UA-Standard-A", name: "Standard-A (Female)" },
{ value: "uk-UA-Wavenet-A", name: "Wavenet-A (Female)" },
],
},
{
code: "th-TH",
name: "Thai (Thailand)",
voices: [
{ value: "th-TH-Neural2-C", name: "Neural2-C (Female)" },
{ value: "th-TH-Standard-A", name: "Standard-A (Female)" },
],
},
{
code: "vi-VN",
name: "Vietnamese (Vietnam)",
voices: [
{ value: "vi-VN-Standard-A", name: "Standard-A (Female)" },
{ value: "vi-VN-Standard-B", name: "Standard-B (Male)" },
{ value: "vi-VN-Standard-C", name: "Standard-C (Female)" },
{ value: "vi-VN-Standard-D", name: "Standard-D (Male)" },
{ value: "vi-VN-Wavenet-A", name: "Wavenet-A (Female)" },
{ value: "vi-VN-Wavenet-B", name: "Wavenet-B (Male)" },
{ value: "vi-VN-Wavenet-C", name: "Wavenet-C (Female)" },
{ value: "vi-VN-Wavenet-D", name: "Wavenet-D (Male)" },
{ value: "vi-VN-Neural2-A", name: "Neural2-A (Female)" },
{ value: "vi-VN-Neural2-D", name: "Neural2-D (Male)" },
],
},
{
code: "yue-HK",
name: "Chinese (Hong Kong)",
voices: [
{ value: "yue-HK-Standard-A", name: "Standard-A (Female)" },
{ value: "yue-HK-Standard-B", name: "Standard-B (Male)" },
{ value: "yue-HK-Standard-C", name: "Standard-C (Female)" },
{ value: "yue-HK-Standard-D", name: "Standard-D (Male)" },
],
},
];
export default languages;
-171
View File
@@ -1,171 +0,0 @@
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [
{
code: "de-DE",
name: "German (Germany)",
voices: [
{ value: "de-DE_DieterVoice", name: "Dieter (Male): Standard German" },
{
value: "de-DE_DieterV2Voice",
name: "Dieter 2 (Male): Standard German",
},
{
value: "de-DE_DieterV3Voice",
name: "Dieter 3 (Male): Standard German",
},
{ value: "de-DE_ErikaV3Voice", name: "Erika (Female): Standard German" },
{ value: "de-DE_BirgitVoice", name: "Brigit (Female): Standard German" },
{
value: "de-DE_BirgitV2Voice",
name: "Brigit 2 (Female): Standard German",
},
{
value: "de-DE_BirgitV3Voice",
name: "Brigit 3 (Female): Standard German",
},
],
},
{
code: "en-US",
name: "English (US)",
voices: [
{
value: "en-US_MichaelExpressive",
name: "Michael (Male): American English - Expressive",
},
{ value: "en-US_MichaelVoice", name: "Michael (Male): American English" },
{
value: "en-US_MichaelV2Voice",
name: "Michael 2 (Male): American English",
},
{
value: "en-US_MichaelV3Voice",
name: "Michael 3 (Male): American English",
},
{ value: "en-US_HenryV3Voice", name: "Henry (Male): American English" },
{ value: "en-US_EmilyV3Voice", name: "Emily (Female): American English" },
{
value: "en-US_OliviaV3Voice",
name: "Olivia (Female): American English",
},
{
value: "en-US_AllisonExpressive",
name: "Allison (Female): American English - Expressive",
},
{
value: "en-US_AllisonVoice",
name: "Allison (Female): American English",
},
{
value: "en-US_AllisonV2Voice",
name: "Allison 2 (Female): American English",
},
{
value: "en-US_AllisonV3Voice",
name: "Allison 3 (Female): American English",
},
{
value: "en-US_LisaExpressive",
name: "Lisa (Female): American English - Expressive",
},
{ value: "en-US_LisaVoice", name: "Lisa (Female): American English" },
{ value: "en-US_LisaV2Voice", name: "Lisa 2 (Female): American English" },
{ value: "en-US_LisaV3Voice", name: "Lisa 3 (Female): American English" },
{ value: "en-US_KevinV3Voice", name: "Kevin (Male): American English" },
{
value: "en-US_EmmaExpressive",
name: "Emma (Female): American English - Expressive",
},
],
},
{
code: "en-GB",
name: "English (GB)",
voices: [
{ value: "en-GB_JamesV3Voice", name: "James (Male)" },
{ value: "en-GB_KateVoice", name: "Kate (Female)" },
{ value: "en-GB_KateV3Voice", name: "Kate 2 (Female)" },
{ value: "en-GB_CharlotteV3Voice", name: "Charlotte (Female)" },
],
},
{
code: "es-US",
name: "Spanish (North America)",
voices: [
{
value: "es-US_SofiaVoice",
name: "Sofia (Female): North American Spanish",
},
{
value: "es-US_SofiaV3Voice",
name: "Sofia 2 (Female): North American Spanish",
},
],
},
{
code: "es-LA",
name: "Spanish (Latin America)",
voices: [
{
value: "es-LA_SofiaVoice",
name: "Sofia (Female): Latin American Spanish",
},
{
value: "es-LA_SofiaV3Voice",
name: "Sofia 2 (Female): Latin American Spanish",
},
],
},
{
code: "es-ES",
name: "Spanish (Castilian)",
voices: [
{ value: "es-ES_LauraVoice", name: "Laura (Female)" },
{ value: "es-ES_LauraV3Voice", name: "Laura 2 (Female)" },
{ value: "es-ES_EnriqueVoice", name: "Enrique (Male)" },
{ value: "es-ES_EnriqueV3Voice", name: "Enrique 2 (Male)" },
],
},
{
code: "fr-FR",
name: "French (FR)",
voices: [
{ value: "fr-FR_NicolasV3Voice", name: "Nicolas (Male)" },
{ value: "fr-FR_ReneeVoice", name: "Renee (Female)" },
{ value: "fr-FR_ReneeV3Voice", name: "Renee 2 (Female)" },
],
},
{
code: "fr-CA",
name: "French (CA)",
voices: [{ value: "fr-CA_LouiseV3Voice", name: "Louise (Female)" }],
},
{
code: "it-IT",
name: "Italian",
voices: [
{ value: "it-IT_FrancescaVoice", name: "Francesca (Female)" },
{ value: "it-IT_FrancescaV2Voice", name: "Francesca 2 (Female)" },
{ value: "it-IT_FrancescaV3Voice", name: "Francesca 3 (Female)" },
],
},
{
code: "pt-BR",
name: "Portuguese (Brazil)",
voices: [
{ value: "pt-BR_IsabelaVoice", name: "Isabela (Female)" },
{ value: "pt-BR_IsabelaV3Voice", name: "Isabela 2 (Female)" },
],
},
{
code: "ja-JP",
name: "Japanese",
voices: [
{ value: "ja-JP_EmiVoice", name: "Emi (Female)" },
{ value: "ja-JP_EmiV3Voice", name: "Emi 2 (Female)" },
],
},
];
export default languages;
-30
View File
@@ -1,30 +0,0 @@
import { rawData } from "./ms-speech-synthesis-raw";
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [];
rawData.forEach((data) => {
const lang = languages.find((l) => {
return l.code === data.Locale;
});
if (!lang) {
languages.push({
code: data.Locale,
name: data.LocaleName,
voices: rawData
.filter((d) => {
return d.Locale === data.Locale;
})
.map((d) => {
return {
value: d.ShortName,
name: `${d.DisplayName} (${d.Gender})`,
};
}),
});
}
});
export default languages;
File diff suppressed because it is too large Load Diff
@@ -1,962 +0,0 @@
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [
{
code: "ar-WW",
name: "Arabic (Worldwide)",
voices: [
{
value: "Laila - standard",
name: "Laila (standard)",
model: "standard",
},
{
value: "Tarik - standard",
name: "Tarik (standard)",
model: "standard",
},
{
value: "Miriam - standard",
name: "Miriam (standard)",
model: "standard",
},
],
},
{
code: "eu-ES",
name: "Basque (Spain)",
voices: [{ value: "Miren", name: "Miren (standard)", model: "standard" }],
},
{
code: "bn-IN",
name: "Bengali (India)",
voices: [
{ value: "Paya - standard", name: "Paya (standard)", model: "standard" },
],
},
{
code: "bho-IN",
name: "Bhojpuri (India)",
voices: [
{ value: "Jaya - standard", name: "Jaya (standard)", model: "standard" },
],
},
{
code: "bg-BG",
name: "Bulgarian (Bulgaria)",
voices: [
{
value: "Daria - standard",
name: "Daria (standard)",
model: "standard",
},
],
},
{
code: "yue-HK",
name: "Cantonese (Hong Kong)",
voices: [
{
value: "Sinji-Ml - standard",
name: "Sinji-Ml (standard)",
model: "standard",
},
],
},
{
code: "ca-ES",
name: "Catalan (Spain)",
voices: [
{
value: "Jordi - standard",
name: "Jordi (standard)",
model: "standard",
},
{
value: "Montserrat - standard",
name: "Montserrat (standard)",
model: "enhanced",
},
],
},
{
code: "yue-HK",
name: "Croatian (Croatia)",
voices: [
{ value: "Lana - standard", name: "Lana (standard)", model: "standard" },
],
},
{
code: "cs-CZ",
name: "Czech (Czech Republic)",
voices: [
{
value: "Iveta - standard",
name: "Iveta (standard)",
model: "standard",
},
{
value: "Zuzana - standard",
name: "Zuzana (standard)",
model: "standard",
},
{
value: "Zuzana-ml - enhanced",
name: "Zuzana (enhanced)",
model: "enhanced",
},
],
},
{
code: "da-DK",
name: "Danish (Denmark)",
voices: [
{
value: "Magnus - standard",
name: "Magnus (standard)",
model: "standard",
},
{ value: "Sara - standard", name: "Sara (standard)", model: "standard" },
],
},
{
code: "nl-BE",
name: "Dutch (Belgium)",
voices: [
{
value: "Ellen - standard",
name: "Ellen (standard)",
model: "standard",
},
],
},
{
code: "nl-NL",
name: "Dutch (Belgium)",
voices: [
{
value: "Claire-Ml - standard",
name: "Claire-Ml (standard)",
model: "standard",
},
{
value: "Xander - standard",
name: "Xander (standard)",
model: "standard",
},
],
},
{
code: "en-AU",
name: "English (Australia)",
voices: [
{
value: "Karen - standard",
name: "Karen (standard)",
model: "standard",
},
{ value: "Lee - standard", name: "Lee (standard)", model: "standard" },
{
value: "Matilda - enhanced",
name: "Matilda (enhanced)",
model: "enhanced",
},
],
},
{
code: "en-IN",
name: "English (India)",
voices: [
{
value: "Isha-Ml - enhanced",
name: "Isha-Ml (enhanced)",
model: "enhanced",
},
{
value: "Rishi - standard",
name: "Rishi (standard)",
model: "standard",
},
{
value: "Rishi-Ml - standard",
name: "Rishi-Ml (standard)",
model: "standard",
},
{
value: "Sangeeta - standard",
name: "Sangeeta (standard)",
model: "standard",
},
{
value: "Veena - standard",
name: "Veena (standard)",
model: "standard",
},
],
},
{
code: "en-IE",
name: "English (Ireland)",
voices: [
{
value: "Moira - standard",
name: "Moira (standard)",
model: "standard",
},
],
},
{
code: "en-SC",
name: "English (Scotland)",
voices: [
{
value: "Fiona - standard",
name: "Fiona (standard)",
model: "standard",
},
],
},
{
code: "en-ZA",
name: "English (South Africa)",
voices: [
{
value: "Tessa - standard",
name: "Tessa (standard)",
model: "standard",
},
],
},
{
code: "en-GB",
name: "English (United Kingdom)",
voices: [
{
value: "Daniel - standard",
name: "Daniel (standard)",
model: "standard",
},
{ value: "Kate - standard", name: "Kate (standard)", model: "standard" },
{
value: "Malcolm - standard",
name: "Malcolm (standard)",
model: "standard",
},
{
value: "Oliver - standard",
name: "Oliver (standard)",
model: "standard",
},
{
value: "Serena - enhanced",
name: "Serena (enhanced)",
model: "enhanced",
},
{
value: "Simon - standard",
name: "Simon (standard)",
model: "standard",
},
{
value: "Stephanie - standard",
name: "Stephanie (standard)",
model: "standard",
},
],
},
{
code: "en-US",
name: "English (United States)",
voices: [
{
value: "Allison - standard",
name: "Allison (standard)",
model: "standard",
},
{
value: "Ava-Ml - enhanced",
name: "Ava-Ml (enhanced)",
model: "enhanced",
},
{
value: "Chloe - standard",
name: "Chloe (standard)",
model: "standard",
},
{ value: "Evan - enhanced", name: "Evan (enhanced)", model: "enhanced" },
{
value: "Nathan - enhanced",
name: "Nathan (enhanced)",
model: "enhanced",
},
{
value: "Evelyn - standard",
name: "Evelyn (standard)",
model: "standard",
},
{
value: "Nolan - standard",
name: "Nolan (standard)",
model: "standard",
},
{
value: "Samantha - standard",
name: "Samantha (standard)",
model: "standard",
},
{
value: "Susan - standard",
name: "Susan (standard)",
model: "standard",
},
{ value: "Tom - standard", name: "Tom (standard)", model: "standard" },
{
value: "Zoe-Ml - enhanced",
name: "Zoe-Ml (enhanced)",
model: "enhanced",
},
],
},
{
code: "fi-FI",
name: "Finnish (Finland)",
voices: [
{ value: "Onni - standard", name: "Onni (standard)", model: "standard" },
{ value: "Satu - standard", name: "Satu (standard)", model: "standard" },
],
},
{
code: "fr-BE",
name: "French (Belgium)",
voices: [
{ value: "Aude - standard", name: "Aude (standard)", model: "standard" },
],
},
{
code: "fr-CA",
name: "French (Canada)",
voices: [
{
value: "Amelie-Ml - enhanced",
name: "Amelie-Ml (enhanced)",
model: "enhanced",
},
{
value: "Chantal - standard",
name: "Chantal (standard)",
model: "standard",
},
{
value: "Nicolas - standard",
name: "Nicolas (standard)",
model: "standard",
},
],
},
{
code: "fr-FR",
name: "French (France)",
voices: [
{
value: "Audrey-Ml - enhanced",
name: "Audrey-Ml (enhanced)",
model: "enhanced",
},
{
value: "Aurelie - standard",
name: "Aurelie (standard)",
model: "standard",
},
{
value: "Thomas - standard",
name: "Thomas (standard)",
model: "standard",
},
],
},
{
code: "gl-ES",
name: "Galician (Spain)",
voices: [
{
value: "Carmela - standard",
name: "Carmela (standard)",
model: "standard",
},
],
},
{
code: "de-DE",
name: "German (Germany)",
voices: [
{
value: "Anna-Ml - enhanced",
name: "Anna-Ml (enhanced)",
model: "enhanced",
},
{
value: "Markus - standard",
name: "Markus (standard)",
model: "standard",
},
{
value: "Petra-Ml - enhanced",
name: "Petra-Ml (enhanced)",
model: "enhanced",
},
{
value: "Viktor - standard",
name: "Viktor (standard)",
model: "standard",
},
{
value: "Yannick - standard",
name: "Yannick (standard)",
model: "standard",
},
],
},
{
code: "el-GR",
name: "Greek (Greece)",
voices: [
{
value: "Melina - standard",
name: "Melina (standard)",
model: "standard",
},
{
value: "Nikos - standard",
name: "Nikos (standard)",
model: "standard",
},
],
},
{
code: "he-IL",
name: "Hebrew (Israel)",
voices: [
{
value: "Carmit - standard",
name: "Carmit (standard)",
model: "standard",
},
],
},
{
code: "hi-IN",
name: "Hindi (India)",
voices: [
{
value: "Kiyara-Ml - enhanced",
name: "Kiyara-Ml (enhanced)",
model: "enhanced",
},
{
value: "Lekha - standard",
name: "Lekha (standard)",
model: "standard",
},
{ value: "neel - standard", name: "Neel (standard)", model: "standard" },
{
value: "Neel-Ml - standard",
name: "Neel-Ml (standard)",
model: "standard",
},
],
},
{
code: "hu-HU",
name: "Hungarian (Hungary)",
voices: [
{
value: "Mariska - standard",
name: "Mariska (standard)",
model: "standard",
},
],
},
{
code: "id-ID",
name: "Indonesian (Indonesia)",
voices: [
{
value: "Damayanti - standard",
name: "Damayanti (standard)",
model: "standard",
},
],
},
{
code: "it-IT",
name: "Italian (Italy)",
voices: [
{ value: "Emma - enhanced", name: "Emma (enhanced)", model: "enhanced" },
{
value: "Federica-Ml - standard",
name: "Federica-Ml (standard)",
model: "standard",
},
{ value: "Luca - standard", name: "Luca (standard)", model: "standard" },
{
value: "Neel-Ml - standard",
name: "Neel-Ml (standard)",
model: "standard",
},
{
value: "Paola - standard",
name: "Paola (standard)",
model: "standard",
},
],
},
{
code: "ja-JP",
name: "Japanese (Japan)",
voices: [
{
value: "Ayane - standard",
name: "Ayane (standard)",
model: "standard",
},
{
value: "Daisuke - standard",
name: "Daisuke (standard)",
model: "standard",
},
{
value: "Ichiro - standard",
name: "Ichiro (standard)",
model: "standard",
},
{
value: "Koharu - standard",
name: "Koharu (standard)",
model: "standard",
},
{
value: "Kyoko - standard",
name: "Kyoko (standard)",
model: "standard",
},
{
value: "Mizuki - standard",
name: "Mizuki (standard)",
model: "standard",
},
{
value: "Otoya - standard",
name: "Otoya (standard)",
model: "standard",
},
{
value: "Sakura - standard",
name: "Sakura (standard)",
model: "standard",
},
{
value: "Seiji - standard",
name: "Seiji (standard)",
model: "standard",
},
],
},
{
code: "kn-IN",
name: "Kannada (India)",
voices: [
{
value: "Alpana - standard",
name: "Alpana (standard)",
model: "standard",
},
],
},
{
code: "ko-KR",
name: "Korean (South Korea)",
voices: [
{ value: "Jina - enhanced", name: "Jina (enhanced)", model: "enhanced" },
{ value: "Sora - standard", name: "Sora (standard)", model: "standard" },
{ value: "Yuna - standard", name: "Yuna (standard)", model: "standard" },
{
value: "Yuna-Ml - enhanced",
name: "Yuna-Ml (enhanced)",
model: "enhanced",
},
],
},
{
code: "zlm-MY",
name: "Malay (Malaysia)",
voices: [
{
value: "Amira - standard",
name: "Amira (standard)",
model: "standard",
},
],
},
{
code: "zh-CN",
name: "Mandarin (China)",
voices: [
{
value: "Lili-Ml - enhanced",
name: "Lili-Ml (enhanced)",
model: "enhanced",
},
{
value: "Binbin-Ml - standard",
name: "Binbin-Ml (standard)",
model: "standard",
},
{
value: "Lilian-Ml - standard",
name: "Lilian-Ml (standard)",
model: "standard",
},
{
value: "Lisheng-Ml - standard",
name: "Lisheng-Ml (standard)",
model: "standard",
},
{
value: "Tiantian-Ml - standard",
name: "Tiantian-Ml (standard)",
model: "standard",
},
{
value: "Tingting-Ml - standard",
name: "Tingting-Ml (standard)",
model: "standard",
},
],
},
{
code: "cmn-TW",
name: "Mandarin (Taiwan)",
voices: [
{
value: "Meijia-Ml - standard",
name: "Meijia-Ml (standard)",
model: "standard",
},
],
},
{
code: "mr-IN",
name: "Marathi (India)",
voices: [
{
value: "Ananya - standard",
name: "Ananya (standard)",
model: "standard",
},
],
},
{
code: "nb-NO",
name: "Norwegian Bokmål (Norway)",
voices: [
{
value: "Henrik - standard",
name: "Henrik (standard)",
model: "standard",
},
{ value: "Nora - standard", name: "Nora (standard)", model: "standard" },
],
},
{
code: "pl-PL",
name: "Polish (Poland)",
voices: [
{ value: "Ewa - enhanced", name: "Ewa (enhanced)", model: "enhanced" },
{
value: "Krzysztof - standard",
name: "Krzysztof (standard)",
model: "standard",
},
{
value: "Zosia - standard",
name: "Zosia (standard)",
model: "standard",
},
],
},
{
code: "pt-BR",
name: "Portuguese (Brazil)",
voices: [
{
value: "luciana - enhanced",
name: "Luciana (enhanced)",
model: "enhanced",
},
{
value: "Fernanda - standard",
name: "Fernanda (standard)",
model: "standard",
},
{
value: "Felipe - standard",
name: "Felipe (standard)",
model: "standard",
},
],
},
{
code: "pt-PT",
name: "Portuguese (Portugal)",
voices: [
{
value: "Catarina - standard",
name: "Catarina (standard)",
model: "standard",
},
{
value: "Joana - standard",
name: "Joana (standard)",
model: "standard",
},
{
value: "Joaquim - standard",
name: "Joaquim (standard)",
model: "standard",
},
],
},
{
code: "ro-RO",
name: "Romanian (Romania)",
voices: [
{
value: "Ioana - standard",
name: "Ioana (standard)",
model: "standard",
},
],
},
{
code: "ru-RU",
name: "Russian (Russia)",
voices: [
{
value: "Katya - standard",
name: "Katya (standard)",
model: "standard",
},
{
value: "Katya-Ml - standard",
name: "Katya-Ml (standard)",
model: "standard",
},
{
value: "Milena - standard",
name: "Milena (standard)",
model: "standard",
},
{ value: "yuri - standard", name: "Yuri (standard)", model: "standard" },
],
},
{
code: "sk-SK",
name: "Slovak (Slovakia)",
voices: [
{
value: "Laura - standard",
name: "Laura (standard)",
model: "standard",
},
],
},
{
code: "es-AR",
name: "Spanish (Argentina)",
voices: [
{
value: "Diego - standard",
name: "Diego (standard)",
model: "standard",
},
{
value: "Isabela - standard",
name: "Isabela (standard)",
model: "standard",
},
],
},
{
code: "es-CL",
name: "Spanish (Chile)",
voices: [
{
value: "Francisca - standard",
name: "Francisca (standard)",
model: "standard",
},
],
},
{
code: "es-CO",
name: "Spanish (Colombia)",
voices: [
{
value: "Carlos - standard",
name: "Carlos (standard)",
model: "standard",
},
{
value: "Soledad - standard",
name: "Soledad (standard)",
model: "standard",
},
{
value: "Ximena - standard",
name: "Ximena (standard)",
model: "standard",
},
],
},
{
code: "es-MX",
name: "Spanish (Mexico)",
voices: [
{
value: "Angelica - standard",
name: "Angelica (standard)",
model: "standard",
},
{
value: "Javier - standard",
name: "Javier (standard)",
model: "standard",
},
{ value: "Juan - standard", name: "Juan (standard)", model: "standard" },
{
value: "Paulina-Ml - enhanced",
name: "Paulina-Ml (enhanced)",
model: "enhanced",
},
],
},
{
code: "es-ES",
name: "Spanish (Spain)",
voices: [
{
value: "Jorge - standard",
name: "Jorge (standard)",
model: "standard",
},
{
value: "Marisol-Ml - standard",
name: "Marisol-Ml (standard)",
model: "standard",
},
{
value: "Monica-Ml - standard",
name: "Monica-Ml (standard)",
model: "standard",
},
],
},
{
code: "sv-SE",
name: "Swedish (Sweden)",
voices: [
{ value: "Alva - standard", name: "Alva (standard)", model: "standard" },
{
value: "Klara - standard",
name: "Klara (standard)",
model: "standard",
},
{
value: "Oskar - standard",
name: "Oskar (standard)",
model: "standard",
},
],
},
{
code: "ta-IN",
name: "Tamil (India)",
voices: [
{ value: "Vani - standard", name: "Vani (standard)", model: "standard" },
],
},
{
code: "te-IN",
name: "Telugu (India)",
voices: [
{
value: "Geeta - standard",
name: "Geeta (standard)",
model: "standard",
},
],
},
{
code: "th-TH",
name: "Thai (Thailand)",
voices: [
{
value: "Kanya - enhanced",
name: "Kanya (enhanced)",
model: "enhanced",
},
{
value: "Narisa - standard",
name: "Narisa (standard)",
model: "standard",
},
],
},
{
code: "tr-TR",
name: "Turkish (Turkey)",
voices: [
{
value: "Cem-Ml - standard",
name: "Cem-Ml (standard)",
model: "standard",
},
{
value: "Yelda - standard",
name: "Yelda (standard)",
model: "standard",
},
],
},
{
code: "uk-UA",
name: "Ukrainian (Ukraine)",
voices: [
{
value: "Lesya - standard",
name: "Lesya (standard)",
model: "standard",
},
],
},
{
code: "va-ES",
name: "Valencian (Spain)",
voices: [
{
value: "Empar - standard",
name: "Empar (standard)",
model: "standard",
},
],
},
{
code: "vi-VN",
name: "Vietnamese (Vietnam)",
voices: [
{ value: "Linh - standard", name: "Linh (standard)", model: "standard" },
],
},
];
export default languages;
@@ -1,20 +0,0 @@
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [
{
code: "en-US",
name: "English",
voices: [
{
value: "English-US.Female-1",
name: "Female",
},
{
value: "English-US.Male-1",
name: "Male",
},
],
},
];
export default languages;
@@ -1,43 +0,0 @@
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [
{
code: "en-US",
name: "English (US)",
voices: [
{ value: "3", name: "Alana B." },
{ value: "4", name: "Ramona J." },
{ value: "5", name: "Ramona J. (promo)" },
{ value: "7", name: "Wade C." },
{ value: "8", name: "Sofia H." },
{ value: "9", name: "David D." },
{ value: "11", name: "Isabel V." },
{ value: "12", name: "Ava H." },
{ value: "13", name: "Jeremy G." },
{ value: "14", name: "Nicole L." },
{ value: "15", name: "Paige L." },
{ value: "16", name: "Tobin A." },
{ value: "17", name: "Kai M." },
{ value: "18", name: "Tristan F." },
{ value: "19", name: "Patrick K." },
{ value: "20", name: "Soifia H. (promo)" },
{ value: "21", name: "Damian P. (promo)" },
{ value: "22", name: "Jodi P. (promo)" },
{ value: "23", name: "Lee M. (promo)" },
{ value: "24", name: "Selene R. (promo)" },
{ value: "26", name: "Wade C. (promo)" },
{ value: "27", name: "Joe F." },
{ value: "28", name: "Joe F. (promo)" },
{ value: "29", name: "Garry J. (character)" },
{ value: "33", name: "Jude D." },
{ value: "34", name: "Eric S. (promo)" },
{ value: "35", name: "Chase J." },
{ value: "37", name: "Steve B. (promo)" },
{ value: "38", name: "Bella B. (promo)" },
{ value: "39", name: "Tilda C. (promo)" },
{ value: "41", name: "Paul B. (promo)" },
],
},
];
export default languages;
@@ -1,18 +0,0 @@
import type { VoiceLanguage } from "../types";
export const languages: VoiceLanguage[] = [
{
code: "en-US",
name: "English",
voices: [
{ value: "alloy", name: "Alloy" },
{ value: "echo", name: "Echo" },
{ value: "fable", name: "Fable" },
{ value: "onyx", name: "Onyx" },
{ value: "nova", name: "Nova" },
{ value: "shimmer", name: "Shimmer" },
],
},
];
export default languages;
-13
View File
@@ -1,13 +0,0 @@
import type { Model } from "../types";
export const models: Model[] = [
{ name: "Aurora English (US) Female", value: "alpha-aurora-en-v2" },
{ name: "Asteria English (US) Female", value: "alpha-asteria-en-v2" },
{ name: "Artemis English (UK) Female", value: "alpha-artemis-en-v3" },
{ name: "Andromeda English (US) Female", value: "alpha-andromeda-en-v3" },
{ name: "Stella English (UK) Female", value: "alpha-stella-en-v2" },
{ name: "Orion English (US) Male", value: "alpha-orion-en-v2" },
{ name: "Atlas English (US) Male", value: "alpha-atlas-en-v3" },
];
export default models;
-11
View File
@@ -1,11 +0,0 @@
import type { Model } from "../types";
export const models: Model[] = [
{ name: "Turbo v2", value: "eleven_turbo_v2" },
{ name: "Multilingual v2", value: "eleven_multilingual_v2" },
{ name: "Multilingual v1", value: "eleven_multilingual_v1" },
{ name: "English v1", value: "eleven_monolingual_v1" },
{ name: "English v2", value: "eleven_english_sts_v2" },
];
export default models;
-8
View File
@@ -1,8 +0,0 @@
import type { Model } from "../types";
export const models: Model[] = [
{ name: "TTS-1", value: "tts-1" },
{ name: "TTS-1-HD", value: "tts-1-hd" },
];
export default models;
+1 -1
View File
@@ -42,7 +42,7 @@ export interface Voice {
export interface Language {
name: string;
code: string;
value: string;
codeMix?: string;
}