Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
5ef300f3
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看板
提交
5ef300f3
编写于
8月 09, 2017
作者:
Y
yangyaming
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make type of error rate optional.
上级
7e39debc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
41 addition
and
6 deletion
+41
-6
evaluate.py
evaluate.py
+22
-4
infer.py
infer.py
+18
-1
model.py
model.py
+1
-1
未找到文件。
evaluate.py
浏览文件 @
5ef300f3
...
...
@@ -10,6 +10,7 @@ import paddle.v2 as paddle
from
data_utils.data
import
DataGenerator
from
model
import
DeepSpeech2Model
from
error_rate
import
wer
from
error_rate
import
cer
import
utils
parser
=
argparse
.
ArgumentParser
(
description
=
__doc__
)
...
...
@@ -111,6 +112,14 @@ parser.add_argument(
default
=
'datasets/vocab/eng_vocab.txt'
,
type
=
str
,
help
=
"Vocabulary filepath. (default: %(default)s)"
)
parser
.
add_argument
(
"--error_rate_type"
,
default
=
'wer'
,
choices
=
[
'wer'
,
'cer'
],
type
=
str
,
help
=
"There are total two error rate types including wer and cer. wer "
"represents for word error rate while cer for character error rate. "
"(default: %(default)s)"
)
args
=
parser
.
parse_args
()
...
...
@@ -136,7 +145,14 @@ def evaluate():
rnn_layer_size
=
args
.
rnn_layer_size
,
pretrained_model_path
=
args
.
model_filepath
)
wer_sum
,
num_ins
=
0.0
,
0
if
args
.
error_rate_type
==
'wer'
:
error_rate_func
=
wer
error_rate_info
=
'WER'
else
:
error_rate_func
=
cer
error_rate_info
=
'CER'
error_sum
,
num_ins
=
0.0
,
0
for
infer_data
in
batch_reader
():
result_transcripts
=
ds2_model
.
infer_batch
(
infer_data
=
infer_data
,
...
...
@@ -153,10 +169,12 @@ def evaluate():
for
_
,
transcript
in
infer_data
]
for
target
,
result
in
zip
(
target_transcripts
,
result_transcripts
):
wer_sum
+=
wer
(
target
,
result
)
error_sum
+=
error_rate_func
(
target
,
result
)
num_ins
+=
1
print
(
"WER (%d/?) = %f"
%
(
num_ins
,
wer_sum
/
num_ins
))
print
(
"Final WER (%d/%d) = %f"
%
(
num_ins
,
num_ins
,
wer_sum
/
num_ins
))
print
(
"%s (%d/?) = %f"
%
\
(
error_rate_info
,
num_ins
,
error_sum
/
num_ins
))
print
(
"Final %s (%d/%d) = %f"
%
\
(
error_rate_info
,
num_ins
,
num_ins
,
error_sum
/
num_ins
))
def
main
():
...
...
infer.py
浏览文件 @
5ef300f3
...
...
@@ -10,6 +10,7 @@ import paddle.v2 as paddle
from
data_utils.data
import
DataGenerator
from
model
import
DeepSpeech2Model
from
error_rate
import
wer
from
error_rate
import
cer
import
utils
parser
=
argparse
.
ArgumentParser
(
description
=
__doc__
)
...
...
@@ -111,6 +112,14 @@ parser.add_argument(
type
=
float
,
help
=
"The cutoff probability of pruning"
"in beam search. (default: %(default)f)"
)
parser
.
add_argument
(
"--error_rate_type"
,
default
=
'wer'
,
choices
=
[
'wer'
,
'cer'
],
type
=
str
,
help
=
"There are total two error rate types including wer and cer. wer "
"represents for word error rate while cer for character error rate. "
"(default: %(default)s)"
)
args
=
parser
.
parse_args
()
...
...
@@ -147,6 +156,13 @@ def infer():
language_model_path
=
args
.
language_model_path
,
num_processes
=
args
.
num_processes_beam_search
)
if
args
.
error_rate_type
==
'wer'
:
error_rate_func
=
wer
error_rate_info
=
'wer'
else
:
error_rate_func
=
cer
error_rate_info
=
'cer'
target_transcripts
=
[
''
.
join
([
data_generator
.
vocab_list
[
token
]
for
token
in
transcript
])
for
_
,
transcript
in
infer_data
...
...
@@ -154,7 +170,8 @@ def infer():
for
target
,
result
in
zip
(
target_transcripts
,
result_transcripts
):
print
(
"
\n
Target Transcription: %s
\n
Output Transcription: %s"
%
(
target
,
result
))
print
(
"Current wer = %f"
%
wer
(
target
,
result
))
print
(
"Current %s = %f"
%
\
(
error_rate_info
,
error_rate_func
(
target
,
result
)))
def
main
():
...
...
model.py
浏览文件 @
5ef300f3
...
...
@@ -185,7 +185,7 @@ class DeepSpeech2Model(object):
# best path decode
for
i
,
probs
in
enumerate
(
probs_split
):
output_transcription
=
ctc_best_path_decoder
(
probs_seq
=
probs
,
vocabulary
=
data_generator
.
vocab_list
)
probs_seq
=
probs
,
vocabulary
=
vocab_list
)
results
.
append
(
output_transcription
)
elif
decode_method
==
"beam_search"
:
# initialize external scorer
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录