ELEX 4550 : Wide Area Networks 2014 Winter Session Lab 1 - Companding

e quantization noise power can be approximated Introduction by q2/12 where q is the quantization step size. In this lab you will study the effect of companding on e gain before the A/D converter is set to avoid the quantization SNR of speech waveforms. clipping the signal. Since the quantizer step size is (twice) the maximum signal level divided by the You will record a short sample of your own speech number of steps, the quantization noise will be de- and then compute the quantization SNR with and termined only by the maximum signal level. without using µ-law companding. By comparing the quantization SNR with and For example if the A/D converter input levels are V q = 2V /256 without the use of companding you will demonstrate limited to then . the advantage, if any, of using companding. Effect of Companding

Speech Signal Levels A compressor applies a non-linear function (logarith- − One of the characteristics of speech signals is that they mic for µ law) to the audio waveform. is pro- have widely varying signal powers. In addition to vides more gain to lower-level inputs and increases variations due to how loudly someone speaks, the dis- the average signal power while maintaining the same tance to the microphone and the gains and losses of peak voltage level. is should increase the signal-to- various circuits, different sounds have different sig- quantization noise ratio, and thus the quality, of the nal levels. For example, different phonemes (speech quantized signal. sounds) within a spoken phrase will have different e µ-law compression function for µ = 256 is signal powers. shown below. e input level is along the x-axis and the corresponding output level along the y-axis.

Quantized Speech Waveforms 1

Much of the information transmitted over data com- 0.8 munications networks is speech. One way of trans- 0.6 mitting a digitized audio waveform is known as Pulse 0.4 Code Modulation (PCM). 0.2 e audio waveform is sampled at a fixed rate (8 kHz for speech) and each sample is quantized using 0 an analog-to-digital converter with a certain resolu- −0.2 tion, typically 8 bits for speech. e resulting 64 kb/s −0.4 data stream is transmitted over a network. e re- −0.6 ceiver converts the samples back to a continous ana- −0.8 log voltage. −1 −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 Quantization Noise Software Since the waveform is quantized to one of 256 levels (8 bits) the digitized waveform is not the same as the In this lab you will use the free audio editing pro- original waveform. e difference between the quan- gram Audacity to record and select a segment of your tized and un-quantized waveforms is a type of distor- speech. You will use Matlab (or one of the free com- tion or noise called quantization noise. patible programs) to apply the compression, expan- lab1.tex 1 sion and quantization functions to the waveform and Procedure to compute the signal and quantization noise powers. Recording Companding and Quantization Functions Note: We may not have enough microphones for all of e following Matlab function applies µ-law com- the PCs. Run Audacity and capture the waveform on pression: a PC equipped with a microphone. e rest of the lab can be done on any other PC. function y = ulaw(x) Set the recording format: Select Edit -> mu = 255 ; y = sign(x) .* log(1+mu*abs(x)) ./ log(1+mu) ; Preferences. Under Devices -> Recording set the channels to 1 (mono) and under Quality -> You will write the inverse (expansion) function as Sampling set the sample rate to 8 kHz and 16-bit part of your Pre-Lab report. samples. e following Matlab function quantizes a signal Press the record button and hold the microphone with a range of 1 to (approximately) 8-bit resolu- close to your mouth while you say your name re- tion: peatedly. If your first name is very short or only has one syllable use your surname or some other unique function y = quant(x) word. e goal is to create a sound segment about 1 y = round(128*x)./128 ; second long that includes both loud and so sounds. Adjust the microphone gain control while talking To make these functions available to your script so that the recorded signal level is as high as possible you need to save the code above to a file with the without clipping the signal peaks. same name as the function and a file type suffix of Use the cursor to select only the portion of audio .m. For example, save the first snippet of code to the you want to analyze. en remove the rest of the au- file ulaw.m. You can also download these two func- dio as follows: Edit -> Remove Audio or Labels tions from the course web site. e .m files should be -> Trim Audio, then Tracks -> Align Tracks placed in your working directory. -> Start to Zero. Save the audio samples to a file as follows: File -> Export and select WAV(Microsoft) signed Pre-Lab 16-bit PCM. If necessary, export the audio clip to a your flash Using the Matlab companding function above as a drive so you can take it to another PC for analysis. model, write the corresponding expansion function. e expansion equation is: Read and Normalize Waveform ( ) − sgn(y) | | F 1(y) = (1 + µ) y − 1 Use the Matlab function wavread() to read the sam- µ ples of the recorded waveform: Use the element-wise Matlab division, multiplica- tion and exponentiation operators (./, .* and .^). y = wavread('lab1.') ; You may want to test your function against the sup- plied compression function to make sure they are in- Normalize the samples so that the maximum abso- verses of each other. lute value is 1: Also answer the following question: If the quanti- zation range is 1 and there are 256 levels, what is the y = y ./ max(abs(y)) ; expected quantization noise power? Submit your pre-lab report, in PDF format, to the Plot the result (and save it for your report): appropriate dropbox on the course web site before the start of your lab. plot(y) ;

2 Quantization SNR without Companding • the answer to the question above (how is the compressed signal different?) Create a quantized version of the signal and an error (difference) signal: • the summary table described below

q = quant(y) ; • a brief explanation, with reference to your re- e = y - q ; sults, of how companding improved (or didn’t improve) the quantization SNR Compute the signal power, the quantization noise power (variance) and the quantization SNR without Summarize your results in a table. e table should companding: have four columns: type of measurement, value with- out companding, value with companding and differ- var(q) ence (ratio) in dB. Include the following measure- var(e) ments: signal power, quantization noise power, SNR. 10*log10(var(q)/var(e)) Submit your report in PDF format and the .wav file containing your digitized waveform to the dropbox on the course web site. Quantization SNR with Companding Compress the signal using the mu-law function:

u=ulaw(y) ;

Plot the compressed signal (and save the plot for your report):

plot(u)

How does this signal appear different from the un- compressed signal? Repeat the above quantization steps but uncom- press the quantized signal before computing the er- ror:

q = quant(u) ; e = y - ulawex(q) ;

Compute the power of the quantized compressed signal power, the power of the quantization noise and the quantization SNR as before.

Report

Prepare a report including the following:

• the course and lab number, your name and BCIT ID, the date

• the plots of the uncompressed and compressed signal

3