语音消息技术实现技术实践

1
课程PPT
4
腾讯产业互联网学堂热门学习路径,0基础上手
1
腾讯云培训认证体系,助力云开发者成就职业梦想
  • 1
    关注“腾讯产业互联网学堂”公众号加群互动有好礼相送
  • 2
    回复口令“小游戏”
  • 3
    获得课程福利包
腾讯产业互联网学堂微信公众号
“腾讯产业互联网学堂”微信公众号

讲师简介

程君

腾讯云高级工程师

现任腾讯云产品部客户端开发工程师,先后从事移动端 QQ 上的音视频通话和音视频特效玩法: 如手势识别, 手势挂件等的研发,服务QQ亿级用户。目前负责腾讯云游戏多媒体引擎GME的技术方案设计与研发工作,致力于打造功能更完善、接入更简单的语音组件。

简介

腾讯云游戏多媒体引擎GME系列课程。随着AR技术的不断发展,语音转文字在音频场景的应用不断成熟。本课程将介绍以微信的语音转文字技术为基础的GME语音消息功能,并通过一个demo实践让大家快速了解GME的语音消息的功能。

课程讲义

课程收益:

  • 1、了解GME语音消息的的使用方法
  • 2、腾讯在此语音消息的的解决方案
  • 3、在APP中快速集成一个语音消息的功能

课程大纲:

  • 1、基于微信语音转文字的语音消息原理介绍
  • 2、语音消息的技术实现及后台的全球链路优化
  • 3、语音消息功能开发实战

消费升级的时代,搭配才能创造奇迹。文字是苍白的,语音是生动的,语音转文字是具备科技色彩的。文字一旦有了科技感,生活才能有质感。本课程以GME做“活化酶”,将详细介绍以微信语音转文字技术为基础的GME功能,带你告别文字的苍白,激发AR活性,让你的生活瞬间充满“胶原蛋白”。随着AR技术的不断发展,语音转文字在音频场景的应用不断成熟。

本期腾讯产业互联网学堂大咖分享邀请腾讯云高级工程师程君,将介绍以微信的语音转文字技术为基础的GME语音消息功能,并通过一个demo实践让大家快速了解GME的语音消息的功能。

1. GME语音消息支持的应用场景

1.1 语音消息

下图是QQ飞车里的语音消息,录制完语音消息并翻译成文本之后,语音内容和转成文字后的内容发送给好友。

1.2 语音转文字

下图是王者荣耀里,一边说话一边转文字,说完了也翻译完了,有点类似于语音输入法。

1.3 变声玩法

下图是手机QQ里,语音变声的趣味玩法,将录制的声音以萝莉或大叔的声音播放。

2. 语音消息的技术实现

2.1 整体流程

下图是整个GME的语音SDK的使用流程,先是初始化SDK,设置鉴权信息。

对于发送方来说,先是录制,录制完了上传,上传成功会得到服务器返回的一个fileID。如果有语音转文字的需求的话,再调用SpeechtoText接口,把fileID传给服务器,就会得到翻译结果。然后走你们的app 或者游戏内的IM通道,把这个fileID发送给接受方。

对于接受方来说,收到了fileID后,调用我们的download 接口,先把语音文件下载到本地,再播放就可以了。

对于发送方也可以选择我们的流式的录制的接口,该接口会一边录制,一边上传,一边翻译,录制结束之后,录制结果,上传结果和翻译结果会在一个回调函数内返回给你,后面会详细对接口做介绍。下面就是对每个过程做详细的介绍。

2.2语音消息的录制

关于编码和采集,先用下面两幅频谱图,来展示人声和音乐的不同。左边是正常说话的人声,右边是一首从QQ音乐下载的正常歌曲。可以看到人声的频谱较低,大部分在8k以下,而且信号是离散不连续的;而音乐的频谱覆盖到全频带,信号连续且强度较大,按照奈奎斯特采样定律,需要完整还原信号的话,编码的采样率应该是频谱的两倍。所以,业界称8k频谱对应的16khz采样率为宽带,用于纯人声场景。24k频谱对应的采样率48khz为全频带,用于音乐场景。语音消息主要是针对人声场景,所以编码定的采样率是16K。

