mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-13 13:22:57 +00:00
fix
This commit is contained in:
1 parent
6f6101fa77
commit
7c2aeca5d2
6 files changed
+67
-26
No files matched your search
+5
-3
@@ -84,13 +84,15 @@ spec:
|
||||
# LSpeech model that sounds 100% amazing
|
||||
# image: docker.pkg.github.com/echelon/voder/tts-service:6b5c22567614
|
||||
#
|
||||
image: docker.pkg.github.com/ml-applications/voder/tts-service:2bafa7cec0c5
|
||||
image: docker.pkg.github.com/ml-applications/voder/tts-service:6f6101fa7730
|
||||
resources:
|
||||
limits:
|
||||
memory: "2048Mi" # 2048 MiB = 2 GiB
|
||||
#memory: "2048Mi" # 2048 MiB = 2 GiB
|
||||
memory: "1048Mi" # 2048 MiB = 2 GiB
|
||||
cpu: "700m" # 700 milliCPU
|
||||
requests:
|
||||
memory: "2048Mi" # 2048 MiB = 2 GiB
|
||||
#memory: "2048Mi" # 2048 MiB = 2 GiB
|
||||
memory: "1048Mi" # 2048 MiB = 2 GiB
|
||||
cpu: "700m" # 700 milliCPU
|
||||
volumeMounts:
|
||||
- name: downloads
|
||||
|
||||
@@ -4,8 +4,9 @@ name = "Donald Trump"
|
||||
slug = "trump"
|
||||
model_pipeline = "ArpabetTacotronMelgan"
|
||||
tacotron = "tacotron2_trump_txlearn_ljs_arpabet_2020-05-25_chkpt26500.jit"
|
||||
#melgan = "melgan_trump-txlearn-2020.05.05_13675.jit"
|
||||
melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit"
|
||||
#melgan = "melgan_trump-txlearn-2020.05.05_13675.jit" (OLD)
|
||||
#melgan = "melgan_trump_txlearn_2020-05-30_steno_chkpt9800.torchjit" (BEST TACOTRON)
|
||||
glow_tts = "glow_tts_ljs_txlearn_arpabet_2020-06-01_G_1007.torchjit"
|
||||
|
||||
[[speakers]]
|
||||
name = "High-pitched Linda Johnson"
|
||||
@@ -20,6 +21,10 @@ melgan = "melgan_ljs-high-pitch_container.pt"
|
||||
model_type = "ArpabetTacotron"
|
||||
base_directory = "/data/downloads/downloaded/models/tacotron2-nvidia/"
|
||||
|
||||
[[model_locations]]
|
||||
model_type = "ArpabetGlowTts"
|
||||
base_directory = "/data/downloads/downloaded/models/glow-tts-jaywalnut/"
|
||||
|
||||
[[model_locations]]
|
||||
model_type = "Melgan"
|
||||
base_directory = "/data/downloads/downloaded/models/melgan-swpark/"
|
||||
@@ -103,6 +108,13 @@ description = "High-quality high-pitched LJS; arpabet encodings."
|
||||
# description = "Unknown (broken)"
|
||||
|
||||
|
||||
# ---------------- Glow TTS----------------
|
||||
|
||||
[[glow_tts]]
|
||||
file_path = "glow_tts_ljs_txlearn_arpabet_2020-06-01_G_1007.torchjit"
|
||||
description = "First experiments"
|
||||
|
||||
|
||||
# ---------------- Melgan ----------------
|
||||
|
||||
# TODO: Get a high-quality LJS Melgan
|
||||
|
||||
@@ -138,7 +138,7 @@ description = "Unknown (broken)"
|
||||
# ---------------- Glow TTS----------------
|
||||
|
||||
[[glow_tts]]
|
||||
file_path = "glow-experimental.torchjit"
|
||||
file_path = "glow_tts_ljs_txlearn_arpabet_2020-06-01_G_1007.torchjit"
|
||||
description = "First experiments"
|
||||
|
||||
# ---------------- Melgan ----------------
|
||||
|
||||
@@ -13,7 +13,7 @@ use crate::model::model_config::ModelPipeline;
|
||||
use crate::model::old_model::TacoMelModel;
|
||||
use crate::database::model::NewSentence;
|
||||
use crate::text::cleaners::clean_text;
|
||||
use crate::model::pipelines::arpabet_tacotron_melgan_pipeline;
|
||||
use crate::model::pipelines::{arpabet_tacotron_melgan_pipeline, arpabet_glow_tts_melgan_pipeline};
|
||||
|
||||
/// Example request: v=trump&vol=3&s=this is funny isn't it
|
||||
#[derive(Deserialize)]
|
||||
@@ -152,7 +152,46 @@ pub async fn legacy_get_speak(request: HttpRequest,
|
||||
},
|
||||
}
|
||||
},
|
||||
ModelPipeline::ArpabetGlowTtsMelgan => unimplemented!(),
|
||||
ModelPipeline::ArpabetGlowTtsMelgan => {
|
||||
let glow_tts_model = speaker.glow_tts
|
||||
.as_ref()
|
||||
.map(|s| s.clone())
|
||||
.expect("TODO ERROR HANDLING");
|
||||
|
||||
let melgan_model = speaker.melgan
|
||||
.as_ref()
|
||||
.map(|s| s.clone())
|
||||
.expect("TODO ERROR HANDLING");
|
||||
|
||||
debug!("Glow-TTS Model: {}", glow_tts_model);
|
||||
debug!("Melgan Model: {}", melgan_model);
|
||||
|
||||
let glow_tts = match app_state.model_cache.get_or_load_arbabet_glow_tts(&glow_tts_model) {
|
||||
Some(model) => model,
|
||||
None => {
|
||||
warn!("Couldn't load glow-tts model: {}", glow_tts_model);
|
||||
return Ok(HttpResponse::build(StatusCode::INTERNAL_SERVER_ERROR)
|
||||
.content_type("text/plain")
|
||||
.body("Couldn't load model."));
|
||||
},
|
||||
};
|
||||
|
||||
let melgan = match app_state.model_cache.get_or_load_melgan(&melgan_model) {
|
||||
Some(model) => model,
|
||||
None => {
|
||||
warn!("Couldn't load melgan model: {}", melgan_model);
|
||||
return Ok(HttpResponse::build(StatusCode::INTERNAL_SERVER_ERROR)
|
||||
.content_type("text/plain")
|
||||
.body("Could not load model."));
|
||||
},
|
||||
};
|
||||
|
||||
let wav_data = arpabet_glow_tts_melgan_pipeline(&cleaned_text, &glow_tts, &melgan);
|
||||
|
||||
Ok(HttpResponse::build(StatusCode::OK)
|
||||
.content_type("audio/wav")
|
||||
.body(wav_data))
|
||||
},
|
||||
ModelPipeline::RawTextTacotronMelgan => unimplemented!(),
|
||||
}
|
||||
}
|
||||
@@ -111,22 +111,11 @@ pub async fn post_speak(_request: HttpRequest,
|
||||
let melgan = app_state.model_cache.get_or_load_melgan(&melgan_model)
|
||||
.expect(&format!("Couldn't load melgan model: {}", melgan_model));
|
||||
|
||||
let result = arpabet_glow_tts_melgan_pipeline(&cleaned_text, &glow_tts, &melgan);
|
||||
let wav_data = arpabet_glow_tts_melgan_pipeline(&cleaned_text, &glow_tts, &melgan);
|
||||
|
||||
match result {
|
||||
None => {
|
||||
Ok(HttpResponse::build(StatusCode::TOO_MANY_REQUESTS)
|
||||
.content_type("text/plain")
|
||||
.body("The service is receiving too many requests. Although there are many worker \
|
||||
containers, model access is serialized on a per-container basis until the \
|
||||
segfaults are fixed."))
|
||||
},
|
||||
Some(wav_data) => {
|
||||
Ok(HttpResponse::build(StatusCode::OK)
|
||||
.content_type("audio/wav")
|
||||
.body(wav_data))
|
||||
},
|
||||
}
|
||||
Ok(HttpResponse::build(StatusCode::OK)
|
||||
.content_type("audio/wav")
|
||||
.body(wav_data))
|
||||
},
|
||||
ModelPipeline::RawTextTacotronMelgan => unimplemented!(),
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ use crate::model::arpabet_glow_tts_model::ArpabetGlowTtsModel;
|
||||
pub fn arpabet_glow_tts_melgan_pipeline(
|
||||
cleaned_text: &str,
|
||||
arpabet_glow_tts: &ArpabetGlowTtsModel,
|
||||
melgan: &MelganModel) -> Option<Vec<u8>> {
|
||||
melgan: &MelganModel) -> Vec<u8> {
|
||||
|
||||
let arpabet = Arpabet::load_cmudict(); // TODO: Inefficient.
|
||||
let arpabet_encodings = text_to_arpabet_encoding_glow_tts(arpabet, &cleaned_text);
|
||||
@@ -27,8 +27,7 @@ pub fn arpabet_glow_tts_melgan_pipeline(
|
||||
let audio_tensor = melgan.tacotron_mel_to_audio(&mel_tensor);
|
||||
let audio_signal = mel_audio_tensor_to_audio_signal(audio_tensor);
|
||||
|
||||
let wav = audio_signal_to_wav_bytes(audio_signal);
|
||||
Some(wav)
|
||||
audio_signal_to_wav_bytes(audio_signal)
|
||||
}
|
||||
|
||||
pub fn arpabet_tacotron_melgan_pipeline(
|
||||
|
||||
Reference in new issue
Block a user