基于计算听觉场景分析的语音增强系统设计

在matlab中,语音增强的算法有很多种,其中比较常见的算法有谱减法和维纳滤波法,今天介绍一种比较少见的算法,以计算听觉场景分析为基础,采用时频掩蔽的方法进行语音增强,并进行系统设计。

计算听觉场景分析

计算听觉场景分析就是让计算机模拟人类处理声音信号的过程,可以让计算机像人类一样在复杂的语音环境中感知声音,处理声音,解析声音。

算法原理

本文提出基于计算听觉场景分析的语音增强系统,可以分为五个部分,分别为听觉外围处理、特征提取、时频单元标记、平滑处理、语音重构。

基于计算听觉场景分析的语音增强算法原理图
本文采用gammatone滤波器来模拟人的听觉系统,其时域表达式为:

g i ( t ) = { t l − 1 e x p ( − 2 π b t ) c o s ( 2 π f t ) , t ≥ 0 0 , e l s e g_i(t) = \begin{cases} t^{l-1}exp(-2\pi bt)cos(2\pi ft),t\ge0\\0\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,,else \end{cases} gi​(t)={tl−1exp(−2πbt)cos(2πft),t≥00,else​
其中l=4;b为等效矩阵带宽;f为滤波器中心频率,在80~5000Hz范围内呈准对数分布。

使用gammatone滤波器的数量越多,模拟人的听觉系统的效果越好,本文采用64个gammatone滤波器来模拟人的听觉系统

64个gammatone滤波器的频率响应图

GUI界面设计

通过设计一个GUI界面来实现对整个系统的搭建。

效果展示

部分代码展示

%%
[audioin,fs] = audioread('SA1.wav'); %获取语音数据
N = length(audioin) %音频采样点数
[noise,fn] = audioread('white.wav');
%防止噪声和音频长度不对等
if length(noise)>=Nnoise = noise(1:N);
elsezer = zeros(N-length(noise),1)noise=[noise',zer']'
end
A = 0.4  %噪声系数
audio = audioin+A*noise
g=[audioin;audio]
sound(g,fs)
%创建一个gammatoneFilterBank对象。
%滤波器组的默认频率范围是50到8000 Hz。
%超出此范围的频率会在重构信号中衰减
gammaFiltBank = gammatoneFilterBank([50,8000],64,fs)
fvtool(gammaFiltBank)
%使音频信号通过伽马通滤波器组。输出为64个通道,
audioOut = gammaFiltBank(audio);
%size(audioOut)   ans = 63488  64
%使用50 ms窗口(重叠25 ms)来计算每个频带的能量。
%使用dsp.AsyncBuffer划分信号转换成重叠窗口,然后记录每个窗口对每个信道的RMS值。
samplesPerFrame = round(0.05*fs);
samplesOverlap = round(0.025*fs);
%buffer缓冲器
buff = dsp.AsyncBuffer(numel(audio));
write(buff,audioOut.^2);sink = dsp.AsyncBuffer(numel(audio));T = N/fs;   %音频时长
num = ceil(T/0.025); %分段数%SA1.WAV 该语音信号长度约为3.968s,划分时间帧为25ms/段,共约[158.725]=159段while buff.NumUnreadSamples > 0currentFrame = read(buff,samplesPerFrame,samplesOverlap);write(sink,mean(currentFrame,1));
end
%将能量值转换为dB。绘制随时间变化的每频带能量。
gammatoneSpec = read(sink);
D = 20*log10(gammatoneSpec');
DD = D;
timeVector = ((samplesPerFrame-samplesOverlap)/fs)*(0:size(D,2)-1);
cf = getCenterFrequencies(gammaFiltBank)./1e3;
surf(timeVector,cf,D,'EdgeColor','none');
axis([timeVector(1) timeVector(end) cf(1) cf(end)]);
view([0,90])
caxis([-150,-60]);
colorbar;
%随时间变化没频带的能量
title('混合语音随时间变化每频带的能量')
xlabel('Time (s)')
ylabel('Frequency (kHz)')

本设计使用的是matlab2019b版本,因为2019b 版本自带gammatone滤波器的相关代码,低于2019b版本本代码运行不了。

基于计算听觉场景分析的语音增强系统设计相关推荐

  1. matlab 的谱相减语音增强算法的研究,基于MATLAB的谱相减语音增强算法的研究

    语音处理 谱减法 语音增加 去噪 维普资讯 http://www.wendangwang.com 第2卷第3 3期 文章编号:06- 3 8 2 0 ) 3-07 0 10 9 4 (0 6 0 2 ...

  2. 基于最小均方误差短时谱估计的语音增强

    #1 基于最小值控制的噪声估计 Cohen 和 Berdugo 提出了一种基于最小值控制的递归平均(MCRA: Minima Controlled Recursive Averageing)方法来估计 ...

  3. 基于STM32的物联网智能家居语音控制系统设计

    目录 第1章 引言 7 1.1 选题的背景及意义 7 1.2 智能家居技术的发展历程 8 1.2.1 国内智能家居技术发展情况 9 1.2.2 国外智能家居技术的发展情况 9 1.3 本课题研究目标及 ...

  4. 【信号处理】基于小波变换的语音增强matlab源码

    一.简介 语音通信是人类传播信息,进行交流时使用最多.最自然.最基本的一种手段.而这种通信中的信息载体-语音信号却是一种时变的.非平稳的信号,只有在很短的一段时间内(通常为10~30ms)才被认为是平 ...

  5. 基于小波变换的语音增强算法简单综述

    前言: 语音通信是人类传播信息,进行交流时使用最多.最自然.最基本的一种手段.而这种通信中的信息载体-语音信号却是一种时变的.非平稳的信号,只有在很短的一段时间内(通常为10~30ms)才被认为是平稳 ...

  6. ICASSP 2023 | 解密实时通话中基于 AI 的一些语音增强技术

    ‍ 动手点关注 干货不迷路 背景介绍 实时音视频通信 RTC 在成为人们生活和工作中不可或缺的基础设施后,其中所涉及的各类技术也在不断演进以应对处理复杂多场景问题,比如音频场景中,如何在多设备.多人. ...

  7. 基于边缘计算平台的分析与研究

    摘 要:边缘计算作为万物互联时代的关键技术,具有广泛的应用场景.文章首先分析了边缘计算平台在推广中面临的问题:随后从架构出发分析了典型边缘计算平台,并列举了边缘计算应用场景的需求参数,最后提出了一种边 ...

  8. AliCloudDenoise 语音增强算法:助力实时会议系统进入超清音质时代

    简介:近些年,随着实时通信技术的发展,在线会议逐渐成为人们工作中不可或缺的重要办公工具,据不完全统计,线上会议中约有 75% 为纯语音会议,即无需开启摄像头和屏幕共享功能,此时会议中的语音质量和清晰度 ...

  9. 语音增强算法的概述[转]

    选自:http://www.cnblogs.com/chunge2050/p/3159158.html 本课题隶属于学校的创新性课题研究项目.2012年就已经做完了,今天一并拿来发表. 目录: --基 ...

最新文章

  1. linux-DNS(bind)-setting
  2. 基于VC的OPC客户端软件研究与实现
  3. php跨域请求解决方案_swoft2 -跨域与中间件详解
  4. 数学--数论--Miller_Rabin判断一个大数是不是素数(随机算法)
  5. git checkout 会把改动带过去吗_原创 | 操作失误不要慌,这个命令给你的Git一次反悔的机会...
  6. 一个程序员的一些想法(一)
  7. html扩展xhtml在线,告别html,迎来xhtml
  8. linux 程序 监听端口,linux和windows下如何知道端口是被那个程序监听占用?
  9. 【信息论】信源与信源熵(三)
  10. 内核层读写应用层文件,使用filp_open函数——完美
  11. 计算机通信网自学笔记(1)
  12. 微信小游戏马甲包过审(马甲包过包)
  13. 桌面上的ie,小游戏,极品美媚图,免费新电影,淘宝网今日打折特价区的图标无法删除,怎么办?
  14. Caused by: java.sql.SQLException: Value ‘0000-00-00‘ can not be represented as java.sql.Date
  15. The HTTP header line [connection : Keep-alive] does not conform to RFC 7230 and has been ignored
  16. 实验:使用SSMS创建并管理数据库及其基本表
  17. 揭秘数字资产行业隐藏的17家国外机构大牛
  18. 比Postman还好用的API神器Eolink,效率担当
  19. [洛谷]P1914小书童——凯撒密码
  20. 基于Python的数据结构实验——内排序(直接插入排序,希尔排序,冒泡排序,快速排序,选择排序,堆排序,归并排序)(附详细代码和注释)

热门文章

  1. UVM_MAX_QUIT_COUNT
  2. Maya Python 第三章 在Maya 中编写python程序
  3. CSDN APP微社区案例分析
  4. 战略锁定技术创新 神州数码云转型进入“核心区”
  5. 免费学习网站-----资源共享
  6. 模拟电路学习之三极管PROTUES
  7. Google官方详解 Activity【项目实例不容错过!】
  8. 计算机服务程序在哪,Windows服务器系统Superfetch服务在哪里,如何开启?
  9. Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务
  10. 单片机——数码管动态显示