精华内容
下载资源
问答
  • 语音信号分帧加窗 什么是窗函数? 几种常见窗函数 Spectral leakage(谱泄漏) 2、语音信号分帧加窗 语音信号具有短时平稳性。 分帧是为了将无限长的语音信号,分成一段一段的,因为语音信号具有短时平稳性...

    Date: 2019-5-11


    1、参考

    语音信号的分帧加窗
    什么是窗函数?
    几种常见窗函数
    Spectral leakage(谱泄漏)

    2、语音信号的分帧加窗

    语音信号具有短时平稳性。
    分帧是为了将无限长的语音信号,分成一段一段的,因为语音信号具有短时平稳性,方便处理,加窗是为了使分帧后的语音信号更加平稳。窗函数主要有矩形窗和汉明窗。加窗主要是为了使时域信号似乎更好地满足FFT处理的周期性要求,减少泄漏。

    3、Matlab实现(部分)
    function varargout = Shiyufenxi(varargin)
    % SHIYUFENXI MATLAB code for Shiyufenxi.fig
    %      SHIYUFENXI, by itself, creates a new SHIYUFENXI or raises the existing
    %      singleton*.
    %
    %      H = SHIYUFENXI returns the handle to a new SHIYUFENXI or the handle to
    %      the existing singleton*.
    %
    %      SHIYUFENXI('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in SHIYUFENXI.M with the given input arguments.
    %
    %      SHIYUFENXI('Property','Value',...) creates a new SHIYUFENXI or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before Shiyufenxi_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to Shiyufenxi_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
    
    % Edit the above text to modify the response to help Shiyufenxi
    
    % Last Modified by GUIDE v2.5 07-May-2019 07:50:18
    
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @Shiyufenxi_OpeningFcn, ...
                       'gui_OutputFcn',  @Shiyufenxi_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    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 Shiyufenxi is made visible.
    function Shiyufenxi_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 Shiyufenxi (see VARARGIN)
    
    % Choose default command line output for Shiyufenxi
    handles.output = hObject;
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes Shiyufenxi wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    
    % --- Outputs from this function are returned to the command line.
    function varargout = Shiyufenxi_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)
    [filename,pathname]=uigetfile({'*.wav','All Wav Files'},'选择语音文件');
    if filename ==0
        return;%如果没有选择新的文件,则返回
    end
    file=fullfile(pathname,filename);%文件名
    [signal,fs]=audioread(file);%读取选择的语音数据
    axes(handles.axes1)
    plot(signal)%显示波形
    title('原始语音波形')
    handles.wavsignal=signal;
    handles.fs=fs;
    %Update handles structure
    guidata(hObject,handles);
    
    4、实验效果图

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述


    作者:SoaringLee_fighting
    来源:CSDN
    原文:https://blog.csdn.net/SoaringLee_fighting/article/details/89853323
    版权声明:本文为博主原创文章,转载请附上博文链接!


    THE END!

    在这里插入图片描述

    展开全文
  • Matlab语音信号做fft及对语音信号进行分帧加窗

    千次阅读 多人点赞 2019-11-24 22:07:42
    再对原语音信号进行分帧,并使用了三种窗函数(矩形窗,海宁窗,海明窗)对其中的一帧进行加窗,查看结果。 注:本文所用的matlab版本为matlab 2017a 首先读取音频文件: [x1,fs]=audioread('lantian.wav'); %读取...

    本文主要读取语音信号,画出语音波形,并对语音信号进行fft变换,画出频谱图。再对原语音信号进行分帧,并使用了三种窗函数(矩形窗,海宁窗,海明窗)对其中的一帧进行加窗,查看结果。

    • 注:本文所用的matlab版本为matlab 2017a
      首先读取音频文件:
    [x1,fs]=audioread('lantian.wav');  %读取音频文件lantian.wav,fs返回采样频率,x1为读取的语音信号
    

    返回语音信号的采样频率,总的采样点数,语音时长等信息:

    info=audioinfo('lantian.wav') 
    

    在这里插入图片描述
    可以看到,该语音采样频率为8000,语音总的采样点数为19000,语音时长为2.375秒。
    矩形窗函数:

    boxcar(n)  %调用格式:w=boxcar(n),根据长度 n 产生一个矩形窗 w
    

    海宁窗函数:

    hanning(n)  %调用格式:w=hanning(n),根据长度 n 产生一个汉宁窗 w
    

    海明窗函数:

    hamming(n)  %调用格式:w=hamming(n),根据长度 n 产生一个海明窗 w
    

    画语音信号波形图:

    figure()
    subplot(211);
    plot(x1);
    title('原始语音信号');
    

    波形图如下:
    在这里插入图片描述
    对语音信号进行fft变换:


    FFT物理意义如下:
    一个模拟信号,经ADC采样后,就变成了数字信号,采样频率要大于信号频率的两倍,采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。
    假设采样频率为Fs,信号频率为F,采样点数为N。那么FFT之后记过就是一个为N点的复数。每个点就对应有一个频率点。这个点的模值,就是该频率值下的幅度特性。
    假设原始信号的峰值为A,它跟原始信号的幅度的关系为, FFT的结果的每个点(除第-一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位,就是该频率下的信号的相位。
    FFT运算后第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N。
    由上边的公式可以看出,Fn所能分辨到频率为Fs/N,如果采样频率Fs为1024 Hz, 采样点数为1024点,则可以分辨到1 Hz。1024 Hz 的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1 Hz, 如果采样2秒时间的信号并做FFT,则结果可以分析到0.5 Hz。 如果要提高频率分辨力,则必须增加采样点数,也即采样时间。


    y1=fft(x1,256);   %对语音信号进行256点fft变换
    

    本文调用了voicebox包中的enframe函数进行分帧处理,但matlab中不自带voicebox包。对于如何安装voicebox包,请参考下面博客:
    在MATLAB中添加语音处理工具箱(voicebox)

    对语音信号进行分帧:

    x2=enframe(x1,200,100);%调用分帧函数enframe,x1为语音信号,200为帧长,100为语音帧移时重叠部分的长度
    

    对语音信号进行分帧,再加不同的窗函数:

    x3=enframe(x1,boxcar(200),100);  %每两百个点分为一帧,再加矩形窗
    x4=enframe(x1,hanning(200),100);  %每两百个点分为一帧,再加加海宁窗
    x5=enframe(x1,hamming(200),100);%每两百个点分为一帧,再加海明窗
    

    完整的代码如下:

    clc;
    clear;
    close all;
    [x1,fs]=audioread('lantian.wav');  %读取音频文件lantian.wav
    info=audioinfo('lantian.wav') 
    figure()
    plot(boxcar(200))  %画矩形窗波形
    title('矩形窗');
    figure()
    plot(hanning(200))  %画海宁窗波形
    title('海宁窗');
    figure()
    plot(hamming(200))  %画海明窗波形
    title('海明窗');
    y1=fft(x1,256);   %对语音信号进行256点fft变换
    figure()
    subplot(211);
    plot(x1);
    title('原始语音信号');
    subplot(212);
    plot(abs(y1(1:256)));
    title('原始语音信号FFT频谱');
    x2=enframe(x1,200,100);%分帧
    figure();%画图
    subplot(221);
    plot(x2(50,:))   %画第50帧波形
    title('语音信号第50帧波形');
    x3=enframe(x1,boxcar(200),100);%每两百个点分为一帧,再加矩形窗
    subplot(222);
    plot(x3(50,:))  %画第50帧波形
    title('语音信号加矩形窗后第50帧波形');
    x4=enframe(x1,hanning(200),100);%每两百个点分为一帧,再加加海宁窗
    subplot(223);
    plot(x4(50,:))   %画第50帧波形
    title('语音信号加海宁窗后第50帧波形');
    x5=enframe(x1,hamming(200),100);%每两百个点分为一帧,再加海明窗
    subplot(224);
    plot(x5(50,:))   %画第50帧波形
    title('语音信号加海明窗后第50帧波形');
    

    结果:
    矩形窗:
    在这里插入图片描述
    海宁窗:
    在这里插入图片描述
    海明窗:
    在这里插入图片描述
    原始语音信号和语音信号的fft变换频谱图:
    在这里插入图片描述
    这是第50帧信号波形,语音信号直接分帧和对语音信号加不同窗函数的对比:
    在这里插入图片描述
    可以发现,对语音信号加矩形窗之后和不加窗的波形几乎一样。但加窗海宁窗和海明窗后结果和不加窗结果不一样,明显两边的波形幅度降低了,中间不变,这是因为海宁窗和海明窗因为边缘有一个下降带,对高于这个值的波形就截断掉了。海宁窗和海明窗效果几乎一样。

    展开全文
  • 语音信号分帧加窗matlab实现function Seg=segment(signal,W,SP,Window)if nargin<3SP=.4;endif nargin<2W=256;endif nargin<4Window=hamming(W);endWindow=Window(:); %make it a column vectorL=...

    语音信号的分帧加窗的matlab实现

    function Seg=segment(signal,W,SP,Window)

    if nargin<3

    SP=.4;

    end

    if nargin<2

    W=256;

    end

    if nargin<4

    Window=hamming(W);

    end

    Window=Window(:); %make it a column vector

    L=length(signal);

    SP=fix(W.*SP);

    N=fix((L-W)/SP +1); %number of segments

    Index=(repmat(1:W,N,1)+repmat((0:(N-1))'*SP,1,W))';

    hw=repmat(Window,1,N);

    Seg=signal(Index).*hw;

    语音信号处理预加重、加窗分帧matlab程序

    %获取语音信号

    [filename,pathname]=uigetfile('*.wav','choose a audio file:');

    [wavin,fs,nbits]=wavread([pathname filename]);

    wav_l=length(wavin); %采样点数,length()返回值是标量

    frame_l=0.04*fs; %根据fs选择帧长,

    step_l=floor(0.5*frame_l); %设置帧移

    num_frame=floor((wav_l-frame_l)/step_l)+1; %确定帧数

    win_ham=hamming(frame_l); %在做fft之前,为移除直流分量和加重高频分量,采用汉明窗,对信号进行加权

    %加窗处理用来消除分帧时带来的截断效应

    %加窗,分帧(矩阵每一行为一帧)

    for i=1:num_frame

    n1=(i-1)*step_l+1;

    n2=(i-1)*step_l+frame_l;

    zy(i,:)=(win_ham').*(yt(n1:n2)'); %存储每一帧噪音(行向量)%win_ham、yt是列向量,需转置

    yy(i,:)=(win_ham').*(wavin(n1:n2)'); %存储每一帧纯净语音

    end

    展开全文
  • 语音信号分帧加窗matlab实现

    千次阅读 2019-08-20 15:23:19
    [x,fs,nbits]=wavread('5_1.wav'); x1=enframe(x,200,100);%分帧 x2=enframe(x,hamming(200),100);%加窗 figure;%画图 subplot(2,1,1),plot(x1(50,:)) figure subplot(2,1,2),plot(x2(50,:))
    [x,fs,nbits]=wavread('5_1.wav');
    x1=enframe(x,200,100);%分帧
    x2=enframe(x,hamming(200),100);%加窗
    figure;%画图
    subplot(2,1,1),plot(x1(50,:))
    figure
    subplot(2,1,2),plot(x2(50,:))

     

    展开全文
  • 语音分帧加窗.rar

    2019-09-12 05:45:42
    语音信号处理之语音分帧加窗,基于matlab仿真实验》》
  • 语音信号加窗分帧matlab实现

    千次阅读 2020-02-24 19:28:58
    加窗分帧:时域加窗,点乘;频域卷积,减少泄露 解释:语音信号是时变信号,浊音的基音周期、清浊音信号幅度和声道参数均随时间变化,发声器官的惯性运动,可以认为具有短时平稳性。帧长10~30ms,交叠分段方式,...
  • 语音是时变信号,处理时先加窗处理,窗 采用汉明窗
  • MATLAB GUI语音信号分析

    2019-06-10 16:18:34
    采用matlab gui设计的一个可以进行简单的语音信号分析的界面,包括语音信号的处理,语音信号分帧加窗等。
  • MATLAB语音信号处理必备,可以对语音信号进行预处理,分帧加窗,加重等等操 作
  •   语音信号分帧以后,可以在时域中处理,也可以在频域中处理。这里主要介绍时域处理中提取语音信号的特性。   设语音波形时域信号为x(n)x(n)x(n) 、加窗函数w(n)w(n)w(n) 分帧处理后得到的第i帧语音信号为yi(n)...
  • 1.1 学习与掌握语音信号分帧加窗 1.2 了解并分析信号加汉明窗及矩形窗后的差别 1.3 分析清音与浊音的时域及频谱域波形特征(画图、对比) 1.4 学习绘制语音信号的语谱图 2.实验设备 应用软件Matlab2018a,清浊音...
  • 在进行语音信号处理的时候,需要用到一些函数进行操作,但是有时MATLAB并没有装这些东西,我们自己手动添加进去...voicebox是用于MATLAB中的语音处理工具箱,其中包含了对语音的分帧处理,滤波,加窗,参数提取等函数。
  • 采集了藏语拉萨语辅音真人录音数据、在Matlab环境下进行了预处理、分帧加窗和语谱图的绘制;分析了频谱分布情况,提取了辅音的基音、共振峰等藏语语音参数。研究结果对藏语语音声学分析、藏语语音合成和识别的研究...
  • 鉴于有些同学需要这方面的材料,下面进行一下答案的更新在对语音信号进行分析和处理之前,必须对其进行预加重、分帧加窗等预处理操作。这些操作的目的是消除因为人类发声器官本身和由于采集语音信号的设备所带来的...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

matlab语音信号分帧加窗

matlab 订阅