语音识别系统实验报告
语音学习实训报告(3篇)

第1篇一、实训背景随着人工智能技术的飞速发展,语音识别与合成技术逐渐成为人们日常生活和工作中不可或缺的一部分。
为了更好地掌握语音处理技术,提高自身的专业技能,我们开展了为期一个月的语音学习实训。
本次实训旨在通过理论学习和实践操作,使学员对语音处理的基本原理、技术方法及应用场景有深入的了解。
二、实训目标1. 掌握语音信号的基本概念、特性及其处理方法。
2. 熟悉语音识别、语音合成等关键技术。
3. 了解语音处理在智能语音助手、语音识别系统等领域的应用。
4. 培养学员的动手实践能力、团队协作精神和创新意识。
三、实训内容本次实训主要分为三个阶段:理论学习、实践操作和项目实战。
(一)理论学习1. 语音信号的基本概念与特性:介绍了语音信号的时域、频域特性,以及语音信号处理的基本方法。
2. 语音识别技术:讲解了语音识别的基本原理、算法,以及常见的语音识别系统架构。
3. 语音合成技术:介绍了语音合成的原理、方法,以及常见的语音合成系统。
4. 语音处理应用:探讨了语音处理在智能语音助手、语音识别系统等领域的应用。
(二)实践操作1. 语音信号处理软件:使用MATLAB等软件进行语音信号的采集、预处理、特征提取等操作。
2. 语音识别系统搭建:基于开源语音识别框架(如Kaldi、CMU Sphinx等)搭建语音识别系统。
3. 语音合成系统搭建:基于开源语音合成框架(如HTS、Flite等)搭建语音合成系统。
(三)项目实战1. 智能语音助手:开发一个基于语音识别和语音合成的智能语音助手,实现语音交互、信息查询等功能。
2. 语音识别系统:针对特定应用场景(如电话客服、智能家居等)开发语音识别系统。
四、实训成果1. 理论学习方面:学员对语音信号的基本概念、特性及其处理方法有了深入的了解,掌握了语音识别、语音合成等关键技术。
2. 实践操作方面:学员能够熟练使用MATLAB、Kaldi、HTS等软件进行语音信号处理、语音识别和语音合成。
基于深度学习的智能语音交互系统实验报告

基于深度学习的智能语音交互系统实验报告一、引言随着人工智能技术的迅速发展,智能语音交互系统在我们的生活中扮演着越来越重要的角色。
从智能手机中的语音助手到智能音箱,这些应用都为我们提供了更加便捷和自然的交互方式。
本实验旨在研究和开发一种基于深度学习的智能语音交互系统,以提高语音识别和理解的准确性,并实现更加自然流畅的对话。
二、实验目的本次实验的主要目的是构建一个基于深度学习的智能语音交互系统,并对其性能进行评估和优化。
具体目标包括:1、提高语音识别的准确率,减少误识别和漏识别的情况。
2、增强对自然语言的理解能力,能够准确解析用户的意图和需求。
3、实现流畅自然的语音对话,提高交互的满意度和实用性。
三、实验环境和数据(一)实验环境1、硬件配置:使用具有高性能 CPU 和 GPU 的服务器,以满足深度学习模型的训练和运行需求。
2、软件环境:采用 Python 编程语言,以及 TensorFlow、PyTorch 等深度学习框架。
(二)数据来源1、公开数据集:如 LibriSpeech、Common Voice 等,这些数据集包含了大量的语音和对应的文本标注。
2、自行采集:通过录制和标注一些特定领域的语音数据,以丰富数据的多样性和针对性。
四、实验方法(一)语音特征提取使用梅尔频率倒谱系数(MFCC)或线性预测编码(LPC)等方法对语音信号进行特征提取,将语音转换为可用于深度学习模型输入的数值向量。
(二)模型选择与构建1、选用循环神经网络(RNN)、长短时记忆网络(LSTM)或门控循环单元(GRU)等模型来处理序列数据。
2、构建多层神经网络结构,结合卷积神经网络(CNN)进行特征提取和分类。
(三)训练与优化1、采用随机梯度下降(SGD)、Adagrad、Adadelta 等优化算法对模型进行训练。
2、应用数据增强技术,如随机裁剪、添加噪声等,以增加数据的多样性。
3、调整超参数,如学习率、层数、节点数等,以提高模型的性能。
语音课实验报告

