荔枝FM技术团队:当我们谈论声音时究竟应谈论什么-阿里云开发者社区

开发者社区> 开发者小助手-bz8> 正文

荔枝FM技术团队:当我们谈论声音时究竟应谈论什么

简介: 荔枝FM是一个集录制、编辑、上传、存储、收听、下载于一体的网络电台APP应用。在音频创业公司中,荔枝应该是最早开展语音识别研究的,而启动语音识别的初衷并不是因为人工智能近年的火爆,而是同样因为他们对声音的深入理解和思考。
+关注继续查看

对声音的深刻思考


对于我们来说,声音是一种非常古老的东西,即可以用简单的物理原理来描述,又充满着一种神秘的文化;它什么都可以解释,但自身什么都没有;它既体现出一种存在感,又代表着一种虚无感。通过声音我们就能吸收、存储和沟通惊人的信息量,并了解我们周遭的世界。从远古时代猿猴对同伴大叫的一声「有狮子」到现在我们用语音去沟通和社交,声音一直在发挥在巨大的作用,声音可以对信息进行编码,方便信息和知识在我们之间迅速传播,从而产生了文化;声音也促使了人类的社交和合作,形成了共同信念和群体智慧。而当我们谈论声音的时候我们究竟在谈论什么?


对于大部多人来说,声音的首要作用是作为一种介质去传递内容。声音确实提高了我们传递信息的效率,也带来了更加灵活的信息获取方式。但在很多时候,我们太过于重视信息和内容,而忽视了声音的内涵和本质,仅仅是把它当成工具。但荔枝FM却有着不同的观点,他们对声音的理解超越了音频内容,不仅重视内容,更重要的是对声音本身的理解——声音不仅仅是一个简单的工具和渠道,还是一种能量振动和情感共鸣,更是一种客观世界的存在,而他们所做的是把声音的本质还原出来。基于自身对声音的理解、尊重和使用习惯去生产更加丰富的东西,去做一件更加宏大的事情。对此,荔枝联合创始人魏雷说:「荔枝FM在重构人与声音的亲密关系。」通过这些工作让更多人爱上声音。


对声音更加深刻的理解也形成了他们独特的产品理念和技术基因,而这些一直贯穿于他们的整个创业过程,直到今天。


荔枝FM从2013年春节后正式的开始做,当时团队考虑选择哪个方向,面对文字、图片和视频都有巨头把持的互联网行业,他们希望去发掘一个新的东西,荔枝CEO赖奕龙以前做过DJ,有着浓烈的电台情节,所以就确定了声音这个细分领域。「当时的想法还是比较模糊,创始团队参照《精益创业》的理念快速尝试,最终确定了播客这个方向。」公司 CTO 丁宁回忆到。


当时荔枝FM做了一个公众号,通过技术开发让微信公众号上面可以听到podcast上面的播客,通过这种方式去验证市场是否存在,短短三个月内公众号就聚集了100万粉丝。在经历了微信公众号的成功验证之后,公司5月份开始开发App,精研技术的公司基因和工程师文化开始显现。丁宁领导的技术团队花了三个月的时间去研究苹果的整个录音系统并全部吃透,从最上层到最底层的Audiotoolbox。当时的技术架构参照了开源项目AmazingAudioEngine,然后在这层引擎上逐渐架构出自己的音频引擎,因为它可以把苹果音频的这个架构封装起来并抽象出模型,然后就可以在这个模型上快速扩展。丁宁说:「如果你直接面向Audiotoolbox去写的话,你的整个代码很过程化,没法面向对象,后续扩展的时候就很麻烦。」


在第一版的开发中,荔枝技术团队把音频编码后的数据全部放到了内存里面处理,既满足了需求又降低了开发难度。但随着产品的调整,必须把数据转到磁盘上处理,最初为了提高效率使用了系统自带的m4a格式编码器,但是这个接口在系统内存比较低的情况下有些BUG,团队又花了一个月时间去解决这个问题。其实,苹果本身的音频硬件和架构设计的很好,但由于内部音腔限制,所以在回放和声音信噪比上都不够理想。此后,技术团队又补充了回声抑制、降噪和声音美化等功能。在解决了录音模块的技术难题之后,技术团队又用差不多两个月时间把播放器打磨成型,2013年10月份,录音和播放全部打通,iOS版本正式上线,两个月之后安卓版上线。整个过程一气呵成,这与公司深厚的技术积累密不可分。


