主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

深層学習を使用した音声コマンド認識

この例では,オーディオに现处于する音声コマンドを検出深层习モデルにしさをを说はしこのでではセットセットセット方データセットセットセットをコマンドデータセットセットセットてて连连连られられた连连の认识られたた连认识认识认识认识认识认识认识畳み込み畳み込みニューラルネットワークにに习させます

ネットワークにゼロから学習させるには,最初にデータセットをダウンロードしなければなりません。データセットのダウンロードやネットワークの学習を行わない場合は,この例にある学習済みのネットワークを読み込んで,以下の2節“事前学習済みネットワークによるコマンド認識”と“マイクからのストリーミングオーディオを使用したコマンド検出“を実行することができます。

事前学习済みネットワークによるによる认识认识

学士学位するする前,事前学习する済みに认识ネットワーク使使します使使使使しし使ししし识别しししし

事前学习済みのネットワークをますます。

加载('commandnet.mat'

ネットワークは次の音声コマンドを認識するように学習済みです。

  • “はい”

  • “いいえ”

  • "上"

  • "下"

  • “左”

  • “右”

  • “オン”

  • “オフ”

  • "停止"

  • “运动”

人が“停止”と発声している短い音声信号を読み込みます。

[x,fs] = audioread(“stop_command.flac”);

コマンドを聞きます。

声音(x, fs)

事前学习済みのネットワーク,聴覚ベースのスペクトログラムをとして受け取りますます受け取り受け取り受け取りを聴覚スペクトスペクトログラムに変换しますます。

関数解密卫生术を使用して聴覚スペクトログラムを計算します。特徴抽出の詳細については,この例で後ほど説明します。

听觉探测= PerverextractAutiveFeatures(X,FS);

聴覚スペクトログラムに基于てコマンドをををします。

命令=分类(trainedNet auditorySpect)
命令=分类停止

ネットワークは,このセットに属さない語を”不明“と分類するように学習済みです。

次に,識別するコマンドの一覧に含まれていない単語(“再生”)を分類します。

音声信号を読み込んで聞きます。

x = audioread(“play_command.flac”);声音(x, fs)

聴覚スペクトログラムを計算します。

听觉探测= PerverextractAutiveFeatures(X,FS);

信号を分類します。

命令=分类(trainedNet auditorySpect)
命令=分类未知

ネットワークは,バックグラウンドノイズを”バックグラウンド”として分類するように学習済みです。

ランダムなノイズで構成される1秒間の信号を作成します。

x = pinknoise (16 e3);

聴覚スペクトログラムを計算します。

听觉探测= PerverextractAutiveFeatures(X,FS);

バックグラウンドノイズををします。

命令=分类(trainedNet auditorySpect)
命令=分类背景

マイクからのストリーミングオーディオを使用したコマンドの検出

事前学習済みのコマンド検出ネットワークをマイクからのストリーミングオーディオでテストします。是的停止さらに,いずれいずれかのコマンドを発声してみててさらに,马文希拉床上房子などの未知の単語や,0から9までの数のいずれかを発声してみてください。

分類レートを赫兹単位で指定し,マイクからオーディオを読み取ることができるオーディオデバイスリーダーを作成します。

classificationRate = 20;adr = audioDeviceReader (“SampleRate”,fs,“SamplesPerFrame”,地板(FS / Classificationrate));

オーディオオーディオのラベルますししのののとをます。ストリーミングオーディオのラベルと确率のこれらバッファーのバッファー初します。これらのバッファーを初ます。,それによって,コマンドが検出されタイミングとののの致构筑构筑しししししししししししししししし

audioBuffer = dsp.AsyncBuffer (fs);. class标签= trainedNet.Layers(结束);YBuffer (1: classificationRate / 2) =分类(“背景”);probbuffer = zeros([numel(标签),分类符号/ 2]);countthreshold = ceil(分类符号* 0.2);probthreshold = 0.7;

图を作成し,作成した图が存在する限りコマンドを検出します。ループ処理を無限に実行するには,时限にに设定ししライブは検出を停止するに,単単图を闭じます。

h =图(“单位”“归一化”“位置”,[0.2 0.1 0.6 0.8]);期限= 20;抽搐尽管ishandle(h)&& toc %从音频设备中提取音频样本并将样本添加到%缓冲区。x = ADR();写(audiobuffer,x);y =读取(Audiobuffer,FS,FS-ADR.SampleSperFrame);spec = perverextractautionsfeatures(y,fs);%分类当前频谱图,将标签保存到标签缓冲区,%并将预测的概率保存到概率缓冲区。[YPredicted,聚合氯化铝]=分类(trainedNet,规范,“ExecutionEnvironment”'中央处理器');YBuffer = [YBuffer(2:结束),YPredicted);probBuffer = [probBuffer(:, 2:结束)、聚合氯化铝(:));%绘制当前波形和频谱图。子图(2,1,1)绘图(Y)轴Ylim ([-1,1]) subplot(2,1,2) pcolor(spec') caxis([-4 2.6445])底纹现在通过执行一个非常简单的命令来进行实际的命令检测%阈值操作。声明一个检测并显示它%数字标题,如果所有以下持有:1)最常见的标签%不是背景。2)最新框架的至少计数%标签一致。3)预测标签的最大概率为at% probThreshold最少。否则,不要声明检测。[YMODE,COUNT] =模式(YBUFFER);maxprob = max(probbuffer(标签== ymode,:));子图(2,1,1)如果YMode = =“背景”||count ”“)其他的标题(字符串(YMode),“字形大小”,20)结束drawnow结束

音声コマンドデータセットの読み込み

このこのでは,谷歌演讲命令データデータ[1]をををダウンロードて,ダウンロードしたしてし.PATHTODATABASEををの场所に设定しますししし

url ='https://ssd.mathwands.com/万博1manbetxsupportfiles/audio/google_speech.zip';downloadfolder = tempdir;datafolder = fullfile(downloadlefolder,“google_speech”);如果~存在(dataFolder“dir”)disp('下载数据集(1.4 GB)...'解压缩(url, downloadFolder)结束

学习データデータストア作作作者:作者

学习データセットを指すaudioDatastore(音频工具箱)を作成します。

广告= audioDatastore (fullfile (dataFolder,'火车'),......'insertumbfolders',真的,......“FileExtensions”'.wav'......'labelsource''foldernames'
ads = audioDatastore与属性:文件:{'…\AppData\Local\Temp\google_speech\train\bed\00176480_nohash_0.wav';’……\ AppData \当地\ Temp \床google_speech \培训\ \ 004 ae714_nohash_0.wav;’……\ AppData \当地\ Temp \床google_speech \培训\ \ 004 ae714_nohash_1.wav……{'C:\Users\jibrahim\AppData\Local\Temp\google_speech\train'}标签:[bed;床上;床上……alteratefilesystemroots: {} OutputDataType: 'double' SupportedOutputFormats: ["wav万博1manbetx" "flac" "ogg" "mp4" "m4a"] DefaultOutputFormat: "wav"

認識する単語の選択

モデルにコマンドとして認識させる単語を指定します。コマンドではないすべての単語に未知的とラベル付けします。コマンドではない単語に未知的とラベル付けすることで,コマンド以外のすべての単語の分布に近い単語のグループが作成されます。ネットワークは,このグループを使用して,コマンドと他のすべての単語の違いを学習します。

既知の単語と未知の単語の間でクラスの不均衡を減らし,処理を高速化するために,未知の単語の一部のみを学習セットに含めます。

子集(音频工具箱)をと不明ののサブセットのみ含まれるストアをますに属している例。

命令=分类([“是的”“不”“向上”“向下”“剩下”“正确”“上”“离开”“停止”“走”]);IsCommand = ISMember(Ads.Labels,命令);isUnknown = ~ isCommand;includeFraction = 0.2;mask = rand(numel(ads.Labels),1) < includeFraction;isUnknown = isUnknown & mask;Ads.Labels(Isunknown)=分类(“未知”);adstrain =子集(广告,iscommand | isunknown);CountAckeLabel(adstrain)
ans = 11×2表标签计数_______ _____下调1842年1861年离开1839年1839年1839年1864年1864右1885年未知6483 UP 1843是1843

検証データストアの作成

検証データセットを指すaudioDatastore(音频工具箱)を作成します。学習データストアの作成に用いたのと同じ手順に従います。

广告= audioDatastore (fullfile (dataFolder,“验证”),......'insertumbfolders',真的,......“FileExtensions”'.wav'......'labelsource''foldernames') isCommand = ismember(ads.Labels,commands);isUnknown = ~ isCommand;includeFraction = 0.2;mask = rand(numel(ads.Labels),1) < includeFraction;isUnknown = isUnknown & mask;Ads.Labels(Isunknown)=分类(“未知”);adsValidation =子集(广告,isCommand | isUnknown);countEachLabel (adsValidation)
广告=具有属性的AudioDataStore:文件:{'... \ appdata \ local \ temp \ google_speech \验证\ bick \ 026290a7_nohash_0.wav';'... \ appdata \ local \ temp \ google_speech \验证\ boad \ 060cd039_nohash_0.wav';'... \ appdata \ local \ temp \ google_speech \ viguration \ bick \ 060cd039_nohash_1.wav'...和6795更多}文件夹:{'c:\ users \ jibrahim \ appdata \ local \ temp \ google_speech \验证'}标签:[床;床上;床......和6795更多分类]替代文件系统:{} outputDatatype:'double'supportedOutputFormats:[“WAV”“FLAC”“OGG万博1manbetx”“MP4”“M4A”] DefaultOutputFormat:“WAV”ANS = 11×2表标签计数_______ _____ _____下降264转260左247 op 256 op 257 off 256右256秒钟,未知850 up 260是261

データセット全体を使ってネットワークに学習させ,できる限り精度を高くするには,逃守血统に設定します。この例を短時間で実行するには,逃守血统真的に設定します。

depentataset = false;如果reduceDataset numUniqueLabels = nummel (unique(adsTrain.Labels));%将数据集减少20倍adsTrain = splitEachLabel(adsTrain,round(numel(adsTrain. files) / numUniqueLabels / 20));adsValidation = splitEachLabel(adsValidation,round(numel(adsValidation. files) / numUniqueLabels / 20));结束

聴覚スペクトログラムの計算

00

特价抽出のパラメーターを定义します。segmentDurationはは各音声クリップクリップの长(秒)です。框架ははスペクトル计算のの各の长ささhopDurationは各スペクトル间のタイムですです。numbands.は聴覚スペクトログラムのフィルター数です。

audioFeatureExtractor(音频工具箱)オブジェクトを作成して特徴抽出を実行します。

fs = 16 e3;%数据集的已知抽样率。semmentduration = 1;Framedrion = 0.025;Hopduration = 0.010;segmensamples = round(semmentduration * fs);FramesAmples =圆形(框架* FS);HOPSAMPLES =圆形(HOPDURATION * FS);重叠amples = framesamples  -  hoppamples;FFTLength = 512;numbands = 50;AFE = audiofeatureextractor(......“SampleRate”,fs,......'fftlength',fftlength,......“窗口”损害(frameSamples“周期”),......'overlaplencth'overlapSamples,......“barkSpectrum”,真的);setExtractorParams(AFE,“barkSpectrum”“NumBands”numBands,'风向正常化',错误的);

データセットからファイルを読み取ります。畳み込みニューラルネットワークに学習させるには,入力が一定サイズでなければなりません。データセットの一部のファイルは長さが1秒未満です。ゼロパディングをオーディオ信号の前後に適用して長さをSEGMANSEMPLES.ににます。

x =读(adstrain);numsamples = size(x,1);numtopadfront =楼层((SegmentsAmples  -  Numsamples)/ 2);numtopadback = ceil((segmentsamples  -  numsamples)/ 2);xpadded = [zeros(numtopadfront,1,“喜欢”,x); x; zeros(numtopadback,1,“喜欢”,X)];

オーディオの特徴を抽出するには,提炼を呼び出します。出力は行に沿った時間をもつバークスペクトルです。

特征=提取物(AFE,XPadded);[numhops,numfeatures] =大小(特征)
numhops = 98 numfeatures = 50

この例では,聴覚スペクトログラムに対数を適用して後処理します。小さい数字の対数を取ると,丸め誤差の原因になります。

処理を高速化するために,parforを使用して複数のワーカーに特徴抽出を分散できます。

最初に,データセットの区画数をします。平行计算工具箱™ががない合,単一の区画を使。

如果~ isempty(版本(“平行”))&&〜oderataset pool = gcp;numpar = numpartitions(adstrain,pool);其他的numPar = 1;结束

各各について,データストアから読み取り,信号をゼロパディングしから,特点を抽出ます。

parforii = 1:numPar subds = partition(adsTrain,numPar,ii);XTrain = 0 (numHops numBands 1,元素个数(subds.Files));idx = 1:numel(subds. files) x = read(subds);xPadded =[0(地板(segmentSamples-size (x, 1)) / 2), 1); x; 0(装天花板((segmentSamples-size (x, 1)) / 2), 1)];XTrain(:,::,idx)=提取物(afe,xpadded);结束XTrainc {II} = XTrain;结束

出力を変換し4番目の次元に聴覚スペクトログラムをもつ4次元配列にします。

XTrain = Cat(4,Xtrainc {:});[numhops,numband,numchannels,numspec] =大小(xtrain)
numhops = 98 numbands = 50 numchannels = 1 numspec = 25021

ウィンドウのべき乗で特徴をスケーリングしてから対数を取ります。滑らかな分布のデータを得るために,小さいオフセットを使用してスペクトログラムの対数を取ります。

epsil = 1e-6;XTrain = log10(Xtrain + Epsil);

検证セットに対して,上记で说明した特徴抽出のを実しますますします。

如果~ isempty(版本(“平行”))pool = gcp;numpar = numpartitions(adsvalidation,pool);其他的numPar = 1;结束parforii = 1:numPar subds = partition(adsValidation,numPar,ii);XValidation = 0 (numHops numBands 1,元素个数(subds.Files));idx = 1:numel(subds. files) x = read(subds);xPadded =[0(地板(segmentSamples-size (x, 1)) / 2), 1); x; 0(装天花板((segmentSamples-size (x, 1)) / 2), 1)];XValidation (:,:,:, idx) =提取(afe xPadded);结束XValidationC {2} = XValidation;结束xvalidation = cat(4,xvalidationc {:});xvalidation = log10(xvalidation + epsil);

学校ラベルラベル検证ラベルをしししますし。

YTrain = removecats (adsTrain.Labels);YValidation = removecats (adsValidation.Labels);

データの可視化

いくつかの学習サンプルについて波形と聴覚スペクトログラムをプロットします。対応するオーディオクリップを再生します。

specMin = min (XTrain [],'全部');specmax = max(xtrain,[],'全部');idx = randperm(元素个数(adsTrain.Files), 3);图(“单位”“归一化”“位置”,[0.2 0.2 0.6 0.6]);i = 1:3 [x,fs] = audioread(adstrain.files {idx(i)});子图(2,3,i)绘图(x)轴标题(string (adsTrain.Labels (idx (i))))次要情节(2 3 i + 3) spect = (XTrain (:,: 1, idx(我)');cxis ([specMin specMax])阴影声音(x, fs)暂停(2)结束

バックグラウンドノイズデータの追加

このネットワークは,発声されたさまざまな単语を认识できるだけでなく,入力に无音部分またはバックグラウンドノイズが含まれているかどうかを検出できなければなりません。

_background_フォルダーのオーディオファイルを使用して,バックグラウンドノイズの1秒間のクリップのサンプルを作成します。各バックグラウンドノイズファイルから同じ数のバックグラウンドクリップを作成します。また,バックグラウンドノイズの録音を独自に作成して,_background_フォルダーに追加するもことできます。スペクトログラムを计算前に,この关键は,対数一流分布からサンプリングさたた数を使してて,volumerange.で与えられた範囲に各オーディオクリップを再スケーリングします。

adsBkg = audioDatastore (fullfile (dataFolder“背景”))numbkgclips = 4000;如果SDENTATASET NUMBKGCLIPS = NUM​​BKGCLIPS / 20;结束volumeRange = log10([1的军医,1]);numBkgFiles =元素个数(adsBkg.Files);numClipsPerFile = histcounts (1: numBkgClips, linspace (1 numBkgClips numBkgFiles + 1);Xbkg = 0(大小(XTrain, 1),大小(XTrain, 2), 1, numBkgClips,“单一”);bkgAll = readall (adsBkg);印第安纳州= 1;count = 1:numbkgfiles bkg = bkgall {count};idxstart = randi(numel(bkg)-fs,numclipsperfile(count),1);idxend = idxstart + fs-1;增益= 10. ^((volumerange(2)-volumerange(1))* rand(numclipsperfile(count),1)+ volumerange(1));j = 1:numClipsPerFile(count) x = bkg(idxStart(j):idxEnd(j)))*gain(j); / /统计x = max (min (x, 1), 1);Xbkg(:,:,:,印第安纳州)=提取(afe x);如果国防部(印第安纳州,1000)= = 0 disp (“加工”(印第安纳州)+ +字符串“背景剪辑退出”+字符串(numBkgClips))结束IND = IND + 1;结束结束Xbkg = log10(Xbkg + epsil);
adsbkg = audiodataStore具有属性:文件:{'... \ appdata \ local \ temp \ google_speech \ background \ dope_the_dishes.wav';'... \ appdata \ local \ temp \ google_speech \ background \ dude_miaowing.wav';'... \ appdata \ local \ temp \ google_speech \ background \ strotting_bike.wav'...和3更多}文件夹:{'c:\ users \ jibrahim \ appdata \ local \ temp \ google_speech \ background'} learstefilesystemroots:{} OutputDataType:'Double'标签:{} Support万博1manbetxedOutputFormats:[“WAV”“FLAC”“ogg”“MP4”“M4a”] DefaultOutputFormat:“WAV”处理1000个背景剪辑中的4000个加工2000个背景剪辑中的4000个已加工40003000个背景剪辑中的4000个4000个背景夹子为4000

バックグラウンドノイズのスペクトログラムを学習セット,検証セット,およびテストセットに分割します。_背景噪音_フォルダーには約5分半のバックグラウンドノイズのみが含まれているため,異なるデータセットのバックグラウンドサンプルには高い相関があります。バックグラウンドノイズのバリエーションを増やすために,独自のバックグラウンドファイルを作成して,このフォルダーに追加できます。ノイズに対するネットワークのロバスト性を向上させるために,バックグラウンドノイズを音声ファイルにミキシングしてみることもできます。

numTrainBkg =地板(0.85 * numBkgClips);numValidationBkg =地板(0.15 * numBkgClips);XTrain(:,:,: + 1:终端+ numTrainBkg) = Xbkg (:,:,:, 1: numTrainBkg);YTrain(+ 1:结束+ numTrainBkg) =“背景”;XValidation(:,:,: + 1:终端+ numValidationBkg) = Xbkg (:,:,:, numTrainBkg + 1:结束);YValidation(+ 1:结束+ numValidationBkg) =“背景”

学習セットと検証セット内のさまざまなクラスラベルの分布をプロットします。

图(“单位”“归一化”“位置”,[0.2 0.2 0.5 0.5])子图(2,1,1)直方图(YTrain)标题(“培训标签分配”)子图(2,1,2)直方图(YValidation)标题(“验证标签分配”

ニューラルネットワークアーキテクチャの定义

シンプルなネットワークアーキテクチャ层の配列として作用成します畳み込みとバッチ正规层使层します。最大プーリング层使っ使ってマップをを层を使って徴マップをを层(((マップをををを(((をををををををををををををををを(((ををををを((ます。入力の特点マップマップ时间の経过と共にグローバルにプーリング最后最大大プーリングを追最后ますますますますますます。これによって(な的な)时间并进不変が入力スペクトログラムにれるため,ネットワークは,音声は正确なによって,最后の习にしますの习习の减少のネットワーク习データ减少しのの习幅减少しのネットワーク习の减少ますのが习の减少。を减らすために,最后の全全合并层のの入にに

このネットワークは,フィルターがほとんどない5つの畳み込み层しかないため小规模です。numf.によって畳み込み層のフィルターの数を制御します。ネットワークの精度を高めるために,畳み込み層,バッチ正規化層,およびReLU層の同等なブロックを追加して,ネットワーク深さを大きくすることを試してください。numf.を増やして,畳み込みフィルターの数を増やしてみることもできます。

重み付き交差エントロピー分类损失损失を使使し。权重ClassificationLayer(类别级)は,classWeightsによって重み付けされた観測値を使用して交差エントロピー損失を計算するカスタム分類層を作成します。类别(YTrain)にに现れるクラスと同じ顺序でクラスの重みを指定しししの损失のののの计するするためにためためためために例のクラスの习习例に反比例するクラスののを反比例するクラスの重みを比例比例するネットワークネットワークネットワークますますますADAMオプティオプティマイザーマイザーをする合书,学习,学校アルゴリズムアルゴリズムはクラスの重みのの规规ませませませませませませませませ

Classweights = 1./countcats(itrain);classweights = classweights'/均值(类别级);numclasses = numel(类别(YTrain));timepoolsize = ceil(numhops / 8);dropoutprob = 0.2;numf = 12;图层= [imageInputLayer([numhops numbands])卷积2dlayer(3,numf,“填充”'相同的'maxPooling2dLayer(3,“步”,2,“填充”'相同的') convolution2dLayer (3 2 * numF“填充”'相同的'maxPooling2dLayer(3,“步”,2,“填充”'相同的')卷积2dlayer(3,4 * numf,“填充”'相同的'maxPooling2dLayer(3,“步”,2,“填充”'相同的')卷积2dlayer(3,4 * numf,“填充”'相同的') batchNormalizationLayer reluLayer卷积2dlayer (3,4*numF,“填充”'相同的')BatchnormalizationLayer Ruilulayer MaxPooling2dlayer([timepoolsize,1])oploutlayer(dropoutprob)全连接列(numclasses)softmaxlayer权重classificationlayer(classweights)];

ネットワークの学習

ミニバッチサイズを128としてadamオプティマイザーをしますます。学校は25エポック行,20エポック后に学习を10分の1に下载ます。

miniBatchSize = 128;validationFrequency =地板(元素个数(YTrain) / miniBatchSize);选择= trainingOptions ('亚当'......“InitialLearnRate”3的军医,......'maxepochs',25,......'minibatchsize'miniBatchSize,......“洗牌”'每个时代'......“阴谋”'培训 - 进步'......“详细”,错误的,......'vightationdata'{XValidation, YValidation},......'验证职业'validationFrequency,......“LearnRateSchedule”'分段'......“LearnRateDropFactor”, 0.1,......'学习ropperiod', 20);

ネットワークに学习をさますます.gpuががない合,ネットワークの学习时间がが合并がます。

TrousaInnet = Trainnetwork(XTrain,Ytrain,图层,选项);

学習済みネットワークの評価

学習セット(データ拡張なし)と検証セットに対するネットワークの最終精度を計算します。このデータセットではネットワークは非常に正確になります。ただし,学習データ,検証データ,およびテストデータの分布はどれも似ていて,必ずしも実際の環境を反映していません。この制限は特に未知的このカテゴリにまります。このこのに,少数の単语の発话しかれていませ。

如果reduceDataset负载('commandnet.mat''trousahynet');结束YValPred =分类(trainedNet XValidation);validationError = mean(YValPred ~= YValidation);YTrainPred =分类(trainedNet XTrain);= mean(YTrainPred ~= YTrain);disp (“训练误差:+ trainError * 100 +“%”)disp("验证错误:"+ validationError * 100 +“%”
训练错误:1.907%验证错误:5.5376%

列と行のをますて,各クラス表示します。当行列のを并べ替えますは认识のを并べ替えの,未知认识のが现れるは,未知の空间,コマンド向上离开下来,およびの间にあります。

图(“单位”“归一化”“位置”,[0.2 0.2 0.5 0.5]);厘米= confusionchart (YValidation YValPred);厘米。Title =“验证数据的混淆矩阵”;厘米。ColumnSummary =“column-normalized”;厘米。RowSummary =“row-normalized”;sortClasses(厘米,[命令,“未知”“背景”])

モバイル用途など,ハードウェアリソースに制約がある用途で使用する場合は,利用可能なメモリおよび計算リソースの制限を考慮します。CPUを使用する場合は,ネットワークの合計サイズをKB単位で計算し,その予測速度をテストします。予測時間は1つの入力イメージの分類にかかる時間です。複数のイメージをネットワークに入力する場合,これらを同時に分類して,イメージあたりの予測時間を短くすることができます。ストリーミングオーディオを分類する場合,1つのイメージの予測時間が最も重要です。

信息= whos('trousahynet');disp (“网络尺寸:”+ INFO.BYTES / 1024 +“kb”i = 1:100 x = randn([numHops,numBands]);tic [YPredicted,probs] = classification(训练网,x,“ExecutionEnvironment”'中央处理器');时间(i) = toc;结束disp (“CPU上的单图像预测时间:”+的意思是(时间(11:结束))* 1000 +“女士”
网络尺寸:286.7402 kB单图像预测时CPU:2.5119毫秒

参考文献

[1] Warden P.“语音命令:用于单词语音识别的公共数据集”,2017.可从中获取https://storage.googleapis.com/download.tensorflow.org/data/speech_commands_v0.01.tar.gz.版权2017年谷歌。语音命令集は,次で公開されている创作共用署名4.0许可证に従ってライセンスされています。https://creativecommons.org/licenses/by/4.0/legalcode

参照

[1] Warden P.“语音命令:用于单词语音识别的公共数据集”,2017.可从中获取http://download.tensorflow.org/data/speech_commands_v0.01.tar.gz..版权所有Google 2017.语音命令DataSet在Creative Commons归因4.0许可下许可,可在此处提供:https://creativecommons.org/licenses/by/4.0/legalcode

参考

||

关键词トピック