• 大小: 467KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: C/C++
  • 标签: mfcc  c语言  语音识别  

资源简介

google code mfcc c语言实现。MIT 开源协议。语音识别可用。

资源截图

代码片段和文件信息

/*
 * libmfcc.c - Code implementation for libMFCC
 * Copyright (c) 2010 Jeremy Sawruk
 *
 * This code is released under the MIT License. 
 * For conditions of distribution and use see the license in LICENSE
 */

#include 
#include “libmfcc.h“

/* 
 * Computes the specified (mth) MFCC
 *
 * spectralData - array of doubles containing the results of FFT computation. This data is already assumed to be purely real
 * samplingRate - the rate that the original time-series data was sampled at (i.e 44100)
 * NumFilters - the number of filters to use in the computation. Recommended value = 48
 * binSize - the size of the spectralData array usually a power of 2
 * m - The mth MFCC coefficient to compute
 *
 */
double GetCoefficient(double* spectralData unsigned int samplingRate unsigned int NumFilters unsigned int binSize unsigned int m)
{
double result = 0.0f;
double outerSum = 0.0f;
double innerSum = 0.0f;
unsigned int k l;

// 0 <= m < L
if(m >= NumFilters)
{
// This represents an error condition - the specified coefficient is greater than or equal to the number of filters. The behavior in this case is undefined.
return 0.0f;
}

result = NormalizationFactor(NumFilters m);


for(l = 1; l <= NumFilters; l++)
{
// Compute inner sum
innerSum = 0.0f;
for(k = 0; k < binSize - 1; k++)
{
innerSum += fabs(spectralData[k] * GetFilterParameter(samplingRate binSize k l));
}

if(innerSum > 0.0f)
{
innerSum = log(innerSum); // The log of 0 is undefined so don‘t use it
}

innerSum = innerSum * cos(((m * PI) / NumFilters) * (l - 0.5f));

outerSum += innerSum;
}

result *= outerSum;

return result;
}

/* 
 * Computes the Normalization Factor (Equation 6)
 * Used for internal computation only - not to be called directly
 */
double NormalizationFactor(int NumFilters int m)
{
double normalizationFactor = 0.0f;

if(m == 0)
{
normalizationFactor = sqrt(1.0f / NumFilters);
}
else 
{
normalizationFactor = sqrt(2.0f / NumFilters);
}

return normalizationFactor;
}

/* 
 * Compute the filter parameter for the specified frequency and filter bands (Eq. 2)
 * Used for internal computation only - not the be called directly
 */
double GetFilterParameter(unsigned int samplingRate unsigned int binSize unsigned int frequencyBand unsigned int filterBand)
{
double filterParameter = 0.0f;

double boundary = (frequencyBand * samplingRate) / binSize; // k * Fs / N
double prevCenterFrequency = GetCenterFrequency(filterBand - 1); // fc(l - 1) etc.
double thisCenterFrequency = GetCenterFrequency(filterBand);
double nextCenterFrequency = GetCenterFrequency(filterBand + 1);

if(boundary >= 0 && boundary < prevCenterFrequency)
{
filterParameter = 0.0f;
}
else if(boundary >= prevCenterFrequency && boundary < thisCenterFrequency)
{
filterParameter = (boundary - prevCenterFrequency) / (thisCenterFrequency -

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-03-18 22:14  libmfcc\
     文件      214692  2016-03-18 22:14  libmfcc\Sturm2010b.pdf
     文件        1240  2016-03-18 22:14  libmfcc\libmfcc.h
     文件         283  2016-03-18 22:14  libmfcc\TODO
     目录           0  2016-03-18 22:14  libmfcc\libmfcc_example\
     文件        1376  2016-03-18 22:14  libmfcc\libmfcc_example\example.c
     文件       82062  2016-03-18 22:14  libmfcc\libmfcc_example\sample.dat
     文件        4705  2016-03-18 22:14  libmfcc\libmfcc.c
     目录           0  2016-03-18 22:14  libmfcc\.hg\
     文件           0  2016-03-18 22:14  libmfcc\.hg\undo.dirstate
     目录           0  2016-03-18 22:14  libmfcc\.hg\cache\
     文件          44  2016-03-18 22:14  libmfcc\.hg\cache\tags
     文件          92  2016-03-18 22:14  libmfcc\.hg\cache\branchheads
     文件         276  2016-03-18 22:14  libmfcc\.hg\dirstate
     文件           8  2016-03-18 22:14  libmfcc\.hg\branch
     文件          42  2016-03-18 22:14  libmfcc\.hg\undo.desc
     目录           0  2016-03-18 22:14  libmfcc\.hg\store\
     文件         186  2016-03-18 22:14  libmfcc\.hg\store\fncache
     目录           0  2016-03-18 22:14  libmfcc\.hg\store\data\
     文件          64  2016-03-18 22:14  libmfcc\.hg\store\data\_sturm2010b.pdf.i
     目录           0  2016-03-18 22:14  libmfcc\.hg\store\data\libmfcc__example\
     文件       32456  2016-03-18 22:14  libmfcc\.hg\store\data\libmfcc__example\sample.dat.i
     文件         770  2016-03-18 22:14  libmfcc\.hg\store\data\libmfcc__example\example.c.i
     文件         501  2016-03-18 22:14  libmfcc\.hg\store\data\_r_e_a_d_m_e.i
     文件      197952  2016-03-18 22:14  libmfcc\.hg\store\data\_sturm2010b.pdf.d
     文件         570  2016-03-18 22:14  libmfcc\.hg\store\data\libmfcc.h.i
     文件         714  2016-03-18 22:14  libmfcc\.hg\store\data\_l_i_c_e_n_s_e.i
     文件         262  2016-03-18 22:14  libmfcc\.hg\store\data\_t_o_d_o.i
     文件        1512  2016-03-18 22:14  libmfcc\.hg\store\data\libmfcc.c.i
     文件           0  2016-03-18 22:14  libmfcc\.hg\store\undo.phaseroots
     文件           0  2016-03-18 22:14  libmfcc\.hg\store\phaseroots
............此处省略10个文件信息

评论

共有 条评论