想实现不需要连公网的智能音箱系统。
求语音识别这块的实现思路。
步骤:
1) 安装Speech SDK
2) 安装后设置
3) 编写程序
1、安装Speech SDK
本例以Speech SDK 5.1为例,需要安装两个文件SpeechSDK51和SpeechSDK51LangPack。
下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&displaylang=en
2、安装后设置
安装好后,进入“控制面板”—>“语音”,在“文字-语音转换”标签页中将“语音选择”选成“Microsoft Simplified Chinese”。
3、编写程序
因Speech SDK在Asp.net无法像Winform一样直接使用,不过可以通过ActiveX的方式来实现。 实现方法是在aspx源码编写下边代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
//创建 Sapi SpVoice 对象
var VoiceObj =new ActiveXObject("Sapi.SpVoice");
//将文本读出来
function ReadVoice() {
var voice = document.getElementById("txtVoice").value;
VoiceObj.Speak(voice, 1);
returnfalse;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<%--将要被读的文本--%>
<input id="txtVoice" type="text"/>
<br />
<%--读 按钮--%>
<input id="btnRead" type="button" value="读" onclick="return ReadVoice()"/>
</div>
</form>
</body>
</html>
运行,在文本框中输入中文,点“读”就将文本就读出来了。
注:
1)如果在运行后,出现“Microsoft JScript 运行时错误: Automation 服务器不能创建对象”错误。请在,IE的“工具”->“Internet 选项”->“本地Internet”->“自定义级别”->"本地Intranet"内“对未标记为可安全执行脚步本的ActiveX控件初始化并执行脚本”这一项设置为“启用”。
如果你发布到其它机器运行,需要在“Internet 选项”->“Internet”中设置这一项。
2)在“开始菜单”中“Microsoft Speech SDK 5.1”中有“Microsoft Speech SDK 5.1 Help”帮助文档。如果需配置,可以参考此文档。
3)在Microsoft Speech SDK 5.1的安装目录下,有个“Samples”文件夹,里边提供了一些示例,可以参考。
可以和服务商谈 私有化部署,在你们内网部一个语音的服务
可以找找第三方的离线包
个人建议是可以用开源的语音识别引擎
如果想自己搞,下面这篇论文应该能帮到你
https://wenku.so.com/d/fbf39393066f32bdf188704d6c8458f4
望采纳哦
这种内网的项目只能搞一些别人公网的离线的低版本放到内网操作,然后在此基础上开发维护,确保安全策略能通过
语音识别正常也不要联网,联网是因为识别之后需要去处理。
题主的意思是不是,你说一句话,将你说的这句话转化成文字?
通过底层算法实现太难了。别人的代码也很难搞得到。有没有实在些的方法?
语音识别这些都是通过深度学习实现的,如果你能自己训练最好,这样能可以选择你需要识别的语音进行训练,这样识别准确率高,如果不想自己训练的话,就找第三方别人训练好的吧,这种一般都是普通话的正常识别,有一定的错误率,你直接下载别人训练好的模型,直接调用进行识别就好了
声纹识别吗?这一块的实现思路一般都是通过深度学习来实现的,将声纹转化为图像提取特征与数据库内的进行比对,比对后打分预测是谁的声纹
百度的你试试
可以下载一个开源的或者第三方的语音识别离线安装包,然后集成到项目中,或者自己搭建一个本地语音识别系统,自己调用
建议采用第三方库来实现,自己做不太现实。仅仅解决内网问题底层开发未免代价太大。
github有很多现成的项目,并且有不少是比较成熟的,你可以自己训练一个,比如:https://github.com/nl8590687/ASRT_SpeechRecognition
和https://github.com/yeyupiaoling/PPASR
什么?你没有显卡?
那你准备好数据,去网吧,找一台3080或者3090的电脑应该不难吧,搭配环境,顺便通个宵。完事儿后,把模型保存下来,就可以了。另外,上面网站也有部署到web上的介绍,你可以部署到自己的电脑或者服务器上,甚至手机上都是可以的。
我看了一下,准确度也是相对可以的,你可以动起手来了。
如有帮助,请采纳,多谢!
自己训练一个模型
端到端的语音识别
传统的机器学习中,往往包含多个独立的模块。以NLP问题举例——包括分词、标注、分析句法和语义等部分。每一个模块的输出好坏会影响下一个结果,从而影响整个训练的结果,这是非端到端;
而在E2E只分为输入端的语音特征和输出端的文本信息。输入经过一个 RNN 生成一个向量(这一步类似计算 sentence embedding),之后用另一个 RNN ,从向量中解码出我们需要的文本信息;第一个过程称之为 encoding,第二个过程称之为 decoding,整个模型不需要词对齐,不需要额外的语言模型。这就是端到端;
E2E将传统语音识别系统的三大部分——发音词典、声学模型和语言模型,被融合为一个E2E模型,直接实现输入语音的文本化;
Encoder-Decoder 模型虽然在结构上很简单且大部分序列到序列的预测问题,都可以使用该模型,这个序列甚至没有必要是语音,图像或者文字同样适用。
E2E模型通常包含以下的具体模型:
CTC:主要负责声学模型的训练(补充,引用微软亚洲研究院的资料,CTC是最早的端到端ASR模型);
RNN-T:为了联合优化声学模型与语言模型,由于RNN-T是针对每帧输入特征进行预测输出,即不用等语音全部说完再出结果,因此可应用于流识别,特别是在嵌入式设备。
Attention:主要负责声学部分训练;
Transformer:并行计算的特征提取器(主要可用于提取声学特征)。
由于接下来的ESPNet模型中,主要使用了CTC和Attention来进行训练和解码,所以我会主要介绍这两部分:
1、CTC(连接时序分类)
CTC算法全称叫:Connectionist temporal classification。顾名思义,是用来解决时序类数据的分类问题。在训练声学模型的时候,能够自动对齐输出标签和输入序列,不再像DNN-HMM模型那样需要对齐标注。
标注对齐与传统声学模型训练:
传统语音识别的声学模型训练,对于每一帧,需要知道对应的label才能进行有效的训练。而且,在训练数据之前需要做语音对齐的预处理,而对齐的过程需要进行反复多次的迭代,来确保对齐更准确,是一个比较耗时的工作;
不对数据进行调整处理,那就意味着不能用一些简单方法进行训练,所以必须进行标注对齐操作;
举例什么是对齐标注:如果我的发音为“你好”,第1,2,3,4帧对应n的发音,第5,6,7帧对应i的音素,第8,9帧对应h的音素,第10,11帧对应a的音素,第12帧对应o的音素。如图所示:
与传统的声学模型相比,CTC可让网络自动学会对齐,适合语音识别和书写识别等任务;
至于有关于CTC具体的原理,毕竟本文是介绍ESPNet的文章,同时CTC中涉及损失函数、前向后向算法等大量数学内容。篇幅有限,我在这里就不阐述了。
总而言之,CTC最核心的特点是:
CTC中的前向后向算法可以令输出序列和输入序列自动按时间顺序对齐;
但缺点是,为了提高效率,CTC做出了重要的独立性假设——不同帧的网络输出有条件地独立。同时从CTC模型中获得良好的性能,往往还需要使用外部语言模型;
它和接下来介绍的Attention模型各有优点,最终会相互结合,并被ESPNet所使用。
Encoder是将输入的音频,转化为向量,方便之后的数学计算;
Decoder是将数学化的数据,最终输出为我们最终的ASR目标——文字。
而Attention 模型的特点是 Eecoder 不再将整个输入序列编码为固定长度的中间向量 ,而是编码成多个向量(或者说一个向量的序列),并为不同的向量根据实际需要赋予不同的权重,以此来影响输出结果;
当然,以上Encoder和Decoder是为了引出Attention,Attention本身并不一定要在 Encoder-Decoder 框架下使用的,他是可以脱离 Encoder-Decoder 框架的。
ESPNet是一套基于E2E的开源工具包,可进行语音识别等任务。从另一个角度来说,ESPNet和HTK、Kaldi是一个性质的东西,都是开源的NLP工具;
引用论文作者的话:ESPnet[1]是基于一个基于Attention的编码器-解码器网络,另包含部分CTC组件;
个人理解:在ESPNet出现之前,已经出现了CTC、Transformer等端到端ASR模型,ESPNet以这两种模型为核心,将这两个模型串了起来,利用二者优点,并外加了Kaldi等数据准备、特征提取的工具,最终封装成一个ASR的工具包,命名为ESPNet。
1、ESPNet 架构
ESPNet中使用了ATT+CTC的架构,其可分为两大部分[2]:
1、Shared encoder(共享编码器):
包括了VGG卷积网络和BLSTM(双向长短时记忆网络)层,来完成语音到向量的转化。
2、Joint Decoder(联合解码器):
联合解码器实现向量到最终文本结果的输出;
联合解码器包括CTC(负责标签和序列的自动对齐)、Attention(为不同序列赋予不同权重)和RNN-LM(语言模型,生成最优字词句);
其中CTC和Attention二者共同使用一个Loss来使模型收敛,最终的损失函数LossMTL为CTC损失