荔枝FM的技术亮点


回顾荔枝FM的技术研发过程,处处可以看到他们对技术的坚持和投入,同时也取得了众多成果,而从今天来看荔枝的技术亮点,最显著的便是音频模块、通讯、大数据和语音识别。


1)音频模块


荔枝FM的整个音频逻辑主要是为了满足用户用手机客户端进行节目录制的需求。在客户端方面,荔枝FM的音频团队进行了许多技术上的优化,比如加入EQ均衡和适量的混响,让录制者的声音听起来更加圆润。还通过声音降噪将录制者周围的背景噪音过滤掉。更加重要的是,这些技术适用于大部分手机,让大部分手机的录音效果都有所提升,但这其实是个很有挑战的工作。「比如说iphone和安卓,它们的音频架构就不一样,」公司音频引擎工程师JC说,「尽管有了EQ均衡、混响等音频算法,但怎么将这些与不同的系统结合起来其实是很难的。举一个简单的例子,iPhone的录音延时就控制的很好,但安卓就不行,而且安卓不同机型间的差别也特别大。所以你就要根据它每次进来的数据的点数,去匹配你的算法。我们的程序是自适应的,没有写死,所以每次程序会先检测一下数是多少,对有什么变化,然后再对它的变化进行调整。」通过这样方式,将优化音频算法应用到了不同的移动终端中。


荔枝FM在录音端还实现了手机上的实时剪辑功能,「剪辑中有很大的技术难点,我们也是花了很多时间去研究。」JC说。尤其是荔枝FM的在录音时可以添加背景音乐,这也增加了难点,录音是一道音轨,背景音乐是另一道音轨,在录音的时候如果要剪辑,一般会有两种方案,一种是把两个或多个音轨合成在一起编码后存储在磁盘上,在剪辑状态下再解码成采样进行操作;另一种是在录制的时候不编码就存储,在剪辑的时候直接操作采样。但这两种方案在剪辑时或最终合成时都会非常的缓慢。但是荔枝FM通过一个比较巧妙的方法直接对编码后的文件进行剪辑少去了再编码解码的过程,所以这个过程变得很快,更加重要的是在手机CPU和内存的情况下完成的。


由于用户在录音时会加入背景音乐,这就造成了另外一个问题。用户的剪辑往往是根据自己的录音去完成,这样就可能会造成剪辑后的背景音乐不连续,而用户对这种声音中的不连续又格外敏感。因此,音频团队做到了不管是从哪个位置去剪辑背景音乐,剪完之后的音乐都会过度很自然,听起来完全没有不协调的感觉。因此,用户在制作音频节目时可以通过试听和实时剪辑非常方便的完成节目制作。


荔枝FM中还拥有一个独特的功能——继续录制,比如说用户的一期节目比较长,在录制时可能会中断,按照之前的操作方式是先将已经录完的部分进行保存,下次再重新开启一个新文件录制后面的部分,最后再用专业软件将这些文件拼接起来。这就造成了两个问题,一是音频拼接需要在电脑上完成,增加了播客的制作时间和门槛;二是需要解决这多个文件连接处的自然过渡问题。但荔枝FM通过复杂的技术手段实现了继续录制功能,在一个已经保存过的音频内容上可以进行继续录制,完全跟上次接起来。在iPhone上解决这个问题难度较大,首先不能使用iPhone的存储方案,而是完全换了一种方案。其次是形成一种新的编码方案,让多个文件实现了无缝对接。


