All Questions
Questions Per Page:
  • 远场语音交互中的麦克风阵列技术解读 1 年前 最近,微软的Surface Studio着实让人惊艳了一把!除了设计以外,大家都感叹PC机也开始使用麦克风阵列了。其实,早前亚马逊Echo和谷歌Home两者PK,除了云端服务,他们在硬件上区别最大的就是麦克风阵列技术。Amazon Echo采用的是环形6+1麦克风阵列,而Google Home(包括Surface Studio)只采用了2麦克风阵列,这种差异我们在文章《对比Amazon Echo,Google Home为何只采用了2个麦克风?》做了探讨。但是,还是有好多朋友私信咨询,因此这里想稍微深入谈谈麦克风阵列技术,以及智能语音交互设备到底应该选用怎样的方案。 什么是麦克风阵列技术? 学术上有个概念是“传声器阵列”,主要由一定数目的声学传感器组成,用来对声场的空间特性进行采样并处理的系统。而这篇文章讲到的麦克风阵列是其中一个狭义概念,特指应用于语音处理的按一定规则排列的多个麦克风系统,也可以简单理解为2个以上麦克风组成的录音系统。 麦克风阵列一般来说有线形、环形和球形之分,严谨的应该说成一字、十字、平面、螺旋、球形及无规则阵列等。至于麦克风阵列的阵元数量,也就是麦克风数量,可以从2个到上千个不等。这样说来,麦克风阵列真的好复杂,别担心,复杂的麦克风阵列主要应用于工业和国防领域,消费领域考虑到成本会简化很多。 为什么需要麦克风阵列? 消费级麦克风阵列的兴起得益于语音交互的市场火热,主要解决远距离语音识别的问题,以保证真实场景下的语音识别率。这涉及了语音交互用户场景的变化,当用户从手机切换到类似Echo智能音箱或者机器人的时候,实际上麦克风面临的环境就完全变了,这就如同两个人窃窃私语和大声嘶喊的区别。 前几年,语音交互应用最为普遍的就是以Siri为代表的智能手机,这个场景一般都是采用单麦克风系统。单麦克风系统可以在低噪声、无混响、距离声源很近的情况下获得符合语音识别需求的声音信号。但是,若声源距离麦克风距离较远,并且真实环境存在大量的噪声、多径反射和混响,导致拾取信号的质量下降,这会严重影响语音识别率。而且,单麦克风接收的信号,是由多个声源和环境噪声叠加的,很难实现各个声源的分离。这样就无法实现声源定位和分离,这很重要,因为还有一类声音的叠加并非噪声,但是在语音识别中也要抑制,就是人声的干扰,语音识别显然不能同时识别两个以上的声音。 显然,当语音交互的场景过渡到以Echo、机器人或者汽车为主要场景的时候,单麦克风的局限就凸显出来。为了解决单麦克风的这些局限性,利用麦克风阵列进行语音处理的方法应时而生。麦克风阵列由一组按一定几何结构(常用线形、环形)摆放的麦克风组成,对采集的不同空间方向的声音信号进行空时处理,实现噪声抑制、混响去除、人声干扰抑制、声源测向、声源跟踪、阵列增益等功能,进而提高语音信号处理质量,以提高真实环境下的语音识别率。 事实上,仅靠麦克风阵列也很难保证语音识别率的指标。麦克风阵列还仅是物理入口,只是完成了物理世界的声音信号处理,得到了语音识别想要的声音,但是语音识别率却是在云端测试得到的结果,因此这两个系统必须匹配在一起才能得到最好的效果。 不仅如此,麦克风阵列处理信号的质量还无法定义标准。因为当前的语音识别基本都是深度学习训练的结果,而深度学习有个局限就是严重依赖于输入训练的样本库,若处理后的声音与样本库不匹配则识别效果也不会太好。从这个角度应该非常容易理解,物理世界的信号处理也并非越是纯净越好,而是越接近于训练样本库的特征越好,即便这个样本库的训练信号很差。显然,这是一个非常难于实现的过程,至少要声学处理和深度学习的两个团队配合才能做好这个事情,另外声学信号处理这个层次输出的信号特征对语义理解也非常重要。 看来,小小的麦克风阵列还真的不是那么简单,为了更好地显示这种差别,我们测试了某语音识别引擎在单麦克风和四麦克风环形阵列的识别率对比。另外也要提醒,语音识别率并非只有一个WER指标,还有个重要的虚警率指标,稍微有点声音就乱识别也不行,另外还要考虑阈值的影响,这都是麦克风阵列技术中的陷阱。 …

    sohuman Asked on 2018年1月31日 in AI.
    • 866 views
    • 0 answers
    • 0 votes
  • 原创 2017-12-04 干货资源 AI科技大本营 机器学习工程师自学指南! 本文将会介绍机器学习的方方面面,从简单的线性回归到最新的神经网络,你不仅仅能学会如何使用它们,并且还能从零进行构建。 以下内容以计算机视觉为导向,这是学习一般知识的最快方法,并且你从中获得的经验可以很容易地迁移到机器学习的其他领域。 本文我们将会使用TensorFlow作为机器学习框架。 学习是一个多维因素作用的结果,所以如果能基于学习资料,理论和实践并重,学习效果会好很多。另外,还有一个很好的实践方法是参与Kaggle竞赛,通过竞赛的形式解决实际生活中的问题,从而巩固此前所学。 (要求:关于Python,你无需达到专家级别,但要很好地掌握基础知识) 1.课程 1.1  实用机器学习(约翰霍普金斯大学) https://www.coursera.org/learn/practical-machine-learning 1.2  机器学习(斯坦福大学) 以上两个课程会教你一些数据科学和机器学习的基础知识,也有助于你对更有难度知识的学习和掌握。 https://www.coursera.org/learn/machine-learning 1.3 CS231n:面向视觉识别的卷积神经网络 …

    hq Asked on 2017年12月7日 in AI.
    • 1009 views
    • 0 answers
    • 0 votes
  • 盘点·GitHub最著名的20个Python机器学习项目 2017-12-07 翻译小组 52AI人工智能 本公众号已经改版,推出了线上线下课程,并且推出免费2个月广告服务业界优质产品。 我们分析了GitHub上的前20名Python机器学习项目,发现scikit-Learn,PyLearn2和NuPic是贡献最积极的项目。让我们一起在Github上探索这些流行的项目! Scikit-learn:Scikit-learn 是基于Scipy为机器学习建造的的一个Python模块,他的特色就是多样化的分类,回归和聚类的算法包括支持向量机,逻辑回归,朴素贝叶斯分类器,随机森林,Gradient Boosting,聚类算法和DBSCAN。而且也设计出了Python numerical和scientific libraries Numpy and Scipy Pylearn2:Pylearn是一个让机器学习研究简单化的基于Theano的库程序。 NuPIC:NuPIC是一个以HTM学习算法为工具的机器智能平台。HTM是皮层的精确计算方法。HTM的核心是基于时间的持续学习算法和储存和撤销的时空模式。NuPIC适合于各种各样的问题,尤其是检测异常和预测的流数据来源。 Nilearn:Nilearn 是一个能够快速统计学习神经影像数据的Python模块。它利用Python语言中的scikit-learn 工具箱和一些进行预测建模,分类,解码,连通性分析的应用程序来进行多元的统计。 PyBrain:Pybrain是基于Python语言强化学习,人工智能,神经网络库的简称。 …

    wanghy Asked on 2017年12月7日 in AI.
    • 1082 views
    • 0 answers
    • 0 votes
  • 编者按: 6月11日,Open.ai官方博客发文,宣布其与DeepMind安全部门合作开发的最新算法,该算法使用少量人为反馈进行强化学习,并能够处理更复杂的任务。仅需900bit的人类反馈,系统便学会了后空翻,需要人类参与的时间也从70小时将至1小时,该技术还能够被应用在更多其他方面,目前在虚拟机器人以及Atari平台的游戏上已经接受广泛测试。 构建安全AI系统的关键步骤之一是消除系统对人类编写的目标函数的需求。因为如果复杂的目标函数中有一点小错误,或者对复杂目标函数使用简单的代理,都可能会带来不是我们希望的甚至危险的后果。因此,我们与DeepMind的安全团队合作,开发了一种算法,可以通过人类告诉系统哪种行为更好而使系统得知人类的想法。 论文地址:https://arxiv.org/abs/1706.03741 我们提出了一种使用少量人为反馈来学习现阶段RL环境的学习算法。 有人类反馈参与的机器学习系统在很久之前就出现了,此次我们扩大了该方法的适用范围,使其能够处理更复杂的任务。仅需900bit的人类反馈,我们的系统就学会了后空翻,这是一个看似简单的任务,成功与否的评估方式简单粗暴,但具有挑战性。 仅需900bit的人类反馈,我们的系统就学会了后空翻 整体的培训过程是一个三节点的反馈循环,其中包括人类、代理对目标的理解、以及RL训练系统。 我们的AI代理最开始是在环境中随机行动,并定期向人类提供其行为的两个视频截图,人类选择其中最接近完成任务的一张(在这个问题下,是指后空翻任务),反馈给代理。AI系统逐渐地通过寻找最能表达人类目的的反馈函数(reward function)来创建该任务的模型。然后通过RL的方式学习如何实现这一目标。随着它行为的改善,它会继续针对其最不确定的环节征求人们对轨迹的正确反馈,并进一步提高对目标的理解。 我们的方法在效率上表现出色,如前所述,学会后空翻只需要不到1000bit的反馈数据。这就意味着,人类参与其中为机器提供反馈数据的工作时间不到一小时。而这一任务的平均表现为70小时(且模拟测量时假设的速率比实际操作时要快)。我们将继续努力减少人类对反馈数据的供应。您可以从以下视频中看到培训过程的加速版本。 https://youtu.be/oC7Cw3fu3gU 我们已经在模拟机器人和Atari的许多任务上测试了我们的方法(系统没有访问reward function的权限:所以在Atari,系统没有办法访问游戏得分)。我们的代理可以从人类的反馈中学习,在我们测试的大部分环境中都能够实现强大的,甚至是超人的表现。 在以下动画中,您可以看到通过我们的技术训练的代理正在玩各种Atari游戏。 每个gif图片右侧的竖条表示每个代理预测的人类评估者将对其当前行为的认可程度。这些可视化表明,通过人类的反馈,1图中的代理在学习计量潜水舱中的氧气,2、3图中的代理在预估小球敲掉砖块的数量以及轨迹,或者在4图中学习如何从赛车撞车事故中恢复。 请注意,反馈不需要与环境中的正常的奖励函数保持一致:例如,在赛车比赛中,我们可以训练我们的代理,使其与其他车辆保持持平,而不是为了最大化游戏分数而超过他们。 我们有时会发现,从反馈中学习,比通过正常奖励函数进行强化学习效果更好,因为人类塑造的奖励,比环境中的奖励函数更有效。 挑战与不足 我们算法的性能基于人类评价者对于什么样的行为看起来正确的直觉,所以如果人类对这个任务没有很好的把握,那么他们可能不会提供有用的反馈。 …

    call Asked on 2017年6月16日 in AI.
    • 1154 views
    • 0 answers
    • 0 votes
  • 译者注:本文通过一个简单的Go绑定实例,让读者一步一步地学习到Tensorflow有关ID、作用域、类型等方面的知识。以下是译文。 Tensorflow并不是机器学习方面专用的库,而是一个使用图来表示计算的通用计算库。它的核心是用C++实现的,并且还有不同语言的绑定。Go语言绑定是一个非常有用的工具,它与Python绑定不同,用户不仅可以通过Go语言使用Tensorflow,还可以了解Tensorflow的底层实现。 绑定 Tensorflow的开发者正式发布了: C++源代码:真正的Tensorflow核心,实现了具体的高级和低级操作。 Python绑定和Python库:这个绑定是由C++实现自动生成的,这样我们可以使用Python来调用C++函数。此外,这个库将调用融合到了绑定中,以便定义更高级别的API。 Java绑定。 Go绑定。 作为一个Go开发者而不是一个Java爱好者,我开始关注Go绑定,以便了解他们创建了什么样的任务。 Go绑定 地鼠与Tensorflow的徽标首先要注意的是,Go API缺少对Variable的支持:该API旨在使用已经训练过的模型,而不是从头开始训练模型。安装Tensorflow for Go的时候已经明确说明了: TensorFlow提供了可用于Go程序的API。这些API特别适合于加载用Python创建并需要在Go程序中执行的模型。 如果我们对培训ML模型不感兴趣,万岁!相反,如果你对培训模型感兴趣,那就有一个建议: 作为一个真正的Go开发者,保持简单!使用Python定义并训练模型;你可以随时使用Go来加载并使用训练过的模型! 简而言之,go绑定可用于导入和定义常量图;在这种情况下,常量指的是没有经过训练的过程,因此没有可训练的变量。 现在,开始用Go来深入学习Tensorflow吧:让我们来创建第一个应用程序。 在下文中,我假设读者已经准备好Go环境,并按照README中的说明编译并安装了Tensorflow绑定。 …

    kuku Asked on 2017年6月7日 in AI.
    • 994 views
    • 0 answers
    • 0 votes
  • 1 天前 原始来源:vinta/awesome-python 作为资源的记录与分享~~ Python 目录: 管理面板 算法和设计模式 反垃圾邮件 资产管理 音频 验证 构建工具 缓存 ChatOps工具 CMS 代码分析和Linter 命令行工具 兼容性 计算机视觉 …

    wx Asked on 2017年3月8日 in AI.
    • 1058 views
    • 0 answers
    • 0 votes