实验名称:语音识别与合成实验实验时间:2023年4月15日实验地点:语音实验室一、实验目的1. 了解语音识别与合成的基本原理和过程。
2. 掌握语音识别与合成系统的搭建和调试方法。
3. 提高语音处理和语音识别的实践能力。
二、实验原理语音识别与合成技术是人工智能领域的一个重要分支,主要涉及语音信号处理、模式识别和自然语言处理等方面。
语音识别是将语音信号转换为相应的文本信息,而语音合成则是将文本信息转换为自然流畅的语音输出。
三、实验内容1. 语音信号采集实验采用麦克风采集语音信号,将采集到的语音信号进行预处理,包括去除噪声、归一化等操作。
2. 语音特征提取从预处理后的语音信号中提取特征,如梅尔频率倒谱系数(MFCC)、线性预测系数(LPC)等,为后续的语音识别和合成提供依据。
3. 语音识别利用训练好的语音识别模型对采集到的语音信号进行识别,将识别结果输出为文本信息。
4. 语音合成将识别出的文本信息转换为语音输出,包括合成语音的音调、音量、语速等参数的调整。
四、实验步骤1. 语音信号采集(1)连接麦克风,确保设备正常工作。
(2)打开录音软件,调整录音参数,如采样率、量化位数等。
(3)进行语音采集,确保采集到的语音信号清晰、无杂音。
2. 语音特征提取(1)对采集到的语音信号进行预处理,包括去除噪声、归一化等操作。
(2)提取语音特征,如MFCC、LPC等。
3. 语音识别(1)使用已有的语音识别模型进行训练,如使用隐马尔可夫模型(HMM)或深度学习模型。
(2)将训练好的模型应用于采集到的语音信号,进行语音识别。
4. 语音合成(1)使用语音合成引擎,如FreeTTS、MaryTTS等,将识别出的文本信息转换为语音输出。
(2)调整合成语音的音调、音量、语速等参数,使语音输出更自然。
五、实验结果与分析1. 实验结果本次实验成功采集了语音信号,并提取了相应的语音特征。
通过语音识别,识别出了采集到的语音信号对应的文本信息。
实训报告语音

一、实训目的通过本次实训,使学生掌握语音识别技术的基本原理,熟悉常用的语音识别系统,提高学生的实践操作能力,培养学生的团队协作精神。
二、实训内容1. 语音识别技术概述语音识别技术是指将人类的语音信号转换为相应的文本信息的技术。
语音识别技术在通信、语音助手、智能家居等领域有着广泛的应用。
2. 语音识别系统(1)声学模型:声学模型是语音识别系统中的核心部分,它负责将语音信号转换为特征参数。
常用的声学模型有MFCC(Mel频率倒谱系数)和PLP(Perceptual Linear Prediction)等。
(2)语言模型:语言模型负责对输入的语音信号进行语言分析,判断其是否属于合法的句子。
常用的语言模型有N-gram、CTM(Continuous Transition Model)等。
(3)解码器:解码器负责根据声学模型和语言模型输出的结果,找到最可能的文本序列。
常用的解码器有DTW(Dynamic Time Warping)、HMM(隐马尔可夫模型)等。
3. 常用语音识别系统(1)科大讯飞语音识别系统:科大讯飞是我国领先的语音识别技术公司,其语音识别系统广泛应用于智能客服、语音助手等领域。
(2)百度语音识别系统:百度语音识别系统具备较高的识别准确率,支持多种语言和方言。
(3)腾讯语音识别系统:腾讯语音识别系统具有丰富的应用场景,如智能客服、语音输入等。
三、实训过程1. 熟悉语音识别技术的基本原理,了解声学模型、语言模型和解码器的作用。
2. 学习使用一种语音识别系统,如科大讯飞语音识别系统,了解其操作方法和使用技巧。
3. 利用语音识别系统进行实际操作,如语音转文字、语音搜索等。
4. 分析语音识别系统的识别效果,找出存在的问题,并提出改进措施。
5. 撰写实训报告,总结实训过程中的收获和体会。
四、实训成果1. 掌握语音识别技术的基本原理,熟悉常用的语音识别系统。
2. 能够熟练使用语音识别系统进行实际操作。
语音实践实训报告范文(2篇)

