TTS Studio: Zahlen, Daten und Telefonnummern ausschreiben
Neues Modul normalize.rs wandelt vor dem Sprechen Datum (1.10. -> ersten Oktober, mit Jänner), Uhrzeiten und Bereiche, Telefonnummern (ziffernweise, Gruppen mit Punkt getrennt), Euro-Beträge, Ordnungszahlen und gängige Abkürzungen in Worte. In der GUI abschaltbar, mit Vorschau des gesprochenen Textes. Hörproben der Telefonnummer-Varianten unter qwen3_samples/telefon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d12897a928
commit
b3b38f1fe1
9 files changed
+464
-4
No files matched your search
+14
-1
@@ -5,6 +5,7 @@ mod audio;
|
||||
mod config;
|
||||
mod http;
|
||||
mod media;
|
||||
mod normalize;
|
||||
mod synth;
|
||||
mod voices;
|
||||
|
||||
@@ -67,6 +68,7 @@ struct App {
|
||||
speed: f32,
|
||||
sentence_pause: f32,
|
||||
comma_pause: f32,
|
||||
normalize: bool,
|
||||
busy: Option<String>,
|
||||
status: Status,
|
||||
result: Option<Rendered>,
|
||||
@@ -101,6 +103,7 @@ impl App {
|
||||
speed: 1.0,
|
||||
sentence_pause: 0.8,
|
||||
comma_pause: 0.0,
|
||||
normalize: true,
|
||||
target: Target::AsteriskWav,
|
||||
busy: None,
|
||||
status: config_error.map_or(Status::None, Status::Error),
|
||||
@@ -209,6 +212,7 @@ impl App {
|
||||
speed: self.speed,
|
||||
sentence_pause_ms: (self.sentence_pause * 1000.0).round() as u32,
|
||||
comma_pause_ms: (self.comma_pause * 1000.0).round() as u32,
|
||||
normalize: self.normalize,
|
||||
};
|
||||
self.player.stop();
|
||||
self.busy = Some("Starte …".into());
|
||||
@@ -356,7 +360,8 @@ impl App {
|
||||
self.insert_pause(tag);
|
||||
}
|
||||
}
|
||||
ui.label(RichText::new("Zahlen am besten ausschreiben („acht Uhr dreißig“)").weak().small());
|
||||
ui.checkbox(&mut self.normalize, "Zahlen ausschreiben")
|
||||
.on_hover_text("Datum (1.10.), Uhrzeit (8:30), Telefonnummern, Euro-Beträge, Ordnungszahlen und Abkürzungen (Dr., z. B.) in Worte fassen");
|
||||
});
|
||||
let editor = egui::TextEdit::multiline(&mut self.text)
|
||||
.desired_rows(9)
|
||||
@@ -366,6 +371,14 @@ impl App {
|
||||
if let Some(range) = editor.cursor_range {
|
||||
self.cursor = Some(range.primary.index.0);
|
||||
}
|
||||
if self.normalize {
|
||||
let spoken = synth::spoken_preview(&self.text, true);
|
||||
if spoken != synth::spoken_preview(&self.text, false) {
|
||||
egui::CollapsingHeader::new("So wird gesprochen").default_open(true).show(ui, |ui| {
|
||||
ui.label(RichText::new(spoken).weak());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
ui.add_space(8.0);
|
||||
ui.horizontal(|ui| {
|
||||
|
||||
Reference in new issue
Block a user