tianyaogavin's picture
init main framework
1bf36cc
"""
显示模块 - 负责将转写结果显示给用户
"""
from rich.console import Console
from rich.text import Text
from typing import Literal
import logging
# 配置日志
def setup_logger(name, level=logging.INFO):
"""设置日志记录器"""
logger = logging.getLogger(name)
# 清除所有已有的handler,避免重复
if logger.handlers:
logger.handlers.clear()
# 添加新的handler
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(level)
# 禁止传播到父logger,避免重复日志
logger.propagate = False
return logger
# 创建日志记录器
logger = setup_logger("display")
# 创建控制台对象
console = Console()
class OutputRenderer:
"""
输出渲染器,负责将转写结果显示给用户
支持原始文本和优化后文本的不同样式显示
"""
def __init__(self):
"""初始化输出渲染器"""
self.history = {} # 用于更新同一条句子的优化内容
logger.debug("输出渲染器初始化完成")
def display(self, sentence_id: str, text: str, state: Literal["raw", "optimized"]):
"""
显示转写结果
:param sentence_id: 句子ID
:param text: 文本内容
:param state: 状态,raw表示原始文本,optimized表示优化后文本
"""
if state == "raw":
styled_text = Text(text, style="dim") # 灰色表示原始输出
logger.debug(f"显示原始文本: {sentence_id}")
elif state == "optimized":
styled_text = Text(text, style="bold black") # 深黑色加粗
logger.debug(f"显示优化文本: {sentence_id}")
else:
logger.error(f"未知的输出状态: {state}")
raise ValueError(f"未知的输出状态: {state}")
# 打印新内容(或替换历史)
if sentence_id in self.history:
console.print(f"[更新] 句子 {sentence_id}:", styled_text)
logger.info(f"更新句子: {sentence_id}")
else:
console.print(f"[输出] 句子 {sentence_id}:", styled_text)
logger.info(f"输出句子: {sentence_id}")
# 记录历史
self.history[sentence_id] = text
logger.debug(f"句子内容: {text}")
if __name__ == "__main__":
# 设置日志级别为DEBUG以查看详细信息
logger.setLevel(logging.DEBUG)
# 测试代码
renderer = OutputRenderer()
# 显示原始文本
renderer.display("s1", "I think we should start the meeting now.", "raw")
# 模拟优化回填
renderer.display("s1", "I believe it's time to begin the meeting.", "optimized")