mirror of
https://github.com/jambonz/jambonz-webapp.git
synced 2026-07-24 13:02:21 +00:00
@@ -25,6 +25,7 @@ import {
|
||||
VENDOR_SONIOX,
|
||||
VENDOR_WELLSAID,
|
||||
VENDOR_WHISPER,
|
||||
useTtsModels,
|
||||
} from "src/vendor";
|
||||
import {
|
||||
LabelOptions,
|
||||
@@ -92,11 +93,16 @@ export const SpeechProviderSelection = ({
|
||||
|
||||
const currentVendor = useRef(synthVendor);
|
||||
|
||||
const ttsModels = useTtsModels();
|
||||
|
||||
useEffect(() => {
|
||||
currentVendor.current = synthVendor;
|
||||
if (!synthesis || synthVendor.startsWith("custom:")) {
|
||||
return;
|
||||
}
|
||||
if (synthVendor === VENDOR_DEEPGRAM) {
|
||||
return;
|
||||
}
|
||||
const voiceOpts = synthesis[synthVendor as keyof SynthesisVendors]
|
||||
.filter((lang: VoiceLanguage) => {
|
||||
// ELEVENLABS has same voice for all lange, take voices from the 1st language
|
||||
@@ -206,7 +212,6 @@ export const SpeechProviderSelection = ({
|
||||
value={synthVendor}
|
||||
options={ttsVendorOptions.filter(
|
||||
(vendor) =>
|
||||
vendor.value != VENDOR_DEEPGRAM &&
|
||||
vendor.value != VENDOR_ASSEMBLYAI &&
|
||||
vendor.value != VENDOR_SONIOX &&
|
||||
vendor.value !== VENDOR_CUSTOM &&
|
||||
@@ -223,6 +228,12 @@ export const SpeechProviderSelection = ({
|
||||
return;
|
||||
}
|
||||
|
||||
/** DEEPGRAM only support voice */
|
||||
if (vendor.toString().startsWith(VENDOR_DEEPGRAM)) {
|
||||
setSynthVoice("");
|
||||
return;
|
||||
}
|
||||
|
||||
/** When using Google and en-US, ensure "Standard-C" is used as default */
|
||||
if (
|
||||
e.target.value === VENDOR_GOOGLE &&
|
||||
@@ -282,8 +293,21 @@ export const SpeechProviderSelection = ({
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
{ttsModels && synthVendor === VENDOR_DEEPGRAM && (
|
||||
<>
|
||||
<label htmlFor="synthesis_lang">Model</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>
|
||||
|
||||
@@ -639,8 +639,7 @@ export const SpeechServiceForm = ({ credential }: SpeechServiceFormProps) => {
|
||||
</fieldset>
|
||||
{vendor && (
|
||||
<fieldset>
|
||||
{vendor !== VENDOR_DEEPGRAM &&
|
||||
vendor !== VENDOR_ASSEMBLYAI &&
|
||||
{vendor !== VENDOR_ASSEMBLYAI &&
|
||||
vendor !== VENDOR_COBALT &&
|
||||
vendor !== VENDOR_SONIOX &&
|
||||
vendor != VENDOR_CUSTOM && (
|
||||
|
||||
Vendored
+17
-7
@@ -94,14 +94,22 @@ export const useTtsModels = () => {
|
||||
Promise.all([
|
||||
import("./speech-synthsis-models/elevenlabs-models"),
|
||||
import("./speech-synthsis-models/whisper-models"),
|
||||
]).then(([{ default: elevenlabs }, { default: whisper }]) => {
|
||||
if (!ignore) {
|
||||
setModels({
|
||||
elevenlabs,
|
||||
whisper,
|
||||
});
|
||||
import("./speech-synthsis-models/deepgram-models"),
|
||||
]).then(
|
||||
([
|
||||
{ default: elevenlabs },
|
||||
{ default: whisper },
|
||||
{ default: deepgram },
|
||||
]) => {
|
||||
if (!ignore) {
|
||||
setModels({
|
||||
elevenlabs,
|
||||
whisper,
|
||||
deepgram,
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
return function cleanup() {
|
||||
ignore = true;
|
||||
};
|
||||
@@ -207,6 +215,8 @@ export const useSpeechVendors = () => {
|
||||
nvidia: nvidiaynthesis,
|
||||
elevenlabs: elevenLabsSynthesis,
|
||||
whisper: whisperSynthesis,
|
||||
// Deepgram just have model which includes language, voice
|
||||
deepgram: [],
|
||||
},
|
||||
recognizers: {
|
||||
aws: awsRecognizer,
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
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;
|
||||
Vendored
+2
@@ -73,6 +73,7 @@ export interface RegionVendors {
|
||||
export interface TtsModels {
|
||||
elevenlabs: Model[];
|
||||
whisper: Model[];
|
||||
deepgram: Model[];
|
||||
}
|
||||
|
||||
export interface RecognizerVendors {
|
||||
@@ -98,6 +99,7 @@ export interface SynthesisVendors {
|
||||
nvidia: VoiceLanguage[];
|
||||
elevenlabs: VoiceLanguage[];
|
||||
whisper: VoiceLanguage[];
|
||||
deepgram: VoiceLanguage[];
|
||||
}
|
||||
|
||||
export interface MSRawSpeech {
|
||||
|
||||
Reference in New Issue
Block a user