From 3919d7454c070702e94b149e4032e9db08d28fa3 Mon Sep 17 00:00:00 2001
From: zhifu gao <zhifu.gzf@alibaba-inc.com>
Date: 星期一, 22 一月 2024 15:42:45 +0800
Subject: [PATCH] Funasr1.0 (#1279)
---
funasr/models/paraformer/model.py | 6 +++---
funasr/tokenizer/sentencepiece_tokenizer.py | 26 +++++++++++++++++++-------
.gitignore | 1 +
3 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/.gitignore b/.gitignore
index 4023869..6bdfd5d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,4 @@
.ipynb_checkpoints
outputs*
emotion2vec*
+GPT-SoVITS*
diff --git a/funasr/models/paraformer/model.py b/funasr/models/paraformer/model.py
index 0c4f14a..6e422ad 100644
--- a/funasr/models/paraformer/model.py
+++ b/funasr/models/paraformer/model.py
@@ -528,9 +528,9 @@
if tokenizer is not None:
# Change integer-ids to tokens
token = tokenizer.ids2tokens(token_int)
- text = tokenizer.tokens2text(token)
-
- text_postprocessed, _ = postprocess_utils.sentence_postprocess(token)
+ text_postprocessed = tokenizer.tokens2text(token)
+ if not hasattr(tokenizer, "bpemodel"):
+ text_postprocessed, _ = postprocess_utils.sentence_postprocess(token)
result_i = {"key": key[i], "text": text_postprocessed}
diff --git a/funasr/tokenizer/sentencepiece_tokenizer.py b/funasr/tokenizer/sentencepiece_tokenizer.py
index 9a65920..05ca348 100644
--- a/funasr/tokenizer/sentencepiece_tokenizer.py
+++ b/funasr/tokenizer/sentencepiece_tokenizer.py
@@ -5,12 +5,16 @@
import sentencepiece as spm
-from funasr.tokenizer.abs_tokenizer import AbsTokenizer
+from funasr.tokenizer.abs_tokenizer import BaseTokenizer
+from funasr.register import tables
-
-class SentencepiecesTokenizer(AbsTokenizer):
- def __init__(self, model: Union[Path, str]):
- self.model = str(model)
+@tables.register("tokenizer_classes", "SentencepiecesTokenizer")
+class SentencepiecesTokenizer(BaseTokenizer):
+ def __init__(self, bpemodel: Union[Path, str],
+ **kwargs
+ ):
+ super().__init__(**kwargs)
+ self.bpemodel = str(bpemodel)
# NOTE(kamo):
# Don't build SentencePieceProcessor in __init__()
# because it's not picklable and it may cause following error,
@@ -19,13 +23,13 @@
self.sp = None
def __repr__(self):
- return f'{self.__class__.__name__}(model="{self.model}")'
+ return f'{self.__class__.__name__}(model="{self.bpemodel}")'
def _build_sentence_piece_processor(self):
# Build SentencePieceProcessor lazily.
if self.sp is None:
self.sp = spm.SentencePieceProcessor()
- self.sp.load(self.model)
+ self.sp.load(self.bpemodel)
def text2tokens(self, line: str) -> List[str]:
self._build_sentence_piece_processor()
@@ -34,3 +38,11 @@
def tokens2text(self, tokens: Iterable[str]) -> str:
self._build_sentence_piece_processor()
return self.sp.DecodePieces(list(tokens))
+
+ def encode(self, line: str) -> List[int]:
+ self._build_sentence_piece_processor()
+ return self.sp.EncodeAsIds(line)
+
+ def decode(self, line: List[int]):
+ self._build_sentence_piece_processor()
+ return self.sp.DecodeIds(line)
\ No newline at end of file
--
Gitblit v1.9.1