⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 del.m

📁 清浊音判别方法,用matlab软件开发,如自相关和能量方法等
💻 M
字号:
function [room_m,room_zero] = del(filename)
%过零率的求法
% 注意:sign(0) = 0;故先要找出零点;但是要注意如:[1,0,-1]     1-0=1 abs(0-1) =1
%  (1 +1)/2 =1 故只有一个零点;
    y = wavread(filename);
    length_y = length(y);
    sum_frame = fix(length_y/308);
    y_turn = y';
    for k = 1:sum_frame  
        temp_storeroom(k,:) = y_turn((1+(k-1)*308): k*308);
    end
    %加hamming窗
    win_sequence = hamming(308)'; 
    
    % 去除直流扰
    for k = 1:sum_frame  
        temp_storeroom(k,:) = y_turn((1+(k-1)*308): k*308).*win_sequence;
        average_m = (1/308) * sum(temp_storeroom(k,:));
        temp_storeroom(k,:) = temp_storeroom(k,:) - average_m;
    end
    
    %进行语音带宽限制,使之在100~3400Hz内;
    [B,A]=butter(5,[100/4000 3400/4000],'bandpass');
    % filter_value_sequence = filter(B,A ,temp_storeroom);
    
    for k = 1:sum_frame
        filter_value_sequence(k,:) = filter(B,A,temp_storeroom(k,:));    
    end
    
    % 限幅
    for k = 1:sum_frame
        for l =1:308
            if filter_value_sequence(k,l) > 1
               filter_value_sequence(k,l) = 1;
            elseif filter_value_sequence(k,l) < -1
               filter_value_sequence(k,l) = -1;
            else
               filter_value_sequence(k,l) = filter_value_sequence(k,l);
            end
        end
    end
    % 存储 judgeroom_mz
    %clear;
    load storeroom room_m room_zero;%room_zero ;
    
    for k = 1:sum_frame
        front_x = filter_value_sequence(k,1:307);
        back_x = filter_value_sequence(k,2:308);
        result_sf = sign(front_x);
        result_sb = sign(back_x);
        zeros = abs(result_sf -result_sb);
        zeros_sum(k) = 1/2*sum(zeros);
        if  room_zero == []
            room_zero = zeros_sum(k);
        else
            room_zero = [room_zero zeros_sum(k)];
        end
    end
    %save storeroom room_zero;
    %load storeroom room_m;
    for k = 1:sum_frame
        abs_x = abs(filter_value_sequence(k,:));
        scope(k) = (1/308)*sum(abs_x);
        if  room_m == []
            room_m = scope(k);
        else
            room_m = [room_m scope(k)];
        end        
    end
    save storeroom room_zero room_m;
       
    %save storeroom room_m room_zero;
    % 存储 judgeroom_mz
    %save storeroom scope zeros_sum;
    %load storeroom room_m room_zero;
    %room_m = [room_m;scope];
    %load judgeroom_z;
    %room_zero = [room_zero;zeros_sum];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -