项目文件夹

文件
2026-07-13 12:28:27 +08:00

68 行
1.7 KiB
Python

# coding: utf-8
"""
Token 处理工具函数
提供对识别结果中的 Token 列表进行基础处理的辅助方法。
"""
from typing import List, Tuple
from core.constants import Punctuation
from . import logger
def process_tokens_safely(tokens: List) -> List[str]:
"""
安全处理 tokens,过滤无效 UTF-8 编码
Args:
tokens: 原始 token 列表
Returns:
清理后的字符串 token 列表
"""
clean_tokens = []
for token in tokens:
if isinstance(token, bytes):
token = token.decode('utf-8', errors='ignore')
clean_tokens.append(token)
return clean_tokens
def tokens_to_text(tokens: List[str]) -> str:
"""
将 tokens 序列化为最终显示文本
处理 Paraformer 特有的 @@ 标记(表示后续 token 应直接拼接)。
对于现代模型(如 Fun-ASR-Nano),空格本身通常已存在于 token 列表中。
Args:
tokens: token 列表
Returns:
合并后的完整文本
"""
return "".join(tokens).replace('@@', '')
def remove_trailing_punctuation(
tokens: List[str],
timestamps: List[float]
) -> Tuple[List[str], List[float]]:
"""
移除末尾的标点符号
常用于某些模型在片段末尾产生的重复或不必要的标点。
Args:
tokens: token 列表
timestamps: 时间戳列表
Returns:
(处理后的 tokens, 处理后的 timestamps)
"""
if tokens and tokens[-1] in Punctuation.ALL:
logger.debug(f"移除末尾标点: '{tokens[-1]}'")
return tokens[:-1], timestamps[:-1] if timestamps else timestamps
return tokens, timestamps