Matlab实现语音识别中MFCC特征提取教程

版权申诉
0 下载量 55 浏览量 更新于2024-10-29 收藏 2KB RAR 举报
" 知识点一:MATLAB软件概述 MATLAB(矩阵实验室)是一种高性能的数值计算环境和第四代编程语言,由MathWorks公司开发。MATLAB广泛应用于工程计算、数据分析、算法开发等领域。它提供了一个直观的界面和丰富的工具箱,使得用户能够方便地进行矩阵运算、函数绘图、数据分析以及实现各种算法。 知识点二:语音识别技术 语音识别是将人类的语音信号转化为机器可读的文字或命令的过程。这项技术是人工智能和模式识别领域的重要应用之一。语音识别系统一般包括前端处理、特征提取、模式匹配和后处理等几个部分。在语音识别的处理流程中,MFCC是目前最为流行的一种特征提取方法。 知识点三:梅尔频率倒谱系数(MFCC) MFCC是一种广泛应用于语音处理领域的特征提取技术,它基于人耳听觉特性设计,能够较好地反映人类对声音的感知。MFCC计算过程包括对信号进行预加重、分帧、窗函数处理、傅里叶变换、梅尔滤波器组处理、对数运算、离散余弦变换(DCT)等步骤。通过MFCC,可以从原始语音信号中提取出一组数值特征,这些特征能够有效表达语音信号的特征信息。 知识点四:MATLAB在语音识别中的应用 MATLAB提供了语音信号处理工具箱,其中包含用于语音信号分析和处理的函数和系统对象。开发者可以通过调用这些函数和对象,实现从语音信号的获取、处理到特征提取、模式识别的整个语音识别流程。在MATLAB中编写语音识别程序,可以方便地进行算法设计、调试和结果的可视化展示。 知识点五:资源文件内容分析 提供的资源文件名为great2.m,这是一个MATLAB脚本文件。根据文件名的描述,我们可以推断该脚本文件中包含了实现语音识别的MFCC特征提取的相关代码。在该脚本文件中,开发者可能使用了MATLAB的信号处理工具箱中的函数,来完成以下任务: 1. 读取语音信号 2. 对语音信号进行预加重处理以突出高频部分 3. 将语音信号分帧并应用窗函数以减少帧间的频谱泄露 4. 对每个帧执行快速傅里叶变换(FFT)得到频谱 5. 通过梅尔滤波器组对频谱进行非线性压缩 6. 计算每个滤波器输出的对数能量值 7. 对对数能量值应用离散余弦变换(DCT),得到MFCC系数 8. 可能还包括对MFCC系数进行高阶差分以及动态特征的提取等 开发者通过执行great2.m文件,可以在MATLAB环境中实现上述步骤,并对给定的语音信号进行特征提取,为进一步的语音识别处理提供基础。 总结,该资源文件涉及到了MATLAB在语音识别领域中应用的一个关键环节——MFCC特征提取,并通过一个具体的MATLAB脚本实例来展示如何利用MATLAB强大的计算和可视化能力来处理语音信号,最终提取出用于语音识别的特征参数。这对于想要深入了解语音识别技术或者在MATLAB平台上进行语音信号分析的开发者而言,是一个非常有价值的学习资源。

