语音信号线性预测分析(6)
时间:2025-04-19
时间:2025-04-19
% a_lsf_main.m
clear;close all% 将所有变量置为0 clc% 清除命令窗口
fid=fopen('sx86.txt','r'); p1=fscanf(fid,'% f'); fclose(fid);
p=filter([1 -0.68],1,p); % 预加重滤波 x=fra(320,160,p); % 分帧,帧移为160个样点 x=x(60,:); % 取第60帧作为分析帧 N=16% 给线性预测分析的阶次赋值
a1=lpc(x,N);% 调用MATLAB库函数中的lpc函数求解出LPC系数a1 % 此处也可以调用本章赋的函数lpc_coeffi-
% cients(s,p),调用语句为a1=lpc_coefficients(x,N) a=a1(:);% 将线性预测系数a1赋给矩阵a
lsf=a_lsf_conversion(a);% 调用函数a_lsf_conversion实现从LPC系数到LSF参数 % 转换
% lsf=poly21lsf(a);% 也可调用MATLAB库函数中的poly21lsf(a)函数求解出LSF系数,调用
% 结果为归一化角频率
lsf_abnormalized=lsf.*(6400/3.14);% 将求得的lsf参数反归一化到 % 0~6400Hz
% 使用时可根据实际需要进行更改,如窄带语言编码语音信号频带范围为300~3400Hz,此时
% 就需要将6400Hz改为3400Hz
% 将求得的归一化、反归一化lsf参数输出到文本文件:从lpc系数解得的lsf参数.txt fid= fopen('从lpc系数解得的lsf参数.txt','w'); fprintf(fid,'归一化的lsf:\n'); fprintf(fid,'%6.2f,',lsf); fprintf(fid,'\n');
fprintf(fid,'反归一化的lsf:\n'); fprintf(fid,'% 8.4f,',lsf_abnormalized); fclose(fid); % EOF a_lsf_main.m
函数 a_lsf_conversion 的MATLAB程序见 a_lsf_conversion.m. % 程序 a_lsf_conversion.m. function lsf=a_lsf_conversion(a)
%如果a不是实数,输出错误信息:LSF不适用于复多项式的求解 if~isreal(a),
error('Line spectral frequencies are not defined for complex