【语音合成】基于matlab重叠存储法的信号分帧与还原【含Matlab源码 567期】
2021/6/27 11:14:02
本文主要是介绍【语音合成】基于matlab重叠存储法的信号分帧与还原【含Matlab源码 567期】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、简介
二、源代码
clc clear all close all [s,fs]=wavread('C7_1_y.wav'); winlen=256; win=hamming(winlen); overlap=100; f=enframe(s,win,overlap); fn=Filpframe_OverlapS(f,win,overlap); subplot(211) plot(s/max(abs(s))) xlabel('点数') ylabel('幅度') title('(a)原始信号') subplot(212) plot(fn/max(abs(fn))) xlabel('点数') ylabel('幅度') function frameout=enframe(x,win,inc) nx=length(x(:)); % 取数据长度 nwin=length(win); % 取窗长 if (nwin == 1) % 判断窗长是否为1,若为1,即表示没有设窗函数 len = win; % 是,帧长=win else len = nwin; % 否,帧长=窗长 end if (nargin < 3) % 如果只有两个参数,设帧inc=帧长 inc = len; end function frameout=Filpframe_LinearA(x,win,inc) [nf,len]=size(x); nx=(nf-1) *inc+len; %原信号长度 frameout=zeros(nx,1); nwin=length(win); % 取窗长 overlap=nwin-inc; % 重叠长度 tempr1=(0:overlap-1)'/overlap; % 斜三角窗函数w1 tempr2=(overlap-1:-1:0)'/overlap; % 斜三角窗函数w2 if (nwin ~= 1) % 判断窗长是否为1,若为1,即表示没有设窗函数 winx=repmat(win',nf,1); x=x./winx; % 除去加窗的影响 x(find(isinf(x)))=0; %去除除0得到的Inf end function frameout=Filpframe_OverlapA(x,win,inc) [nf,len]=size(x); nx=(nf-1) *inc+len; %原信号长度 frameout=zeros(nx,1); nwin=length(win); % 取窗长 if (nwin ~= 1) % 判断窗长是否为1,若为1,即表示没有设窗函数 winx=repmat(win',nf,1); x=x./winx; % 除去加窗的影响 x(find(isinf(x)))=0; %去除除0得到的Inf end
三、运行结果
四、备注
版本:2014a
完整代码或代写加1564658423
这篇关于【语音合成】基于matlab重叠存储法的信号分帧与还原【含Matlab源码 567期】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器