소개글
matlab을 이용해서 직접 제작한 오디오파일을
matlab으로 불러와서 직접 코딩한 소스로 matalb을 돌려서
양자화 잡음을 측정하고 또한 이를 통해 오디오파일을 변형하는 등의
실험을 한 결과 레포트 입니다.
매트랩의 코드와 그 결과 그래프와
결과 분석이 있습니다
상당히 공을 들인 코드입니다.
목차
1.Wave file의 데이터를 Load 하시오. Load 한 Original 데이터를 AW라 합시다
2.Load 한 audio data를 매 2번째 sample의 값만을 취하여, 16 KHz로 한 후, 이를 Interp1 function을 이용하여 32KHz로 복원하시오. AW와 비교하여 음질이 저하된 정도를 SNR 그래프로 그리시오. Interp1 function의 3가지 method를 사용할 때의 차이가 있는지 설명하시오. 생성한 데이터를 wavwrite function을 이용하여 wave file로 변환하고 직접 소리의 질을 평가하시오
3.매 4번째 값만을 취하여, 위의 ②의 실험을 반복하시오
4.AW의 값을 새로 Uniform Quantization하는데 8비트, 4비트 2비트, 1비트로 각각 하고, 각각의 경우에 SQNR을 측정하여 plotting 하시오. Sampling rate는 16 KHz를 유지하시오. 이렇게 만들어진 데이터를 wave file로 변한하고 직접 소리의 질을 평가하시오.
본문내용
--------------------일부 소스 내용입니다--------------------------------
[AW, AWFrequency, bits] = wavread(`hyunbin.wav`,[1,320000]);
dt = 1/AWFrequency;
TimeOf32k = (0:length(AW)-1) * dt;
SampleFrequencyOf16k=16000;
TheSample(1:160000,1) = AW(1:2:320000,1);
dt2=1/SampleFrequencyOf16k;
TimeOf16k = (0:length(TheSample)-1)*dt2;
%복원
interpSample_n=interp1(TimeOf16k,TheSample,TimeOf32k,`nearest`,`extrap`);
interpSample_l=interp1(TimeOf16k,TheSample,TimeOf32k,`linear`,`extrap`); interpSample_s=interp1(TimeOf16k,TheSample,TimeOf32k,`spline`); %`extrap`은 default
%파일로 출력
wavwrite(interpSample_n,32000,bits,`interpHyunbin_nearOf16Khz.wav`);
wavwrite(interpSample_l,32000,bits,`interpHyunbin_linOf16Khz.wav`);
wavwrite(interpSample_s,32000,bits,`interpHyunbin_spOf16Khz.wav`);
errorQ_n = AW` - interpSample_n;
errorQ_l = AW` - interpSample_l;
errorQ_s = AW` - interpSample_s;
theSNR(1,1) = sum(AW.^2)/sum(errorQ_n.^2);
theSNR(1,2) = sum(AW.^2)/sum(errorQ_l.^2);
theSNR(1,3) = sum(AW.^2)/sum(errorQ_s.^2);
theSNRindecibel(1,1:3) = 10*log(theSNR(1,1:3))/log(10);
plot(1:3,theSNRindecibel,`o`) %그래프 Editor 에서 편집을 따로했음
xlabel(`Method`)
ylabel(`SNR in decibel`)
title(`hyunbin.wav의 interp SNR in decibel`)
-----------------------이것은 상당히 일부분입니다. 결과분석도 있습니다------
참고 자료
없음