第1篇一、实训背景随着人工智能技术的飞速发展,语音识别技术逐渐成为人工智能领域的研究热点。
为了提高自身在语音识别领域的实践能力,我们小组开展了语音实践实训。
本次实训旨在通过实际操作,深入了解语音识别的基本原理、关键技术,并学会使用相关工具进行语音数据的采集、处理和分析。
二、实训目标1. 掌握语音识别的基本原理和关键技术;2. 熟悉常用的语音识别工具和平台;3. 学会使用语音识别技术进行实际应用;4. 培养团队合作和沟通能力。
三、实训内容1. 语音信号处理实训内容:学习语音信号的基本概念,了解语音信号的采集、预处理和特征提取等环节。
实训过程:(1)采集语音信号:使用麦克风采集语音信号,并将采集到的信号转换为数字信号。
(2)预处理:对采集到的数字信号进行降噪、去混响等处理,提高语音质量。
(3)特征提取:从预处理后的语音信号中提取特征,如MFCC(梅尔频率倒谱系数)、PLP(功率倒谱)等。
2. 语音识别算法实训内容:学习常用的语音识别算法,如隐马尔可夫模型(HMM)、深度神经网络(DNN)等。
实训过程:(1)HMM算法:了解HMM模型的结构,学习如何构建HMM模型,并进行参数训练。
(2)DNN算法:学习DNN的基本原理,了解如何将DNN应用于语音识别任务。
3. 语音识别工具和平台实训内容:熟悉常用的语音识别工具和平台,如Kaldi、CMU Sphinx等。
实训过程:(1)Kaldi:学习Kaldi工具的使用,包括数据预处理、模型训练、解码等。
(2)CMU Sphinx:学习CMU Sphinx平台的使用,包括语音信号预处理、模型训练、解码等。
4. 实际应用实训内容:使用语音识别技术进行实际应用,如语音助手、语音翻译等。
实训过程:(1)设计语音助手:根据实际需求,设计一个具有特定功能的语音助手,如智能客服、智能家居等。
(2)实现语音翻译:利用语音识别技术,实现中英文之间的实时翻译。
四、实训成果1. 掌握了语音信号处理的基本原理和关键技术,能够对语音信号进行采集、预处理和特征提取。
大学生语音实训总结报告