除了在手机客户端,荔枝FM在服务器端也有一些专门的算法对声音进行优化。在用户录制完成上传到服务器后,服务器重新对这些节目做统一编码。除此之外,还加了一些独特算法,其中一个是音量均衡。因为荔枝上的大部分内容都是ugc,用户在录制节目时会因为手机和使用习惯的不同,最后形成录音的音量可能会产生很大差异,从而影响了用户的收听体验。服务器端的音量均衡算法可以让所有内容的音量控制在一个较为合适的区间,做到了当用户不同内容间切换时无需再去手动调节音量。


服务器上的另外一个模块就是可以对音频文件进行重新编码并声称三种规则,超高清320k码率(专业录制,在荔枝网站上传,而非移动客户端录制)、高清128k码率和16k码率,并实现了128k和16k之间的自由切换,当用户从Wifi环境切换到移动流量后,就会自动切换到16k,播放依然很流畅。同时由于使用了特殊的高规格aac格式,在帮助用户节省流量的同时还最大程度的保持了音质。


对于音频模块的未来开发方面,JC非常简洁明了的进行了说明:「我们的使命就是让人们爱上声音,之后也是围绕着这一点,比如说在手机端更加专业的编辑、声音美化和让声音变得更加有趣的功能等。」


2)单通道多路复用的通讯方案


在解决了用户手机端内容录制的问题之后,公司技术团队对客户端和服务器端的通信问题也进行了深度思考并形成了自己的一套成熟稳定的通信体系。移动互联网对通信的要求非常高,因为它面临的环境比互联网要复杂的多,比如多信号之间切换的问题、外部环境的问题、功耗和续航的问题,等等。团队后来发现,移动互联网下对通信要求最高的就是即时通讯软件,因此,荔枝FM的通信架构就是按照即时通讯来做的。


公司CTO丁宁表示:「这套通信体系可以概括为『单通道多路复用』,就是整个APP和服务器之间就一条tcp连接。我们也正在申请专利。」http是多通道,一条通道就是一路,内部就是一个request-response close的过程,在这种情况下消耗会比较大,传输的数据量也会很大。而荔枝的解决方案是,在一个通道中实现多路传输,每个请求会虚拟出一路,在一个通道中多路并行传输,就像把所有的http请求都并入了一个TCP链路中。上层并不需要关注底层是怎么实现的,也不需要关注是否会产生并发的问题,性能好不好,全部交给底层处理。而且上层使用起来他效果还是和http一样简单,他的整个模式实际上也是request-responds。保持一个TCP通道的好处就是系统开销小、省电,内部网络状态一致,可控性和灵活性更高,加上编译型的传输数据结构,更是减少了数据传输量又加快了解析速度。


这种通讯技术即保持了使用的便利性又解决了长连接的问题。App都会有一个冷启动的问题,其中一个解决方案就是推送,而推送一个关键指标就是长连接保活。而荔枝的通信技术既实现了http的优势——上层很好用,同时又实现了和服务器的长连接。「荔枝通过这种底层技术的掌握,传导到上层就是我们的聊天、下载、上传在一个整体的协议结构里全面实现,这和竞品完全不一样,」丁宁说:「其他产品通过接入第三方SDK保持长连接,并实现即时通讯部分功能,那他的整体性、稳定性、可控性和灵活性都会差很多,当然好处就是马上能用。」


封装在一个通道的另外一个优势就是加密。荔枝希望所有数据都是整个链路加密的,只有在这样一个不可视的链路加密的环境,才可以发挥更多的想象力去做其他东西,尤其是一些和付费、金融等非常隐私的东西。


3)大数据


与其他音频类产品不同,荔枝FM是一个UGC平台,有着超过150万个播客,超过2000万期节目的长尾内容,需要借助技术进行识别和个性化推荐,因此就需要大数据技术提供支撑。


和大数据的有关的第一个重要功能各种榜单,涉及到热播榜、新进榜、男生榜、女生榜、当前热播榜等。其次,哪个时段的哪些内容最受欢迎也会用数据去推荐出来,比如早上资讯类和英语学习类最大,下午脱口秀最多,晚上亲子类比较多,深夜则是情感最,可以非常有规律的看到各个时间段用户的情况。这些榜单的转换率几乎达到100%,差不多每个进来的人都会去点。


