'''
对训练集全部进行训练,需要的内存较大,推荐在64G内存以上的机器上运行
'''
import wave
import numpy as np
import os
import keras
from keras.models import Sequential
from keras.layers import Dense
num_class = 0 # 加载的语音文件有几种类别
labsIndName=[] ## 训练集标签的名字 ["seven","stop"]
# 加载数据集 和 标签[并返回标签集的处理结果]
def create_datasets():
wavs=[] # 训练wav文件集
labels=[] # labels 和 testlabels 这里面存的值都是对应标签的下标,下标对应的名字在labsInd中
testwavs=[] # 测试wav文件集
testlabels=[] # 测试集标签
path="D:\\AI\\speech_commands\\"
dirs = os.listdir(path) # 获取的是目录列表
for i in dirs:
print("开始加载:",i)
labsIndName.append(i) # 当前分类进入到标签的名字集
wavs_path=path+"\\"+i
testNum=0 # 当前分类进入了测试集的有几个 ,这里暂定每个分类进100个到测试集
files = os.listdir(wavs_path) # 某个目录下文件的列表
for j in files:
try:
waveData = get_wav_mfcc(wavs_path+"\\"+j)
if testNum < 100 :
testwavs.append(waveData)
testlabels.append(labsIndName.index(i))
testNum+=1
else:
wavs.append(waveData)
labels.append(labsIndName.index(i))
except:
pass
num_class = len(labsIndName)
wavs=np.array(wavs)
labels=np.array(labels)
testwavs=np.array(testwavs)
testlabels=np.array(testlabels)
return (wavs,labels),(testwavs,testlabels)
def get_wav_mfcc(wav_path):
f = wave.open(wav_path,'rb')
params = f.getparams()
# print("params:",params)
nchannels, sampwidth, framerate, nframes = params[:4]
strData = f.readframes(nframes)#读取音频,字符串格式
waveData = np.fromstring(strData,dtype=np.int16)#将字符串转化为int
waveData = waveData*1.0/(max(abs(waveData)))#wave幅值归一化
waveData = np.reshape(waveData,[nframes,nchannels]).T
f.close()
### 对音频数据进行长度大小的切割,保证每一个的长度都是一样的【因为训练文件全部是1秒钟长度,16000帧的,所以这里需要把每个语音文件的长度处理成一样的】
data = list(np.array(waveData[0]))
# print(len(data))
while len(data)>16000:
del data[len(waveData[0])-1]
del data[0]
# print(len(data))
while len(data)<16000:
data.append(0)
# print(len(data))
data=np.array(data)
# 平方之后,开平方,取正数,值的范围在 0-1 之间
data = data ** 2
data = data ** 0.5
return data
if __name__ == '__main__':
(wavs,labels),(testwavs,testlabels) = create_datasets()
print(wavs.shape," ",labels.shape)
print(testwavs.shape," ",testlabels.shape)
# 标签转换为独热码
labels = keras.utils.to_categorical(labels, num_class)
testlabels = keras.utils.to_categorical(testlabels, num_class)
print(labels[0]) ## 类似 [1. 0]
print(testlabels[0]) ## 类似 [0. 0]
print(wavs.shape," ",labels.shape)
print(testwavs.shape," ",testlabels.shape)
# 构建模型
model = Sequential()
model.add(Dense(1024, activation='relu',input_shape=(16000,)))
model.add(Dense(512, activation='relu'))
model.add(Dense(256, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(num_class, activation='softmax'))
# [编译模型] 配置模型,损失函数采用交叉熵,优化采用Adadelta,将识别准确率作为模型评估
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adadelta(), metrics=['accuracy'])
# validation_data为验证集
model.fit(wavs, labels, batch_size=124, epochs=10, verbose=1, validation_data=(testwavs, testlabels))
# 开始评估模型效果 # verbose=0为不输出日志信息
score = model.evaluate(testwavs, testlabels, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1]) # 准确度
model.save('asr_all_model_weights.h5') # 保存训练模型
相关推荐
【自然语言处理01】——语音识别(LAS模型的原理详解)
随着ChatGPT的兴起,自然语言处理NLP(Natural Language Processing)也是相当的火,所以在这里详细讲解NLP的相关理论基础以及他的应用。
语音识别——语言模型
本博客主要是摘写洪青阳教授的《语言识别-原理与应用》的笔记,不足之处还请谅解。 语音识别为:根据输入的观察值序列O,找到最可能的词序列W^\hat{W}W^。按照贝叶斯准则,识别任务可做如下转化: W^=argmaxW P(W∣O)=arg maxP(W)P(O∣W)P(O) \hat{W}= {\underset {W}{\operatorname {arg max} }}\,P(W|O)=\arg\,\max\frac{P(W)P(O|W)}{P(O)} W^=WargmaxP(W∣O)=arg
ASRT语音识别系统的部署以及模型训练(模型训练篇)
ASRT是一个中文语音识别系统,由博主开源在GitHub上。并完成部署和训练过程中的操作步骤。文章作者比较惜字如金,文中很多细节之处没有细讲,我在windows上进行部署的时候踩了比较多的坑,特此记录下。
语音识别—声学模型训练(Viterbi-EM)
Viterbi-EM语音识别训练方法 前文刚研究过语音识别特征提取以及基于Viterbi的状态解码方法,现着手研究基于GMM-HMM的语音语音识别声学模型训练方法,其理论部分可参考本人前期所写的GMM-HMM理论推导拖成,但上述推导过程是采用前后向算法更新模型参数,本人则主要采用Viterbi-EM训练方法对GMM中参数进行更新训练。 实际上该训练方法主要是针...
AI人工智能领域语音识别的预训练模型微调策略
本文旨在为AI工程师和研究人员提供一套完整的语音识别预训练模型微调方法论。内容涵盖从基础理论到实践应用的全流程,特别关注中文语音识别场景下的特殊考量。文章首先介绍核心概念,然后深入微调策略的技术细节,接着通过实际案例展示应用方法,最后讨论未来发展方向。语音识别(ASR): 将人类语音转换为文本的技术预训练模型: 在大规模通用数据上预先训练好的模型微调(Fine-tuning): 在预训练模型基础上进行针对性调整以适应特定任务核心概念回顾预训练模型是语音识别的强大基础。
语音识别的预训练模型
Whisper 是一个强大的用于语音识别和翻译的预训练模型。与 Wav2Vec2 相比,它具有更高的转写准确性,输出包含标点和大小写。它可用于转写英语和其他 96 种语言的语音,既能处理短音频片段又能通过分块处理的较长片段。这些属性使其可以直接用于许多语音识别和翻译任务,无需微调。pipeline() 方法提供了一种使用一行 API 调用轻松运行推理的方法,还能对生成的预测进行控制。尽管 Whisper 模型在许多高资源语言上表现极佳,但。
训练实时语音识别Paraformer模型
最近有一位研二的学生添加我的微信,付费让我给她训练模型。市面上的语音识别模型基本上都是通用识别模型,对于特定领域的识别字错率太高了。比如专门针对航空领域的语音识别就不尽如意,因为在航空领域中有一些航空的专有名词,训练模型的时候未必训练到,并且航空领域中的读数字的读音也和我们日常中的不一样,所以我们想要让模型识别的字错率更低,那么就很有必要对市面上开源的模型进行训练。这里由那位研究生提供了条音频数据,音频采样率是。数据分为训练集和验证集,这里使用的数据作为验证集,也就是使用条数据作为验证集。数据的格式要求如下
预训练模型在语音识别中的前沿应用
语音识别技术旨在将人类的语音信号转换为文本信息,这在众多领域如智能客服、智能家居、车载导航等有着广泛的应用。然而,传统的语音识别方法面临着数据稀疏、泛化能力不足等问题。预训练模型的出现为语音识别带来了新的突破。本文的目的是深入探讨预训练模型在语音识别中的前沿应用,范围涵盖了预训练模型的原理、算法、在实际项目中的应用以及未来的发展趋势等方面。本文首先介绍相关背景知识,包括术语定义和概念解释。接着阐述预训练模型和语音识别的核心概念及联系,通过流程图和文本示意图展示。
一种语音识别模型的训练方法及装置与流程
本发明涉及语音识别研究领域,尤其涉及一种语音识别模型的训练方法及装置。背景技术:随着计算机技术和人工智能技术的发展,让计算能听、能说,是未来人机交互的重要发展方向,其中语音成为最被看好的人机交互方式,而且利用语音技术进行人机交互比其他的交互方式有更多的优点;目前的语音识别技术中,语音的输入以标准普通话输入为准,目前的语音识技术对于普通话输入的语音识别的准确率很好,但是对于带有一些个人口音以及方言的...
AI语音识别模型训练:从数据准备到部署全流程
本文旨在为读者提供从零开始构建一个AI语音识别系统的完整指南。我们将覆盖从数据准备到模型部署的全流程,重点介绍现代深度学习技术在语音识别领域的应用。核心概念与联系:介绍语音识别的基本原理和关键技术数据准备:详细讲解语音数据的收集、清洗和特征提取模型训练:深入分析主流语音识别模型架构和训练技巧模型部署:探讨不同场景下的部署策略和优化方法实际应用与未来趋势:分享行业应用案例和技术发展方向语音识别(ASR): 将人类语音转换为文本的技术声学模型: 将语音信号映射为音素或字符的模型语言模型。
预训练模型在语音识别与生成中的评估方法
1. 背景介绍 1.1 语音识别与生成的重要性 随着人工智能技术的飞速发展,语音识别与生成技术在各个领域都取得了显著的进展。从智能语音助手、自动语音翻译到自动新闻播报等,语音识别与生成技术已经成为人工智能领域的重要研究方向。 1.2 预训练模型
PocketSphinx语音识别系统声学模型的训练与使用
PocketSphinx语音识别系统声学模型的训练与使用 zouxy09@qq.com 声学模型主要用于计算语音特征和每个发音模板之间的似然度。目的是为每个声学单元建立一套模型参数(通过不断地学习和改进得到最优的,也就是概率最大的一组HMM模型参数)。 需要训练的情况: 1)需要创建一个新的语音或者方言的模型; 2)为你的小词汇的应用创建一个特定的模型; 3)你有足
【scratch音乐课】天空之城:音符与节拍、消息与链表
scratch是一个非常小巧的青少年编程工具,自带程序编写语句,积木式语句非常直观、易用,可创作数学、科学、音乐、绘画等方面作品。本文用scratch“演奏”一首大家非常熟悉的《天空之城》,并向大家介绍一些基本乐理知识,以及scratch中消息、链表的使用。
Kaldi中文语音识别:各种开源的已经训练好的语音识别模型
一些开源的已经训练好的语音识别模型 最近导师给安排了一个临时的任务,所以在做中文语音识别。一开始想自己先查文献找文章构建网络,后来觉得任务量有点大,遂决定找现成网络再找开源数据集自己训练,然后搞着搞着突然觉得为什么不找一个训练好的模型直接用,然后自己如果有需要再调不会更方便吗,遂开始搞现在的利用已经训练好的开源中文语音识别模型来做语音识别的项目。 记录一个网站,里面存了一些开源的已经训练好的语音识别模型。本人是用的其中的CVTE v2模型。 下载链接:http://kaldi-asr.org/model
保姆级教程:在S32K312上配置C40驱动,实现Flash读写(基于RTD 4.4.2)
本文详细介绍了在S32K312微控制器上配置C40驱动实现Flash读写的全流程,基于RTD 4.4.2库。内容涵盖环境搭建、外设配置、Flash操作实战代码及高级应用场景,特别针对LLD驱动和FLS存储操作中的常见问题提供了解决方案,帮助开发者快速掌握嵌入式Flash存储技术。
【华为OD机试真题】45、 分糖果 | 机试真题+思路参考+代码解析(C++、Java、Py、JS)
### 🎃题目描述 >小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 > 当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 > 小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗。
语音识别之HTK入门(四)训练模型
语音识别之HTK入门(四)训练模型hmm0训练hmm0到hmm3hmm4的特殊训练 hmm0训练 生成proto和vFloors; HCompV -C ./config/config_color -f 0.01 -m -S ./config/train.scp -M ./hmm0 ./config/proto 生成macros: perl scripts/makeMacros hmm0/vFloo...
Android Studio无法启动,Failed to create JVM:error code -1. JVM Path 完美解决方案
Android Studio无法启动,Failed to create JVM:error code -1. JVM Path 完美解决方案。 找到Android studio的启动文件bin目录,把studio64.exe.vmoptions 删除或改名(推荐改名,方便恢复),如果你是32位系统这个文件就是 studio.exe.vmoptions
人工智能语音识别训练好的模型资源下载
人工智能语音识别训练好的模型资源下载 【下载地址】人工智能语音识别训练好的模型资源下载 本项目提供经过充分训练的人工智能语音识别模型,适用于多种应用场景,显著提升开发效率。压缩包内含训练好的模型、详细文档及示例代码,帮助用户快速上手。只需下载解压,参照文档说明,即可轻松将模型集成到您的项目中,实现高效语音识别功能。确保项...
【WRF-Chem】预处理工具(Preprocessors)总结
预处理工具(Preprocessors)总结
智能Agent如何重塑企业流程
在当今数字化时代,企业流程的效率和敏捷性至关重要。传统企业流程往往受限于人工操作,效率低下、成本高昂,难以适应快速变化的市场环境。智能Agent作为一种新兴技术,凭借其强大的智能化能力,正在逐渐改变企业流程的运作模式,为企业带来新的机遇和挑战。智能Agent是一种能够感知环境、自主决策、执行任务的软件实体。它可以模拟人类的智能行为,例如学习、推理、规划和沟通。通过将智能Agent嵌入到企业流程中,可以实现流程的自动化、优化和智能化,从而提高效率、降低成本、提升客户体验。8.1 研究成果总结。
DeepSpeedExamples语音识别:CTC与Attention模型训练
你是否还在为语音识别模型训练时的计算资源不足、训练速度缓慢而烦恼?是否在CTC(Connectionist Temporal Classification)与Attention模型之间难以抉择?本文将详细介绍如何利用DeepSpeedExamples项目,高效实现基于CTC和Attention机制的语音识别模型训练,帮助你解决这些痛点。读完本文,你将能够: - 理解CTC与Attention模型...
X电容与Y电容,看这一篇就够了
本文详细介绍了X电容与Y电容的定义、作用、位置、分类,以及它们在实际应用中的容值选取和计算方法。通过汽车电子应用和X电容放电电路的实例,帮助读者深入理解这两种安规电容的重要性。文章还探讨了电容放电电阻的计算,确保符合安全规范。
语音自训练平台技术详解,快速训练专属语音识别模型
语音自训练平台4月份公测以来,有1000多名用户创建了1600+模型,涉及医疗、金融、农业、教育、餐饮、物流、建筑、地产等多个行业,模型上线后应用到业务数据采集录入、音频关键词质检、智能语音助手、呼叫中心等多个语音识别场景上。模型在业务场景的识别率平均训练提升5-25%,真正有效解决了“垂直场景中语音识别的文字不准”“业务侧对文字后处理难度很高”“公司缺少模型训练的算法能力”等问题。平台上线以来,...
数据分片的三种方式:哈希、一致性哈希、按照数据范围分片
数据分片就是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的。三种常用的数据分片方式:1. 哈希分片2. 一致性哈希分片(Consistent Hash)3. 按照数据范围分片(Range Based)数据分片的应用场景:1. 数据库扩展2. 分布式缓存对集群部署多个缓存节点,提高缓存的处理能力。
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
PocketSphinx语音识别系统语言模型的训练和声学模型的改进
PocketSphinx语音识别系统语言模型的训练和声学模型的改进 zouxy09@qq.com 关于语音识别的基础知识和sphinx的知识,具体可以参考我的另外两篇博文: 语音识别的基础知识与CMUsphinx介绍: http://blog.csdn.net/zouxy09/article/details/7941585 PocketSphinx语音识别系统的编译、安装和
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
3897



被折叠的 条评论
为什么被折叠?



