【语音合成】基于matlab重叠相加法的信号分帧与还原【含Matlab源码 568期】

举报
海神之光 发表于 2022/05/29 01:56:35 2022/05/29
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【语音合成】基于matlab重叠相加法的信号分帧与还原【含Matlab源码 568期】 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【语音合成】基于matlab重叠相加法的信号分帧与还原【含Matlab源码 568期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、重叠相加法简介

1 由来
在利用FFT计算线性卷积时,遇见长序列与短序列卷积时,FFT不一定具备简化计算的优势。

2 思路
分而治之的思想,可能很多情况下都使用,将大问题转为能解决的已知问题。既然一长一段不行,何不把长的分段我们设两个序列中短序列为s(n),长度为M;长序列为l(n),长度为L;可以测试,对长序列的分段点数不影响卷积结果,那我们设每段长度为N。那么,第一段的下标应该是0~N-1,第二段应该是N ->2N-1;由于我们采用每段分别求卷积,再将每段卷积通过合适的方法组合成目标结果,那么第二段应该往左移N点,以作DFT,也可以理解为周期延拓。为了让fft 或dft 代替线性卷积结果,需要有dft点数的要求,points=2^r>=N+M-1。因此,我们要在N点基础上进行补零,往后加points-N个0即可。同时别忘了对s(n)也进行同样的补零处理。
由于时域卷积可以频域相乘再反变换求得,我们将对s(n)和每个分段分别求卷积。在得到每个分段的卷积和后,我们要由此组织我们的结果。数学上已经给出结果了,就不赘述。对数学表达式的理解为,第一段的前N个点依旧代表结果,此后的M-1个点将与第二段的前M-个点相加,其他的类似。不严谨地说,每个分段产生N+M-1个点,第二段相当于右移N个点,必然产生混叠,第三段右移2N个点。看两张图,结合理解。
在这里插入图片描述

三、部分源代码

clc
clear all
close all
[s,fs]=audioread('1.wav');


  
 
  • 1
  • 2
  • 3
  • 4
  • 5

四、运行结果

在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/114997663

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。