SILK编码最早在Skype中使用,它在编码效率和质量之间取得了很好的平衡,因此被广泛应用在互联网的音频相关产品中,目前广泛使用的是SILK V3。微信QQ里的语音消息也都是用silk,silk编码是Opus编码的基础,压缩后2K每秒。

2.3 录制和播放

前处理的流程,先是设备采集,其次是降噪,这个降噪是我们自研的,降噪可以帮你去除掉一些环境里的杂音,增益处理就是可以将声音的音量放大,这里没有修改设备的硬件音量,而是代码里做了处理,也就是所谓的软件音量。上采样和下采样的流程不是必须的,因为有些设备不支持我们音频文件的采样率 16K,比如PC的设备只支持48K的数据。所以就要做一次重采样,支持的设备,如IOS 就不用处理

2.4 变声

声音是一种波,具有三个要素:幅度,频率,相位。其中幅度决定了声音的大小,刚刚前处理说的增益就是在改变了振幅,频率决定了声音音调的高低,实际的声音往往都不是单一频率的波,而是有各种频率的波叠加而成,从而形成了各具特色的声音,通过分离不同频率的信号,并采取不同程度的放大或缩小,从而改变声音的效果。

变声支持12类型:萝莉,大叔,熊孩子,感冒,困兽,空灵肥仔,重金属,外国人,重机械,强电流,土话。

下图是原声和萝莉的语谱图,横坐标为时间,纵坐标为频率。颜色代表特定时间点下,某频率的声音强度。原声的声音频率较窄,为16000Hz以下,萝莉音频率被拉长,一些低频音被放大为高频,频率为14000Hz左右。可以用QQ语音消息进行体验。

2.5 上传

录制完成之后就是上传了。我们在全球部有语音消息的服务器。上传的流程是这样的,上传请求首先会到TGW服务器 TGW全称Tencent Gateway,是一套实现多网统一接入,支持自动负载均衡和就近计入的系统。请求到了TGW之后,就会根据负载均衡和就近接入的原则将请求分配给业务服务器,业务服务器也会根据就近分配的原则返回最近的cos服务器的地址和token。客户端然后再根据这个业务服务器返回的cos地址把语音文件到这个存储服务器上,并把文件的下载地址返回给客户端。

2.6 下载

下载的流程和上传的类似。下载的时候也会遵循就近接入的原则,比如上传的时候用户是在德国,那我们就会把语音文件就近存储到德国。而下载的时候,用户是在美国,GME的业务服务器会把下载的内容从德国拷贝到美国去加速下载。

2.7 语音转文字

语音转文字主要是用深度学习的技术来实现的。对于采集到的原始音频数据,先要做特征提取,特征提取的方法主要有预加重、分帧加窗、FFT、滤波器等,特征提取的目的就是把乱无章的音频信号的特征变得更加显著,这样有助于后面声学模型训练的收敛。其次就是声学模型的训练,就是将发音映射成汉字。但由于存在多音字这种情况,所以还需要语音模型,利用当前词前面的几个词来计算其概率,是这些词最大概率上可以组合成一句话。

GME的语音转文字支持100多种语音,识别率高达99%,前馈计算的模型是在服务器运行的,不占用客户端资源。语音转文字的速度大概是1秒的语音文件转换成文字需要0.4s, 基本上是呈线性增长的。

2.8 流式语音转文字

之前的语音转文字,需要先录制,在上传,拿到上传之后的文件ID之后,再向服务器请求翻译,这样的体验肯定是不够好的,所以我们推出一个流式的接口。流式的语音转文字,可以边录制,边上传,边转文字,语音转文字的等待时间固定,不会随说话时间增加而增加。由于它同时兼顾上传的功能,所以即使流式的翻译失败了,也可以用拿到的上传的文件地址再走一次普通的翻译。当然流式翻译的成功率还是很高的。

2.9 实时监控

在服务器监控这一块,我们有24小时的监控体系,一旦发生异常会及时报警,并进行处理,保证服务质量。

3. 语音消息功能开发实战

目标:实现一个简单的本地录制功能

GME SDK 下载:

https://cloud.tencent.com/document/product/607/18521

GME v2.5.1

Demo框架下载:

http://dldir1.qq.com/hudongzhibo/QCloud_TGP/GME/test/test/PTTDemo.zip

GME文档:

https://cloud.tencent.com/document/product/607

全部评论
讲师/助教

评论