语音 AI 技术(e.g. 语音识别、语音合成)是人工智能重要的研究和应用方向。但是,不同于 CV、NLP 等“显学”,语音相关的从业人员(学界和业界)相对较少,语音领域的学术会议和期刊影响力也比较有限。
语音 AI 是一个多学科交叉的技术方向,涉及到信号处理、语言学、语音学(e.g. 发音规律)、心理学(e.g. 听觉感知)、传统机器学习以及深度学习等。近几年,随着深度学习的快速发展,语音也大量借鉴 CV、NLP 等领域的方法和成果。
鉴于此,我们简要梳理了语音 AI 的主要技术及应用场景。一方面,希望能够吸引更多不同专业背景的同侪投身语音AI领域;另一方面,希望能对有志于学习语音技术的同学提供一些帮助。欢迎有兴趣的同行或同学私信交流。
语音 AI 包括了一系统相关的技术,下面对其中的若干重要方向进行简要介绍。(一篇旧文,介绍了语音算法在智能音箱中的应用,感兴趣的读者也可以参考。)
语音识别(Automatic Speech Recognition, ASR)是将语音信号转换成对应文本的 AI 技术。大词汇连续语音识别(LVCSR)的技术突破开始于 20 世纪 80 年代,此时隐马尔可夫模型(HMM)被用于建模语音信号。早期使用高斯混合模型(GMM)对发音分布进行建模,这种方案称为 GMM-HMM 系统。
基于 HMM-GMM 的技术方案在 20 多年前已经发展成熟,其中 HTK 为集大成者。Kaldi 后来居上,基本终结了这方面的学术研究和工程开发(欧洲、日本有团队使用其他类似但比较小众的工具)。
基于人工神经网络(ANN)的 ASR 研究几乎与 GMM 方案同时开展,但由于早期各方面条件不成熟,没有能够成功应用。2009 年前后,深度神经网络(DNN)被重新引入声学建模,并取得了突破性的进展。相关成果在 12 年被 Google、微软等 5 家主流研究机构共同报告,ASR 进入深度学习时代。使用深度神经网络做为声学模型的方案称为 DNN-HMM 系统,通常也称为 hybrid 系统(建模过程中混合使用了 GMM-HMM 相关技术)。
GMM-HMM 和 DNN-HMM 都属于传统的语音识别系统(conventional ASR),它们由若干独立模块组成:前端模块、声学模型、发音辞典、语言模型和解码器。端到端(End-to-End)语音识别方案则希望将各个模块统一起来,由单独的神经网络进行联合建模与优化。
端到端建模是也深度学习领域的圣杯。目前主流 CV 和 NLP 任务,以及声纹认证、声学场景分析等较简单的语音任务目前基本都是以端到端方案为主。语音识别、语音合成、语音信号处理由于问题本身的复杂性,目前还处于传统方案和端到端并存的阶段。虽然端到端未来能否完全取代传统方案,目前仍存在较大的争议,但一个基本的实事是,端到端是当下研究的主流,在很多场景也展现了显著的性能优势。
早在 2014 年之前,学界和业界就开始了端到端 ASR 方案的探索。从识别效果上, 18 年前后离线端到端系统基本达到可用水平。19 年后,端到端成为学术研究的主流。目前学术会议上已经很少能看到传统语音识别的相关工作了。
目前,端到端 ASR 有三种主要的实现方案——CTC、Transducer 和 AED(Attention-base Encoder-Decoder)。
关键词检索(keyword search),可以看作是语音识别的特例。不同的是,在检索任务中,我们关注特定的关键词的检出效果,因此在技术手段上和语音识别有比较显著的差异。
随着智能音箱以及手机语音助理的普通,语音唤醒(wakup)技术日渐为人熟知。唤醒在有些文献中也称了 keyword spot 或 hotword spot。对设备呼喊相应的唤醒(如百度音箱的“小度小度”),设备即能被激活并响应用户的需求。
因此,识别相关技术的应用中,通常都会需要 VAD(Voice Activity Detection)模块进行配合。VAD 也称静音检测,其作用是检测出音频中的非语音片断并进行过滤。一方面可以减少后续识别等模块的计算量,另一方面也可以减少引入大量非语音而造成的误识别。
语音合成,即 TTS(Text-To-Speech),是语音识别的反向任务。TTS 将给定的文本转换成相应的音频,以供播放。
TTS 主要有三类方法:参数、拼接以有端到端。
参数方法合成的语音自然度比较低,机械感明显。但参数方案的资源占用可以做到非常小,因此,在设备端依然存在大量的需求。
拼接方法顾名思义,是将音库中的语音片断拼接起来,生成目标语音。基于拼接可以合成高质量的语音,但缺点是开发流程复杂,对音库质量要求较高。目前拼接方法基本被端到端方法所取代。
端到端方法是将 TTS 传统的前端(TN、时长模型、声学模型)和后端(声码器)分别用神经网络建模。
前端主流的方案包括 tacotron 系统 和 fastspeech 系统等。后端(神经声码器)觉的方法用 WavNet、WavRNN、LPCNet、MelGAN、HifiGAN 等。
随着技术的发展,TTS 已经不限于简单的播放语音,而是有了越来越多样的场景需求。
例如,在电子书阅读、虚拟助手等场景,对合成语音的情感表达愈发重视。
另外,用户对于个性化语音合成的需求也越来越强烈。这就涉及如何利用小样本、低音质的数据进行模型建模的技术问题。
此外,歌曲合成也是语音合成的一个应用方向。
笼统而言,声纹技术(voiceprint)是一门分析语音/音频中特定属性的技术。
说话人识别是一项最常用的声纹技术。在说话人识别任务中,算法需要对比录入语音与注册的语音的相似度,从而判断说话人的身份。典型的应用是微信的数据声纹锁。
声纹检索是说话人识别的扩展。上述说话人识别是 1:1 的认证任务,即只需要判断目标语音是否是给定的注册语音属于相同的说话人。而声纹检索是 1:N 的认证任务,即需要从大小为 N 的注册声纹库中挑选出最相似的说话人或都判断不在声纹库中(即集外)。
声纹检索可以应用在刑侦领域,用于大规模的嫌犯筛查。
语音中往往包含了说话人的一些生理属性,如性别、年龄等。这些属于可以通过声纹技术来进行识别。
对于非纯语音的音频内容(例如短视频),有时需要对涉及的具体场景进行分析,以便分门别类进行处理(例如,语音片断转发给 ASR 进行转写;涉黄内容进行屏蔽)。这就涉及声学场景分析(acoustic scene ananlysis)。简单而言,通过声学场景分析,我们需要确认在何时发生了何种声学事件。
人们的工作和生活都是处于极其复杂的声学环境中,人与人之间的交流以及人与机器之间的交互都会受到噪声、干扰等多种因素的影响。语音作为各种语音类应用的入口,通过各种算法对音频信号进行处理,消除录音设备和环境等带来的影响,使得处理后的信号更能反映语音的本质特征,为语音类应用的效率和用户体验提供保证。
语音前端处理面临的问题,大致可以分为四类:
(1)回声:扬声器播放的声音又被麦克风拾取了。相应的处理方法有回声消除、回声抑制和回声控制等。
(2)混响:声音除了从声源直线传播到麦克风之外,还会经过各种反射到达麦克风。响应的处理方法有混响消除和混响抑制等。
(3)干扰:通常指非目标的其他人声。相应的处理方法有波束形成、盲源分离和声源定位等。
(4)噪声:除回声/混响/干扰之外的非目标声音,多数情况下指代的是各种各样的环境噪声。相应的方法有降噪/增强、噪声控制和有源噪声控制等。
实时音频通话
包括传统电话、视频通话、电话会议等。在音频通话场景,信号处理主要是用于提升语音的可懂度和听感。音频通话相关的语音前端,最重要的要数经典的3A算法,即:
AEC——声学回声消除,解决通话过程中扬声器播放的声音又被麦克风采集到,导致远端说话人听到自己声音的问题;
ANS——自适应噪声抑制,解决通话过程中声音被环境噪声所污染的问题;
AGC——自适应增益控制,解决声音忽大忽小的问题。
语音交互
包括语音助手、智能客服和各种类型的语音控制系统等,主要服务于语音识别/唤醒/说话人识别/情感识别等。相对于通话,语音交互通常会面临更为复杂的声学环境,为了提升语音质量,很多产品采用麦克风阵列作为音频输入硬件,相应的就需要有麦克风阵列相关的语音前端处理算法,典型的有波束形成/盲源分离/声源定位等。
录音
包括集中式的会议录音器、分布式会议系统、录音笔、监控系统的录音部分、以及一些特制的录音器件等,这部分应用一般是后期对语音做处理分析,所以对实时性要求比较低,甚至一部分可以做纯离线的处理
其他
对实时性要求绝高的场景,像助听器的信号处理,对处理延迟的要求极高,需要达到10毫秒或者更小。扩音系统的音频前端处理,需要处理啸叫等问题。多模态处理,包括音视频结合、麦克风+骨传导传感器、声学麦克风+光学麦克风等。
下面介绍语音算法研发过程的用到的一些专业技能。虽然列了很多点,但依然不太全面。具体到某个特定方面(如说话人识别),可以并不需要所有这些技能,而且不同技能的熟悉度要求也不尽相同(有些可能仅仅要求能看懂)。
基础知识:计算机组成(体系结构)、算法设计与分析、设计模式
编程语言:c/c++、python、cuda、perl(目前用的非常少了)
Linux 系统基础操作:shell、vim 以及 awk、sed 等
基础工具:gcc、cmake(bazel)、git
基本的机器学习知识,详见下面的阅读清单。
训练框架:pytorch、tensorflow
推理库:libtorch、onnx-runtime、tf-serving、tensorrt、mkl、mkl-dnn(one-dnn)
语音信号处理:特征提取(fbank、mfcc、LPC)、3A 算法,以及下面的阅读清单。
工具:kaldi、openfst、srilm、sox、ffmpeg
深度学习的发展,端到端方法在语音 AI 的各个方向都成为不可忽略的力量,在特定方向上甚至完全取代了传统的方法。方法的革新必然带来研发范式的变化。
高效的训练工具是处理海量语音数据的基础,因此大规模分布式系统(CPU 集群、GPU 集群)的使用,训练速度的优化(分布式优化、算子实现优化,乃至算法和硬件的协同设计 ),是工业界语音 AI 开发的前提条件。而高效的部署(模型压缩、计算图优化、跨平台支持)对于实际落地也非常重要。
因此,强悍的工程能力是未来在语音 AI 取得成功的越来越重要的因素。
语音相关的重要进展也散见通用的 AI 会议(e.g. ICML、NeuriPS)。另外,语音能从研究更加活跃的 CV、NLP 领域汲取宝贵经验,因此,这些领域的重要会议也可以积极关注。
和大多数 AI 领域一样,期刊由于时效性不高,因此相对而言参考性不是太大。