【语音识别】基于匹配滤波器语音识别附matlab代码

简介: 【语音识别】基于匹配滤波器语音识别附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

匹配滤波器的原理

匹配滤波(matched filtering)是最佳滤波的一种,当输入信号具有某一特殊波形时,其输出达到最大

在数字通信系统中,滤波器是其中重要部件之一,滤波器特性的选择直接影响数字信号的恢复。在数字信号接收中,滤波器的作用有两个方面,使滤波器输出有用信号成分尽可能强;抑制信号带外噪声,使滤波器输出噪声成分尽可能小,减小噪声对信号判决的影响。

对最佳线性滤波器的设计有两种准则:

一种是使滤波器输出的信号波形与发送信号波形之间的均方误差最小,由此而导出的最佳线性滤波器称为维纳滤波器;

另一种是使滤波器输出信噪比在某一特定时刻达到最大,由此而导出的最佳线性滤波器称为匹配滤波器

匹配滤波器对信号做的两种处理

1)去掉信号相频函数中的任何非线性部分,因而在某一时刻可使信号中所有频率分量都在输出端同相叠加而形成峰值。

2)是按照信号的扶贫特性对输入波形进行加权,一边最有效地接收信号能量而一直干扰的输出功率。

⛄ 部分代码

function [x1,x2] = vad(x)


%幅度归一化到[-1,1]

x = double(x);

x = x / max(abs(x));


%常数设置

FrameLen = 240;

FrameInc = 80;


amp1 = 10;

amp2 = 2;

zcr1 = 10;

zcr2 = 5;


maxsilence = 8;  % 6*10ms  = 30ms

minlen  = 15;    % 15*10ms = 150ms

status  = 0;

count   = 0;

silence = 0;


%计算过零率

tmp1  = enframe(x(1:end-1), FrameLen, FrameInc);

tmp2  = enframe(x(2:end)  , FrameLen, FrameInc);

signs = (tmp1.*tmp2)<0;

diffs = (tmp1 -tmp2)>0.02;

zcr   = sum(signs.*diffs, 2);


%计算短时能量

amp = sum(abs(enframe(filter([1 -0.9375], 1, x), FrameLen, FrameInc)), 2);


%调整能量门限

amp1 = min(amp1, max(amp)/4);

amp2 = min(amp2, max(amp)/8);


%开始端点检测

x1 = 0;

x2 = 0;

for n=1:length(zcr)

  goto = 0;

  switch status

  case {0,1}                   % 0 = 静音, 1 = 可能开始

     if amp(n) > amp1          % 确信进入语音段

        x1 = max(n-count-1,1);

        status  = 2;

        silence = 0;

        count   = count + 1;

     elseif amp(n) > amp2 | ... % 可能处于语音段

            zcr(n) > zcr2

        status = 1;

        count  = count + 1;

     else                       % 静音状态

        status  = 0;

        count   = 0;

     end

  case 2,                       % 2 = 语音段

     if amp(n) > amp2 | ...     % 保持在语音段

        zcr(n) > zcr2

        count = count + 1;

     else                       % 语音将结束

        silence = silence+1;

        if silence < maxsilence % 静音还不够长,尚未结束

           count  = count + 1;

        elseif count < minlen   % 语音长度太短,认为是噪声

           status  = 0;

           silence = 0;

           count   = 0;

        else                    % 语音结束

           status  = 3;

        end

     end

  case 3,

     break;

  end

end  


count = count-silence/2;

x2 = x1 + count -1;

⛄ 运行结果

⛄ 参考文献

[1] 韦春丽,霍春宝.基于DTW的语音识别在MATLAB中的实现方法浅析[J].数字技术与应用, 2011(12):2.DOI:CNKI:SUN:SZJT.0.2011-12-123.

[2] 张培玲,成凌飞.基于MATLAB的汉语数字语音识别系统[J].机械管理开发, 2011(4):3.DOI:10.3969/j.issn.1003-773X.2011.04.099.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料
相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
191 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
124 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
71 2
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
88 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
5月前
|
API 语音技术 Python
【python的魅力】:教你如何用几行代码实现文本语音识别
【python的魅力】:教你如何用几行代码实现文本语音识别
|
5月前
|
存储 算法 计算机视觉
m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序
在Vivado 2019.2平台上开发的系统,展示了数字低通滤波器和频谱分析的FPGA实现。仿真结果显示滤波效果良好,与MATLAB仿真结果一致。设计基于FPGA的FIR滤波器,利用并行处理和流水线技术提高效率。频谱分析通过离散傅里叶变换实现。提供了Verilog核心程序以示例模块工作原理。
48 4
|
4月前
|
语音技术 开发者 Python
语音识别,python运行H ~W~,要使用英符,执行Python的流程是输入Python,回车,解释器的两大功能,翻译代码,提交计算机运算,多行代码运行,写一个py文件,pycharm安
语音识别,python运行H ~W~,要使用英符,执行Python的流程是输入Python,回车,解释器的两大功能,翻译代码,提交计算机运算,多行代码运行,写一个py文件,pycharm安
基于高通滤波器的ECG信号滤波及心率统计matlab仿真
**摘要:** 使用MATLAB2022a,实施高通滤波对ECG信号预处理,消除基线漂移,随后分析心率。系统仿真展示效果,核心代码涉及IIR HPF设计,如二阶滤波器的差分方程。通过滤波后的信号,检测R波计算RR间期,从而得到心率。滤波与R波检测是心电生理研究的关键步骤,平衡滤波性能与计算资源是设计挑战。
|
6月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
6月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度