APP下载

一种基于神经网络的语音对话系统设计

2021-05-20陈风驾

科学技术创新 2021年12期
关键词:马尔科夫时刻卷积

陈风驾

(上海微创软件股份有限公司,上海200241)

为了解决英语口语练习问题,通过构建一个语音对话系统应用让学习者可以使用英语沟通。

语音对话系统通常由语音识别、对话管理和语音生成组成,在语音识别和语音生成上神经网络模型表现已经比传统机器学习模型优秀,因此本系统基于神经网络模型来构建语音对话系统,在特定语音对话环境中能满足用户需求,实现锻炼英语口语的目的。本文将对系统实现的关键技术给出描述。

1 系统关键技术理论

本文使用tensorflow2 开源库来训练语音识别和语音合成模型,tensorflow 2 支持多种神经网络模型的训练,例如卷积神经网络、循环神经网络和深度神经网络等。

1.1 循环神经网络

循环神经网络是一种特殊的神经网络结构,其通将上一时刻状态传入到当前时刻的运算中去,但是由于收敛函数,通常是梯度下降算法存在着梯度消失或者爆炸问题文献导致模型失真。Hochreater 和Schmidhuber[1-2]在1997 年提出了一种新的网络结构来解决梯度消失或者爆炸的问题,叫做长短时记忆神经网络即LSTM。

LSTM 网络通过添加了3 个控制门:遗忘门、输入门和输出门,将上一时刻的输出通过更加复杂的函数来和逻辑处,LSTM模型基本结构如图1 所示。

图1 LSTM 模型结构

公式(1)中ft叫做遗忘门,表示ct-1的哪些特征因子被用于计算ct。遗忘门是最重要的门,其决定了哪些特征因子会被记忆并传递到后序时刻,哪些因子应该被丢弃不应该影响后序时刻的状态。

根据公式(5)可以计算出输出门向量,而公式(6)就会得到最后的输出结果,同时该输出ht也会作为隐含节点最为输入迭代到下一时刻的计算中。

在语音识别领域是一个典型的时序应用场景,LSTM 结合传统声学模型隐马尔科夫模型在该领域表现十分出色。隐马尔科夫模型将音频信号转换成数字信号并提取特征,并将其输入到LSTM 模型进行解码,并最终得到语音识别的结果。

1.2 卷积神经网络

卷积神经网络即CNN[3-4]是一种前馈神经网络,卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其它深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果。

在语音合成方面,语音的时长很难固定,而在传统CNN 模型中无法保存长时间周期信息处理,为了解决这个问题Google在2016 年提出了Wavenet 模型[4],它是一种CNN 模型,它添加一个扩大因果卷积( dilated causal convolution)模型结构,使得每个卷积层都对前一层进行卷积,卷积核越大,层数越多,时域上的感知能力越强,感知范围越大。

在生成过程中,通过公式(7)可以得知每生成一个点,把该点放到输入层最后一个点继续迭代生成。通过使用因果卷积,Wavenet 可以确保模型在对数据建模的时候不会违反数据的顺序:模型在t 时刻输出的预测结果p 不会依赖任何一个未来时刻的数据。因此单一模型的WaveNet 可以以相同的保真度捕获很多说话人的特征,并可以在语音生成中还原人的说话特征,让生成的语音听起来与人类说话并无区别。训练时对于音频这样的一维数据来说,将正常卷积的输出偏移几个时间步骤即可。此外由于使用因果卷积的模型中没有循环连接,通常训练起来比RNN 更快,特别是对于长句子的训练。因此使用Wavenet 模型作为该系统的语音合成模型。

2 系统构建

系统构建分为业务实现和模型实现,其中模型实现更加重要,业务实现为模型直接的调用关系,模型实现为构建所述LSTM 和Wavenet 模型。

2.1 系统结构

语音对话系统由3 个部分组成,分别是语音识别、对话管理和语音合成。

图2 语音对话系统结构

如图2 所示,语音识别部分中使用了LSTM 和隐马尔科夫模型,通过终端麦克风收集语音信号通过隐马尔科夫模型转换成声学模型,再由LSTM 预测输出文本,通过调用对话管理模块接口将文本输入到对话管理模块,对话管理使用知识图谱管理上下文应答,通过预先设定的场景,可以挑选出足够合理有效的回答语句作为输出,最终语音合成模块将输出的文本直接生成语音。

2.2 平台选择

TensorFlow 2 是tensorflow 的第二代版本,它依旧是基于图运算,同时也对一些常用的训练函数进行了封装,也将Keras(TensorFlow 和Theano 的深度学习库)的部分功能直接添加TensorFlow 2.0 中,因此在使用TensorFlow 2 构建LSTM 模型可以直接使用Keras 封装好的API。系统训练数据集采用librispeech,其包含超过1000 小时16Hz 的语音素材,并且已经校验对齐,在TensorFlow2.0 中也有Datasets 可以预处理librispeech,将语音数据转换成可以用于训练的数据。tf.data.Dataset 接口可以输入相应的参数对应不同的数据集,tensorflow会帮我们下载到本地硬盘和装配到内存,可以直接用于训练。

2.3 LSTM 模型构建

导入TensorFlow 2.0 包后可使用LSTM 的两个API 接口:tf.keras.layers.LSTM()和tf.keras.layers.LSTMCell()。其中tf.keras.layers.LSTMCell () 继承自LSTM 的,可以根据需要来定义每个LSTM 结构体的构造,并将其传入RNN 链中就可以形成一个LSTM 模型,如下代码所示rnn = tf.keras.layers.RNN(

tf.keras.layers.LSTMCell(4),

return_sequences=True,

return_state=True)

将模型设定加载到rnn,然后执行rnn 就可以得到模型。

2.4 CNN 模型构建

在tensorflow 2.0 中CNN 模型被封装成了一个接口,通过调用接口可以直接训练CNN 模型

该接口提供了众多参数用于设定模型的结构和细节,其中padding 参数等于“causal”时,它会将output[t]不依赖于output[t-1],直接对上一层结果进行卷积计算,从而转变成Wavenet 这种特殊的CNN 模型。

3 结论

对于Tensorflow 2.0 使用感受相比tensorflow 来说进步很多,在构建系统中更多精力在于调配模型参数,而不是写很多代码预先处理数据,相对于流图模式,kerasAPI 更加让人容易理解代码块的含义,也可以构建更加复杂的混合模型。经测试该语音对话系统能够在较短的时间内反馈,同时也可以进行多轮对话,基本满足英语学习者学习口语的需求。

猜你喜欢

马尔科夫时刻卷积
基于三维马尔科夫模型的5G物联网数据传输协议研究
冬“傲”时刻
基于3D-Winograd的快速卷积算法设计及FPGA实现
捕猎时刻
基于叠加马尔科夫链的边坡位移预测研究
卷积神经网络的分析与设计
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
马尔科夫链在企业沙盘模拟教学质量评价中的应用
马尔科夫链在企业沙盘模拟教学质量评价中的应用