diff --git a/tts_frontend/src/components/ModalComponent.tsx b/tts_frontend/src/components/ModalComponent.tsx index de69a807cd..0d06c95819 100644 --- a/tts_frontend/src/components/ModalComponent.tsx +++ b/tts_frontend/src/components/ModalComponent.tsx @@ -3,9 +3,11 @@ import React from 'react'; import { ModeSelector } from './ModeSelector'; import { SentencesComponent } from './modes/sentences/SentencesComponent' import { MainComponent } from './MainComponent' +import { SpeakerSpectrogramModeComponent } from './modes/speaker_spectrogram_mode/SpeakerSpectrogramModeComponent'; enum Mode { SPEAKER, + SPEAKER_SPECTROGRAM, ADVANCED, SENTENCE, } @@ -41,6 +43,9 @@ class ModalComponent extends React.Component { // Share the text input, but change the form logic and dropdowns. component = ; break; + case Mode.SPEAKER_SPECTROGRAM: + component = ; + break; case Mode.SENTENCE: component = ; break; diff --git a/tts_frontend/src/components/ModeSelector.tsx b/tts_frontend/src/components/ModeSelector.tsx index 826a17074e..1c54817edc 100644 --- a/tts_frontend/src/components/ModeSelector.tsx +++ b/tts_frontend/src/components/ModeSelector.tsx @@ -17,6 +17,7 @@ class ModeSelector extends React.Component { public render() { let speakerDisabled = false; + let speakerSpectrogramDisabled = false; let advancedDisabled = false; let sentencesDisabled = false; @@ -24,6 +25,9 @@ class ModeSelector extends React.Component { case Mode.SPEAKER: speakerDisabled = true; break; + case Mode.SPEAKER_SPECTROGRAM: + speakerSpectrogramDisabled = true; + break; case Mode.ADVANCED: advancedDisabled = true; break; @@ -39,6 +43,11 @@ class ModeSelector extends React.Component { onClick={() => this.props.switchModeCallback(Mode.SPEAKER)}> Speakers + + + + ); + } +} + +export default SpeakerSpectrogramAudioForm; diff --git a/tts_frontend/src/components/modes/speaker_spectrogram_mode/SpeakerSpectrogramModeComponent.tsx b/tts_frontend/src/components/modes/speaker_spectrogram_mode/SpeakerSpectrogramModeComponent.tsx new file mode 100644 index 0000000000..b6c251470c --- /dev/null +++ b/tts_frontend/src/components/modes/speaker_spectrogram_mode/SpeakerSpectrogramModeComponent.tsx @@ -0,0 +1,77 @@ +import React from 'react'; +import { SpeakerDetails, SpeakerResponse } from './SpeakerResponse'; +import { SpeakerDropdownComponent } from './SpeakerDropdownComponent'; +import SpeakerSpectrogramAudioForm from './SpeakerSpectrogramAudioForm'; +import ApiConfig from '../../../ApiConfig'; + +interface Props { + apiConfig: ApiConfig, +} + +interface State { + speaker_response?: SpeakerResponse, + speaker_slug?: string, +} + +class SpeakerSpectrogramModeComponent extends React.Component { + + constructor(props: Props) { + super(props); + this.state = { + speaker_response: undefined, + speaker_slug: undefined, + }; + } + + componentDidMount() { + this.loadSpeakers(); + } + + public loadSpeakers() { + const url = this.props.apiConfig.getEndpoint('/speakers'); + fetch(url) + .then(res => res.json()) + .then( + (result) => { + console.log('loaded speakers', result); + let first_speaker = result.speakers[0].slug; + this.setState({ + speaker_response: result, + speaker_slug: first_speaker, + }) + } + ); + } + + changeSpeaker = (ev: React.FormEvent) => { + const speakerSlug = (ev.target as HTMLInputElement).value; + this.setState({ + speaker_slug: speakerSlug, + }) + } + + public render() { + let speakers = this.state.speaker_response?.speakers; + let dropdown; + + if (speakers?.length || 0 > 0) { + dropdown = + } + + return ( +
+ SpeakerSpectrogramMode + {dropdown} + +
+ ); + } +} + +export { SpeakerSpectrogramModeComponent }; diff --git a/tts_service/models.toml b/tts_service/models.toml index 7a6a1c09de..445a683669 100644 --- a/tts_service/models.toml +++ b/tts_service/models.toml @@ -30,7 +30,8 @@ name = "John F. Kennedy" slug = "jfk" model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" -melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" # TODO: Wtf - noise speaker_id = 1 [[speakers]] @@ -38,7 +39,8 @@ name = "Arnold Schwarzenegger" slug = "arnold" model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" -melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" speaker_id = 2 [[speakers]] @@ -46,7 +48,8 @@ name = "Bill Gates" slug = "gates" model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" -melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" speaker_id = 3 [[speakers]] @@ -54,7 +57,8 @@ name = "Mark Zuckerberg" slug = "zuckerberg" model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" -melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" speaker_id = 4 [[speakers]] @@ -62,7 +66,8 @@ name = "Ronald Reagan" slug = "reagan" model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" -melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" speaker_id = 5 [[speakers]] @@ -70,7 +75,8 @@ name = "Queen Elizabeth II" slug = "queen-elizabeth" model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" -melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" speaker_id = 6 [[speakers]] @@ -78,7 +84,8 @@ name = "Mario" slug = "mario" model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" -melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" speaker_id = 7 [[speakers]] @@ -86,7 +93,8 @@ name = "Zapp Brannigan" slug = "zapp" model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" -melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" speaker_id = 8 [[speakers]] @@ -96,9 +104,35 @@ model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" glow_tts_multi_speaker = "glow_multispeaker.torchjit" #melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" #melgan = "shared_melgan_container-2020.01.05.pt" -melgan = "melgan_ljs-high-pitch_container.pt" +#melgan = "melgan_ljs-high-pitch_container.pt" +melgan = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" speaker_id = 9 +[[speakers]] +name = "LJS Multi Base 1" +slug = "multi1" +model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" +glow_tts_multi_speaker = "glow_ljs_base.torchjit" +melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +speaker_id = 1 + +[[speakers]] +name = "LJS Multi Base 2" +slug = "multi1" +model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" +glow_tts_multi_speaker = "glow_ljs_base.torchjit" +melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +speaker_id = 2 + +[[speakers]] +name = "LJS Multi Base 50" +slug = "multi1" +model_pipeline = "ArpabetGlowTtsMultiSpeakerMelgan" +glow_tts_multi_speaker = "glow_ljs_base.torchjit" +melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" +speaker_id = 50 + + # --------------- Model configs --------------- [[model_locations]] @@ -244,6 +278,10 @@ description = "First experiments (continued); modified with longer input to JIT" file_path = "glow_multispeaker.torchjit" description = "Mutli-speaker garbage" +[[glow_tts_multi_speaker]] +file_path = "glow_ljs_base.torchjit" +description = "Mutli-speaker base model (LambdaLabs expensive Tesla GPU)" + # ---------------- Melgan ---------------- # TODO: Get a high-quality LJS Melgan @@ -272,3 +310,18 @@ description = "Unknown" file_path = "shared_melgan_container-2020.01.05.pt" description = "Unknown" +[[melgan]] +file_path = "melgan_multivoice-1.0_2020.06.15_12d5838_6275.torchjit" +description = "first multivoice (txlearned)" + +[[melgan]] +file_path = "melgan_multivoice-1.0_2020.06.15_12d5838_6300.torchjit" +description = "first multivoice (txlearned)" + +[[melgan]] +file_path = "melgan_multivoice-1.0_2020.06.15_12d5838_6475.torchjit" +description = "first multivoice (txlearned)" + +[[melgan]] +file_path = "melgan_multivoice-1.0_2020.06.15_12d5838_6725.torchjit" +description = "first multivoice (txlearned)"