王梦迪
2025-05-22 561bdbdfc0f8fd6234c5130fdc8631bf8e294bd8
通过缓存seg_dict,加快seaco_paraformer推理 (#2520)

Co-authored-by: wangmengdi06 <wangmengdi06@58.com>
1个文件已修改
26 ■■■■■ 已修改文件
funasr/models/seaco_paraformer/model.py 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/models/seaco_paraformer/model.py
@@ -16,6 +16,7 @@
from typing import Dict, Tuple
from contextlib import contextmanager
from distutils.version import LooseVersion
from functools import lru_cache
from funasr.register import tables
from funasr.utils import postprocess_utils
@@ -510,17 +511,6 @@
        return results, meta_data
    def generate_hotwords_list(self, hotword_list_or_file, tokenizer=None, frontend=None):
        def load_seg_dict(seg_dict_file):
            seg_dict = {}
            assert isinstance(seg_dict_file, str)
            with open(seg_dict_file, "r", encoding="utf8") as f:
                lines = f.readlines()
                for line in lines:
                    s = line.strip().split()
                    key = s[0]
                    value = s[1:]
                    seg_dict[key] = " ".join(value)
            return seg_dict
        def seg_tokenize(txt, seg_dict):
            pattern = re.compile(r"^[\u4E00-\u9FA50-9]+$")
@@ -626,3 +616,17 @@
        models = export_rebuild_model(model=self, **kwargs)
        return models
@lru_cache(maxsize=1)
def load_seg_dict(seg_dict_file):
    seg_dict = {}
    assert isinstance(seg_dict_file, str)
    with open(seg_dict_file, "r", encoding="utf8") as f:
        lines = f.readlines()
        for line in lines:
            s = line.strip().split()
            key = s[0]
            value = s[1:]
            seg_dict[key] = " ".join(value)
    return seg_dict