1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJWcm5lp
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
人工智能的应用中,语音识别在今年来取得显著进步,不管是英文、中文或者其他语种,机器的语音识别准确率在不断上升。其中,语音听写技术的发展最为迅速,目前已广泛在语音输入、语音搜索、语音助手等产品中得到应用并日臻成熟。但是,语音应用的另一层面,即语音转写,目前仍存在一定的难点,由于在产生录音文件的过程中使用者并没有预计到该录音会被用于语音识别,因而与语音听写相比,语音转写将面临说话风格、口音、录音质量等诸多挑战。
语音转写的典型场景包括,记者采访、电视节目、课堂及交谈式会议等等,甚至包括任何人在日常的工作生活中产生的任何录音文件。 语音转写的市场及想象空间是巨大的,想象一下,如果人类可以征服语音转写,电视节目可以自动生动字幕、正式会议可以自动形成记要、记者采访的录音可以自动成稿……人的一生中说的话要比我们写过的字多的多,如果有一个软件能记录我们所说过的所有的话并进行高效的管理,这个世界将会多么的让人难以置信。
卷积神经网络整体架构: 卷积神经网络是一种多层的监督学习神经网络,隐含层的卷积层和池采样层是实现卷积神经网络特征提取功能的核心模块。该网络模型通过采用梯度下降法最小化损失函数对网络中的权重参数逐层反向调节,通过频繁的迭代训练提高网络的精度。卷积神经网络的低隐层是由卷积层和最大池采样层交替组成,高层是全连接层对应传统多层感知器的隐含层和逻辑回归分类器。第一个全连接层的输入是由卷积层和子采样层进行特征提取得到的特征图像。最后一层输出层是一个分类器,可以采用逻辑回归,Softmax回归甚至是支持向量机对输入图像进行分类。
4.部分源码
...............................................................................
commands = categorical(["a","e","u","o","ye"]);
[adsTrain,adsValidation] = splitEachLabel(ads,0.75);
mysplit;
parameters;
randsels;
%Convolutional neural network
classWeights = 1./countcats(YTrain);
classWeights = classWeights'/mean(classWeights);
numClasses = numel(categories(YTrain));
timePoolSize = ceil(numHops/8);
dropoutProb = 0.2;
numF = 12;
layers = [
imageInputLayer([numHops numBands])
convolution2dLayer(3,numF,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(3,'Stride',2,'Padding','same')
convolution2dLayer(3,2*numF,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(3,'Stride',2,'Padding','same')
convolution2dLayer(3,4*numF,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(3,'Stride',2,'Padding','same')
convolution2dLayer(3,4*numF,'Padding','same')
batchNormalizationLayer
reluLayer
convolution2dLayer(3,4*numF,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer([timePoolSize,1])
dropoutLayer(dropoutProb)
fullyConnectedLayer(numClasses)
softmaxLayer
weightedClassificationLayer(classWeights)
];
miniBatchSize = 64;
validationFrequency = floor(numel(YTrain)/miniBatchSize);
options = trainingOptions('adam', ...
'InitialLearnRate',2e-4, ...
'MaxEpochs',50, ...
'MiniBatchSize',miniBatchSize, ...
'Shuffle','every-epoch', ...
'Plots','training-progress', ...
'Verbose',false, ...
'ValidationData',{XValidation,YValidation}, ...
'ValidationFrequency',validationFrequency, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropFactor',0.1, ...
'LearnRateDropPeriod',20);
trainedNet = trainNetwork(XTrain,YTrain,layers,options);
save R.mat
A440