一、引言随着科技的发展,语音技术在现代社会中扮演着越来越重要的角色。
为了适应这一趋势,提高自身在语音识别、语音合成等方面的技能,我们学校特开设了大学生语音实训课程。
通过为期两个月的实训,我对语音技术有了更深入的了解,以下是我对此次实训的总结报告。
二、实训背景与目标1. 实训背景随着人工智能技术的快速发展,语音识别、语音合成等技术在各个领域得到了广泛应用。
为了让学生紧跟时代步伐,提高自身竞争力,我校开设了大学生语音实训课程,旨在让学生在实践中学以致用,掌握语音技术的基本原理和应用。
2. 实训目标(1)使学生了解语音技术的基本概念和发展趋势;(2)使学生掌握语音信号处理的基本方法;(3)使学生能够运用所学知识进行简单的语音识别和语音合成;(4)培养学生的团队合作精神和创新能力。
三、实训内容与方法1. 实训内容(1)语音信号采集与预处理;(2)语音特征提取;(3)语音识别;(4)语音合成;(5)语音应用系统开发。
2. 实训方法(1)课堂讲授:教师讲解语音技术的基本原理、方法和应用;(2)实验操作:学生按照实验指导书进行实验操作,巩固所学知识;(3)小组讨论:学生分组讨论实验过程中遇到的问题,共同解决问题;(4)项目实践:学生根据所学知识,完成一个小型语音应用系统开发。
四、实训过程与成果1. 实训过程在实训过程中,我们按照教学计划,认真学习了语音技术的基本原理和方法。
在实验操作环节,我们亲自动手,不断尝试和调整参数,掌握了语音信号处理的基本方法。
在项目实践环节,我们分工合作,完成了一个小型语音应用系统开发。
2. 实训成果(1)学生掌握了语音信号处理的基本方法,能够对语音信号进行采集、预处理、特征提取等操作;(2)学生能够运用所学知识进行简单的语音识别和语音合成;(3)学生具备了一定的项目开发能力,能够完成小型语音应用系统的开发。
五、实训体会与反思1. 体会(1)实训使我认识到理论知识与实际应用相结合的重要性;(2)实训过程中,我学会了独立思考、解决问题的能力;(3)实训让我体会到团队合作的力量,培养了良好的团队精神。
嵌入式语音识别实训报告
一、实训背景随着人工智能技术的不断发展,嵌入式语音识别技术在我国逐渐得到广泛应用。
为了深入了解嵌入式语音识别技术,提高自身实践能力,我们开展了嵌入式语音识别实训。
二、实训目标1. 熟悉嵌入式语音识别系统的工作原理;2. 掌握嵌入式语音识别系统的硬件与软件设计;3. 学会使用C语言进行嵌入式语音识别系统的编程;4. 培养团队合作精神和实践创新能力。
三、实训内容1. 嵌入式语音识别系统概述嵌入式语音识别系统主要包括以下几个部分:(1)麦克风:负责采集语音信号;(2)A/D转换器:将模拟语音信号转换为数字信号;(3)处理器:负责语音信号的预处理、特征提取和识别;(4)识别模块:根据特征参数进行语音识别;(5)执行模块:根据识别结果执行相应的操作。
2. 硬件设计(1)开发板:选用STM32F103C8T6开发板;(2)麦克风模块:选用INMP441麦克风模块;(3)A/D转换器:选用ADC12位分辨率;(4)处理器:选用ARM Cortex-M3内核的32位处理器;(5)识别模块:选用LD3320语音识别芯片。
3. 软件设计(1)语音信号预处理:包括降噪、去噪、静音检测等;(2)特征提取:采用MFCC(Mel-frequency Cepstral Coefficients)特征提取方法;(3)语音识别:采用LD3320芯片内置的语音识别算法;(4)执行模块:根据识别结果执行相应的操作。
4. 编程实践(1)使用C语言编写嵌入式语音识别系统程序;(2)实现语音信号的预处理、特征提取和识别;(3)实现执行模块的功能。
四、实训过程1. 硬件搭建(1)将麦克风模块连接到开发板;(2)连接A/D转换器;(3)连接处理器和识别模块。
2. 软件编程(1)编写语音信号预处理程序;(2)编写特征提取程序;(3)编写语音识别程序;(4)编写执行模块程序。
3. 调试与优化(1)对程序进行调试,确保程序正常运行;(2)根据实际情况对程序进行优化,提高识别率和稳定性。
语音识别系统实习报告
一、实习背景随着人工智能技术的不断发展,语音识别技术逐渐成为我国信息技术领域的重要研究方向之一。
语音识别系统作为人工智能技术的重要组成部分,具有广泛的应用前景。
为了更好地了解语音识别系统的设计原理和应用场景,我参加了为期一个月的语音识别系统实习。
二、实习目标1. 熟悉语音识别系统的基本原理和关键技术;2. 掌握语音识别系统的开发流程和实验方法;3. 能够运用所学知识设计和实现一个简单的语音识别系统;4. 了解语音识别技术在实际应用中的优势和挑战。
三、实习内容1. 语音识别基本原理实习期间,我学习了语音识别的基本原理,包括声学模型、语言模型和声学模型。
声学模型用于将语音信号转换为声学特征,语言模型用于生成可能的词汇序列,声学模型则用于匹配声学特征和词汇序列。
2. 语音信号预处理在语音识别系统中,语音信号预处理是一个非常重要的环节。
实习期间,我学习了语音信号的预处理方法,包括静音检测、降噪、分帧和倒谱变换等。
3. 语音识别算法实习期间,我了解了多种语音识别算法,如隐马尔可夫模型(HMM)、支持向量机(SVM)和深度神经网络(DNN)等。
通过对这些算法的学习,我掌握了它们的原理和特点。
4. 实验设计与实现在实习过程中,我设计并实现了一个简单的语音识别系统。
该系统采用HMM算法进行语音识别,并使用Matlab进行编程实现。
系统主要包括以下步骤:(1)语音信号预处理:对采集到的语音信号进行降噪、分帧和倒谱变换等处理;(2)声学模型训练:根据预处理后的语音数据,训练声学模型;(3)语言模型训练:根据词汇表和声学模型,训练语言模型;(4)语音识别:将待识别语音信号输入系统,通过声学模型和语言模型进行匹配,得到识别结果。
5. 实验结果与分析在实验过程中,我收集了不同说话人、不同环境和不同语音内容的语音数据,对实验结果进行了分析。
结果表明,所设计的语音识别系统在大部分情况下能够实现较好的识别效果。
四、实习收获1. 理论知识:通过实习,我对语音识别系统的基本原理和关键技术有了更深入的了解,为今后的学习和研究打下了坚实的基础。
DSP语音识别实验报告
DSP课程设计实验报告语音识别院(系):电子信息工程学院自动化系设计人员:李彬学号:07212072设计人员:宋淦泉学号:07212077评语:指导教师签字:日期:目录一、设计任务书1、实验概述2、实验目的二、设计内容三、设计方案、算法原理说明1、设计步骤2、算法原理说明四、程序设计、调试与结果分析1、算法流程图2、主程序3、测试过程及结果分析五、设计(安装)与调试的体会1、编程及程序运行中遇到的问题及解决办法2、本次实验的心得体会六、参考文献一、设计任务书实验概述:语言是人类特有的功能,声音是人类最常用的工具。
通过语音传递信息是人类最重要最有效最常用和最方便的信息交换形式。
语音信号是人类进行思想沟通和情感交流的最主要的途径。
让计算机能听懂人类的语言,是自计算机诞生以来人类梦寐以求的想法。
在本实验中,将针对DTW算法,实现对最简单的单音信号进行语音识别的问题。
语音识别以语音为研究对象,它是语音信号处理的一个重要研究方向,是模式识别的一个分支,涉及到生理学、心理学、语言学、计算机科学以及信号处理等诸多领域,甚至还涉及到人的体态语言(例如人在说话时的表情、手势等细微动作可帮助对方理解),其最终目标是实现人与机器进行自然语言通信。
语音识别技术主要包括特征提取技术、模式匹配准则及模训练技术三个方面。
此外,还涉及到语音识别单元的选取。
语音识别系统的研究涉及微机技术、人工智能、数字信号处理、模式识别、声学、语言学和认知科学等多种学科领域,是一个多学科综合性研究领域。
语音识别系统的分类---根据对说话人说话方式的要求,可以分为孤立字(词)语音识别系统、连接字语音识别系统以及连续字语音识别系统。
根据对说话人的依赖程度可以分为特定人和非特定人语音识别系统。
根据词汇量大小,可以分为小词汇量、中等词汇量、大词汇量以及无限量词汇量语音识别系统。
一般来说,语音识别的方法有三种:基于声道模型和语音知识的方法、模版匹配的方法以及利用人工神经网络的方法。
大学语音实训报告总结
一、引言随着科技的飞速发展,语音技术已成为现代通信、人工智能等领域的重要工具。
为了提高大学生的语音识别、处理和表达技能,我校特开设了语音实训课程。
经过一段时间的实训,我对语音技术有了更深入的了解,以下是我对本次实训的总结。
二、实训内容本次实训主要包括以下内容:1. 语音基础知识:学习了语音的产生、传播和接收原理,了解了语音信号的数字化处理方法。
2. 语音识别技术:掌握了语音识别的基本原理,学习了常用的语音识别算法和系统。
3. 语音合成技术:了解了语音合成的原理,学习了基于规则和统计的语音合成方法。
4. 语音增强与降噪:学习了语音增强和降噪的基本方法,提高了语音质量。
5. 语音信号处理:掌握了语音信号处理的基本方法,如滤波、压缩、去噪等。
三、实训过程实训过程中,我们通过以下方式进行学习和实践:1. 课堂讲授:教师系统讲解语音技术的基本原理和常用方法。
2. 实验操作:在实验室进行语音识别、合成、增强与降噪等实验操作。
3. 小组讨论:分组讨论实训过程中遇到的问题,共同寻找解决方案。
4. 课后自学:通过查阅资料、上网学习等方式,加深对语音技术的理解。
四、实训收获通过本次实训,我收获颇丰:1. 理论知识:对语音技术的基本原理、算法和系统有了全面的认识。
2. 实践技能:掌握了语音识别、合成、增强与降噪等实践技能。
3. 团队合作:在小组讨论和实验操作中,提高了团队合作能力。
4. 自主学习:学会了通过查阅资料、上网学习等方式,自主学习新知识。
五、实训反思1. 理论基础薄弱:在实训过程中,发现自己在语音基础知识方面存在薄弱环节,需要加强学习。
2. 实践经验不足:在实验操作过程中,由于实践经验不足,导致部分实验效果不理想。
3. 时间安排不合理:在实训过程中,时间安排不够合理,影响了实训效果。
六、建议与展望1. 加强基础知识学习:在今后的学习中,要加强语音基础知识的学习,为后续实训打下坚实基础。
2. 提高实践能力:多参加实验操作,积累实践经验,提高解决实际问题的能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语音识别系统实验报告专业班级:信息安全学号:姓名:目录一、设计任务及要求 (1)二、语音识别的简单介绍语者识别的概念 (2)特征参数的提取 (3)用矢量量化聚类法生成码本 (3)的说话人识别 (4)三、算法程序分析函数关系 (4)代码说明 (5)函数mfcc (5)函数disteu (5)函数vqlbg (6)函数test (6)函数testDB (7)函数train (8)函数melfb (8)四、演示分析 (9)五、心得体会 (11)附:GUI程序代码 (12)v1.0 可编辑可修改一、设计任务及要求实现语音识别功能。
二、语音识别的简单介绍基于VQ的说话人识别系统,矢量量化起着双重作用。
在训练阶段,把每一个说话者所提取的特征参数进行分类,产生不同码字所组成的码本。
在识别(匹配)阶段,我们用VQ方法计算平均失真测度(本系统在计算距离d时,采用欧氏距离测度),从而判断说话人是谁。
语音识别系统结构框图如图1所示。
图1 语音识别系统结构框图语者识别的概念语者识别就是根据说话人的语音信号来判别说话人的身份。
语音是人的自然属性之一,由于说话人发音器官的生理差异以及后天形成的行为差异,每个人的语音都带有强烈的个人色彩,这就使得通过分析语音信号来识别说话人成为可能。
用语音来鉴别说话人的身份有着许多独特的优点,如语音是人的固有的特征,不会丢失或遗忘;语音信号的采集方便,系统设备成本低;利用电话网络还可实现远程客户服务等。
因此,近几年来,说话人识别越来越多的受到人们的重视。
与其他生物识别技术如指纹识别、手形识别等相比较,说话人识别不仅使用方便,而且属于非接触性,容易被用户接受,并且在已有的各种生物特征识别技术中,是唯一可以用作远程验证的识别技术。
因此,说话人识别的应用前景非常广泛:今天,说话人识别技术已经关系到多学科的研究领域,不同领域中的进步都对说话人识别的发展做出了贡献。
说话人识别技术是集声学、语言学、计算机、信息处理和人工智能等诸多领域的一项综合技术,应用需求将十分广阔。
在吃力语音信号的时候如何提取信号中关键的成分尤为重要。
语音信号的特征参数的好坏直接导致了辨别的准确性。
特征参数的提取对于特征参数的选取,我们使用mfcc的方法来提取。
MFCC参数是基于人的听觉特性利用人听觉的屏蔽效应,在Mel标度频率域提取出来的倒谱特征参数。
MFCC参数的提取过程如下:1. 对输入的语音信号进行分帧、加窗,然后作离散傅立叶变换,获得频谱分布信息。
设语音信号的DFT为:10,)()(112-≤≤=∑-=-N k en x k X N n Nnk j a π(1)其中式中x(n)为输入的语音信号,N 表示傅立叶变换的点数。
2. 再求频谱幅度的平方,得到能量谱。
3. 将能量谱通过一组Mel 尺度的三角形滤波器组。
我们定义一个有M 个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器,中心频率为f(m),m=1,2,3,···,M 本系统取M=100。
4. 计算每个滤波器组输出的对数能量。
N 12a m k 1S(m)ln(|(k)|H (k)),0m M 1X -==≤≤-∑ (2)其中m H (k)为三角滤波器的频率响应。
5. 经过离散弦变换(DCT )得到MFCC 系数。
10C(n)()cos((0.5/)),(3)01M m S m n m m n N π-==-≤≤-∑MFCC 系数个数通常取20—30,常常不用0阶倒谱系数,因为它反映的是频谱能量,故在一般识别系统中,将称为能量系数,并不作为倒谱系数,本系统选取20阶倒谱系数。
用矢量量化聚类法生成码本我们将每个待识的说话人看作是一个信源,用一个码本来表征。
码本是从该说话人的训练序列中提取的MFCC 特征矢量聚类而生成。
只要训练的序列足够长,可认为这个码本有效地包含了说话人的个人特征,而与讲话的内容无关。
本系统采用基于分裂的LBG 的算法设计VQ 码本,(1,2,,)k X k K =⋅⋅⋅为训练序列,B 为码本。
具体实现过程如下: 1. 取提取出来的所有帧的特征矢量的型心(均值)作为第一个码字矢量B1。
2. 将当前的码本Bm 根据以下规则分裂,形成2m 个码字。
)1()1({εε-=+=-+m m m m B B B B (4) 其中m 从1变化到当前的码本的码字数,ε是分裂时的参数,本文ε=。
3. 根据得到的码本把所有的训练序列(特征矢量)进行分类,然后按照下面两个公式计算训练矢量量化失真量的总和[]n D 以及相对失真(n 为迭代次数,初始n=0,[1]D -=∞,B 为当前的码书),若相对失真小于某一阈值ε,迭代结束,当前的码书就是设计好的2m 个码字的码书,转5。
否则,转下一步。
量化失真量和:()1min (,)Kn k k Dd X B ==∑ (5)相对失真:(1)||n n nD D D -- (6)4. 重新计算各个区域的新型心,得到新的码书,转3。
5. 重复2 ,3 和4步,直到形成有M 个码字的码书(M 是所要求的码字数),其中D0=10000。
VQ 的说话人识别设是未知的说话人的特征矢量1{,,}T X X ,共有T 帧是训练阶段形成的码书,表示码书第m 个码字,每一个码书有M 个码字。
再计算测试者的平均量化失真D ,并设置一个阈值,若D 小于此阈值,则是原训练者,反之则认为不是原训练者。
∑=≤≤=11]min[/1),(j Mm m j T D B xd (7)三、 算法程序分析在具体的实现过程当中,采用了matlab 软件来帮助完成这个项目。
在matlab 中主要由采集,分析,特征提取,比对几个重要部分。
以下为在实际的操作中,具体用到得函数关系和作用一一列举在下面。
函数关系主要有两类函数文件和在调用获取训练录音的vq 码本,而调用获取单个录音的mel 倒谱系数,接着调用将能量谱通过一组Mel 尺度的三角形滤波器组。
在函数文件中调用计算训练录音(提供vq 码本)与测试录音(提供mfcc )mel 倒谱系数的距离,即判断两声音是否为同一录音者提供。
调用获取单个录音的mel 倒谱系数。
调用将能量谱通过一组Mel 尺度的三角形滤波器组。
具体代码说明 函数mffc:function r = mfcc(s, fs)---m = 100;n = 256;l = length(s);nbFrame = floor((l - n) / m) + 1; %沿-∞方向取整for i = 1:nfor j = 1:nbFrameM(i, j) = s(((j - 1) * m) + i); %对矩阵M赋值endendh = hamming(n); %加 hamming 窗,以增加音框左端和右端的连续性M2 = diag(h) * M;for i = 1:nbFrameframe(:,i) = fft(M2(:, i)); %对信号进行快速傅里叶变换FFTendt = n / 2;tmax = l / fs;m = melfb(20, n, fs); %将上述线性频谱通过Mel 频率滤波器组得到Mel 频谱,下面在将其转化成对数频谱n2 = 1 + floor(n / 2);z = m * abs(frame(1:n2, :)).^2;r = dct(log(z)); %将上述对数频谱,经过离散余弦变换(DCT)变换到倒谱域,即可得到Mel 倒谱系数(MFCC参数)函数disteu---计算测试者和模板码本的距离function d = disteu(x, y)[M, N] = size(x); %音频x赋值给【M,N】[M2, P] = size(y); %音频y赋值给【M2,P】if (M ~= M2)error('不匹配!') %两个音频时间长度不相等endd = zeros(N, P);if (N < P)%在两个音频时间长度相等的前提下copies = zeros(1,P);for n = 1:Nd(n,:) = sum((x(:, n+copies) - y) .^2, 1);endelsecopies = zeros(1,N);for p = 1:Pd(:,p) = sum((x - y(:, p+copies)) .^2, 1)'; end%%成对欧氏距离的两个矩阵的列之间的距离endd = d.^;函数vqlbg---该函数利用矢量量化提取了音频的vq码本function r = vqlbg(d,k)e = .01;r = mean(d, 2);dpr = 10000;for i = 1:log2(k)r = [r*(1+e), r*(1-e)];while (1 == 1)z = disteu(d, r);[m,ind] = min(z, [], 2);t = 0;for j = 1:2^ir(:, j) = mean(d(:, find(ind == j)), 2);x = disteu(d(:, find(ind == j)), r(:, j));for q = 1:length(x)t = t + x(q);endendif (((dpr - t)/t) < e)break;elsedpr = t;endendend函数testfunction finalmsg = test(testdir, n, code)for k = 1:n % read test sound file of each speaker file = sprintf('%ss%', testdir, k);[s, fs] = wavread(file);v = mfcc(s, fs); % 得到测试人语音的mel倒谱系数distmin = 4; %阈值设置处% 就判断一次,因为模板里面只有一个文件d = disteu(v, code{1}); %计算得到模板和要判断的声音之间的“距离”dist = sum(min(d,[],2)) / size(d,1); %变换得到一个距离的量%测试阈值数量级msgc = sprintf('与模板语音信号的差值为:%10f ', dist);disp(msgc);%此人匹配if dist <= distmin %一个阈值,小于阈值,则就是这个人。
msg = sprintf('第%d位说话者与模板语音信号匹配,符合要求!\n', k);finalmsg = '此位说话者符合要求!'; %界面显示语句,可随意设定disp(msg);end%此人不匹配if dist > distminmsg = sprintf('第%d位说话者与模板语音信号不匹配,不符合要求!\n', k);finalmsg = '此位说话者不符合要求!'; %界面显示语句,可随意设定disp(msg);endend函数testDB这个函数实际上是对数据库一个查询,根据测试者的声音,找相应的文件,并且给出是谁的提示function testmsg = testDB(testdir, n, code)nameList={'1','2','3','4','5','6','7','8','9' }; %这个是我们要识别的9个数for k = 1:n % 数据库中每一个说话人的特征file = sprintf('%ss%', testdir, k); %找出文件的路径[s, fs] = wavread(file);v = mfcc(s, fs); % 对找到的文件取mfcc变换distmin = inf;k1 = 0;for l = 1:length(code)d = disteu(v, code{l});dist = sum(min(d,[],2)) / size(d,1);if dist < distmindistmin = dist;%%这里和test函数里面一样但多了一个具体语者的识别k1 = l;endendmsg=nameList{k1}msgbox(msg);end函数train---该函数就是对音频进行训练,也就是提取特征参数function code = train(traindir, n)k = 16; % number of centroids requiredfor i = 1:n % 对数据库中的代码形成码本file = sprintf('%ss%', traindir, i);disp(file);[s, fs] = wavread(file);v = mfcc(s, fs); % 计算 MFCC's 提取特征特征,返回值是Mel倒谱系数,是一个log的dct得到的 code{i} = vqlbg(v, k); % 训练VQ码本通过矢量量化,得到原说话人的VQ码本end函数melfb---确定矩阵的滤波器function m = melfb(p, n, fs)f0 = 700 / fs;fn2 = floor(n/2);lr = log(1 + f0) / (p+1);% convert to fft bin numbers with 0 for DC termbl = n * (f0 * (exp([0 1 p p+1] * lr) - 1));直接转换为FFT的数字模型b1 = floor(bl(1)) + 1;b2 = ceil(bl(2));b3 = floor(bl(3));b4 = min(fn2, ceil(bl(4))) - 1;pf = log(1 + (b1:b4)/n/f0) / lr;fp = floor(pf);pm = pf - fp;r = [fp(b2:b4) 1+fp(1:b3)];c = [b2:b4 1:b3] + 1;v = 2 * [1-pm(b2:b4) pm(1:b3)];m = sparse(r, c, v, p, 1+fn2);四、演示分析我们的功能分为两部分:对已经保存的9个数字的语音进行辨别和实时的判断说话人说的是否为一个数.在前者的实验过程中,先把9个数字的声音保存成wav的格式,放在一个文件夹中,作为一个检测的数据库.然后对检测者实行识别,系统给出提示是哪个数字.在第二个功能中,实时的录取一段说话人的声音作为模板,提取mfcc特征参数,随后紧接着进行遇着识别,也就是让其他人再说相同的话,看是否是原说话者.实验过程及具体功能如下:先打开Matlab 使Current Directory为录音及程序所所在的文件夹再打开文件“”,点run运行,打开enter界面,点击“进入”按钮进入系统。