From e451eb799a5bccd53dfd4b86cf66a4668b0088b7 Mon Sep 17 00:00:00 2001
From: shixian.shi <shixian.shi@alibaba-inc.com>
Date: 星期三, 06 三月 2024 15:31:47 +0800
Subject: [PATCH] infer for word punc model
---
funasr/models/ct_transformer/model.py | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/funasr/models/ct_transformer/model.py b/funasr/models/ct_transformer/model.py
index 1e53aa3..1891ac7 100644
--- a/funasr/models/ct_transformer/model.py
+++ b/funasr/models/ct_transformer/model.py
@@ -3,6 +3,7 @@
# Copyright FunASR (https://github.com/alibaba-damo-academy/FunASR). All Rights Reserved.
# MIT License (https://opensource.org/licenses/MIT)
+import copy
import torch
import numpy as np
import torch.nn.functional as F
@@ -341,11 +342,25 @@
new_mini_sentence_out = new_mini_sentence + "."
new_mini_sentence_punc_out = new_mini_sentence_punc[:-1] + [self.sentence_end_id]
if len(punctuations): punctuations[-1] = 2
- # keep a punctuations array for punc segment
+ # keep a punctuations array for punc segment
if punc_array is None:
punc_array = punctuations
else:
punc_array = torch.cat([punc_array, punctuations], dim=0)
+ # post processing when using word level punc model
+ if jieba_usr_dict:
+ len_tokens = len(tokens)
+ new_punc_array = copy.copy(punc_array).tolist()
+ # for i, (token, punc_id) in enumerate(zip(tokens[::-1], punc_array.tolist()[::-1])):
+ for i, token in enumerate(tokens[::-1]):
+ if '\u0e00' <= token[0] <= '\u9fa5': # ignore en words
+ if len(token) > 1:
+ num_append = len(token) - 1
+ ind_append = len_tokens - i - 1
+ for _ in range(num_append):
+ new_punc_array.insert(ind_append, 1)
+ punc_array = torch.tensor(new_punc_array)
+
result_i = {"key": key[0], "text": new_mini_sentence_out, "punc_array": punc_array}
results.append(result_i)
return results, meta_data
--
Gitblit v1.9.1