diff --git a/src-tauri/src/task.rs b/src-tauri/src/task.rs index e876880..48e54e9 100644 --- a/src-tauri/src/task.rs +++ b/src-tauri/src/task.rs @@ -265,7 +265,13 @@ async fn run_pipeline( }, |segment| { if let Some(ref tx) = seg_tx_for_callback { - let _ = tx.try_send(segment.clone()); + let tx = tx.clone(); + let seg = segment.clone(); + tauri::async_runtime::spawn(async move { + if let Err(e) = tx.send(seg).await { + eprintln!("translation: send error: {e}"); + } + }); } if let Ok(mut current_task) = app_state_for_segment.get_task(&task_id_for_segment) { upsert_segment(&mut current_task.segments, segment.clone()); @@ -310,7 +316,7 @@ async fn incremental_translate( task_id: &str, target_lang: &TargetLanguage, ) -> Result<()> { - let batch_size = translator.batch_size().clamp(10, 15); + let batch_size = translator.batch_size().clamp(3, 60); let context_size = translator.context_size().min(5); let mut all_segments: Vec = Vec::new(); let mut buffer: Vec = Vec::new(); diff --git a/src-tauri/src/translate.rs b/src-tauri/src/translate.rs index 306a202..6f9a56c 100644 --- a/src-tauri/src/translate.rs +++ b/src-tauri/src/translate.rs @@ -91,7 +91,7 @@ impl Translator { PF: FnMut(f32), SF: FnMut(SubtitleSegment), { - let batch_size = self.config.batch_size.clamp(10, 15); + let batch_size = self.config.batch_size.clamp(3, 350); let context_size = self.config.context_size.min(5); let mut translated = segments.to_vec(); let target_language_name = match target_language { diff --git a/src/components/SubtitleEditor.vue b/src/components/SubtitleEditor.vue index 687f90f..dcca131 100644 --- a/src/components/SubtitleEditor.vue +++ b/src/components/SubtitleEditor.vue @@ -1,7 +1,22 @@