微软的梦工场-第34部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
芪笾谑褂玫牟罚颐腔谷鄙僖桓龉丶シ⒌悖阂桓龊玫挠τ贸【啊6杂谧钪匾囊桓鲇τ贸【啊缫衾值乃阉鳎叱阉骰刮薹ㄊと巍U馐且蛭壳暗乃惴ǘ浴p3等音频数据还无法有效处理来提取旋律,我们使用的数据库主要基于MIDI 数据。但是不管怎样,这是一个完全从零开始的项目,我在整个过程中,从查阅资料、设计模块、设计算法,到编写代码、数据收集、算法评价及相应改进,都得到了不少的锻炼,对研究方法也更有心得了。
由于其他项目的开展,哼唱搜索暂时告一段落。我想,其实它也是在等待一个更好的机会。
忽现转机
几年后(2006夏)的某一天,搜索技术中心(STC)的开发项目主管谢育涛突然跟我联系,说他正好看到张贴在研究院中有关哼唱搜索的海报,要跟我讨论一下将其用在手机搜索上的可行性。谢育涛主要负责的是手机搜索,那时他正在跟位于深圳的Windows Live Mobile China (WLMC) 做图铃搜索,也就是提供高效算法来搜索手机图片和手机铃声。除了传统的文本搜索之外,他们还在寻求一些与其他搜索产品不同的新功能。哼唱搜索可能是一个好的选择。
第84节:歌曲大搜索之哼哼也可以(2)
为了寻求哼唱搜索手机铃声的可行性,我们同相关的同事进行了多次讨论。最后,我们觉得哼唱搜索和手机铃声下载将是一个完美的结合:
首先,手机铃声的下载是一个相当大的市场。有资料显示2005年全球手机铃声业务达到令人惊讶的50亿美元。
第二,手机作为一个便携式手提设备,用键盘输入文本并不太方便。但是,声音对手机来说却是一个非常自然的输入方式,因为手机本身便是用来做声音交流的。哼唱是声音的一种。
第三,手机铃声通常有多个版本以便用于不同的手机型号,而MIDI版本的手机铃声是最基本的。这样,只要将MIDI同其他格式关联起来,旋律提取便不再是个问题。
第四,通过手机下载手机铃声是个一步式的解决方案。不再需要通过电脑等中介系统。
同时,我们也发现在这个应用场景下,直接使用我们以前的方法效果并不理想。新的问题带来了新的挑战:
第一,在以前系统中,哼唱是通过麦克风录制的,质量比较好。在现在的应用场景下,我们需要用手机录制。同时,我们必须还要考虑到录制时引入的背景噪声(用户可能在大街上使用这个系统),还有由于无线传输而可能引起的信号畸变。
第二,我们将要面对一个大的多的数据库(通常手机铃声库可能包含1…10万首铃声)。这就要求我们更进一步的提高搜索精度和速度。利用一切可以使用的信息,优化旋律模型和节奏模型。同时需要建立一个更大的开发集和测试集,来优化参数选择和性能评价。
当时,由于媒体计算组的重组,我加入了语音组继续从事音频分析和检索的工作。语音组研究项目负责人Frank Seide和语音组带头人宋謌平博士也非常支持这个项目。于是我们就立即开始了分工合作,来搭建一个端到端(end…to…end)的系统原型。其中,我和一个实习生翁锐浩主要负责哼唱搜索算法的改进,其他几位同事,包括STC的欧佳凡和WLMC的王晓兵,负责搭建搜索平台。
重拾哼唱搜索
晓兵和佳凡的工作卓有成效,他们同中国移动的高阳公司合作,很快就搭建了一个系统平台,并申请了一个临时声讯服务号码(当时是125905988)。通过这个平台,我们就可以有效地采集真实数据。用户可以通过手机直接拨打服务号码,系统会记录下每一条哼唱记录。我记得当时我们有一部手机专门用来做数据采集。我们邀请了很多同事和实习生,把手机交给他们,让他们留下自己“美妙”的哼哼声。对于哼唱环境、哼唱方式、哼唱歌曲,我们都没有加以限制,以期得到符合用户习惯的最真实的数据。通过这个系统,我们得到了大量的数据。
有了真实的数据,我们就着手算法的改进了。算法的改进主要在两方面:一是哼唱的旋律提取,我们考虑了不同的背景噪声和信号畸变,提出了更精确的方法来检测和分割每一个音符;二是匹配模型的改进,我们使用了隐马尔科夫模型 来作旋律匹配,明确考虑了哼唱和数据库音乐之间的音符对齐问题,将它更有效地集成到了改进的旋律模型、节奏模型和匹配时的容错模型中。我们还提出了一个更加系统化的匹配过程。
经过几个月的努力,我们终于开发出了一个更高性能的算法。测试显示,第一位歌曲的正确率 (top 1 accuracy) 达到了82%,在前五位中找到的比率更是接近90%。我们也搭建了一个在线服务原型:你可以使用你的手机,拨打一个服务号码,根据提示音哼唱一段旋律,你就能得到你要找的手机铃声。这也是业界第一个哼唱搜索手机铃声的系统。为了能在中国市场运作,我们还将此技术转让给了位于上海的美斯恩有限公司。
我们还把这个技术展示在微软一年一度的技术节上(TechFest)上; 得到了非常不错的反响。比尔?盖茨也过来看了我们的演示。我也第一次获得了与比尔?盖茨面对面的机会。后来有在微软总部雷德蒙工作的同事对我说:“你的演示很成功啊,很多同事回来后还在讨论呢。”
结束语
哼唱搜索,只是我所经历的众多项目中的一个。之所以讲讲它的故事,不仅是因为它是我第一个独立项目,而且它也让我懂得,做一个项目,不只是仅仅做一个实验室算法,而是要系统地综合地考虑其应用场景甚至商业模型,考虑真实使用环境并使用大数量多样化的真实数据。做到这一点,才有可能使你的技术应用于现实生活中,才有机会让用户感受到科技改变生活。
我想,无论工业界的研究员,还是高等院校里的学生,都可以从这个角度去重新审视一下手中的问题和解决方案。
作者介绍:
芦烈,2000年加入微软亚洲研究院,现为语音组研究员。主要研究方向是机器学习,音频、音乐的内容分析和检索。他在国际一流期刊和会议上发表过50多篇论文,拥有近20项专利;曾多次在国际会议上担任技术委员会成员。他于2000年获上海交通大学电路与系统专业硕士学位,现兼于荷兰代尔夫特理工大学攻读博士学位。他寥有所好,溺于技术而疏于艺术。好音乐而做音乐分析,却常因没有音乐细胞而心有戚戚。 希望有朝一日自己的研究成果可被广泛应用。
第85节:研究院“and”的故事(1)
研究院“and”的故事
作者:陈刚
创新工程组(Innovation Engineering Group,简称IEG)是研究院中一个非常特殊的非研究性质的组,它负责很多研究组的研究原型和技术转移工作。许多研究院技术背后都有这个组的贡献。由于IEG支持的研究组很多,开玩笑说,就 “研究方向”的数量而言,她可以稳坐研究院第一。
出乎一般人意料的是,这个主要由软件开发工程师而非研究员组成的开发组竟然是研究院成立的第一个组,现在也是10岁了。令人骄傲的是,2003年,从它分化出一支并壮大成立了微软亚洲工程院(ATC)。2005年,搜索技术中心(STC) 的成立也是从这个组开始的。再后来,开发组合并用户体验 (User Experience) 后形成了现在的创新工程组(IEG)。我们组现有二十多人,有老有少,有中国人也有外国人,而且终于有了女性开发工程师,作为一个微软内部的软件开发团队,这确实比较少见。和初创时期纯粹年轻男生的组织构成相比,现在更“平衡”了。
自从2000年进入微软亚洲研究院做开发,不经意间我已在这个组工作了8年,猛然发现自己竟成了组龄最长的组员。作为一个仍很年轻的“老人”,我很乐意把一些经历在研究院10年之际与大家分享。
进入微软研究院
至今我还记得进入微软时两次决定的面试片段。1999年末我面临毕业求职,一日接到微软中国研究院到知春路希格玛的面试通知。西装穿戴整齐到了希格玛五层,我就径直被带到一个屋子里面被很多人围着问话,而这些人没有一个穿西装的,倒是有穿拖鞋的。问问题的人单刀直入、毫不含糊,印象中只记得往来之间人影恍惚、镜光耀眼(研究员们的戴眼镜的比例可不是一般的高)。我战战兢地演示着程序,一边祈祷千万别出岔子。刚刚提心吊胆介绍完,我听见背后“咚”的一声,转头看到一人倚墙坐倒,我心里一惊,那个人却开始打起了很响的呼噜。其余人等毫不惊讶,继续和我聊。通过面试后,我作为实习生帮视觉计算组(VC; Visual puting)的论文做演示程序,加入了他们的第一场SIGGRAPH战斗。而那位坐倒睡过去的研究员就是徐迎庆博士,他的项目正是我进入微软的第一个任务。
SIGGRAPH 战斗告一段落后,到了2000年初我必须决定工作去向。正好研究院在大批招人,再次经过开发组5轮面试官轮番轰炸,没有遇到传说中方井盖圆井盖的问题就到了关底。Harry (沈向洋,当时他是视觉计算组负责人)面试了我。记得有两段话对我的未来影响巨大。Harry说:“想想在什么地方你做一件事可以影响全世界,让全世界的人都用你做的东西?在微软你可以有这样的影响力”。这个诱惑至今对我有吸引力。Harry接着问“你可以选择,做研究还是做开发”。得知做开发可以选择不同的项目和研究组的时候,我更愿意在多个项目间穿梭,更喜欢面对代码而不是论文。于是成为了当时微软中国研究院的开发组的一员,我的职位名称是RSDE(Research Software Development Engineer),当时组里有不到10个人。
第86节:研究院“and”的故事(2)
我们是RSDE; RandD中的
外企风格之一就是众多用让人听起来摸不着头脑的缩写,请让我来解释一下我们的职衔。微软程序员的职衔是SDE,即软件开发工程师 (Software Design Engineer或者Software Development Engineer) 。创新工程组的大多数组员的职衔是RSDE (Research Software Development Engineer) 即隶属研究部门的软件开发工程师 。这个多出来“R”意味着我们的任务一部分需要做SDE的事情,写代码编程序,另一部分是和研究员们并肩工作,把概念和想法实现为原型系统和算法,并进一步帮助把研究成果转化为高质量的微软产品代码,这就是所谓的技术转移(Tech Transfer)。技术转移是我们组的主要任务之一,所以 TTG (Tech Transfer Group) 即“技术转化组”是我们使用时间最长的组名之一,即使目前仍然是是创新工程组的主要部分。
还有一个有趣的说法描述我们的工作:研发工作一般叫做RandD,“研”指的是研究部门(R; Research),“发”指的是产品开发部门(D; Development),而RSDE的位置就恰恰在那个“and”中,是连接研究和开发的纽带。
技术转移
每年都有不少研究技术从亚洲研究院的实验室进入到微软产品中,变成产品的某个功能(feature)。作为研