音频处理的matlab程序

  • h6_489136
    了解作者
  • 6MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-17 10:55
    上传日期
音频处理的matlab程序
song.zip
  • song
  • 1.wav
    6.7MB
  • main.m
    5.1KB
  • 子程序.docx
    19.4KB
  • pitfilterm1.m
    4.5KB
  • 主程序.doc
    34KB
  • pitch_Ceps.m
    1.5KB
  • linsmoothm.m
    1.2KB
  • Frame2Time.m
    2.5KB
  • formant2filter4.m
    5.3KB
内容介绍
function [An,Bn]=formant2filter4(yf,bw,fs) yf(4)=3500; bw(4)=100; for k=1 : 4 % 处理三个共振峰和一个固定峰值 f0=yf(k); Bw=bw(k); % 取来共振峰频率和带宽 [A,B]=frmnt2coeff3(f0,Bw,fs); % 计算带通滤波器系数 An(:,k)=A; % 存放在An和Bn中 Bn(k)=B; end function zseg=findSegment(zindex) [xx,fs]=audioread('C:\Users\lenovo\Desktop\1886.mp3'); %读取文件 xx=xx(:,1); %在多声道中去一条声道 xx=xx-mean(xx); wlen=240; inc=80; %去除直流分量 x1=xx/max(abs(xx)); %归一化 x=filter([1 -.99],1,x1); X=enframe(x,wlen,inc)'; fn=size(X,2); if size(X,2)~=fn, X=X'; end % 把x转换为每列数据表示一帧语音信号 wlen=size(X,1); % 取得帧长 for i=1:fn Sp = abs(fft(X(:,i))); % FFT取幅值 Sp = Sp(1:wlen/2+1); % 只取正频率部分 Esum(i) = sum(Sp.*Sp); % 计算能量值 prob = Sp/(sum(Sp)); % 计算概率 H(i) = -sum(prob.*log(prob+eps)); % 求谱熵值 end hindex=find(H<0.1); H(hindex)=max(H); Ef=sqrt(1 + abs(Esum./H)) ; % 计算能熵比 Ef=Ef/max(Ef); % 归一化 T1=0.1 zindex=find(Ef>=T1); if zindex(1) ==0 voicedIndex=find(zindex); % 寻找express中为1的位置 else voicedIndex=zindex; end zseg = []; k = 1; zseg(k).begin = voicedIndex(1); % 设置第一组有话段的起始位置 for i=1:length(voicedIndex)-1, if voicedIndex(i+1)-voicedIndex(i)>1, % 本组有话段结束 zseg(k).end = voicedIndex(i); % 设置本组有话段的结束位置 zseg(k+1).begin = voicedIndex(i+1);% 设置下一组有话段的起始位置 k = k+1; end end zseg(k).end = voicedIndex(end); % 最后一组有话段的结束位置 % 计算每组有话段的长度 for i=1 :k zseg(i).duration=zseg(i).end-zseg(i).begin+1; end function zseg=findSegment(zindex) [xx,fs]=audioread('C:\Users\lenovo\Desktop\1886.mp3'); %读取文件 xx=xx(:,1); %在多声道中去一条声道 xx=xx-mean(xx); wlen=240; inc=80; %去除直流分量 x1=xx/max(abs(xx)); %归一化 x=filter([1 -.99],1,x1); X=enframe(x,wlen,inc)'; fn=size(X,2); if size(X,2)~=fn, X=X'; end % 把x转换为每列数据表示一帧语音信号 wlen=size(X,1); % 取得帧长 for i=1:fn Sp = abs(fft(X(:,i))); % FFT取幅值 Sp = Sp(1:wlen/2+1); % 只取正频率部分 Esum(i) = sum(Sp.*Sp); % 计算能量值 prob = Sp/(sum(Sp)); % 计算概率 H(i) = -sum(prob.*log(prob+eps)); % 求谱熵值 end hindex=find(H<0.1); H(hindex)=max(H); Ef=sqrt(1 + abs(Esum./H)) ; % 计算能熵比 Ef=Ef/max(Ef); % 归一化 T1=0.1 zindex=find(Ef>=T1); if zindex(1) ==0 voicedIndex=find(zindex); % 寻找express中为1的位置 else voicedIndex=zindex; end zseg = []; k = 1; zseg(k).begin = voicedIndex(1); % 设置第一组有话段的起始位置 for i=1:length(voicedIndex)-1, if voicedIndex(i+1)-voicedIndex(i)>1, % 本组有话段结束 zseg(k).end = voicedIndex(i); % 设置本组有话段的结束位置 zseg(k+1).begin = voicedIndex(i+1);% 设置下一组有话段的起始位置 k = k+1; end end zseg(k).end = voicedIndex(end); % 最后一组有话段的结束位置 % 计算每组有话段的长度 for i=1 :k zseg(i).duration=zseg(i).end-zseg(i).begin+1; end function zseg=findSegment(zindex) [xx,fs]=audioread('C:\Users\lenovo\Desktop\1886.mp3'); %读取文件 xx=xx(:,1); %在多声道中去一条声道 xx=xx-mean(xx); wlen=240; inc=80; %去除直流分量 x1=xx/max(abs(xx)); %归一化 x=filter([1 -.99],1,x1); X=enframe(x,wlen,inc)'; fn=size(X,2); if size(X,2)~=fn, X=X'; end % 把x转换为每列数据表示一帧语音信号 wlen=size(X,1); % 取得帧长 for i=1:fn Sp = abs(fft(X(:,i))); % FFT取幅值 Sp = Sp(1:wlen/2+1); % 只取正频率部分 Esum(i) = sum(Sp.*Sp); % 计算能量值 prob = Sp/(sum(Sp)); % 计算概率 H(i) = -sum(prob.*log(prob+eps)); % 求谱熵值 end hindex=find(H<0.1); H(hindex)=max(H); Ef=sqrt(1 + abs(Esum./H)) ; % 计算能熵比 Ef=Ef/max(Ef); % 归一化 T1=0.1 zindex=find(Ef>=T1); if zindex(1) ==0 voicedIndex=find(zindex); % 寻找express中为1的位置 else voicedIndex=zindex; end zseg = []; k = 1; zseg(k).begin = voicedIndex(1); % 设置第一组有话段的起始位置 for i=1:length(voicedIndex)-1, if voicedIndex(i+1)-voicedIndex(i)>1, % 本组有话段结束 zseg(k).end = voicedIndex(i); % 设置本组有话段的结束位置 zseg(k+1).begin = voicedIndex(i+1);% 设置下一组有话段的起始位置 k = k+1; end end zseg(k).end = voicedIndex(end); % 最后一组有话段的结束位置 % 计算每组有话段的长度 for i=1 :k zseg(i).duration=zseg(i).end-zseg(i).begin+1; end
评论
    相关推荐
    • matlab 课件
      matlab 功能很强大,本课件详细的介绍了matlab在科学计算中的应用。
    • Matlab教程
      MatlaB经典ppt,主要讲解了MatlaB的入门知识,图形编程以及仿真。
    • matlab入门
      matlab的入门教程,很值得仔细看看,对提高matlab能力有帮助
    • matlab编译器
      matlab编译为exe文件所需要的文件; 使用时解压,将解压后文件拖入至matlab命令行即可
    • matlab
      matlab的基础知识进行介绍
    • MatLab
      “#MatLab
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • MATLAB 论文
      基于MATLAB的论文撰写!可以为你指明一条写作MATLAB论文的道路!
    • matlab
      matlab经典课堂讲义
    • matlab
      matlab