Question
Hello everyone, I'm doing research on an assignment that does LPC compression to a Speech file. Here you see the code; clear all; clc; %TAKING INPUT WAVEFILE, a1 = 'C:\Users\user\Desktop\WAV\a1.wav'; [y, Fs] =audioread(a1); % x=wavrecord(,); %LENGTH (IN SEC) OF INPUT WAVEFILE, t=length(y)./Fs; sprintf('Processing the wavefile "%s"', a1) sprintf('The wavefile is %3.2f seconds long', t) %THE ALGORITHM STARTS HERE, M=10; %prediction order [aCoeff, pitch_plot, voiced, gain] = f_ENCODER(y, Fs, M); %pitch_plot is pitch periods synth_speech = f_DECODER (aCoeff, pitch_plot, voiced, gain); Additionally, I want this code to calculate PSNR, MSError and SNR. dis=numel(y)-numel(A2); A2=[A2,zeros(1,dis)]; PSNR = psnr(A2,y) MSError=mse(A2,y) SNR=snr(A2,y) I found such a code on the internet. But I don't know what I should write instead of "A2" or for the others.
Expert Answer
Kshitij Singh
PhD Expert
Answered Aug 24, 2026
Here f_ENCODER code;
%ENCODER PORTION
%here, fs = sampling frequency
% aCoeff = LP coefficients
% pitch = pitch periods
% v = voiced or unvoiced decision bit
% g = gain of frames
function [aCoeff, pitch_plot, voiced, gain] = f_ENCODER(x, fs, M);
if (nargin<3), M = 10; end %prediction order=10;
%INITIALIZATION;
b=1; %index no. of starting data point of current frame
fsize = 30e-3; %frame size
frame_length = round(fs .* fsize); %=number data points in each framesize
%of "x"
N= frame_length - 1; %N+1 = frame length = number of data points in
%each framesize
%VOICED/UNVOICED and PITCH; [independent of frame segmentation]
[voiced, pitch_plot] = f_VOICED (x, fs, fsize);
%FRAME SEGMENTATION for aCoeff and GAIN;
for b=1 : frame_length : (length(x) - frame_length),
y1=x(b:b+N); %"b+N" denotes the end point of current frame.
%"y" denotes an array of the data points of the current
%frame
y = filter([1 -.9378], 1, y1); %pre-emphasis filtering
%aCoeff [LEVINSON-DURBIN METHOD];
[a, tcount_of_aCoeff, e] = func_lev_durb (y, M); %e=error signal from lev-durb proc
aCoeff(b: (b + tcount_of_aCoeff - 1)) = a; %aCoeff is array of "a" for whole "x"
%GAIN;
pitch_plot_b = pitch_plot(b); %pitch period
voiced_b = voiced(b);
gain(b) = f_GAIN (e, voiced_b, pitch_plot_b);
end
100% Run Guarantee
3-Hour Fast-Track Delivery
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here
Related Signal Processing Questions & Solutions
Browse All →
Explore similar technical troubleshooting questions and verified MATLAB solutions:
Ready-to-Run MATLAB & Simulink Projects
Browse All Projects →