mirror of
https://github.com/jambonz/jambonz-webapp.git
synced 2026-07-04 19:21:58 +00:00
Add nuance speech provider (#144)
* add nuance as Synthesis recognizer * fix getStatus for cred test check * add all languages * fixup nuance voice names * fix label focus issue Co-authored-by: eglehelms <e.helms@cognigy.com> Co-authored-by: Dave Horton <daveh@beachdognet.com>
This commit is contained in:
@@ -258,6 +258,8 @@ export interface SpeechCredential {
|
||||
custom_tts_endpoint: null | string;
|
||||
use_custom_stt: number;
|
||||
custom_stt_endpoint: null | string;
|
||||
client_id: null | string;
|
||||
secret: null | string;
|
||||
}
|
||||
|
||||
export interface Alert {
|
||||
|
||||
@@ -22,6 +22,7 @@ import {
|
||||
VENDOR_AWS,
|
||||
VENDOR_GOOGLE,
|
||||
VENDOR_MICROSOFT,
|
||||
VENDOR_NUANCE,
|
||||
VENDOR_WELLSAID,
|
||||
} from "src/vendor";
|
||||
import { MSG_REQUIRED_FIELDS } from "src/constants";
|
||||
@@ -51,6 +52,8 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
|
||||
const [apiKey, setApiKey] = useState("");
|
||||
const [accessKeyId, setAccessKeyId] = useState("");
|
||||
const [secretAccessKey, setSecretAccessKey] = useState("");
|
||||
const [clientId, setClientId] = useState("");
|
||||
const [secretKey, setSecretKey] = useState("");
|
||||
const [googleServiceKey, setGoogleServiceKey] =
|
||||
useState<GoogleServiceKey | null>(null);
|
||||
const [useCustomTts, setUseCustomTts] = useState(false);
|
||||
@@ -137,6 +140,8 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
|
||||
vendor === VENDOR_MICROSOFT || vendor === VENDOR_WELLSAID
|
||||
? apiKey
|
||||
: null,
|
||||
client_id: vendor === VENDOR_NUANCE ? clientId : null,
|
||||
secret: vendor === VENDOR_NUANCE ? secretKey : null,
|
||||
})
|
||||
.then(({ json }) => {
|
||||
toastSuccess("Speech credential created successfully");
|
||||
@@ -195,6 +200,14 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
|
||||
setRegion(credential.data.aws_region);
|
||||
}
|
||||
|
||||
if (credential.data.client_id) {
|
||||
setClientId(credential.data.client_id);
|
||||
}
|
||||
|
||||
if (credential.data.secret) {
|
||||
setSecretKey(credential.data.secret);
|
||||
}
|
||||
|
||||
setUseCustomTts(credential.data.use_custom_tts > 0 ? true : false);
|
||||
setUseCustomStt(credential.data.use_custom_stt > 0 ? true : false);
|
||||
setCustomTtsEndpoint(credential.data.custom_tts_endpoint || "");
|
||||
@@ -304,6 +317,35 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{vendor === VENDOR_NUANCE && (
|
||||
<fieldset>
|
||||
<label htmlFor="nuance_client_id">
|
||||
Client ID<span>*</span>
|
||||
</label>
|
||||
<input
|
||||
id="nuance_client_id"
|
||||
required
|
||||
type="text"
|
||||
name="nuance_client_id"
|
||||
placeholder="Client ID"
|
||||
value={clientId}
|
||||
onChange={(e) => setClientId(e.target.value)}
|
||||
disabled={credential ? true : false}
|
||||
/>
|
||||
<label htmlFor="nuance_secret">
|
||||
Secret<span>*</span>
|
||||
</label>
|
||||
<Passwd
|
||||
id="nuance_secret"
|
||||
required
|
||||
name="nuance_secret"
|
||||
placeholder="Secret Key"
|
||||
value={secretKey ? getObscuredSecret(secretKey) : secretKey}
|
||||
onChange={(e) => setSecretKey(e.target.value)}
|
||||
disabled={credential ? true : false}
|
||||
/>
|
||||
</fieldset>
|
||||
)}
|
||||
{vendor === VENDOR_AWS && (
|
||||
<fieldset>
|
||||
<label htmlFor="aws_access_key">
|
||||
|
||||
@@ -38,8 +38,12 @@ export const getStatus = (
|
||||
cred.use_for_stt &&
|
||||
testResult.tts.status === CRED_OK &&
|
||||
testResult.stt.status === CRED_OK) ||
|
||||
(cred.use_for_tts && testResult.tts.status === CRED_OK) ||
|
||||
(cred.use_for_stt && testResult.stt.status === CRED_OK)
|
||||
(cred.use_for_tts &&
|
||||
testResult.tts.status === CRED_OK &&
|
||||
testResult.stt.status === CRED_NOT_TESTED) ||
|
||||
(cred.use_for_stt &&
|
||||
testResult.stt.status === CRED_OK &&
|
||||
testResult.tts.status === CRED_NOT_TESTED)
|
||||
) {
|
||||
return CRED_OK;
|
||||
}
|
||||
|
||||
Vendored
+11
@@ -13,6 +13,7 @@ export const VENDOR_GOOGLE = "google";
|
||||
export const VENDOR_AWS = "aws";
|
||||
export const VENDOR_MICROSOFT = "microsoft";
|
||||
export const VENDOR_WELLSAID = "wellsaid";
|
||||
export const VENDOR_NUANCE = "nuance";
|
||||
|
||||
export const vendors: VendorOptions[] = [
|
||||
{
|
||||
@@ -31,6 +32,10 @@ export const vendors: VendorOptions[] = [
|
||||
name: "WellSaid",
|
||||
value: VENDOR_WELLSAID,
|
||||
},
|
||||
{
|
||||
name: "Nuance",
|
||||
value: VENDOR_NUANCE,
|
||||
},
|
||||
];
|
||||
|
||||
export const useRegionVendors = () => {
|
||||
@@ -72,19 +77,23 @@ export const useSpeechVendors = () => {
|
||||
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-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"),
|
||||
]).then(
|
||||
([
|
||||
{ default: awsRecognizer },
|
||||
{ default: googleRecognizer },
|
||||
{ default: msRecognizer },
|
||||
{ default: nuanceRecognizer },
|
||||
{ default: awsSynthesis },
|
||||
{ default: googleSynthesis },
|
||||
{ default: msSynthesis },
|
||||
{ default: wellsaidSynthesis },
|
||||
{ default: nuanceSynthesis },
|
||||
]) => {
|
||||
if (!ignore) {
|
||||
setSpeech({
|
||||
@@ -93,11 +102,13 @@ export const useSpeechVendors = () => {
|
||||
google: googleSynthesis,
|
||||
microsoft: msSynthesis,
|
||||
wellsaid: wellsaidSynthesis,
|
||||
nuance: nuanceSynthesis,
|
||||
},
|
||||
recognizers: {
|
||||
aws: awsRecognizer,
|
||||
google: googleRecognizer,
|
||||
microsoft: msRecognizer,
|
||||
nuance: nuanceRecognizer,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,211 @@
|
||||
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;
|
||||
@@ -0,0 +1,962 @@
|
||||
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;
|
||||
Vendored
+5
-1
@@ -1,4 +1,4 @@
|
||||
export type Vendor = "Google" | "AWS" | "Microsoft" | "WellSaid";
|
||||
export type Vendor = "Google" | "AWS" | "Microsoft" | "WellSaid" | "Nuance";
|
||||
|
||||
export interface VendorOptions {
|
||||
name: Vendor;
|
||||
@@ -13,11 +13,13 @@ export interface Region {
|
||||
export interface Voice {
|
||||
name: string;
|
||||
value: string;
|
||||
model?: "standard" | "enhanced";
|
||||
}
|
||||
|
||||
export interface Language {
|
||||
name: string;
|
||||
code: string;
|
||||
codeMix?: string;
|
||||
}
|
||||
|
||||
export interface VoiceLanguage extends Language {
|
||||
@@ -47,6 +49,7 @@ export interface RecognizerVendors {
|
||||
aws: Language[];
|
||||
google: Language[];
|
||||
microsoft: Language[];
|
||||
nuance: Language[];
|
||||
}
|
||||
|
||||
export interface SynthesisVendors {
|
||||
@@ -54,6 +57,7 @@ export interface SynthesisVendors {
|
||||
google: VoiceLanguage[];
|
||||
microsoft: VoiceLanguage[];
|
||||
wellsaid: VoiceLanguage[];
|
||||
nuance: VoiceLanguage[];
|
||||
}
|
||||
|
||||
export interface MSRawSpeech {
|
||||
|
||||
Reference in New Issue
Block a user