我们总会回忆起以前节日里不可或缺的团圆时刻,那么 AI 能理解当时的心情吗?过年期间,央视新闻官方微博发布了一个 HTML5 网页《你的生活 AI 为你唱作》,我们借助它体验了一把 AI 为自己歌唱的感觉。用户只要上传 1 到 4 张最爱的、最喜欢回忆的照片,AI 就能以说唱的形式为你作词、为你演唱。
你的生活 AI 为你唱作:http://cctvsongbot.newscctv.net/index.html
在上传图像后,我们可以选择两种语音进行创作,即央视主持人康辉与微软智能女声晓晓。选定声音后,系统就能很快生成歌词与对应的歌声。那么什么样的 AI 系统,才能在 2 小时内吸引并支撑起 300 万人次的交互请求呢?
最近微软亚洲研究院向机器之心介绍了《AI 为你唱作》背后的技术,这次与央视合作,微软借助其强大的全方位 AI 技术完成了这个 H5 春节互动平台。具体而言,利用计算机视觉、自然语言处理、语音合成和 Azure 云计算等技术,微软打造了一条从图像到诗歌再到语音的联合系统。
简单而言,AI 唱作会先使用 Azure 的视觉 API 对用户输入的图像进行分析,并得出几十种类别,例如人脸、背景色和情绪等。然后这些类别可以映射到几千种标签,它们包含了大量关键信息,并可作为生成歌词的输入。在生成歌词后,再调用 Azure Neural TTS 的 API 生成最终的说唱语音。
通过联合计算机视觉、自然语言处理和语音合成三大技术,AI 为你唱作才能为你唱响,而本文重点介绍了微软歌词生成模型与语音合成模型。
歌词生成
其实微软在十几年以前就做了对联,后来开始做古体的诗、绝句、宋词和现代诗等,然后慢慢扩展到歌词和作曲。
微软亚洲研究院自然语言计算组资深研究员韦福如表示:「从难点上看,生成的歌词要求琅琅上口,且比较接近大家的生活。而对于整个模型而言,输入只能从图像获取一些信息,包括有没有人脸或笑脸、有几个人、大概的年龄等等。我们把这些信息映射到更细致的关键词,例如开心、爱情等数千种关键词,然后把它们输入 Seq2Seq 模型就能生成第一句歌词。」
此外,韦福如表示在实际生成的时候还需要对结构做一些调整,例如对关键词做一个 Planing,决定每一个关键词出现的顺序。这样在生成第一句后,结合已生成的歌词和对应的关键词就能继续往后生成歌词。
微软的歌词生成模型会基于很多数据,包括爬取的歌词和宋词等,其中宋词可以为现代歌词赋予文化气息。不过正因为数据集大量采用了歌词或宋词,整体情感基调上会比较低沉或伤感,因此在歌词生成后还需要识别里面的情感,从而传递更多的过年气氛与正能量。除了情感分析,歌词后处理还包括一系列细节,包括为 TTS 预处理多音字等。
总体而言,歌词生成模型的核心是一个序列到序列的模型,它会学习将关键词序列映射到合理的诗歌,并为后面的语音合成做准备。这里需要注意的是,如上所示在根据关键词序列生成第一句后,模型类似于一个强大的语言模型,它会以第一句为条件生成第二句,并在生成过程中加入前面规划的一些关键词信息。
最后,微软 NLP 组的研究工作远不止诗歌生成。对于机器阅读理解(MRC),微软在 SQuAD 文本理解挑战赛的最新榜单上,以 82.650 的 EM 值最高分领先(持续优化提升),并率先超越人类分数 82.304。对于机器翻译系统,微软在通用新闻报道测试集 newstest2017 的中-英测试集上,达到了可与人工翻译媲美的水平。这是首个在新闻报道的翻译质量和准确率上可以比肩人工翻译的翻译系统。
语音合成
除了计算机视觉与自然语言处理方面,微软的深度神经网络语音合成技术(Neural TTS)在整个唱作过程中也非常重要,康辉或晓晓的声音就是基于 Neural TTS 技术自然地唱出了歌词。基于 Azure 的 Neural TTS 技术,克服了传统语音合成系统的局限性,优化了口语和唱歌中的重音、语调和节奏,大幅提升了语音合成的表现力,具有更自然的韵律和更丰富的情感。
正如微软亚洲互联网工程院语音组产品经理刘越颖所说,传统的拼接合成法(Concatenation synthesis)会把语音的每个单元存下来,再拼接到一起。也就是说将文本按照音拆成不同的单元,然后把不同的单元拼接起来成一句话。拼接法的问题在于音的转换,如果转换不流畅自然,那么生成的语音听起来就会比较机械。早期拼接法会使用一些平滑方法,后来会使用基于统计的隐马尔可夫模型(HMM)进行处理。
随着深度网络展现出强大的表征能力,TTS 也尝试采用它作为端到端的建模方式,这些尝试就包括了谷歌的 WaveNet、Tacotron2 和百度的 ClariNet 等。如下图所示,微软的 Neural TTS 也是一种端到端的系统,模型首先会将文本转换成包含语音信息(phonetic)和韵律信息(prosodic)的向量序列,然后将两部分信息转为声波(waveform)。
这个系统的重点在于它是第一个实时神经网络 TTS,这对算法本身的时延和 Azure 提供的云计算都有很高的要求。
可能说到语音合成,很多读者都想到标志性的研究 WaveNet,它在 2017 年 10 月也正式产品化。WaveNet 利用空洞卷积(dilated convolution)和因果卷积能生成高质量的语音。但是它是需要利用 N-1 个样本预测第 N 个样本,所有效率非常低,后来的 ClariNet 等都是为了解决这个问题。
图注:谷歌 WaveNet 所采用的一维卷积结构,摘自 arXiv:1609.03499。
谷歌的 WaveNet TTS 利用 WaveNet 完成了高质量的声学预测和声音合成,但是韵律信息还是基于传统的韵律定义和预测模型,与声学模型是分离的。而微软的 Neural TTS 采用了端到端的声学建模,将韵律模型和声学预测合并优化,从而可以得到更逼真更丰富的韵律。此外,WaveNet 只提供了标准预设好的声音,但是微软提供了工业级的基于深度神经网络的声音定制服务,用户可以定制属于自己的声音。为了能用少于 1 个小时的录音数据达到几十小时、甚至更多数据的训练效果,微软采用了统一模型(Universal Model)的技术,利用大规模的多说话人语音数据库来训练基础模型,从而极大减少了对单一说话人的录音数据需求。