Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
ed19e243
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
大约 2 年 前同步成功
通知
210
Star
8425
Fork
1598
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
245
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DeepSpeech
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
245
Issue
245
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
ed19e243
编写于
10月 25, 2021
作者:
H
Hui Zhang
提交者:
GitHub
10月 25, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #930 from Jackwaterveg/join_ctc
Join ctc
上级
e4ecfb22
9e2773df
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
22 addition
and
13 deletion
+22
-13
deepspeech/decoders/recog.py
deepspeech/decoders/recog.py
+13
-6
deepspeech/models/lm/transformer.py
deepspeech/models/lm/transformer.py
+7
-6
deepspeech/modules/encoder.py
deepspeech/modules/encoder.py
+2
-1
未找到文件。
deepspeech/decoders/recog.py
浏览文件 @
ed19e243
...
...
@@ -24,6 +24,7 @@ from .utils import add_results_to_json
from
deepspeech.exps
import
dynamic_import_tester
from
deepspeech.io.reader
import
LoadInputsAndTargets
from
deepspeech.models.asr_interface
import
ASRInterface
from
deepspeech.models.lm.transformer
import
TransformerLM
from
deepspeech.utils.log
import
Log
# from espnet.asr.asr_utils import get_model_conf
# from espnet.asr.asr_utils import torch_load
...
...
@@ -78,12 +79,18 @@ def recog_v2(args):
preprocess_args
=
{
"train"
:
False
},
)
if
args
.
rnnlm
:
lm_args
=
get_model_conf
(
args
.
rnnlm
,
args
.
rnnlm_conf
)
# NOTE: for a compatibility with less than 0.5.0 version models
lm_model_module
=
getattr
(
lm_args
,
"model_module"
,
"default"
)
lm_class
=
dynamic_import_lm
(
lm_model_module
,
lm_args
.
backend
)
lm
=
lm_class
(
len
(
char_list
),
lm_args
)
torch_load
(
args
.
rnnlm
,
lm
)
lm_path
=
args
.
rnnlm
lm
=
TransformerLM
(
n_vocab
=
5002
,
pos_enc
=
None
,
embed_unit
=
128
,
att_unit
=
512
,
head
=
8
,
unit
=
2048
,
layer
=
16
,
dropout_rate
=
0.5
,
)
model_dict
=
paddle
.
load
(
lm_path
)
lm
.
set_state_dict
(
model_dict
)
lm
.
eval
()
else
:
lm
=
None
...
...
deepspeech/models/lm/transformer.py
浏览文件 @
ed19e243
...
...
@@ -11,6 +11,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import
logging
from
typing
import
Any
from
typing
import
List
from
typing
import
Tuple
...
...
@@ -150,7 +151,7 @@ class TransformerLM(nn.Layer, LMInterface, BatchScorerInterface):
h
,
_
,
cache
=
self
.
encoder
.
forward_one_step
(
emb
,
self
.
_target_mask
(
y
),
cache
=
state
)
h
=
self
.
decoder
(
h
[:,
-
1
])
logp
=
h
.
log_softmax
(
axis
=-
1
).
squeeze
(
0
)
logp
=
F
.
log_softmax
(
h
).
squeeze
(
0
)
return
logp
,
cache
# batch beam search API (see BatchScorerInterface)
...
...
@@ -193,7 +194,7 @@ class TransformerLM(nn.Layer, LMInterface, BatchScorerInterface):
h
,
_
,
states
=
self
.
encoder
.
forward_one_step
(
emb
,
self
.
_target_mask
(
ys
),
cache
=
batch_state
)
h
=
self
.
decoder
(
h
[:,
-
1
])
logp
=
h
.
log_softmax
(
axi
=-
1
)
logp
=
F
.
log_softmax
(
h
)
# transpose state of [layer, batch] into [batch, layer]
state_list
=
[[
states
[
i
][
b
]
for
i
in
range
(
n_layers
)]
...
...
@@ -231,14 +232,14 @@ if __name__ == "__main__":
#Test the score
input2
=
np
.
array
([
5
])
input2
=
paddle
.
to_tensor
(
input2
)
state
=
(
None
,
None
,
0
)
state
=
None
output
,
state
=
tlm
.
score
(
input2
,
state
,
None
)
input3
=
np
.
array
([
10
])
input3
=
np
.
array
([
5
,
10
])
input3
=
paddle
.
to_tensor
(
input3
)
output
,
state
=
tlm
.
score
(
input3
,
state
,
None
)
input4
=
np
.
array
([
0
])
input4
=
np
.
array
([
5
,
10
,
0
])
input4
=
paddle
.
to_tensor
(
input4
)
output
,
state
=
tlm
.
score
(
input4
,
state
,
None
)
print
(
"output"
,
output
)
...
...
deepspeech/modules/encoder.py
浏览文件 @
ed19e243
...
...
@@ -399,7 +399,8 @@ class TransformerEncoder(BaseEncoder):
xs
,
pos_emb
,
masks
=
self
.
embed
(
xs
,
masks
.
astype
(
xs
.
dtype
),
offset
=
0
)
else
:
xs
=
self
.
embed
(
xs
)
xs
,
pos_emb
,
masks
=
self
.
embed
(
xs
,
masks
.
astype
(
xs
.
dtype
),
offset
=
0
)
#TODO(Hui Zhang): remove mask.astype, stride_slice not support bool tensor
masks
=
masks
.
astype
(
paddle
.
bool
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录