接着上回结束的地方,本回我们来分析sparse_tuple_to_texts函数和ndarray_to_text函数。首先分析sparse_tuple_to_texts函数。
1.sparse_tuple_to_texts函数
给出代码如下:
def sparse_tuple_to_texts(tuple):
indices = tuple[0]
values = tuple[1]
results = [''] * tuple[2][0]
for i in range(len(indices)):
index = indices[i][0]
c = values[i]
c = ' ' if c == SPACE_INDEX else chr(c + FIRST_INDEX)
results[index] = results[index] + c
# List of strings
return results
由前文可知indices是一个[[a b][c d]]类型的数组(其中a、c表示第几个seq,b、d表示该seq中的第几个time_slice),values对应着所有seq的数值表示,tuple[2][0]为seq个数。result返回数据文件夹中test目录下标注文本的信息。
2.ndarray_to_text函数
这个函数很简单,只是将输入的数值型数组value转化为字符串输出,代码如下:
def ndarray_to_text(value):
results = ''
for i in range(len(value)):
results += chr(value[i] + FIRST_INDEX)
return results.replace('`', ' ')
至此,我们的语音识别系统的代码基本分析完了。但是细心的小伙伴可能已经想问了CTC loss是怎么定义的?AdamOptimizer又是怎么定义的?后文我们将对这两个部分进行相关说明。