标签:blog line 检测 代码 chm 估计 ESS 提取 响应
基于matlab基音周期估计
% 基音周期检测的端点检测算法
clc; close all; clear all;
wlen=320; inc=80; % 分帧的帧长和帧移
T1=0.05; % 设置基音端点检测的参数
[x,fs]=wavread(‘C4_2_y.wav‘); % 读入wav文件
x=x-mean(x); % 消去直流分量
x=x/max(abs(x)); % 幅值归一化
[voiceseg,vosl,SF,Ef]=pitch_vad(x,wlen,inc,T1); % 基音的端点检测
fn=length(SF);
time = (0 : length(x)-1)/fs; % 计算时间坐标
frameTime = FrameTimeC(fn, wlen, inc, fs); % 计算各帧对应的时间坐标
plot(time,x,‘k‘); title(‘语音信号‘)
axis([0 max(time) -1 1]); ylabel(‘幅值‘);
xlabel(‘时间/s‘);
% 带通滤波器设计
clear all; clc; close all;
fs=8000; fs2=fs/2; % 采样频率
Wp=[60 500]/fs2; % 滤波器通带
Ws=[20 1500]/fs2; % 滤波器阻带
Rp=1; Rs=40; % 通带的波纹和阻带的衰减
[n,Wn]=ellipord(Wp,Ws,Rp,Rs); % 计算滤波器的阶数
[b,a]=ellip(n,Rp,Rs,Wn); % 计算滤波器的系数
fprintf(‘b=%5.6f %5.6f %5.6f %5.6f %5.6f %5.6f %5.6f\n‘,b)
fprintf(‘a=%5.6f %5.6f %5.6f %5.6f %5.6f %5.6f %5.6f\n‘,a)
[db, mag, pha, grd,w]=freqz_m(b,a); % 求取频率响应曲线
plot(w/pi*fs/2,db,‘k‘); % 作图
grid; ylim([-90 10]);
% 倒谱法基音周期检测
clc; close all; clear all;
wlen=320; inc=80; % 分帧的帧长和帧移
T1=0.05; % 设置基音端点检测的参数
[x,fs]=wavread(‘C4_2_y.wav‘); % 读入wav文件
x=x-mean(x); % 消去直流分量
x=x/max(abs(x)); % 幅值归一化
[voiceseg,vosl,SF,Ef,period]=pitch_Ceps(x,wlen,inc,T1,fs); %基于倒谱法的基音周期检测
fn=length(SF);
time = (0 : length(x)-1)/fs; % 计算时间坐标
frameTime = FrameTimeC(fn, wlen, inc, fs); % 计算各帧对应的时间坐标
% 作图
subplot 211, plot(time,x,‘k‘); title(‘语音信号‘)
axis([0 max(time) -1 1]); ylabel(‘幅值‘);
subplot 212; plot(frameTime,period,‘k‘);
xlim([0 max(time)]); title(‘倒谱法基音周期检测‘);
xlabel(‘时间/s‘); ylabel(‘样点数‘);
for k=1 : vosl % 标出有话段
nx1=voiceseg(k).begin;
nx2=voiceseg(k).end;
nxl=voiceseg(k).duration;
fprintf(‘%4d %4d %4d %4d\n‘,k,nx1,nx2,nxl);
% 自相关法基音周期检测
clc; close all; clear all;
wlen=320; inc=80; % 分帧的帧长和帧移
T1=0.05; % 设置基音端点检测的参数
[x,fs]=wavread(‘C4_2_y.wav‘); % 读入wav文件
x=x-mean(x); % 消去直流分量
x=x/max(abs(x)); % 幅值归一化
[voiceseg,vosl,SF,Ef,period]=pitch_Corr(x,wlen,inc,T1,fs); %基于自相关法的基音周期检测
fn=length(SF);
time = (0 : length(x)-1)/fs; % 计算时间坐标
frameTime = FrameTimeC(fn, wlen, inc, fs); % 计算各帧对应的时间坐标
subplot 211, plot(time,x,‘k‘); title(‘语音信号‘)
axis([0 max(time) -1 1]); grid; ylabel(‘幅值‘);
subplot 212; plot(frameTime,period,‘k‘); hold on;
xlim([0 max(time)]); title(‘自相关基音周期检测‘);
grid; xlabel(‘时间/s‘); ylabel(‘样点数‘);
for k=1 : vosl
nx1=voiceseg(k).begin;
nx2=voiceseg(k).end;
nxl=voiceseg(k).duration;
fprintf(‘%4d %4d %4d %4d\n‘,k,nx1,nx2,nxl);
subplot 211
line([frameTime(nx1) frameTime(nx1)],[-1 1],‘color‘,‘r‘,‘linestyle‘,‘-‘);
line([frameTime(nx2) frameTime(nx2)],[-1 1],‘color‘,‘b‘,‘linestyle‘,‘--‘);
subplot 212
版本:2014a
完整代码或代写加1564658423
【特征提取】基于matlab基音周期估计【含Matlab源码 551期】
标签:blog line 检测 代码 chm 估计 ESS 提取 响应
原文地址:https://www.cnblogs.com/homeofmatlab/p/14941692.html