大数据的第二个应用就是为用户添加标签和粉丝画像。目前荔枝对用户标签已经有10000个纬度,然后对其进行实时推荐。计算是分两部分,一部分是根据历史的离线去计算,然后一部分是实时计算,上来一个东西立即给用户推荐。同时还会特别注重对效果的监控和测试,每调和一个参数、每上一个算法都可以实时看到它的效果,这样就可以根据效果去做一些微调。此外,还会对主播粉丝的年龄、性别、地域、活跃程度等属性进行分析。根据用户所属IP、地理位置和手机上已装App等向其推荐内容。


大数据的第三个功能就是对用户反馈分析。这包括对完播率、复播率、订阅数、点赞数、收藏数等行为的分析,给用户推荐完这些播客之后再根据这些用户反馈进行调整,从而形成一个完整的、动态调整的推荐体系。


4)语音识别


荔枝应该是音频创业公司中最早开展语音识别研究的,而启动语音识别的初衷并不是因为人工智能近年的火爆,而是同样因为他们对声音的深入理解和思考。丁宁回忆说:「我在2014年有一个触动,资讯类产品能够快速做起来的原因是文本信息可以被很容易的识别和分析,所以很容易做摘要、打标签、抽中关键词,然后再通过搜索和精准定位传递给用户。但回到音频,却发现这些我们完全做不到,我们根本不知道音频里面是什么东西。我们是在做音频,但却完全徘徊在音频的大门外。如果仔细想一下的话,这是一件很沮丧的事情。那如何打开这个通往音频世界大门呢?肯定是要把内容识别出来。」


就这样,荔枝开始了对语音识别技术的探索。技术团队最初是与国内某家语音识别公司合作,但出现了两个问题,一大是通讯量超大,对公司的机房和带宽都带来很大压力。二是荔枝的许多音频内容都是有背景音乐,合作方对于普通语音的识别率还可以,但对于加上背景音乐的音频文件识别率就非常低了。毕竟无法为荔枝独特的音频文件进行订制。


之后,荔枝开始自己组建团队进行语音识别的研发,一位来自华南理工大学的博士后来领导该项目。目前,内部语音识别准确率已经达到70%。语种识别功能已经上线,准确率达到了90%。语种识别有两个作用,第一,语种识别是语音识别的前提,要想提高准确率首先需要把语种识别出来,然后再进行语音训练。第二,语种识别有助于进行内容审核。


公司在研发语音识别技术时也是基于自身对声音的理解,根据特有的产品和功能需求进行定制研发,比如说,会提升有背景声音下的语音识别准确率。荔枝认为,语音识别的想象空间非常大,一个可以审核问题,降低人力成本,提高效率;二是通过语音识别对音频内容进行分析,从而进行更加智能的推荐;第三是有助于商业化,比如说可以识别出主播提到的商品。


技术和声音的完美结合


丁宁说:「我觉得我们都是一群对技术有追求的人。」不管在产品初期对于iPhone语音结构的深入理解,还是之后从音频模块到通讯逻辑、再到服务器算法的技术创新,以及基于大数据的职能推荐和对语音识别的率先布局,其中都能看到一条主线,就是用技术去践行对声音的深刻理解,让用户更好的去享受声音,而也正是因为他们对声音有着自己的价值判断,也会促使他们有持续的动力通过各种技术来呈现声音的种种功能,这是一种探寻声音本源的人文情怀与追求效率和体验的技术精神的完美结合。


荔枝FM这个声音世界的极客玩家正在用自己的方式开辟一条通往声音世界的入口,尽管从技术切入是一条艰难的荆棘之路,但是无可否认,只有科学技术革新才能推动文化产业繁荣和人类文明进步。荔枝FM也一直坚信自己走在正确的道路上,一条光荣的荆棘路上。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26740 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9495 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
11209 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9054 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13183 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6893 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4012 0
1654
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载