深度学习与文本到语音技术

想象一下,走进一家商店,摄像头捕捉到面部,然后播放一段为量身定制的广告。这听起来像是科幻电影《少数派报告》中的场景,但在2020年,不需要视网膜扫描仪,因为拥有人工智能(AI)和机器学习(ML)!

在本系列文章中,将展示如何使用深度学习进行面部识别,然后基于识别出的面部,使用神经网络文本到语音(TTS)引擎播放定制广告。可以在CodeProject上浏览代码,或者下载.zip文件在本地机器上查看代码。

假设已经熟悉AI/ML的基本概念,并且能够使用Python。

文本到语音(TTS)概述

在本系列的前几篇文章中,已经展示了如何使用CNN的面部识别功能来识别一个人。那么,当一个人走进商店,摄像头捕捉到他的面部,智能CNN在幕后告诉这个人是谁。接下来呢?假设面部识别触发了一些商业逻辑,该逻辑从数据库中获取一组广告并将其输入到文本到语音(TTS)系统中。这个商业逻辑可能依赖于数据科学/大数据处理,将个人身份和他们的购买习惯联系起来……然后,播放一个相关的广告。

例如,如果访客被识别为Bob,客户数据库显示Bob上次来商店时买了一双鞋,可以播放这样的广告:“嗨,Bob!船鞋怎么样?如果需要一些袜子搭配,今天有羊驼毛袜子特价,只要5.99美元!”

除了广告生成器之外,还可以在哪些领域应用TTS?在许多领域,如语音助手、视力障碍人士的辅助工具、哑巴人的交流手段、屏幕阅读器、自动通信系统、机器人、有声读物等。

TTS的目标不仅仅是根据文本生成语音,而且还要产生听起来像人类的声音——具有人类声音的语调、音量和节奏。目前最受欢迎的TTS模型是Google的Tacotron2。

Tacotron2的基本原理

Tacotron2依赖于CNN和循环神经网络(RNN),后者是通常用于语音识别的人工神经网络。RNN以时间戳形式保留信息,因此在时间序列预测中非常有用。它们记住先前输入的能力被称为长短期记忆(LSTM)。

RNN如何记住先前的输入值?它们不像传统的ANN那样考虑独立的激活。相反,它们通过为所有层提供相同的权重和偏差,将这些独立的激活转换为依赖的激活。这减少了增加参数数量和记住每个先前输出的复杂性,通过将每个输出转换为下一个隐藏层的输入。一般来说,RNN模仿人类处理数据序列的方式。不会在完全阅读句子之前就决定它是“悲伤的”、“快乐的”还是“冒犯的”。同样,RNN在考虑了从开始到结束的所有数据之前,不会将某物分类为X或Y。

Tacotron2架构分为两个主要部分:Seq2Seq和WaveNet,它们都是深度学习ANN。Seq2Seq接收一段文本作为输入,输出Mel频谱图——随时间变化的信号频率表示。

Seq2Seq遵循编码器/注意力/解码器的执行顺序。第一部分,编码器,将文本转换为单词嵌入向量,然后作为解码器的输入来预测频谱图。一般来说,Seq2Seq的工作原理如下:

编码器包括三个卷积层,每个层包含512个5x1形状的滤波器,后面跟着批量归一化和ReLU激活 注意力网络获取编码器输入,并尝试将完整的编码序列总结为每个解码器输出步骤的固定长度上下文向量 最后一个卷积层的输出被传递到一个包含512个单元(每个方向256个)的单双向LSTM层,以生成编码特征

Tacotron2的第二个组件,WaveNet,接收第一个组件的输出(Mel频谱图)作为输入,并输出音频波形——随时间变化的音频信号表示。

让实现TTS

为了演示TTS在“少数派报告”场景中如何工作,让使用这个仓库中可用的Tacotron2模型。首先安装Tacotron实现——按照Readme文件中的说明操作。

这个代码的好处是它附带了一个演示服务器,可以与现有的预训练模型连接。这允许输入一个文本字符串,并接收与该字符串相关联的语音(音频)片段。服务器安装是一个单独的过程——再次查看Readme。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485