Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
f8450c39
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看板
提交
f8450c39
编写于
7月 11, 2022
作者:
H
Hui Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rename n_v_s to n_v_b, n_v_ns to n_v_nb
上级
f4b11b19
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
17 deletion
+17
-17
paddlespeech/server/engine/asr/online/ctc_search.py
paddlespeech/server/engine/asr/online/ctc_search.py
+17
-17
未找到文件。
paddlespeech/server/engine/asr/online/ctc_search.py
浏览文件 @
f8450c39
...
@@ -83,8 +83,8 @@ class CTCPrefixBeamSearch:
...
@@ -83,8 +83,8 @@ class CTCPrefixBeamSearch:
# cur_hyps: (prefix, (blank_ending_score, none_blank_ending_score))
# cur_hyps: (prefix, (blank_ending_score, none_blank_ending_score))
# 0. blank_ending_score,
# 0. blank_ending_score,
# 1. none_blank_ending_score,
# 1. none_blank_ending_score,
# 2. viterbi_blank ending,
# 2. viterbi_blank ending
score
,
# 3. viterbi_non_blank,
# 3. viterbi_non_blank
score
,
# 4. current_token_prob,
# 4. current_token_prob,
# 5. times_viterbi_blank, times_b
# 5. times_viterbi_blank, times_b
# 6. times_titerbi_non_blank, times_nb
# 6. times_titerbi_non_blank, times_nb
...
@@ -110,63 +110,63 @@ class CTCPrefixBeamSearch:
...
@@ -110,63 +110,63 @@ class CTCPrefixBeamSearch:
times_nb
)
in
self
.
cur_hyps
:
times_nb
)
in
self
.
cur_hyps
:
last
=
prefix
[
-
1
]
if
len
(
prefix
)
>
0
else
None
last
=
prefix
[
-
1
]
if
len
(
prefix
)
>
0
else
None
if
s
==
blank_id
:
# blank
if
s
==
blank_id
:
# blank
n_pb
,
n_pnb
,
n_v_
s
,
n_v_ns
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
=
next_hyps
[
n_pb
,
n_pnb
,
n_v_
b
,
n_v_nb
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
=
next_hyps
[
prefix
]
prefix
]
n_pb
=
log_add
([
n_pb
,
pb
+
ps
,
pnb
+
ps
])
n_pb
=
log_add
([
n_pb
,
pb
+
ps
,
pnb
+
ps
])
pre_times
=
times_b
if
v_b_s
>
v_nb_s
else
times_nb
pre_times
=
times_b
if
v_b_s
>
v_nb_s
else
times_nb
n_times_b
=
copy
.
deepcopy
(
pre_times
)
n_times_b
=
copy
.
deepcopy
(
pre_times
)
viterbi_score
=
v_b_s
if
v_b_s
>
v_nb_s
else
v_nb_s
viterbi_score
=
v_b_s
if
v_b_s
>
v_nb_s
else
v_nb_s
n_v_
s
=
viterbi_score
+
ps
n_v_
b
=
viterbi_score
+
ps
next_hyps
[
prefix
]
=
(
n_pb
,
n_pnb
,
n_v_
s
,
n_v_ns
,
next_hyps
[
prefix
]
=
(
n_pb
,
n_pnb
,
n_v_
b
,
n_v_nb
,
n_cur_token_prob
,
n_times_b
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
)
n_times_nb
)
elif
s
==
last
:
elif
s
==
last
:
# Update *ss -> *s;
# Update *ss -> *s;
# case1: *a + a => *a
# case1: *a + a => *a
n_pb
,
n_pnb
,
n_v_
s
,
n_v_ns
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
=
next_hyps
[
n_pb
,
n_pnb
,
n_v_
b
,
n_v_nb
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
=
next_hyps
[
prefix
]
prefix
]
n_pnb
=
log_add
([
n_pnb
,
pnb
+
ps
])
n_pnb
=
log_add
([
n_pnb
,
pnb
+
ps
])
if
n_v_n
s
<
v_nb_s
+
ps
:
if
n_v_n
b
<
v_nb_s
+
ps
:
n_v_n
s
=
v_nb_s
+
ps
n_v_n
b
=
v_nb_s
+
ps
if
n_cur_token_prob
<
ps
:
if
n_cur_token_prob
<
ps
:
n_cur_token_prob
=
ps
n_cur_token_prob
=
ps
n_times_nb
=
copy
.
deepcopy
(
times_nb
)
n_times_nb
=
copy
.
deepcopy
(
times_nb
)
n_times_nb
[
n_times_nb
[
-
1
]
=
self
.
abs_time_step
# 注意,这里要重新使用绝对时间
-
1
]
=
self
.
abs_time_step
# 注意,这里要重新使用绝对时间
next_hyps
[
prefix
]
=
(
n_pb
,
n_pnb
,
n_v_
s
,
n_v_ns
,
next_hyps
[
prefix
]
=
(
n_pb
,
n_pnb
,
n_v_
b
,
n_v_nb
,
n_cur_token_prob
,
n_times_b
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
)
n_times_nb
)
# Update *s-s -> *ss, - is for blank
# Update *s-s -> *ss, - is for blank
# Case 2: *aε + a => *aa
# Case 2: *aε + a => *aa
n_prefix
=
prefix
+
(
s
,
)
n_prefix
=
prefix
+
(
s
,
)
n_pb
,
n_pnb
,
n_v_
s
,
n_v_ns
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
=
next_hyps
[
n_pb
,
n_pnb
,
n_v_
b
,
n_v_nb
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
=
next_hyps
[
n_prefix
]
n_prefix
]
if
n_v_n
s
<
v_b_s
+
ps
:
if
n_v_n
b
<
v_b_s
+
ps
:
n_v_n
s
=
v_b_s
+
ps
n_v_n
b
=
v_b_s
+
ps
n_cur_token_prob
=
ps
n_cur_token_prob
=
ps
n_times_nb
=
copy
.
deepcopy
(
times_b
)
n_times_nb
=
copy
.
deepcopy
(
times_b
)
n_times_nb
.
append
(
self
.
abs_time_step
)
n_times_nb
.
append
(
self
.
abs_time_step
)
n_pnb
=
log_add
([
n_pnb
,
pb
+
ps
])
n_pnb
=
log_add
([
n_pnb
,
pb
+
ps
])
next_hyps
[
n_prefix
]
=
(
n_pb
,
n_pnb
,
n_v_
s
,
n_v_ns
,
next_hyps
[
n_prefix
]
=
(
n_pb
,
n_pnb
,
n_v_
b
,
n_v_nb
,
n_cur_token_prob
,
n_times_b
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
)
n_times_nb
)
else
:
else
:
# Case 3: *a + b => *ab, *aε + b => *ab
# Case 3: *a + b => *ab, *aε + b => *ab
n_prefix
=
prefix
+
(
s
,
)
n_prefix
=
prefix
+
(
s
,
)
n_pb
,
n_pnb
,
n_v_
s
,
n_v_ns
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
=
next_hyps
[
n_pb
,
n_pnb
,
n_v_
b
,
n_v_nb
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
=
next_hyps
[
n_prefix
]
n_prefix
]
viterbi_score
=
v_b_s
if
v_b_s
>
v_nb_s
else
v_nb_s
viterbi_score
=
v_b_s
if
v_b_s
>
v_nb_s
else
v_nb_s
pre_times
=
times_b
if
v_b_s
>
v_nb_s
else
times_nb
pre_times
=
times_b
if
v_b_s
>
v_nb_s
else
times_nb
if
n_v_n
s
<
viterbi_score
+
ps
:
if
n_v_n
b
<
viterbi_score
+
ps
:
n_v_n
s
=
viterbi_score
+
ps
n_v_n
b
=
viterbi_score
+
ps
n_cur_token_prob
=
ps
n_cur_token_prob
=
ps
n_times_nb
=
copy
.
deepcopy
(
pre_times
)
n_times_nb
=
copy
.
deepcopy
(
pre_times
)
n_times_nb
.
append
(
self
.
abs_time_step
)
n_times_nb
.
append
(
self
.
abs_time_step
)
n_pnb
=
log_add
([
n_pnb
,
pb
+
ps
,
pnb
+
ps
])
n_pnb
=
log_add
([
n_pnb
,
pb
+
ps
,
pnb
+
ps
])
next_hyps
[
n_prefix
]
=
(
n_pb
,
n_pnb
,
n_v_
s
,
n_v_ns
,
next_hyps
[
n_prefix
]
=
(
n_pb
,
n_pnb
,
n_v_
b
,
n_v_nb
,
n_cur_token_prob
,
n_times_b
,
n_cur_token_prob
,
n_times_b
,
n_times_nb
)
n_times_nb
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录