New version page

UW SPHSC 503 - Cochlear Implant Simulation

Upgrade to remove ads
Upgrade to remove ads
Unformatted text preview:

Handout 12 – Cochlear implant simulationSPHSC 503 – Speech Signal Processing UW – Summer 2006 Handout 12 – Cochlear implant simulation In this lab we will go through the typically signal processing of a cochlear implant. The only thing we will do different in this lab is the way we synthesize the final signal. In a cochlear implant, subband envelope information is used to ‘modulate’ (i.e., scale) bipolar pulses that are send to the implanted electrodes. In our simulation, we will use to the subband envelope information to modulate band-pass filtered white noise. The resulting signal is representative of the perception of the signal by a cochlear implant user. Exercise 12.1 – Pre-emphasis One of the first processing steps in cochlear implants is to apply pre-emphasis to the signal. The pre-emphasis filter attenuates low frequencies and amplifies high frequencies, to compensate for the typical 6 dB/octave spectral roll-off of speech signals. It makes the low-energy, high-frequency consonants to stand out better against the high-energy, low-frequency vowels. a. First, let’s load a speech signal. >> [y,fs] = wavread('0zk_clean.wav'); b. Then, define and analyze a simple pre-emphasis filter. Pre-emphasis filters usually take this form, where the second coefficient may be between -0.9 and -0.99 for special cases. >> bpre = [ 1 -0.95 ]; >> apre = [ 1 ]; >> fvtool(bpre,apre); c. Apply the pre-emphasis filter to the speech signal. >> ypre = filter(bpre,apre,y); d. Listen to the signal before and after pre-emphasis. Can you tell the difference? >> soundsc(y,fs) >> soundsc(ypre,fs) Exercise 12.2 – Design, analysis, and use of a critical-band filterbank The next step in a cochlear implant is to separate the input signal into frequency subbands. For our simulation, we will use a 16-channel critical-band filterbank. a. Use the function fbedges to determine the band edges of the filterbank. We need to specify the number of channels that we desire, the upper frequency limit (half the sampling frequency), and we need to indicate that we want log-spaced subbands. >> edges = fbedges(16,fs/2,1); b. Now that we have the band edges, we can pass those on to the fbdesign function, which will design the band-pass filters of the filterbank for us. >> fb = fbdesign(edges,fs); – 1 –SPHSC 503 – Speech Signal Processing UW – Summer 2006 c. To verify the correctness of the band-pass filters of the filterbank, we run the fbfvtool command. That will open an fvtool window for us that simultaneously displays the frequency responses of all the band-pass filters in the filterbank. >> fbfvtool(fb); d. To run the pre-emphasized signal through the filterbank, we call the fbfilter function. >> ysub = fbfilter(ypre,fb); e. To check the results of the filterbank, we plot the first 4 subbands of the speech signal, and listen to the first two subbands. >> tsub = ((1:size(ysub,2))-1)/fs; % create a time vector>> figure >> for i = 1:4, % for-loop over first 4 subbands>> subplot(4,1,i) % start new subplot>> plot(tsub,ysub(i,:)) % plot sub-band signal versus time>> end >> soundsc(ysub(1,:),fs) % listen to first subband>> soundsc(ysub(2,:),fs) % listen to second subband Exercise 12.3 – Finding the envelopes by full-wave rectification Now that we have the subband signals of the pre-emphasized speech, we’d like to find their envelopes. There are a few ways to get the envelopes, and in our simulation we will use the combination of full-wave rectification and low-pass filtering. a. Design a low-pass filter to smooth the envelope later. We need a narrowband filter, so we will design an elliptic IIR filter to keep the order of the filter low. We will use the forward-backward filtering technique (filtfilt) later to avoid the non-linear phase response of the low-pass filter. (Note that in a cochlear implant, we wouldn’t be able to use forward-backward filtering, and we would have to be more careful about our LPF design.) % design elliptic IIR LPF, 50 Hz passband edge, 70 Hz stopband edge % 0.5 dB passband ripple, 40 dB stopband suppression >> [N,Wp] = ellipord(50/(fs/2),70/(fs/2),0.5,40); >> [blpf,alpf] = ellip(N,0.5,40,Wp); b. Let’s check the frequency response of the low-pass filter. Since we will apply the filter twice (once forward and once backward), we only need 40 dB suppression in the stop-band to achieve 80 dB suppression in total. >> fvtool(blpf,alpf); % analyze LPF c. Now we ‘full-wave rectify’ the subband signals. Full-wave rectification is just a fancy word for taking the magnitude or absolute value of the signal. (In contract, half-wave rectification of a signal sets the negative going parts of a signal to zero.) >> yenv = abs(ysub); % full-wave rectification of subbands – 2 –SPHSC 503 – Speech Signal Processing UW – Summer 2006 d. Then we apply the low-pass filter to the rectified subbands. >> for i = 1:16, % for-loop over subbands, apply LPF >> yenv(i,:) = filtfilt(blpf,alpf,yenv(i,:)); >> end e. Again, we check the outcome of our actions by plotting the first 4 subband envelope signals versus time. >> figure >> for i = 1:4, % for-loop over first 4 subbands >> subplot(4,1,i) % start new subplot >> plot(tsub,yenv(i,:)) % plot subband envelope versus time >> end Exercise 12.4 – Envelope modulation In a cochlear implant, the envelope information would be used to scale the voltage of the bipolar pulses that are sent to the electrodes. For our simulation, we will modulate band-pass filtered white noise with the envelope information. a. Create a white noise signal that has the same length as the input signal y. >> noise = whitenoise(length(y)); b. Run the white noise signal through the filterbank to obtain band-pass filtered white noise. Plot the first 4 subbands and listen to the first two subbands. >> nsub = fbfilter(noise,fb); >> figure >> for i = 1:4, % for-loop over first 4 subbands >> subplot(4,1,i) % start new subplot >> plot(tsub,nsub(i,:)) % plot noise subband versus time >> end >> soundsc(nsub(1,:),fs) % listen to first subband >> soundsc(nsub(2,:),fs) % listen to second subband c. To modulate the white noise subbands with the envelope information, we multiply the noise with the envelopes. >> ycisub = nsub .* yenv; % create CI simulated signal d. Let’s have a look at the first 4 modulated white noise subbands. >>

View Full Document
Download Cochlear Implant Simulation
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...

Join to view Cochlear Implant Simulation and access 3M+ class-specific study document.

We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Cochlear Implant Simulation 2 2 and access 3M+ class-specific study document.


By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?