Temp Ordner Fix, weiche Uebergaenge an Schnittpunkten, Klangaufwertung (EQ und Kompressor)
This commit is contained in:
parent
d7d8c41953
commit
fde2451a81
1 changed files with 32 additions and 2 deletions
|
|
@ -257,6 +257,15 @@ async fn run_pipeline(
|
||||||
// auto-editor Version noch so heißt (verhindert, dass sich nach dem
|
// auto-editor Version noch so heißt (verhindert, dass sich nach dem
|
||||||
// Schneiden automatisch ein Videoplayer öffnet).
|
// Schneiden automatisch ein Videoplayer öffnet).
|
||||||
"--no-open".into(),
|
"--no-open".into(),
|
||||||
|
// Weicher Übergang statt hartem Jump Cut: auto-editor blendet Bild und
|
||||||
|
// Ton an jedem Schnittpunkt kurz ineinander (0,15s), statt hart zu
|
||||||
|
// schneiden. Die zweite Zahl (0,05s) sorgt dafür, dass auch sehr kurze
|
||||||
|
// Schnitte (z.B. ein einzelnes rausgeschnittenes Füllwort) noch eine
|
||||||
|
// Überblendung bekommen, auto-editor würde sonst nur Schnitte ab 1
|
||||||
|
// Sekunde Länge überblenden. Nutzerfeedback vom 2026-08-19: harte,
|
||||||
|
// unruhige Schnittpunkte im Bild.
|
||||||
|
"--transition".into(),
|
||||||
|
"dissolve:0.15:0.05".into(),
|
||||||
"-o".into(),
|
"-o".into(),
|
||||||
cut_path.to_string_lossy().to_string(),
|
cut_path.to_string_lossy().to_string(),
|
||||||
],
|
],
|
||||||
|
|
@ -313,6 +322,15 @@ async fn run_pipeline(
|
||||||
"deep-filter",
|
"deep-filter",
|
||||||
vec![
|
vec![
|
||||||
raw_audio.to_string_lossy().to_string(),
|
raw_audio.to_string_lossy().to_string(),
|
||||||
|
// Begrenzt, wie stark DeepFilterNet maximal absenken darf. Ohne
|
||||||
|
// dieses Limit greift das Modell an manchen Stellen so stark ein,
|
||||||
|
// dass mit dem Rauschen auch ein Teil der hohen Frequenzen der
|
||||||
|
// Stimme mit entfernt wird, das klingt dann dumpf und mattiert
|
||||||
|
// statt klar. Nutzerfeedback vom 2026-08-19: Klang zu dumpf im
|
||||||
|
// Vergleich zu Auphonic. 30 dB ist ein vorsichtiger Mittelweg,
|
||||||
|
// lässt sich bei Bedarf noch weiter anpassen.
|
||||||
|
"--atten-lim-db".into(),
|
||||||
|
"30".into(),
|
||||||
"-o".into(),
|
"-o".into(),
|
||||||
denoise_out_dir.to_string_lossy().to_string(),
|
denoise_out_dir.to_string_lossy().to_string(),
|
||||||
],
|
],
|
||||||
|
|
@ -376,7 +394,7 @@ async fn run_pipeline(
|
||||||
emit_progress(&app, "denoise", "done", Some("übersprungen".into()), None);
|
emit_progress(&app, "denoise", "done", Some("übersprungen".into()), None);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------- 3) Lautstärke & Klangbalance (FFmpeg loudnorm), optional ----------
|
// ---------- 3) Klangveredelung & Lautstärke (FFmpeg), optional ----------
|
||||||
let final_path = work_dir.join(format!("{stem}_nova.{ext}"));
|
let final_path = work_dir.join(format!("{stem}_nova.{ext}"));
|
||||||
if options.loudnorm {
|
if options.loudnorm {
|
||||||
emit_progress(&app, "loudnorm", "running", Some("startet…".into()), None);
|
emit_progress(&app, "loudnorm", "running", Some("startet…".into()), None);
|
||||||
|
|
@ -384,7 +402,19 @@ async fn run_pipeline(
|
||||||
// Parsen von FFmpeg Messwerten aus stderr nötig, dadurch robuster. Etwas
|
// Parsen von FFmpeg Messwerten aus stderr nötig, dadurch robuster. Etwas
|
||||||
// weniger präzise als Zweipass, für Sprachaufnahmen in der Praxis meist
|
// weniger präzise als Zweipass, für Sprachaufnahmen in der Praxis meist
|
||||||
// ausreichend. Lässt sich als Ausbaustufe später nachrüsten.
|
// ausreichend. Lässt sich als Ausbaustufe später nachrüsten.
|
||||||
let filter = format!("loudnorm=I={}:TP=-1.5:LRA=11", options.loudnorm_target);
|
//
|
||||||
|
// Vor loudnorm zusätzlich drei Klangschritte, weil reines loudnorm nur die
|
||||||
|
// Lautheit regelt, aber keine Klangfarbe: erst ein sanfter Low Shelf um
|
||||||
|
// 180 Hz, der das dumpfe, wummernde Volumen aus der Stimme nimmt, dann ein
|
||||||
|
// sanfter High Shelf ab 4000 Hz für mehr Klarheit und Präsenz (das war der
|
||||||
|
// Haupt-Unterschied zu Auphonic im Nutzerfeedback vom 2026-08-19), und ein
|
||||||
|
// leichter Kompressor, der die Stimme etwas durchsetzungsfähiger macht und
|
||||||
|
// kleine Lautstärkeschwankungen ausgleicht. Alle Werte bewusst moderat
|
||||||
|
// gewählt, um keine unnatürlichen oder metallischen Artefakte zu erzeugen.
|
||||||
|
let filter = format!(
|
||||||
|
"bass=frequency=180:gain=-4:width=0.7,treble=frequency=4000:gain=3.5:width=0.6,acompressor=threshold=0.1:ratio=2.5:attack=15:release=200:makeup=1.5,loudnorm=I={}:TP=-1.5:LRA=11",
|
||||||
|
options.loudnorm_target
|
||||||
|
);
|
||||||
run_sidecar(
|
run_sidecar(
|
||||||
&app,
|
&app,
|
||||||
"ffmpeg",
|
"ffmpeg",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue