<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3564385</guid>
        <pubDate>Sat, 17 Jan 2015 22:41:29 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3564385</link>
        <description><![CDATA[nsh: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Я правильно понял, что мне надо просто преобразовать последовательности в логарифмическую шкалу(Мел-шкалу?), а затем делать DTW между ними?<br>
</div></div><br>
<br>
Мел шкала частот и логарифмическая шкала амплитуд это разные вещи. Важно не только использовать логарифмическую шкалу, но ещё и усреднять сигнал, чтобы получить инвариантность к изменению амплитуды сигнала. Если сигнал усилен в два раза, то после взятия логарифма и усреднения сигнал не будет отличаться от простого, не усиленного сигнала. В вашем же варианте будет существенная разница в расстоянии DTW.<br>
<br>
Подробнее об извлечении признаков лучше прочесть в книге.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3564314</guid>
        <pubDate>Sat, 17 Jan 2015 19:56:16 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3564314</link>
        <description><![CDATA[uk8amk: Я правильно понял, что мне надо просто преобразовать последовательности в логарифмическую шкалу(Мел-шкалу?), а затем делать DTW между ними?]]></description>
        <author>uk8amk</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3564244</guid>
        <pubDate>Sat, 17 Jan 2015 13:21:00 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3564244</link>
        <description><![CDATA[nsh: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Имеет ли право на жизнь такой подход?</div></div><br>
<br>
Да, но лучше ещё логарифмическую шкалу ввести и среднее вычесть. Это сделает систему инвариантной к громкости сигнала.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Я сейчас подумываю перейти от абсолютной к относительной оценке: делить ошибку на число точек в наиболее длинной последовательности. Таким образом можно в более вменяемых величинах задавать порог срабатывания команды.</div></div><br>
<br>
Деление на длину большого смысла не имеет. Порог может быть различным даже для слов одинаковой длины. Проще всего порог настраивать для каждого слова в отдельности на тестовых примерах - запустить большой объем записи и выбрать минимальный порог для допустимого числа ложных срабатываний.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3563000</guid>
        <pubDate>Wed, 14 Jan 2015 15:24:54 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3563000</link>
        <description><![CDATA[uk8amk: У меня возникло пару вопросов.<br>
1) Звук пропускаю через БПФ, выделяю 3 полосы(можно больше) в линейном масштабе, пропускаю каждую через скользящее среднее, чтобы отсеить резкие изменения и прочую нестабильность. Затем делаю DTW получившихся последовательностей с эталоном.<br>
Как на картинке: <a class='tag-url' href='http://s16.postimg.org/b877y36ut/sounds_dtw.png' target='_blank'>http://s16.postimg.org/b877y36ut/sounds_dtw.png</a><br>
Имеет ли право на жизнь такой подход?<br>
2) Когда я запускаю DTW мне кажется, что результат ошибки сильно зависит от длины сравниваемых последовательностей. Например, 2 длинные похожие последовательности будут иметь абсолютную ошибку намного больше, чем 2 короткие непохожие.<br>
Я сейчас подумываю перейти от абсолютной к относительной оценке: делить ошибку на число точек в наиболее длинной последовательности. Таким образом можно в более вменяемых величинах задавать порог срабатывания команды.<br>
Что посоветуете или скажете?<br>
<br>
О применении:<br>
Хочу распознавать 2-3 слова(умный выключатель для своего дома). Вполне допустимо чтобы система была дикторозависимой. Приемлемое качество 70-80%.<br>
Пока моделирую на ПК, в случае успеха алгоритм переедет во встроенную систему(до 16КБ ОЗУ, до 40 MIPS, процессор правда 32бит).]]></description>
        <author>uk8amk</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3474011</guid>
        <pubDate>Mon, 05 May 2014 12:04:11 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3474011</link>
        <description><![CDATA[MrKor: David1993, я тем же вопросом интересовался, прочитай тему - <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=389748' target='_blank'>Некоторые ньюансы, связанные с FFT</a>]]></description>
        <author>MrKor</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3473808</guid>
        <pubDate>Sun, 04 May 2014 22:36:45 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3473808</link>
        <description><![CDATA[David1993: <strong class='tag-b'>nsh</strong> У меня еще один вопрос. Кажется все понял, но не могу понять для чего нужен FFt size, с чем он связан и почему для 16KHz нужно взяать его размер 512.]]></description>
        <author>David1993</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3440618</guid>
        <pubDate>Thu, 03 Apr 2014 10:34:36 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3440618</link>
        <description><![CDATA[nsh: Это достаточно простые вещи, я не думаю, что стоит искать книгу. Достаточно просто посмотреть на файлы. Например запись может содержать несколько потоков звука одновременно, это и есть каналы. Правый канал - это то, что слышит правое ухо, левый канал - левое. Значения сигналов для каждого из каналов сохраняется в файле по очереди. Сначала значение первого канала, затем второго. Размерность значения и есть битность.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3437905</guid>
        <pubDate>Fri, 28 Mar 2014 22:04:09 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3437905</link>
        <description><![CDATA[David1993: <strong class='tag-b'>nsh</strong> Спасибо. А вы можете мне сказать какую книгу прочитать чтобы понимать как все это делается. Я совсем не предстовляю как энкодируется и декодируется wav фаил, в чем разница между stereo и моно, 8 бит и 16 бит, right channel left channel, что вообще channel? И в моем коде не понимаю что из себя представляет sample, и от чего зависит калияество sample-ов.]]></description>
        <author>David1993</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3435438</guid>
        <pubDate>Mon, 24 Mar 2014 20:00:27 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3435438</link>
        <description><![CDATA[nsh: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Я не понимаю почему wav фаил разбиваем по окном и почему для 16кГц выбираем int Window = 500, для чего надо разбивать а не взять весь wav фаил.<br>
</div></div><br>
<br>
Частотный состав звуков речи очень быстро изменяется. Преобразование Фурье подразумевает сигнал с постоянным частотным составом. Для того, чтобы проанализировать состав звуков по частотам с помощью преобразования Фурье, нужно разбить речь на интервалы, где частотный состав почти постоянен и заняться анализом каждого интервала в отдельности.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> И второй вопрос не могу понять с каким алгоритмом напсан функция MatrixFromFile, почему NoPairCount Начинается с Window/2? Буду очень блогодарень если поможете.<br>
</div></div><br>
<br>
Чтобы обеспечить плавность анализа, окна берутся с перекрытием. Второе окно начинается от середины первого. Третье окно начинается от конца первого и от середины второго. NoPairCount это на самом деле индекс в звуковых данных, откуда данные копируются в окно. Во последовательности перекрывающихся окон четные окна начинаются со сдвигом в половину окна. Попробуйте нарисовать картинку, станет более понятно.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3434885</guid>
        <pubDate>Mon, 24 Mar 2014 04:08:36 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3434885</link>
        <description><![CDATA[David1993: <strong class='tag-b'>nsh</strong> Вы будете помочь мне? :(]]></description>
        <author>David1993</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3434660</guid>
        <pubDate>Sun, 23 Mar 2014 09:36:01 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3434660</link>
        <description><![CDATA[David1993: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380575&view=findpost&p=3434641'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>nsh &#064; <time class="tag-quote__quoted-time" datetime="2014-03-23T06:52:58+00:00">23.03.14, 06:52</time></span><div class='quote '>Конечно. Покажите свой код, опишите, что не работает. Разберемся. Какая-нибудь реализация у вас есть? Под какую платформу Вы программируете, под какую ОС.</div></div><br>
У меня есть код, в этом разделе у кого-то тоже был такой же вопрос вы помогли ему, я смотрел код который он написал но у меня есть вопросы.<br>
Я не понимаю почему wav фаил разбиваем по окном и почему для 16кГц выбираем int Window = 500, для чего надо разбивать а не взять весь wav фаил. И второй вопрос не могу понять с каким алгоритмом напсан функция MatrixFromFile, почему NoPairCount Начинается с Window/2? Буду очень блогодарень если поможете.<br>
<br>
Это более хороший код.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &quot;aquila/global.h&quot;</div><div class="code_line">#include &quot;aquila/source/WaveFile.h&quot;</div><div class="code_line">#include &quot;aquila/source/SignalSource.h&quot;</div><div class="code_line">#include &quot;aquila/transform/Mfcc.h&quot;</div><div class="code_line">#include &quot;aquila/ml/Dtw.h&quot;</div><div class="code_line">#include &quot;aquila/ml/DtwPoint.h&quot;</div><div class="code_line">#include &quot;aquila/transform/FftFactory.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">#include &#60;math.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#ifdef NAN</div><div class="code_line">/* NAN is supported */</div><div class="code_line">#endif</div><div class="code_line">#ifdef INFINITY</div><div class="code_line">/* INFINITY is supported */</div><div class="code_line">#endif</div><div class="code_line">using namespace std;</div><div class="code_line">&nbsp;</div><div class="code_line">/* Rounding &nbsp;number of samples */</div><div class="code_line">unsigned int RoundSize (Aquila::WaveFile&amp; wav, int&amp; Sample)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int SIZE = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (wav.getSamplesCount()%Sample == 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SIZE = wav.getSamplesCount();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SIZE = wav.getSamplesCount()-(wav.getSamplesCount()%Sample);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return SIZE;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">/* Transform wavfile to frame matrix with double overlap */</div><div class="code_line">vector&#60; vector&#60;double&#62; &#62; MatrixFromFile (Aquila::WaveFile&amp; wav, int Row, int Col,int Window)</div><div class="code_line">&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; WindowMatrix(Row);</div><div class="code_line">&nbsp;&nbsp; &nbsp;int PairCount = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 0; i &#60; Row; i=i+2)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WindowMatrix[i].resize(Col);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(int j = 0; j &#60; Col; ++j)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowMatrix[i][j] = wav.sample(PairCount++);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;int NoPairCount = Window/2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 1; i &#60; Row; i=i+2)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WindowMatrix[i].resize(Col);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(int j = 0; j &#60; Col; j++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cout &#60;&#60; NoPairCount &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowMatrix[i][j] = wav.sample(NoPairCount);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NoPairCount ++;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return WindowMatrix;</div><div class="code_line">&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;/* Calculation of Mel Frequency Cepstral Coefficients for FrameMatrix with subtracting the average */</div><div class="code_line">vector&#60; vector&#60;double&#62; &#62; CalcMFCCforMatrix (vector&#60; vector&#60;double&#62; &#62;&amp; WindowMatrix, int FFTSize, int Row)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; result (Row);</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 0; i &#60; Row; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; result[i].resize(FFTSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; Aquila::SignalSource WavFromArr(WindowMatrix.at(i),16000);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; Aquila::Mfcc fftMFCC (FFTSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; result.at(i) = fftMFCC.calculate(WavFromArr);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* Searching the average */</div><div class="code_line">&nbsp;&nbsp; &nbsp; vector&#60;double&#62; AverangeMFCC;</div><div class="code_line">&nbsp;&nbsp; &nbsp; for(int i = 0; i &#60; 12; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; double TempSum = 0.0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; for(int j = 0; j &#60; Row; ++j)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TempSum+= result[j][i];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; AverangeMFCC.push_back(TempSum/Row);</div><div class="code_line">&nbsp;&nbsp; &nbsp; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; /* Subtracting the average */</div><div class="code_line">&nbsp;&nbsp; &nbsp; for(int i = 0; i &#60; 12; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; for(int j = 0; j &#60; Row; ++j)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result[j][i] = (result[j][i]) - AverangeMFCC.at(i);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; return result;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Aquila::WaveFile wav(&quot;one.wav&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* firs file */</div><div class="code_line">&nbsp;&nbsp; &nbsp;int Window = 500; /*16kHz = 62.5uS per sample*/</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned int Wav1Size = RoundSize (wav,Window);</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* Matrix vector&#60; vector&#60;double&#62; &#62; size:</div><div class="code_line">&nbsp;&nbsp; &nbsp; * Row - number of windows (one sample = 62.5uS, one WindowSize = sample*window, double overlap)</div><div class="code_line">&nbsp;&nbsp; &nbsp; * Column - Window*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;const int RowWav1 = 2*(Wav1Size/Window);</div><div class="code_line">&nbsp;&nbsp; &nbsp;const int ColWav1 = Window;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/*Wav file to FrameMatrix*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; WindowMatrixWav1 = MatrixFromFile (wav,RowWav1,ColWav1,Window);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; /* Calculation of Mel Frequency Cepstral Coefficients */</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned int FFTSize = 512;</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; Wav1MatrixMFCC = CalcMFCCforMatrix (WindowMatrixWav1,FFTSize,RowWav1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 0; i &#60; Wav1MatrixMFCC.size(); ++i){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(int j = 0; j &#60; Wav1MatrixMFCC.at(i).size(); ++j){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cout &#60;&#60; Wav1MatrixMFCC.at(i).at(j) &#60;&#60; &quot; &quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;cout &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>David1993</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3434641</guid>
        <pubDate>Sun, 23 Mar 2014 06:52:58 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3434641</link>
        <description><![CDATA[nsh: Конечно. Покажите свой код, опишите, что не работает. Разберемся. Какая-нибудь реализация у вас есть? Под какую платформу Вы программируете, под какую ОС.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3434624</guid>
        <pubDate>Sun, 23 Mar 2014 00:39:13 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3434624</link>
        <description><![CDATA[David1993: <strong class='tag-b'>nsh</strong> Пожалуйста помогите мне никак не могу получить MFCC коэфиценты. Хочу написать программу распознование речи на c++, но мне нужен сначала получить MFcc коэфиценты а потом пуду использовать нейронные сети.Очень важно для меня.]]></description>
        <author>David1993</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3354412</guid>
        <pubDate>Mon, 09 Sep 2013 14:16:04 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3354412</link>
        <description><![CDATA[valeros: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Поднимите взгляд к шапке сайта, там есть ссылка &quot;Алгоритмы&quot;</div></div><br>
<br>
Спасибо за совет, этот вариант я попробовал в первую очередь, из этой библиотеки я использовал БПФ, но вскоре нашел библиотеку в которой было все в одном. Но к сожалению, товарищ <strong class='tag-b'>nsh</strong> обнаружил в этой библиотеке недоработки.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>уважаемый автор и форумчане ) у кого есть наработки? или готовое решение. ищу именно такое по чтоб натренировать и понимало меня. </div></div><br>
<br>
К сожалению, я пока не добился нужного результата. Думаю для вашей задачи будет достаточно готового продукта CMU Sphinx.]]></description>
        <author>valeros</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3354231</guid>
        <pubDate>Mon, 09 Sep 2013 08:05:11 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3354231</link>
        <description><![CDATA[Emmys: уважаемый автор и формутчане ) у кого есть наработки? или готовое решение. ищу именно такое по чтоб натрененровать и понимало меня. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-09-09T08:11:31+00:00">09.09.13, 08:11</time></span></span><br>
прошу связаться со мной )) откликнитесь ау.]]></description>
        <author>Emmys</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3352953</guid>
        <pubDate>Wed, 04 Sep 2013 12:49:55 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3352953</link>
        <description><![CDATA[MedEx: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380575&view=findpost&p=3348606'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>valeros &#064; <time class="tag-quote__quoted-time" datetime="2013-08-22T11:45:19+00:00">22.08.13, 11:45</time></span><div class='quote '>Спасибо за помощь. Не встречалось ли Вам похожих библиотек с готовым функционалом?</div></div><br>
Поднимите взгляд к шапке сайта, там есть ссылка &quot;Алгоритмы&quot;]]></description>
        <author>MedEx</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3348606</guid>
        <pubDate>Thu, 22 Aug 2013 11:45:19 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3348606</link>
        <description><![CDATA[valeros: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Посмотрел код, как-то он не вызывает доверия. MFCС в библиотеке неправильно вычисляется без лог-компрессии энергии. Надо смотреть ещё.</div></div><br>
Спасибо за помощь. Не встречалось ли Вам похожих библиотек с готовым функционалом?]]></description>
        <author>valeros</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3348258</guid>
        <pubDate>Wed, 21 Aug 2013 11:06:01 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3348258</link>
        <description><![CDATA[nsh: Посмотрел код, как-то он не вызывает доверия. MFCС в библиотеке неправильно вычисляется без лог-компрессии энергии. Надо смотреть ещё.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3345380</guid>
        <pubDate>Mon, 12 Aug 2013 16:48:11 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3345380</link>
        <description><![CDATA[valeros: При FFTSize = 512, получаю DTW = inf. Увеличил длительность окна до 62.5 мс, получил такие результаты:<br><br>Число1|Число2 = Расстояние DTW<br>&quot;Один&quot;|&quot;Один&quot; (2 вариант) = 3.8e+6<br>&quot;Один&quot;|&quot;Один&quot; (3 вариант) = 5.9e+6<br>&quot;Один&quot;|&quot;Один&quot; (4 вариант) = 7.4e+6<br>----------------<br>&quot;Один&quot;|&quot;Два&quot; = 6.1e+6<br>&quot;Один&quot;|&quot;Три&quot; = 3.2e+6<br>&quot;Один&quot;|&quot;Четыре&quot; = 6.9e+6<br>&quot;Один&quot;|&quot;Пять&quot; = 7.1e+6<br>----------------<br>&quot;Два&quot;|&quot;Два&quot; (второй вариант) = 3.1e+6<br>&quot;Два&quot;|&quot;Три&quot; = 2.9e+6<br>&quot;Два&quot;|&quot;Четыре&quot; = 5.4e+6<br>&quot;Два&quot;|&quot;Пять&quot; = 4.3e+6]]></description>
        <author>valeros</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3345372</guid>
        <pubDate>Mon, 12 Aug 2013 16:10:21 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3345372</link>
        <description><![CDATA[nsh: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> unsigned int FFTSize = 32; </div></div><br>
<br>
Должно быть 512 для 16khz.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3345315</guid>
        <pubDate>Mon, 12 Aug 2013 13:31:34 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3345315</link>
        <description><![CDATA[valeros: На данный момент у меня такой код:<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &quot;aquila/global.h&quot;</div><div class="code_line">#include &quot;aquila/source/WaveFile.h&quot;</div><div class="code_line">#include &quot;aquila/source/SignalSource.h&quot;</div><div class="code_line">#include &quot;aquila/transform/Mfcc.h&quot;</div><div class="code_line">#include &quot;aquila/ml/Dtw.h&quot;</div><div class="code_line">#include &quot;aquila/ml/DtwPoint.h&quot;</div><div class="code_line">#include &quot;aquila/transform/FftFactory.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace std;</div><div class="code_line">&nbsp;</div><div class="code_line">/* Rounding &nbsp;number of samples */</div><div class="code_line">unsigned int RoundSize (Aquila::WaveFile&amp; wav, int&amp; Sample)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int SIZE = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (wav.getSamplesCount()%Sample == 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SIZE = wav.getSamplesCount();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SIZE = wav.getSamplesCount()-(wav.getSamplesCount()%Sample);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return SIZE;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">/* Transform wavfile to frame matrix with double overlap */</div><div class="code_line">vector&#60; vector&#60;double&#62; &#62; MatrixFromFile (Aquila::WaveFile&amp; wav, int Row, int Col,int Window)</div><div class="code_line">&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* Filling the matrix */</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; WindowMatrix(Row);</div><div class="code_line">&nbsp;&nbsp; &nbsp;int PairCount = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 0; i &#60; Row; i=i+2)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WindowMatrix[i].resize(Col);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(int j = 0; j &#60; Col; ++j)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowMatrix[i][j] = wav.sample(PairCount++);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;int NoPairCount = Window/2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 1; i &#60; Row; i=i+2)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WindowMatrix[i].resize(Col);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(int j = 0; j &#60; Col; j++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowMatrix[i][j] = wav.sample(NoPairCount++);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return WindowMatrix;</div><div class="code_line">&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;/* Calculation of Mel Frequency Cepstral Coefficients for FrameMatrix with subtracting the average */</div><div class="code_line">vector&#60; vector&#60;double&#62; &#62; CalcMFCCforMatrix (vector&#60; vector&#60;double&#62; &#62;&amp; WindowMatrix, int FFTSize, int Row)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; result (Row);</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 0; i &#60; Row; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; result[i].resize(FFTSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; Aquila::SignalSource WavFromArr(WindowMatrix.at(i),16000);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; Aquila::Mfcc fftMFCC (FFTSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; result.at(i) = fftMFCC.calculate(WavFromArr);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* Searching the average */</div><div class="code_line">&nbsp;&nbsp; &nbsp; vector&#60;double&#62; AverangeMFCC;</div><div class="code_line">&nbsp;&nbsp; &nbsp; for(int i = 0; i &#60; 12; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; double TempSum = 0.0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; for(int j = 0; j &#60; Row; ++j)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TempSum+= result[j][i];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; AverangeMFCC.push_back(TempSum/Row);</div><div class="code_line">&nbsp;&nbsp; &nbsp; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; /* Subtracting the average */</div><div class="code_line">&nbsp;&nbsp; &nbsp; for(int i = 0; i &#60; 12; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; for(int j = 0; j &#60; Row; ++j)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result[j][i] = (result[j][i]) - AverangeMFCC.at(i);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; return result;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Aquila::WaveFile wav(&quot;d:\QT\Projects\console\build-wav-Desktop_Qt_5_0_2_MinGW_32bit-Debug\debug\Numbers\one.wav&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* firs file */</div><div class="code_line">&nbsp;&nbsp; &nbsp;int Window = 500; /*16kHz = 62.5uS per sample*/</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned int Wav1Size = RoundSize (wav,Window);</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* Matrix vector&#60; vector&#60;double&#62; &#62; size:</div><div class="code_line">&nbsp;&nbsp; &nbsp; * Row - number of windows (one sample = 62.5uS, one WindowSize = sample*window, double overlap)</div><div class="code_line">&nbsp;&nbsp; &nbsp; * Column - Window*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;const int RowWav1 = 2*(Wav1Size/Window);</div><div class="code_line">&nbsp;&nbsp; &nbsp;const int ColWav1 = Window;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/*Wav file to FrameMatrix*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; WindowMatrixWav1 = MatrixFromFile (wav,RowWav1,ColWav1,Window);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; /* Calculation of Mel Frequency Cepstral Coefficients */</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned int FFTSize = 32;</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; Wav1MatrixMFCC = CalcMFCCforMatrix (WindowMatrixWav1,FFTSize,RowWav1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* second file */ &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout&#60;&#60;&quot;--------&quot;&#60;&#60;std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Aquila::WaveFile wav2(&quot;d:\QT\Projects\console\build-wav-Desktop_Qt_5_0_2_MinGW_32bit-Debug\debug\Numbers\four.wav&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned int Wav2Size = RoundSize (wav2,Window);</div><div class="code_line">&nbsp;&nbsp; &nbsp;/* Matrix vector&#60; vector&#60;double&#62; &#62; size:</div><div class="code_line">&nbsp;&nbsp; &nbsp; * Row - number of windows (one sample = 62.5uS, one WindowSize = sample*window, double overlap)</div><div class="code_line">&nbsp;&nbsp; &nbsp; * Column - Window*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;const int RowWav2 = 2*(Wav2Size/Window);</div><div class="code_line">&nbsp;&nbsp; &nbsp;const int ColWav2 = Window;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/*Wav file to FrameMatrix*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; WindowMatrixWav2 = MatrixFromFile (wav2,RowWav2,ColWav2,Window);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; /* Calculation of Mel Frequency Cepstral Coefficients */</div><div class="code_line">&nbsp;&nbsp; &nbsp;vector&#60; vector&#60;double&#62; &#62; Wav2MatrixMFCC = CalcMFCCforMatrix (WindowMatrixWav2,FFTSize,RowWav2);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/*DTW comparison*/</div><div class="code_line">&nbsp;&nbsp; &nbsp;Aquila::DtwDataType from, to;</div><div class="code_line">&nbsp;&nbsp; &nbsp;from = Wav1MatrixMFCC;</div><div class="code_line">&nbsp;&nbsp; &nbsp;to = Wav2MatrixMFCC;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Aquila::Dtw dtw;</div><div class="code_line">&nbsp;&nbsp; &nbsp;double distance = dtw.getDistance(from, to);</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;DTW distance (neighbors): &quot; &#60;&#60; distance &#60;&#60; &quot;\n&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Aquila::Dtw dtwDiag(Aquila::euclideanDistance, Aquila::Dtw::Diagonals);</div><div class="code_line">&nbsp;&nbsp; &nbsp;distance = dtwDiag.getDistance(from, to);</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;DTW distance (diagonals): &quot; &#60;&#60; distance &#60;&#60; &quot;\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;</div><div class="code_line">}</div></ol></div></div></div></div></div></div>]]></description>
        <author>valeros</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344792</guid>
        <pubDate>Fri, 09 Aug 2013 19:39:54 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344792</link>
        <description><![CDATA[nsh: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Поправил программу, теперь сверяю все окна, но результаты пока не лучше</div></div><br>
<br>
Нужно искать ошибку. Код не мешало бы показать.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344752</guid>
        <pubDate>Fri, 09 Aug 2013 17:36:58 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344752</link>
        <description><![CDATA[valeros: <strong class='tag-b'>nsh,</strong> спасибо исправления. Будем разбираться.<br>
Поправил программу, теперь сверяю все окна, но результаты пока не лучше, DTW от одинаковых файлов 0, а вот DTW от разных в некоторых случаях может быть меньше, чем DTW от похожих, например сравнение звуков с числами:<br>
<br>
Число1|Число2 = Расстояние DTW<br>
&quot;Один&quot;|&quot;Один&quot; (2 вариант) = 13897<br>
&quot;Один&quot;|&quot;Один&quot; (3 вариант) = 17927<br>
&quot;Один&quot;|&quot;Один&quot; (4 вариант) = 21856<br>
----------------<br>
&quot;Один&quot;|&quot;Два&quot; = 12258<br>
&quot;Один&quot;|&quot;Три&quot; = 10124<br>
&quot;Один&quot;|&quot;Четыре&quot; = 21084<br>
&quot;Один&quot;|&quot;Пять&quot; = 19774<br>
----------------<br>
&quot;Два&quot;|&quot;Два&quot; (второй вариант) = 16631<br>
&quot;Два&quot;|&quot;Три&quot; = 18693<br>
&quot;Два&quot;|&quot;Четыре&quot; = 25692<br>
&quot;Два&quot;|&quot;Пять&quot; = 17617]]></description>
        <author>valeros</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344437</guid>
        <pubDate>Thu, 08 Aug 2013 20:22:37 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344437</link>
        <description><![CDATA[nsh: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Немного не понял фразу &quot;с вычетом среднего&quot;. Я Находил среднее для каждого коэффициента по всем отрезкам (У меня 66 перекрывающихся отрезков сигнала, для каждого отрезка по 12 коэффициентов, усреднив получаю 12 коэффициентов но уже для всего файла).</div></div><br>
<br>
Чего-то Вы в алгоритме не разобрались. Файл разбивается на 66 окон, для каждого окна высчитывается 12 коэффициентов. Затем для каждого коэффициента находится среднее по всем окнам. Вычитается, в результате получается всё равно 66 окон по 12 коэффициентов. Эти 66x12 чисел подается в DTW. Если Вы в DTW подаете только 12 чисел, не удивительно, что он не работает.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344426</guid>
        <pubDate>Thu, 08 Aug 2013 19:31:51 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344426</link>
        <description><![CDATA[valeros: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>В целом нормально это, но может быть и лучше.<br>
Этот результата с вычетом среднего или без?</div></div><br>
<br>
Немного не понял фразу &quot;с вычетом среднего&quot;. Я Находил среднее для каждого коэффициента по всем отрезкам  (У меня 66 перекрывающихся отрезков сигнала, для каждого отрезка по 12 коэффициентов, усреднив получаю 12 коэффициентов но уже для всего файла).<br>
<br>
Возник еще вопрос, сможет ли улучшить ситуацию, если пропустить сигнал через оконную функцию, например Хемминга?]]></description>
        <author>valeros</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344402</guid>
        <pubDate>Thu, 08 Aug 2013 18:11:12 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344402</link>
        <description><![CDATA[nsh: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Усреднив коэффициенты для всех отрезков, получаю такой результат:</div></div><br>
<br>
В Вашей библиотеке ещё бы lifter не помешало бы применить после dct, чтобы придать больше значения коэффициентам высокого порядка. Результаты получше будут.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Схожесть между файлами прослеживается, DTW одинаковых файлов равно 0, DTW похожих файлов меньше, чем при сравнении разных файлов, но ненамного (Например при похожих файлах получаю расстояние 44860, а при разных файлах 68190).</div></div><br>
<br>
В целом нормально это, но может быть и лучше.<br>
<br>
Этот результата с вычетом среднего или без?]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344280</guid>
        <pubDate>Thu, 08 Aug 2013 12:24:42 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344280</link>
        <description><![CDATA[valeros: nsh, спасибо за ответ. Усреднив коэффициенты для всех отрезков, получаю такой результат:<br>
<a class='tag-url' href='http://radikal.ru/fp/9d7d970341874d5e9fd8e28dddd1219c' target='_blank'><img class='tag-img' src='http://s019.radikal.ru/i600/1308/1a/6a28e29cb176t.jpg' alt='user posted image'></a><br>
<br>
Схожесть между файлами прослеживается, DTW одинаковых файлов равно 0, DTW похожих файлов меньше, чем при сравнении разных файлов, но ненамного (Например при похожих файлах получаю расстояние 44860, а при разных файлах 68190).]]></description>
        <author>valeros</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344087</guid>
        <pubDate>Wed, 07 Aug 2013 21:49:23 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344087</link>
        <description><![CDATA[nsh: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>1. Нужно ли производить нормирование сигнала?<br>
</div></div><br>
<br>
Нормировать нужно не сигнал, а MFCC коэффициенты. Вычитать среднее.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>2. Какие значения примерно имеют MFCC коэффициенты?</div></div><br>
<br>
Значения зависят от параметров. Они могут быть и положительными, и отрицательными.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;8.693 &nbsp; 1.382 &nbsp; 0.202 &nbsp; 0.412 &nbsp;-0.895 &nbsp;-0.527 &nbsp; 0.005 &nbsp;-0.417 &nbsp;-0.101 &nbsp; 0.113 </div><div class="code_line">&nbsp;&nbsp;8.446 &nbsp; 1.356 &nbsp; 0.229 &nbsp; 0.471 &nbsp;-0.889 &nbsp;-0.496 &nbsp; 0.001 &nbsp;-0.477 &nbsp;-0.102 &nbsp; 0.118 </div><div class="code_line">&nbsp;&nbsp;8.202 &nbsp; 1.337 &nbsp; 0.317 &nbsp; 0.441 &nbsp;-0.795 &nbsp;-0.477 &nbsp;-0.075 &nbsp;-0.495 &nbsp;-0.079 &nbsp; 0.151 </div><div class="code_line">&nbsp;&nbsp;8.083 &nbsp; 1.186 &nbsp; 0.430 &nbsp; 0.375 &nbsp;-0.735 &nbsp;-0.419 &nbsp;-0.091 &nbsp;-0.533 &nbsp;-0.074 &nbsp; 0.121 </div><div class="code_line">&nbsp;&nbsp;8.155 &nbsp; 1.184 &nbsp; 0.376 &nbsp; 0.356 &nbsp;-0.753 &nbsp;-0.427 &nbsp;-0.094 &nbsp;-0.547 &nbsp;-0.002 &nbsp; 0.098 </div><div class="code_line">&nbsp;&nbsp;8.644 &nbsp; 1.221 &nbsp; 0.284 &nbsp; 0.295 &nbsp;-0.885 &nbsp;-0.479 &nbsp;-0.040 &nbsp;-0.462 &nbsp;-0.024 &nbsp; 0.064 </div><div class="code_line">&nbsp;&nbsp;9.417 &nbsp; 1.249 &nbsp; 0.150 &nbsp; 0.165 &nbsp;-1.004 &nbsp;-0.543 &nbsp; 0.057 &nbsp;-0.354 &nbsp; 0.001 &nbsp; 0.092 </div><div class="code_line">&nbsp;10.137 &nbsp; 1.239 &nbsp;-0.082 &nbsp;-0.018 &nbsp;-1.049 &nbsp;-0.501 &nbsp; 0.182 &nbsp;-0.313 &nbsp; 0.065 &nbsp; 0.070 </div><div class="code_line">&nbsp;10.700 &nbsp; 1.220 &nbsp;-0.345 &nbsp;-0.175 &nbsp;-1.023 &nbsp;-0.358 &nbsp; 0.266 &nbsp;-0.230 &nbsp;-0.113 &nbsp; 0.111 </div><div class="code_line">&nbsp;11.269 &nbsp; 1.086 &nbsp;-0.528 &nbsp;-0.299 &nbsp;-0.852 &nbsp;-0.271 &nbsp; 0.343 &nbsp;-0.287 &nbsp;-0.280 &nbsp; 0.114 </div><div class="code_line">&nbsp;11.571 &nbsp; 0.986 &nbsp;-0.806 &nbsp;-0.205 &nbsp;-0.618 &nbsp;-0.265 &nbsp; 0.307 &nbsp;-0.375 &nbsp;-0.383 &nbsp; 0.302 </div><div class="code_line">&nbsp;11.476 &nbsp; 1.072 &nbsp;-1.116 &nbsp;-0.057 &nbsp;-0.358 &nbsp;-0.319 &nbsp; 0.168 &nbsp;-0.325 &nbsp;-0.447 &nbsp; 0.414</div></ol></div></div></div></div><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>3. Какое значение должно быть после сравнение DTW, чтобы принять решение о правильности распознавания.</div></div><br>
<br>
Чтобы протестировать DTW нужно убедиться в следующих фактах:<br>
<br>
1. DTW от одинаковых файлов должно быть 0<br>
<br>
2. DTW от похожих файлов должно быть меньше DTW от непохожих файлов. Чем больше файлы похожи, тем меньше должно быть расстояние DTW.<br>
<br>
Далее, используя похожие и непохожие файлы, нужно экспериментально подобрать порог значения, при котором считать, что слово обнаружено.]]></description>
        <author>nsh</author>
        <category>Речевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344065</guid>
        <pubDate>Wed, 07 Aug 2013 19:28:05 +0000</pubDate>
        <title>Распознавание отдельных слов</title>
        <link>https://forum.sources.ru/index.php?showtopic=380575&amp;view=findpost&amp;p=3344065</link>
        <description><![CDATA[valeros: Доброго времени суток. Просмотрев от начала и до конца раздел &quot;Речевые Технологии&quot; в поиске информации по распознаванию речи, многое для себя уяснил. Но после того, когда начал реализацию, появились некоторые вопросы, надеюсь кто-то сможет прояснить.<br><br>Пытаюсь реализовать распознавание одного слова, для этого было записано два варианта этого слова с разной интонацией. Получил 2 файла ~1c, частота дискретизации 16кГц, 16бит.<br><br>Далее пользуюсь DSP-библиотекой Aquila (github.com/zsiciarz/aquila) разбиваю весь wav файл окном с половинным перекрытием (окно ~20мс), к полученным отрезкам применяю ДПФ, перевожу на мел шкалу, делаю дискретное косинусное преобразование. Получаю по 12 MFCC векторов для каждого отрезка (Значения этих коэффициентов меня больше всего смущают, т.к. получаются большие как положительные, так и отрицательные).Аналогичный алгоритм применяю над вторым файлом. <br>Далее пытаюсь применить DTW с помощью Евклидова расстояния для наборов отрезков из файла 1 и файла 2.<br>Результаты получаю совсем не правдоподобные :( . Пытаюсь понять где ошибка, возможно она всплывет после этих вопросов:<br><br>1. Нужно ли производить нормирование сигнала?<br>2. Какие значения примерно имеют MFCC коэффициенты?<br>3. Какое значение должно быть после сравнение DTW, чтобы принять решение о правильности распознавания.<br><br>Буду признателен за любую помощь.]]></description>
        <author>valeros</author>
        <category>Речевые Технологии</category>
      </item>
	
      </channel>
      </rss>
	