




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录目录 一 设计任务及要求 1 二 语音识别的简单介绍 2 1 语者识别的概念 2 2 2 特征参数的提取 3 2 3 用矢量量化聚类法生成码本 3 2 4VQ 的说话人识别 4 三 算法程序分析 3 1 函数关系 4 3 2 代码说明 5 3 2 1 函数 mfcc 5 3 2 2 函数 disteu 5 3 2 3 函数 vqlbg 6 3 2 4 函数 test 6 3 2 5 函数 testDB 7 3 2 6 函数 train 8 3 2 7 函数 melfb 8 四 演示分析 9 五 心得体会 11 附 GUI 程序代码 12 1 一 一 设计任务及要求设计任务及要求 用 MATLAB 实现简单的语音识别功能 具体设计要求如下 用 MATLAB 实现简单的数字 1 9 的语音识别功能 二 二 语音识别的简单介绍语音识别的简单介绍 基于 VQ 的说话人识别系统 矢量量化起着双重作用 在训练阶段 把每一个 说话者所提取的特征参数进行分类 产生不同码字所组成的码本 在识别 匹配 阶 段 我们用 VQ 方法计算平均失真测度 本系统在计算距离 d 时 采用欧氏距离 测度 从而判断说话人是谁 语音识别系统结构框图如图 1 所示 图 1 语音识别系统结构框图 2 12 1 语者识别的概念语者识别的概念 语者识别就是根据说话人的语音信号来判别说话人的身份 语音是人的自 然属性之一 由于说话人发音器官的生理差异以及后天形成的行为差异 每个 人的语音都带有强烈的个人色彩 这就使得通过分析语音信号来识别说话人成 为可能 用语音来鉴别说话人的身份有着许多独特的优点 如语音是人的固有 的特征 不会丢失或遗忘 语音信号的采集方便 系统设备成本低 利用电话 网络还可实现远程客户服务等 因此 近几年来 说话人识别越来越多的受到 人们的重视 与其他生物识别技术如指纹识别 手形识别等相比较 说话人识 别不仅使用方便 而且属于非接触性 容易被用户接受 并且在已有的各种生 物特征识别技术中 是唯一可以用作远程验证的识别技术 因此 说话人识别 的应用前景非常广泛 今天 说话人识别技术已经关系到多学科的研究领域 不同领域中的进步都对说话人识别的发展做出了贡献 说话人识别技术是集声 学 语言学 计算机 信息处理和人工智能等诸多领域的一项综合技术 应用 需求将十分广阔 在吃力语音信号的时候如何提取信号中关键的成分尤为重要 语音信号的特征参数的好坏直接导致了辨别的准确性 2 2 22 2 特征参数的提取特征参数的提取 对于特征参数的选取 我们使用 mfcc 的方法来提取 MFCC 参数是基于人的 听觉特性利用人听觉的屏蔽效应 在 Mel 标度频率域提取出来的倒谱特征参数 MFCC 参数的提取过程如下 1 对输入的语音信号进行分帧 加窗 然后作离散傅立叶变换 获得频谱 分布信息 设语音信号的 DFT 为 1 1 0 1 1 2 NkenxkX N n N nkj a 其中式中 x n 为输入的语音信号 N 表示傅立叶变换的点数 2 再求频谱幅度的平方 得到能量谱 3 将能量谱通过一组Mel尺度的三角形滤波器组 我们定义一个有 M 个滤波器的滤波器组 滤波器的个数和临界带的个数相近 采用的滤波器为三角滤波器 中心频率为 f m m 1 2 3 M 本系统取 M 100 4 计算每个滤波器组输出的对数能量 2 N 1 2 am k 1 S m ln k H k 0mM 1 X 其中为三角滤波器的频率响应 m H k 5 经过离散弦变换 DCT 得到MFCC系数 1 0 C n cos 0 5 3 01 M m S mn mm nN MFCC 系数个数通常取 20 30 常常不用 0 阶倒谱系数 因为它反映的是频谱 能量 故在一般识别系统中 将称为能量系数 并不作为倒谱系数 本系统选 取 20 阶倒谱系数 2 32 3 用矢量量化聚类法生成码本用矢量量化聚类法生成码本 我们将每个待识的说话人看作是一个信源 用一个码本来表征 码本是从 该说话人的训练序列中提取的 MFCC 特征矢量聚类而生成 只要训练的序列足够 长 可认为这个码本有效地包含了说话人的个人特征 而与讲话的内容无关 本系统采用基于分裂的 LBG 的算法设计 VQ 码本 为训练序 1 2 k XkK 列 B 为码本 具体实现过程如下 1 取提取出来的所有帧的特征矢量的型心 均值 作为第一个码字矢量B1 2 将当前的码本Bm根据以下规则分裂 形成2m个码字 3 4 1 1 mm mm BB BB 其中 m 从 1 变化到当前的码本的码字数 是分裂时的参数 本文 0 01 3 根据得到的码本把所有的训练序列 特征矢量 进行分类 然后按照下面 两个公式计算训练矢量量化失真量的总和以及相对失真 n为迭代次数 初 n D 始n 0 B为当前的码书 若相对失真小于某一阈值 迭代结束 1 D 当前的码书就是设计好的2m个码字的码书 转 否则 转下一步 量化失真量和 5 1 min K n k k Dd XB 相对失真 6 1 nn n DD D 4 重新计算各个区域的新型心 得到新的码书 转 3 5 重复 和 步 直到形成有 M 个码字的码书 M 是所要求的码字数 其中 D0 10000 2 42 4 VQVQ 的说话人识别的说话人识别 设是未知的说话人的特征矢量 共有 T 帧是训练阶段形成的码 1 T XX 书 表示码书第 m 个码字 每一个码书有 M 个码字 再计算测试者的平均量化 失真 D 并设置一个阈值 若 D 小于此阈值 则是原训练者 反之则认为不是 原训练者 7 1 1 min 1 j Mm mj TD Bxd 三 三 算法程序分析算法程序分析 在具体的实现过程当中 采用了 matlab 软件来帮助完成这个项目 在 matlab 中主要由采集 分析 特征提取 比对几个重要部分 以下为在实际的 操作中 具体用到得函数关系和作用一一列举在下面 3 13 1 函数关系函数关系 主要有两类函数文件 Train m 和 Test m 在 Train m 调用 Vqlbg m 获取训练录音的 vq 码本 而 Vqlbg m 调用 mfcc m 获取单个录音的 mel 倒谱系数 接着 mfcc m 调用 Melfb m 将能量谱 通过一组 Mel 尺度的三角形滤波器组 在 Test m 函数文件中调用 Disteu m 计算训练录音 提供 vq 码本 与测试 录音 提供 mfcc mel 倒谱系数的距离 即判断两声音是否为同一录音者提供 Disteu m 调用 mfcc m 获取单个录音的 mel 倒谱系数 mfcc m 调用 Melfb m 将能量谱通过一组 Mel 尺度的三角形滤波器组 3 23 2 具体代码说明具体代码说明 4 3 2 13 2 1 函数函数 mffc mffc function r mfcc s fs m 100 n 256 l length s nbFrame floor l n m 1 沿 方向取整 for i 1 n for j 1 nbFrame M i j s j 1 m i 对矩阵 M 赋值 end end h hamming n 加 hamming 窗 以增加音框左端和右端的连续性 M2 diag h M for i 1 nbFrame frame i fft M2 i 对信号进行快速傅里叶变换 FFT end t 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 参数 3 2 23 2 2 函数函数 disteudisteu 计算测试者和模板码本的距离 function d disteu x y M N size x 音频 x 赋值给 M N M2 P size y 音频 y 赋值给 M2 P if M M2 error 不匹配 两个音频时间长度不相等 end d zeros N P if N P 在两个音频时间长度相等的前提下 copies zeros 1 P for n 1 N d n sum x n copies y 2 1 end else copies zeros 1 N for p 1 P d p sum x y p copies 2 1 5 end 成对欧氏距离的两个矩阵的列之间的距离 end d d 0 5 3 2 33 2 3 函数函数 vqlbgvqlbg 该函数利用矢量量化提取了音频的 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 i r j mean d find ind j 2 x disteu d find ind j r j for q 1 length x t t x q end end if dpr t t e break else dpr t end end end 3 2 43 2 4 函数函数 testtest function finalmsg test testdir n code for k 1 n read test sound file of each speaker file sprintf ss d wav 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 变换得到一个距离的量 6 测试阈值数量级 msgc sprintf 与模板语音信号的差值为 10f dist disp msgc 此人匹配 if dist distmin msg sprintf 第 d 位说话者与模板语音信号不匹配 不符合要 求 n k finalmsg 此位说话者不符合要求 界面显示语句 可随 意设定 disp msg end end 3 2 53 2 5 函数函数 testDBtestDB 这个函数实际上是对数据库一个查询 根据测试者的声音 找相应的文件 并且给 出是谁的提示 function testmsg testDB testdir n code nameList 1 2 3 4 5 6 7 8 9 这个是我们要识别的9个数 for k 1 n 数据库中每一个说话人的特征 file sprintf ss d wav 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 distmin distmin dist 这里和test函数里面一样 但多了一个具体语 者的识别 7 k1 l end end msg nameList k1 msgbox msg end 3 2 63 2 6 函数函数 traintrain 该函数就是对音频进行训练 也就是提取特征参数 function code train traindir n k 16 number of centroids required for i 1 n 对数据库中的代码形成码本 file sprintf ss d wav 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 3 2 73 2 7 函数函数 melfbmelfb 确定矩阵的滤波器 function m melfb p n fs f0 700 fs fn2 floor n 2 lr log 1 0 5 f0 p 1 convert to fft bin numbers with 0 for DC term bl 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 8 四 四 演示分析演示分析 我们的功能分为两部分 对已经保存的 9 个数字的语音进行辨别和实时的 判断说话人说的是否为一个数 在前者的实验过程中 先把 9 个数字的声音保存 成 wav 的格式 放在一个文件夹中 作为一个检测的数据库 然后对检测者实行识 别 系统给出提示是哪个数字 在第二个功能中 实时的录取一段说话人的声音作为模板 提取 mfcc 特征 参数 随后紧接着进行遇着识别 也就是让其他人再说相同的话 看是否是原说话 者 实验过程及具体功能如下实验过程及具体功能如下 先打开 Matlab 使 Current Directory 为录音及程序所所在的文件夹 再打开文件 enter m 点 run 运行 打开 enter 界面 点击 进入 按 钮进入系统 注 文件包未封装完毕 目前只能通过此方式打开运行 如下 图 figure1 figure1figure1 9 在对数据库中已有的语者进行识别模块在对数据库中已有的语者进行识别模块 选择载入语音库语音个数 点击语音库录制模版进行已存语音信息的提取 点击录音 test 进行现场录音 点击语者判断进行判断数字 并显示出来 在实时语者识别模块在实时语者识别模块 点击实时录制模板上的 录音 train 按钮 是把新语者的声音以 wav 格 式存放在 实时模板 文件夹中 接着点击 实时录制模板 把新的模板提取 特征值 随后点击实时语者识别模板上的 录音 train 按钮 是把语者的声音 以 wav 格式存放在 测试 文件夹中 再点击 实时语者识别 在对测得的声 音提取特征值的同时 和实时模板进行比对 然后得出是否是实时模板中的语 者 另外面板上的播放按钮都是播放相对应左边录取的声音 想要测量多次 只要接着录音 自动保存 然后程序比对音频就可以 退出只要点击菜单 File Exit 退出程序 10 程序运行截图 程序运行截图 fig 2fig 2 运行后系统界面 运行后系统界面 五 五 心得体会心得体会 实验表明 该系统能较好地进行语音的识别 同时 基于矢量量化技术 的语音识别系统具有分类准确 存储数据少 实时响应速度快等综合 性能好的特点 矢量量化技术在语音识别的应用方面 尤其是在孤立词语音识别系统中得 到很好的应用 特别是有限状态矢量量化技术 对于语音识别更为有效 通过这次课程设计 我对语音识别有了更加形象化的认识 也强化了 MATLAB的应用 对将来的学习奠定了基础 11 附 附 GUI 程序代码程序代码 function varargout untitled2 varargin UNTITLED2 M file for untitled2 fig UNTITLED2 by itself creates a new UNTITLED2 or raises the existing singleton H UNTITLED2 returns the handle to a new UNTITLED2 or the handle to the existing singleton UNTITLED2 CALLBACK hObject eventData handles calls the local function named CALLBACK in UNTITLED2 M with the given input arguments UNTITLED2 Property Value creates a new UNTITLED2 or raises the existing singleton Starting from the left property value pairs are applied to the GUI before untitled2 OpeningFunction gets called An unrecognized property name or invalid value makes property application stop All inputs are passed to untitled2 OpeningFcn via varargin See GUI Options on GUIDE s Tools menu Choose GUI allows only one instance to run singleton See also GUIDE GUIDATA GUIHANDLES Copyright 2002 2003 The MathWorks Inc Edit the above text to modify the response to help untitled2 Last Modified by GUIDE v2 5 08 Jun 2010 23 58 57 Begin initialization code DO NOT EDIT gui Singleton 1 gui State struct gui Name mfilename gui Singleton gui Singleton gui OpeningFcn untitled2 OpeningFcn gui OutputFcn untitled2 OutputFcn 12 gui LayoutFcn gui Callback if nargin end if nargout varargout 1 nargout gui mainfcn gui State varargin else gui mainfcn gui State varargin end End initialization code DO NOT EDIT Executes just before untitled2 is made visible function untitled2 OpeningFcn hObject eventdata handles varargin This function has no output args see OutputFcn hObject handle to figure eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA varargin command line arguments to untitled2 see VARARGIN Choose default command line output for untitled2 handles output hObject Update handles structure guidata hObject handles axes findobj tag axes13 imshow 3 jpg axes findobj tag axes12 imshow 1 jpg UIWAIT makes untitled2 wait for user response see UIRESUME uiwait handles figure1 Outputs from this function are returned to the command line function varargout untitled2 OutputFcn hObject eventdata handles varargout cell array for returning output args see VARARGOUT hObject handle to figure eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA Get default command line output from handles structure varargout 1 handles output Executes on button press in pushbutton1 function pushbutton1 Callback hObject eventdata handles hObject handle to pushbutton1 see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA Channel Str get handles popupmenu3 String Channel Number str2double Channel Str get handles popupmenu3 Value 13 global moodle moodle train 模版 Channel Number Executes on button press in pushbutton2 function pushbutton2 Callback hObject eventdata handles hObject handle to pushbutton2 see GCBO eventdata reserved to be defined in a future version of MATLAB handglobal data1 global moodle test 测试 1 moodle function Open Callback hObject eventdata handles hObject handle to Open see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA filename pathname uigetfile file get handles edits filename pathname y f b wavread file function Exit Callback hObject eventdata handles hObject handle to Exit see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA exit function About Callback hObject eventdata handles hObject handle to About see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA H 语者识别 helpdlg H help text function File Callback hObject eventdata handles hObject handle to File see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA function Edit Callback hObject eventdata handles hObject handle to Edit see GCBO eventdata reserved to be defined in a future version of MATLAB 14 handles structure with handles and user data see GUIDATA function Help Callback hObject eventdata handles hObject handle to Help see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA Executes on button press in pushbutton7 function pushbutton7 Callback hObject eventdata handles hObject handle to pushbutton7 see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA msg 请速度录音 msgbox msg clear global data1 global dataDN1 AI analoginput winsound chan addchannel AI 1 2 duration 3 1 second acquisition set AI SampleRate 8000 ActualRate get AI SampleRate set AI SamplesPerTrigger duration ActualRate set AI TriggerType Manual blocksize get AI SamplesPerTrigger Fs ActualRate start AI trigger AI data1 time abstime events getdata AI fname sprintf E Matlab语音识别系统 实时模版 s1 wav dataDN1 wden data1 heursure s one 5 sym8 denoise wavwrite data1 fname msgbox fname Executes on button press in pushbutton8 function pushbutton8 Callback hObject eventdata handles hObject handle to pushbutton8 see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA global data1 global dataDN1 sound data1 sound dataDN1 axes handles axes1 set to plot at axes1 plot data1 15 plot dataDN1 xlabel 训练采样序列 ylabel 信号幅 xlabel ylabel sym8 grid on clear Executes on button press in pushbutton9 function pushbutton9 Callback hObject eventdata handles hObject handle to pushbutton9 see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA msg 请速度录音 msgbox msg clear global data2 global dataDN2 AI analoginput winsound chan addchannel AI 1 2 duration 3 1 second acquisition set AI SampleRate 8000 ActualRate get AI SampleRate set AI SamplesPerTrigger duration ActualRate set AI TriggerType Manual blocksize get AI SamplesPerTrigger Fs ActualRate start AI trigger AI data2 time abstime events getdata AI fname sprintf E Matlab语音识别系统 测试 s1 wav dataDN1 wden data1 heursure s one 5 sym8 denoise wavwrite data2 fname msgbox fname Executes on button press in pushbutton10 function pushbutton10 Callback hObject eventdata handles hObject handle to pushbutton10 see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA global data2 global dataDN2 sound data2 sound dataDN2 axes handles axes2 set to plot at axes1 plot data2 plot dataDN2 xlabel 测试采样序列 ylabel 信号幅 16 xlabel ylabel sym8 grid on clear Executes on button press in pushbutton11 function pushbutton11 Callback hObject eventdata handles hObject handle to pushbutton11 see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA global moodle testDB 测试 1 moodle Executes on button press in pushbutton12 function pushbutton12 Callback hObject eventdata handles hObject handle to pushbutton12 see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data see GUIDATA global moodle moodle train 实时模板 1 Executes on selection change in popupmenu3 function popupmenu3 Callback hObject eventdata handles hObject handle to popupmenu3 see GCBO eventdata reserved to be defined in a future version of MATLAB handles structure
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 扫雪防冻安全培训课件
- 扩张型心肌病影像学课件
- 2025年单招文化考试试卷及答案
- 卫生工作计划集锦(35篇)
- 酿酒工大专考试试题及答案
- 工会主席考试试题及答案
- 广东中考试卷数学及答案
- 青海数学高考试卷及答案
- 恐袭事件安全培训内容课件
- 急诊科护理一级质控课件
- 《国际商务单证》课件
- 电力增容项目施工组织设计
- 2022版ISO27001信息安全管理体系基础培训课件
- 论高校思政教育宏大叙事的有效性建构
- 塔吊拆卸安全专项施工方案
- 《语言学概论》教案(完整版)
- 大件设备海运包装方案
- 输液港运用及护理
- (高级)航空油料特设维修员(三级)理论考试题库-下(判断题)
- DB3305-T 271-2023特定地域单元生态产品价值评估技术规范
- 2024年新人教版七年级上册生物全册教学课件(新版教材)
评论
0/150
提交评论