mirror of
https://github.com/HiMeditator/auto-caption.git
synced 2026-02-04 04:14:42 +08:00
feat(engine): 字幕引擎添加在终端直接显示字幕的功能
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from .audioprcs import merge_chunk_channels, resample_chunk_mono
|
||||
from .sysout import stdout, stdout_err, stdout_cmd, stdout_obj, stderr
|
||||
from .sysout import change_caption_display
|
||||
from .shared import shared_data
|
||||
from .server import start_server
|
||||
from .translation import ollama_translate, google_translate
|
||||
@@ -1,5 +1,10 @@
|
||||
import sys
|
||||
import json
|
||||
import sherpa_onnx
|
||||
|
||||
display_caption = False
|
||||
caption_index = -1
|
||||
display = sherpa_onnx.Display()
|
||||
|
||||
def stdout(text: str):
|
||||
stdout_cmd("print", text)
|
||||
@@ -12,7 +17,39 @@ def stdout_cmd(command: str, content = ""):
|
||||
sys.stdout.write(json.dumps(msg) + "\n")
|
||||
sys.stdout.flush()
|
||||
|
||||
def change_caption_display(val: bool):
|
||||
global display_caption
|
||||
display_caption = val
|
||||
|
||||
def caption_display(obj):
|
||||
global display_caption
|
||||
global caption_index
|
||||
global display
|
||||
|
||||
if caption_index >=0 and caption_index != int(obj['index']):
|
||||
display.finalize_current_sentence()
|
||||
caption_index = int(obj['index'])
|
||||
full_text = f"{obj['text']} {obj['translation']}"
|
||||
display.update_text(full_text)
|
||||
display.display()
|
||||
|
||||
def translation_display(obj):
|
||||
global original_caption
|
||||
global display
|
||||
full_text = f"{obj['text']} {obj['translation']}"
|
||||
display.update_text(full_text)
|
||||
display.display()
|
||||
display.finalize_current_sentence()
|
||||
|
||||
def stdout_obj(obj):
|
||||
global display_caption
|
||||
print(obj['command'], display_caption)
|
||||
if obj['command'] == 'caption' and display_caption:
|
||||
caption_display(obj)
|
||||
return
|
||||
if obj['command'] == 'translation' and display_caption:
|
||||
translation_display(obj)
|
||||
return
|
||||
sys.stdout.write(json.dumps(obj) + "\n")
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ def ollama_translate(model: str, target: str, text: str, time_s: str):
|
||||
stdout_obj({
|
||||
"command": "translation",
|
||||
"time_s": time_s,
|
||||
"text": text,
|
||||
"translation": content.strip()
|
||||
})
|
||||
|
||||
@@ -43,6 +44,7 @@ def google_translate(model: str, target: str, text: str, time_s: str):
|
||||
stdout_obj({
|
||||
"command": "translation",
|
||||
"time_s": time_s,
|
||||
"text": text,
|
||||
"translation": res.text
|
||||
})
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user