修改下面代码,另画一张可视化图展示出t_sne里面的数据每15行数据个用一种颜色画出。 import pandas as pd from sklearn import cluster from sklearn import metrics import matplotlib.pyplot as plt from sklearn.manifold import TSNE from sklearn.decomposition import PCA def k_means(data_set, output_file, png_file, t_labels, score_file, set_name): model = cluster.KMeans(n_clusters=7, max_iter=1000, init="k-means++") model.fit(data_set) # print(list(model.labels_)) p_labels = list(model.labels_) r = pd.concat([data_set, pd.Series(model.labels_, index=data_set.index)], axis=1) r.columns = list(data_set.columns) + [u'聚类类别'] print(r) # r.to_excel(output_file) with open(score_file, "a") as sf: sf.write("By k-means, the f-m_score of " + set_name + " is: " + str(metrics.fowlkes_mallows_score(t_labels, p_labels))+"\n") sf.write("By k-means, the rand_score of " + set_name + " is: " + str(metrics.adjusted_rand_score(t_labels, p_labels))+"\n") '''pca = PCA(n_components=2) pca.fit(data_set) pca_result = pca.transform(data_set) t_sne = pd.DataFrame(pca_result, index=data_set.index)''' t_sne = TSNE() t_sne.fit(data_set) t_sne = pd.DataFrame(t_sne.embedding_, index=data_set.index) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False dd = t_sne[r[u'聚类类别'] == 0] plt.plot(dd[0], dd[1], 'r.') dd = t_sne[r[u'聚类类别'] == 1] plt.plot(dd[0], dd[1], 'go') dd = t_sne[r[u'聚类类别'] == 2] plt.plot(dd[0], dd[1], 'b*') dd = t_sne[r[u'聚类类别'] == 3] plt.plot(dd[0], dd[1], 'o') dd = t_sne[r[u'聚类类别'] == 4] plt.plot(dd[0], dd[1], 'm.') dd = t_sne[r[u'聚类类别'] == 5] plt.plot(dd[0], dd[1], 'co') dd = t_sne[r[u'聚类类别'] == 6] plt.plot(dd[0], dd[1], 'y*') plt.savefig(png_file) plt.clf() '''plt.scatter(data_set.iloc[:, 0], data_set.iloc[:, 1], c=model.labels_) plt.savefig(png_file) plt.clf()''' frog_data = pd.read_csv("D:/PyCharmPython/pythonProject/mfcc3.csv") tLabel = [] for family in frog_data['name']: if family == "A": tLabel.append(0) elif family == "B": tLabel.append(1) elif family == "C": tLabel.append(2) elif family == "D": tLabel.append(3) elif family == "E": tLabel.append(4) elif family == "F": tLabel.append(5) elif family == "G": tLabel.append(6) scoreFile = "D:/PyCharmPython/pythonProject/scoreOfClustering.txt" first_set = frog_data.iloc[:, 1:1327] k_means(first_set, "D:/PyCharmPython/pythonProject/kMeansSet_1.xlsx", "D:/PyCharmPython/pythonProject/kMeansSet_2.png", tLabel, scoreFile, "Set_1")

164 浏览量

在下面代码中添加一个可视化图,用来画出r经过t_sne之后前15行数据的图 import pandas as pd from sklearn import cluster from sklearn import metrics import matplotlib.pyplot as plt from sklearn.manifold import TSNE from sklearn.decomposition import PCA def k_means(data_set, output_file, png_file, png_file1, t_labels, score_file, set_name): model = cluster.KMeans(n_clusters=7, max_iter=1000, init="k-means++") model.fit(data_set) # print(list(model.labels_)) p_labels = list(model.labels_) r = pd.concat([data_set, pd.Series(model.labels_, index=data_set.index)], axis=1) r.columns = list(data_set.columns) + [u'聚类类别'] print(r) # r.to_excel(output_file) with open(score_file, "a") as sf: sf.write("By k-means, the f-m_score of " + set_name + " is: " + str(metrics.fowlkes_mallows_score(t_labels, p_labels))+"\n") sf.write("By k-means, the rand_score of " + set_name + " is: " + str(metrics.adjusted_rand_score(t_labels, p_labels))+"\n") '''pca = PCA(n_components=2) pca.fit(data_set) pca_result = pca.transform(data_set) t_sne = pd.DataFrame(pca_result, index=data_set.index)''' t_sne = TSNE() t_sne.fit(data_set) t_sne = pd.DataFrame(t_sne.embedding_, index=data_set.index) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False dd = t_sne[r[u'聚类类别'] == 0] plt.plot(dd[0], dd[1], 'r.') dd = t_sne[r[u'聚类类别'] == 1] plt.plot(dd[0], dd[1], 'go') dd = t_sne[r[u'聚类类别'] == 2] plt.plot(dd[0], dd[1], 'b*') dd = t_sne[r[u'聚类类别'] == 3] plt.plot(dd[0], dd[1], 'o') dd = t_sne[r[u'聚类类别'] == 4] plt.plot(dd[0], dd[1], 'm.') dd = t_sne[r[u'聚类类别'] == 5] plt.plot(dd[0], dd[1], 'co') dd = t_sne[r[u'聚类类别'] == 6] plt.plot(dd[0], dd[1], 'y*') plt.savefig(png_file) '''plt.scatter(data_set.iloc[:, 0], data_set.iloc[:, 1], c=model.labels_) plt.savefig(png_file) plt.clf()''' frog_data = pd.read_csv("D:/PyCharmPython/pythonProject/mfcc3.csv") tLabel = [] for family in frog_data['name']: if family == "A": tLabel.append(0) elif family == "B": tLabel.append(1) elif family == "C": tLabel.append(2) elif family == "D": tLabel.append(3) elif family == "E": tLabel.append(4) elif family == "F": tLabel.append(5) elif family == "G": tLabel.append(6) scoreFile = "D:/PyCharmPython/pythonProject/scoreOfClustering.txt" first_set = frog_data.iloc[:, 1:1327] k_means(first_set, "D:/PyCharmPython/pythonProject/kMeansSet_1.xlsx", "D:/PyCharmPython/pythonProject/kMeansSet_2.png", "D:/PyCharmPython/pythonProject/kMeansSet_2_1.png", tLabel, scoreFile, "Set_1")

137 浏览量