• 【问题求助】 【算法挑战营二十一期】错误求助?
    Some tests failed. First verdict: task 0: multiple routing rules for (0, 4)   这个意思是同一任务的两个一摸一样的通信对的路由规则,我没有去重吗?
  • [问题求助] RPA 控件里的非必填参数如何动态赋值
    动态读取不同sheet页的数据,但是不能指定sheet
  • [其他] AI学习记(语音识别)-第二集
    AI语音识别定义与解读        语音识别是人机交互的接口,是指机器/程序接收,解释声音,或理解和执行口头命令的能力。在智能时代,越来越多的场景在设计个性化的交互页面时,采用以对话为主的交互形式。一个完整的对话交互是由“听懂-理解-回答”三个步骤完成的闭环。其中,“听懂”需要语音识别技术;“理解”需要自然语言处理技术;“回答”需要语音合成技术,三个步骤环环相扣,相辅相成。语音识别技术时对话交互的开端,时保证对话交互高效准确进行的基础。        语音识别技术子20世纪50年代开始步入萌芽阶段,发展至今,主流算法模型已经经历了四个阶段,包括模板匹配阶段,模式和特征分析阶段,概率统计建模阶段和现在主流的深度神经网络阶段。目前,语音识别主流厂商主要使用端到端算法,在理想实验环境下语音识别准确率可高达98%以上。语音识别发展历程如下:
  • [应用实践] [语音识别]用mindspore实现元音分类器的尝试
    前言:自从接触到MindSpore,就一直想要用mindspore实现语音识别。在官网的教程上,看到有机器视觉的(CV),也有自然语言处理的(NLP),可是没有语音识别(ASR),心中一直有个缺憾,想补齐这个能力。于是调研了其他的框架的入门例子,可以理解为机器视觉的MNIST:1.Tensorflow的语音识别教程,google提供了一个含30个词的65000条语音,可以训练一个简单的语音识别网络,可以识别yes, no, up, down等等简单词。源代码可见于https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/speech_commands2.但是做语音识别,更专业的会用kaldi,最简单的例子为yesno, 60个音频文件(每个文件含8个单词,单词为希伯来语的“是”,“否”,我也不知道为什么用这种语言入门,不过刚好笔者业余学过hhh,是以色列的官方语言),音频数据训练测试各半分。https://github.com/kaldi-asr/kaldi/tree/master/egs/yesno但是tf我是没有成功,各种条件不足;kaldi实现过,在ubuntu上,配置好各种依赖,编译完成,可以训练成功,再放到voxforge目录下进行推理,效果不错。不过,不好意思,入门的例子还是用传统的方法,没有涉及深度神经网络。尝试阅读代码理解整个流程,还是门槛太高,不太懂机器学习,自觉才疏学浅。不过读大学时,自个钻研过语音识别,想出一个架构,后来还做成了毕业设计,所以还是有自己的一些认知和见解。最近藉着MindSpore有幸入门深度学习领域,然后结合自己对语音识别的理解,做一点分享。这个其实也是受官网教程“线性拟合”https://www.mindspore.cn/tutorial/training/zh-CN/master/quick_start/linear_regression.html的启发,越基本对新手越友好。先把目标和结果写上来吧目标:用一些a, o, e, i, u, v的音频文件做训练,期望得到一个网络,能够对音频做推理,判断声音中是什么元音。即标题说的,“元音分类器”结果:最后由于模型设计太简单,没有收敛。所以一方面是分享,另一方面希望大家对模型的设计,调参等给出建议,语音的原理声音的本质是简谐运动,机械波(纵波,传播方向与振动方向一致)。所以声音会使介质的粒子(比如空气)振动,并传播,波峰处密,波谷处疏。一般场景,就是空气中传播,那么就是导致不同的压强。接着通过公式y=A sin(wx)再看声音的几个性质,振幅就体现于声音的响度,频率体现于声音的高低。而语音上表现为轻声、重音;声调高低。这些是结合常识就可以理解的。但是音色,或者就说/a/, /o/, /e/,这些是从公式的什么地方体现的呢?原来语音不是单纯一个音,而是混合了多种频率的,非常复杂的。比如y1=2sin(x)+4sin(3x), y2=sin(x)+3sin(3x),这里两种不同频率的正弦波,按照不同的1:2,1:3组合,就形成了不同的音色。简而言之,音色由不同频率的强度占比决定。声音的记录我们常听说mp3,m4a等音频格式,这些是怎么来的呢?我们从头说起,声音振动影响气压,记录声音,绝大多数设备就是根据空气的压强。麦克风的传感器(比如压电传感器)将其转换为电压(模拟值),然后做模数转换,就存储为二进制的数据。不论是实时语音语音,还是录音文件的识别,都要经过这一步。而录音文件,最简单的格式是wav,mp3,m4a则是在不影响人耳感知的前提下做了压缩。音频文件的读取一般做语音识别,就是用wav格式的音频做训练。音频文件一般由文件头和数据部分组成。wav是微软定的一个格式,满足数据交换。这个网上很多介绍了,直接看代码附件吧,用C++二进制读取。频谱分析由于音频文件记录了时域信息,我们需要频域信息,比较好做分析。所以要用傅里叶变换,这样本来是波形的语音数据,就可以转化为频率的强度分布。代码附件tool.zip。但是由于语音是不断变化的,计算机又是要离散的,所以做离散的短时傅里叶变换。自制工具编译命令g++ -c Complex.cpp -o Complex.o g++ -c Transform.cpp -o Transform.o g++ -c SoundToSpectrum.cpp -o main.o g++ main.o Transform.o Complex.o -o spectrum_tool.exe  ./spectrum_tool.exe a0.wav > a0.txt共振峰短时傅里叶变换有个约束,帧的长度越小,频率的分辨率越低。经过研究发现,5ms左右的帧,能够得到语音频谱的包络面,而且会显示出几个峰值,叫做共振峰(formant),而这些峰值的频率就可以对应元音。准备数据当然最先想到的是录音,不过自己合成也可以。介绍一个开源的软件praat,可以合成哦。于是构造了每种元音各10个音频。然后把文件读取和频谱分析的代码编译后,得到一个频谱计算工具。最后写了一个脚本批量处理这些音频,将频谱信息保存在txt文件中,文件以元音名称和文件序号命名。附件audio.zip为音频文件,spec.zip为频谱数据。预备工作完成!开始构建网络首先是读取数据集,自己写了一个很土的读取方法get_data()然后网络中,先是op.ArgMaxWithValue()这个算子真好用hhh,直接帮我提取频谱中峰值和对应频率。然后就不知道怎么利用好这两个数据了,乘起来?试试,后面开始遍历每个数据文件,设好优化器,学习率,损失函数……用每个数据训练一轮。import numpy as np from mindspore import nn from mindspore import Parameter from mindspore.nn import WithLossCell from mindspore.nn import TrainOneStepCell from mindspore import context import mindspore import mindspore.ops.operations as op from mindspore import context context.set_context(mode=context.GRAPH_MODE, device_target="GPU") vowel_dict = {"a":100, "o":200, "e":300, "i":400, "u":500, "v":600} def get_data(vowel, file_num):     filename=vowel+file_num+".txt"     spectrum = np.loadtxt(filename).astype(np.float32)     vowel_num = vowel_dict[vowel]     label_np = np.array([vowel_num]).astype(np.float32)     return spectrum, label_np     class Net(nn.Cell):     def __init__(self):         super(Net, self).__init__()         self.arg = op.ArgMaxWithValue()         self.mul = op.Mul()         weight_np = np.full((1,), 1, dtype=np.float32)         sekf.weight = Parameter(Tensor(weight_np), name="weight")     def construct(self, input_x):         freq, value = self.arg(x)         product = self.mul(freq, value)         output = self.mul(product, self.weight)         return output if __name__ == "__main__":     lr = 0.0005     momentum = 0.1     net = Net()     loss = nn.loss.MSELoss()     opt = nn.Momentum(net.trainable_params(), lr, momentum)     net_with_criterion = WithLossCell(net, loss)     train_net = TrainOneStepCell(net, opt)     train_net.set_train()     vowel_list = ["a", "o", "e", "i", "u", "v"]     train_list = ["0", "1", "2", "3", "4"]     test_list = ["5", "6", "7", "8", "9"]     #train     for vowel in vowel_list:         for file_name in train_list:             input_np, label_np = get_data(vowel, file_name)             train_net(Tensor(input_np), Tensor(label_np))     #test     for vowel in vowel_list:         for file_name in train_list:             input_np, label_np = get_data(vowel, file_name)             predict = net(Tensor(input_np))             error = predict.asnumpy() - label_np             print(loss)然后就可以推理了,但是怎么把字符和数值对应呢?用了一个dict,当然训练也用到这个做为label。然后把推理结果和标签比较一下,还是不打印了,结果很差。如果把机器学习比喻为炼丹,那我这个明显是炼丹炉炸了hhh。“药材”,“火候”,还是要把控好的。总结与不足之处1.这里十二分地简化了语音识别的场景,仅仅识别元音。而且训练数据也是不真实的,如果打开听,可以发现是很稳定的声音,所以提取频谱也只对某一时刻做了操作,推理也只是看某一个时刻的。2.数据的使用太简单。mindspore有自己的数据读取方式,但是还是主要做图片和文本的。我只好自己处理,自己读取为numpy的格式。3.模型的设计过于简单,连全连接层都没用上。其实本来要提取两个共振峰的频率,就是第一共振峰,第二共振峰,然后就能大致判断元音的。但其实有时候第一、二共振峰会发生融合,就难说了。所以处理频谱时,先做归一化,每个频率强度除第一个频率的,这样就算声音大小不同,这个比值应该还是稳定的,然后就可以用最大值。4.所以正如标题说的,这是一个尝试,突发奇想。希望mindspore能够有一天推出ASR的实践,我很乐意去验收教程的,哈哈哈,身份是不是明显了?
  • [AI人工智能全栈成长...] 【问答官】ModelArts的语音识别技术优势在哪里?
    【问答官】ModelArts的语音识别技术优势在哪里?
  • [AI实战营] 积分兑奖活动已结束【作业打卡帖】华为云2020 AI实战营 第八章 语音识别
    注意:本帖严禁水贴,如发现水贴,情节严重,取消报名资格【打卡方法说明】实战营总共有8章课程,每章课程的打卡内容都不一样,请仔细阅读以下打卡说明,并严格按照给出的打卡样例进行打卡,才可获得打卡积分因打卡不符合规范的同学,请注意要将所有截图重新发帖,在原帖基础上进行修改无效!!!打卡的目的是督促大家按时完成课程的学习,请如实根据自己的学习完成情况进行打卡,不要做虚假打卡获得积分,如发现作假,则会将该学员在本章课程的打卡积分清零。☞学AI,就上  huaweicloud.ai !☜
  • [AI实战营] 积分兑奖活动已结束【课程打卡帖】华为云2020 AI实战营 第八章 语音识别
    注意:本帖严禁水贴,如发现水贴,情节严重,取消报名资格【打卡方法说明】实战营总共有8章课程,每章课程的打卡内容都不一样,请仔细阅读以下打卡说明,并严格按照给出的打卡样例进行打卡,才可获得打卡积分因打卡不符合规范的同学,请注意要将所有截图重新发帖,在原帖基础上进行修改无效!!!打卡的目的是督促大家按时完成课程的学习,请如实根据自己的学习完成情况进行打卡,不要做虚假打卡获得积分,如发现作假,则会将该学员在本章课程的打卡积分清零。☞学AI,就上  huaweicloud.ai !☜
  • [技术干货] 语音交互机器狗demo
    1. 解决问题与挑战:1.1 业务场景:        一款具备语音交互的机器狗,对机器狗科研demo样机搭载语音识别ASR、自然语言处理NLP、语音合成TTS服务实现语音交互的功能,实现语音运动控制、语音智能交互、智能提醒等智能语音服务。解决问题:实现准确快速的语音识别、多音色富有情感的语音合成等功能1.2 挑战:        伴随5G技术的发展、互联网基础设施的完善,采用API访问云端实现一些例如语音识别、语音合成模块功能,逐渐可以简化或者取代一些复杂的本地资源部署,快速实现相应的功能。在过去,对于一些语音交互科研机器人,语音服务经常面临本地部署设备数目少、部署成本高、维护麻烦等问题,寻求低成本、部署方便、语音合成迅速的语音交互服务模块在很长一段时间内,成为我设计语音交互机器人设计关键瓶颈难题。1.3 使用服务:语音识别ASR/ 语音合成TTS/ 自然语言处理NLP1.4 如何解决:在本地设备部署语音唤醒服务,设备语音唤醒后,将录音片段通过华为云的语音识别接口传至华为云进行语音识别处理。将华为云返回的语音识别文字信息在本地进行自然语言处理或运用华为云的自然语言处理模块进行自然语言处理得到相应的语义、控制指令信息。将需要语音合成的文字通过华为云的语音合成接口传至华为云,得到相应的音频信息。2. 使用场景:    语音交互机器人控制指令识别:通过语音识别服务,在本地通过正则匹配,数据库对比等操作,得到语音信息中的控制指令信息,用于机器人的语音控制。    语音交互机器人对话语音的语音转写:运用语音识别服务,获取语音信息中相应的文字信息,用于自然语言处理模块的文本输入,或者对话机器人api的输入。    语音交互机器人自然语言处理:通过华为云的自然语言处理服务,得到相应的回复语言,用于智能对话、智能提醒等功能。    语音交互机器人语音合成功能:运用华为云的语音合成服务实现对答文本的语音合成服务。3. 业务架构图/方案截图:4. 使用规模:        语音识别:500次/月 语音合成:500次/月5.使用收益:        简化了语音交互模块的配置:学生可以轻松通过API调用的方式实现语音识别、语音合成等服务,简单便捷。        提升了语音交互的质量:得益于华为云低延时高速的特性,让在线服务可以与本地服务媲美,语音识别准确率很高,同时语音合成提供了多种语音交互音色供开发者使用。6.意见/建议:对于长语音的识别速度可否进一步优化 。对于语音合成可以考虑例如中英语音的合成,提升中英语音合成的情感度,衔接的自然度。有些音色在中英混合语音合成时,中文语音合成情感比较充足,但英文就显得很生硬。  建议增添音色选项。对比阿里云、腾讯云、京东云等语音合成服务,他们可配置音色相比会更多些。如有条件适宜,可否考虑提升服务器的部署分布,现在语音合成语音识别仅有北京四的服务器可供选择,能否增设一些南方地区的语音服务的服务器。服务指南通俗易懂,配置简单。但对一些小白用户可能存在门槛,如条件适宜,可否会像思必驰、讯飞等平台提供一些入门指导教程参考。不过对于多数开发展,当前服务指导书足够的。对于在校学生、或者科研团队,可否提供一些特殊套餐供学生选用。降低学生使用成本。
  • [其他] 快来围观,语音识别都有哪些应用场景呢
    智能客服集成语音识别的智能客服系统,可以自动识别客户的语音和语义,然后自动以语音形式回复客户。减少人力成本,保证服务质量。智能会议集成语音识别的智能会议系统,可以自动识别参会人员的声纹、语音,通过实时、精准的识别,达到实时弹幕显示、会议记录等。直播字幕在视频直播场景中,将音频实时转写成文本字幕,与视频一起播出,提升观众友好性。结合敏感关键词检测服务,进行质检审查。人机交互通过语音唤醒、语音识别服务,对终端设备发送语音命令,对设备进行实时操作,提升人机交互体验。
  • 国内首款基于FPGA平台的语音识别加速解决方案登陆华为云
    本帖最后由 speedy2016 于 2018-6-28 20:21 编辑国内首款基于FPGA平台的语音识别加速解决方案登陆华为云 近期,华为云与国际领先深度学习加速方案提供者深鉴科技共同发布语音识别加速引擎DDESE——DeePhi Descartes Efficient SpeechRecognition Engine,即深鉴科技笛卡尔架构高效语音识别引擎。该方案以语音识别为应用载体,对AI类应用推理计算进行全面加速。成为目前国内公有云市场上,首款基于FPGA平台的原创深度学习语音识别加速解决方案。现已全面登录华为云市场。18350近年来,云端业务发展日新月异,市场对底层硬件架构提出更高性能的要求,而FPGA的可定制化和多功能的灵活特性,与云端灵活、复杂、多变的需求“不谋而合”,继而在全球云端业务中广泛加快布局。而华为云顺应趋势,并结合自身硬件优势全面推出FPGA加速云服务器平台,应用场景覆盖基因分析、视频/图片处理、深度学习、加解密、大数据等多个领域,致力于为企业提供极致、易用、专业的FPGA加速云服务。华为云结合深鉴科技,在FPGA加速云服务器平台上发布了DDESE。该产品是以Xilinx FPGA为计算架构平台,为用户打造的一款算法、软件和硬件协同设计的推理计算加速解决方案。基于深鉴科技独有的深度压缩能力,可以在保持精度的同时将神经网络压缩超过10倍,并部署在深鉴科技自主研发的笛卡尔架构硬件平台上,其核心加速引擎能够显著降低语音识别的延时,同时达到更低的功耗。根据单句语音识别重复测试的结果,DDESE端到端语音识别的计算速度是同等级GPU(Tesla P4 + c**n)的2倍,其中LSTM部的加速比超过2.5倍。该款产品主要应用于语音识别场景,可为用户提供端到端语音识别服务。未来,深鉴科技希望依托于华为云的平台,能够在FPGA领域继续突破前沿技术,引领国际先进的深度学习加速方案,进一步赋能语音识别应用场景。目前,DDESE正面向华为云用户提供免费试用,期待更多开发者与厂商体验深鉴算法、软件、硬件协同设计的深度学习加速解决方案。DDESE体验链接:https://app.huaweicloud.com/product/00301-110982-0--0
  • [热门活动] 【云端大事件】听“鉴”智能:深鉴科技高效语音识别引擎DDESE入驻华为云市场
    本帖最后由 DeePhi 于 2018-6-19 11:11 编辑【导语】2018年4月26日星期四,北京深鉴科技有限公司入驻华为云市场,在华为云市场发布了“深鉴笛卡尔高效语音识别引擎” —— DDESE(DeePhi Descartes Efficient SpeechRecognition Engine)。该产品针基于Xilinx FPGA,针对深度神经网络(主要针对LSTM),为用户提供软硬件协同设计的快速、灵活、高效的推理计算解决方案。 【标签】华为云市场 云端大事件 FPGA LSTM加速 产品介绍DDESE是深鉴科技自主研发的高效端到端自动语音识别引擎,它使用了算法、软件、硬件协同设计的深度学习加速解决方案(包括剪枝、定点、编译和FPGA执行推理)。我们使用了DeepSpeech2框架和LibriSpeech 1000小时数据集来做模型训练和压缩,支持用户测试对比CPU/FPGA的性能以及执行单句语音识别。 产品特色业界领先的原创深度学习语音识别加速解决方案 (ESE,FPGA2017 best paper)- 针对模型推理支持对单向、双向LSTM使用FPGA做加速- 支持卷积层、全连接层、BN层和多种激活函数(例如Sigmoid、Tanh和HardTanh)- 支持测试CPU/FPGA的性能比较以及单句语音识别17727 解决方案我们的解决方案包括算法、软件和硬件协同设计(包括剪枝、定点、编译和FPGA执行推理)。经过剪枝,可以在精度损失很小的情况下得到稀疏模型(稠密度为15%~20%),然后将模型的权重和激活值定点到16bit,这样一来整个模型能够被压缩超过10倍,可以借助稀疏存储格式编译并部署在深鉴科技自主研发的笛卡尔平台上,采用FPGA执行高效的推理。14590 应用场景/行业DDESE聚焦语音识别场景,构建了以赛灵思FPGA为平台的自动语音识别系统加速引擎,可以为用户提供端到端的语音识别服务。基于FPGA平台,结合深鉴科技算法、软件和硬件协同设计的深度学习加速解决方案,DDESE在语音识别端到端的计算速度是同等级GPU(Tesla P4)的2倍,其中LSTM部分的加速比超过2.5倍。深鉴科技在云端部署FPGA加速解决方案,面向全球用户提供加速服务,支持其降低开发与部署成本,消除硬件壁垒,同时通过软硬件协同优化,取得更高效的云端计算能力。 产品价值点深鉴科技的核心加速引擎主要针对RNN/LSTM,能够显著的降低语音识别、机器翻译等AI时序类应用的延时。深鉴科技在华为云市场发布DDESE,目的是以语音识别为应用载体,展现基于Xilinx FPGA的AI类应用推理计算加速能力,并通过云端推广,让更多客户试用并深入了解深鉴科技的全流程解决方案。关于DDESE的更多信息,请参考深鉴科技官网:http://www.deephi.com/zh-cn/ddese.html
  • [问题求助] FAQ
    问:UVoice 现在是否可以使用?答:UVoice现在处于邀测阶段,预计2017年底上线公测。 问:UVoice服务如何购买?答:目前处于邀测阶段,当前可以联系 zhongweicai@huawei.com咨询,上线后公测期间华为云用户可免费使用。 问:什么是UVoice:答:UVoice致力于为企业和个人提供语音识别和语音合成服务,通过API 调用即可实现语音转文字、从文本生成语音等功能。 问:UVoice 有哪些能力?语音识别:可以快速识别语音内容,将语音转换为文字。语音合成:可以快速将文字合成语音,提供多种音色选择,支持语速调节,合成效果流畅自然,更接近人声。 问:怎么使用UVoice?答:用户通过API调用使用UVoice服务,用户开通UVoice服务后即可参考接口文档调用服务。 问:使用UVoice需要购买华为云的哪些配套资源?答:用户开通UVoice就可以使用;为了获得更好的体验,建议用户购买华为云的弹性云服务器和OBS搭配使用。 问:UVoice处理一段语音需要多久?答:UVoice基于华为新一代GPU弹性云服务器,处理一段10S短语音最快0.1秒。 问:UVoice可以处理多长的语音识别?答:UVoice即可以识别短语音,也可以识别长语音。 问:我的文件发送给UVoice会不会泄露?答:UVoice和华为云其他服务采用同样的安全措施保证用户数据安全,并且UVoice承诺不保存用户数据用于商业用途。