Got my MS EE diploma, now what’s next?

After 4 years since I last took the UP theatre stage, I found myself walking on the same stage, waving to the other graduates (some of them used to be my students), and then shaking Mam Gev’s hand! Yes, I am once again officially a UP graduate! And now I have my MS EE diploma to brag about :P It took me 3 ½ years, countless overnights and sleepless nights in the DSP (Digital Signal Processing) lab, about a couple hundred progress reports (and missed a few of those due to ‘lack of progress’), 3 INCs (Math 211, EE 264 and EE 374), and thousands of printed pages for my documentation… It took a lot of hard work, successes and failures to get here, but just like what I keep saying “Hey, I MADE IT!”

with my Ampa :)

with my Ampa :)

I couldn’t thank enough everyone who has been a part of my UP life – you know who you are. Thank you for joining me in my roller coaster ride. I have enjoyed making my way up and then plunging right down only to go up again ;)

Now that I have my MS EE diploma, what’s next for me?

I have started working as a firmware engineer at Emerson Network Power in November. So far, it has been challenging and fun working on a new field (wireless comms) and adjusting to a new environment. I also fiddle with some image processing exercises, using Matlab, to keep my DSP brain cells moving. I suppose that right now, on top of my mind is to keep on going with work, give it my best shot no matter how new I am to the field, and at the same time try and get better with DSP. I have to admit I am still hoping that at some point, I’ll have a signal processing-related job. Hopefully attending the DSP 2009 Conference can help me out on this one :) We’ll see. But right now, work work work is the key! Will I pursue a PhD? I’m not thinking about it now, but in a year or two, ask me again :P

My Blog’s New Look

I just updated my blog and what better way to do it than start with choosing a new wordpress theme ;) I think my blog’s new look is perfect in such a way that it reflects my outlook in life. Ever since I was a kid, I have always loved looking at the sky and seeing beautiful clouds floating around. Somehow, I look at them and I think about all the things I want to do in life - all my dreams and aspirations. To me, a light blue sky equals a beautiful day - a new beginning, a second chance :) And that is I how I want to view life - something beautiful and grand!

Im looking forward to updating this blog regularly and hoping to hear more of your thoughts :)

DSP 2009 Conference in Greece

Looks like im off to Greece in July! My paper got accepted to the DSP 2009 Conference in Santorini, Greece :) I was so ecstatic yesterday upon seeing the acceptance email. It made me believe and have more confidence that what we do in the Philippines are worthy to be presented to an international audience!

Still lots to get done between today and July - visa, money, presentation, etc… Please pray for me! :)

I’m a practicing DSP engineer now! :)

As I wrote in my last post, my MS thesis is finished! :) and that means that I am ready to join the industry and work as a DSP engineer. I am now a Firmware Engineer at the Advanced Engineering Department of Emerson Network Power. I am excited and very keen to find out the projects that I’ll soon be working on - suffice to say these projects involve DSPs and power supplies. Im not very good with power supplies but i am learning ;) with regards to the DSP aspect, there are still loads to learn and I am ready! :)

Thesis Done! :)

Wow - still feels surreal, but its done!!! I had my thesis defense this afternoon and i passed! :) 3 years of work is done. Il write more as soon as it sinks in … but im in cloud nine hehe :) feels sooo great! :) Finally - its finished - and i didnt quit - i kept pushing til its done.

I will post my acknowledgment next time :)

Thesis Defense is here! :)

The Department of Electrical & Electronics Engineering
is pleased to announce the
Oral Defense of the Master’s Thesis of

Ms. Amadea Paula Q. Unisa

Entitled: “Real-time Implementation of Low Bit Rate Wideband Speech Coders on ADSP-21065L”

for the degree of MS in Electrical Engineering

Date:   October 14, 2008
Time:  4 pm
Venue:  PLDT Multimedia Lecture Hall

Panel Members:
Thesis Adviser:  Rowena Cristina L. Guevara, Ph.D.
Chairman: Joel Joseph S. Marciano, Jr., Ph.D.
Members: Luis G. Sison, Ph.D.
Franz A. de Leon, MS EE
Emerson C. Tan, MS EE

This defense is open to the public.

ABSTRACT

In this thesis, real-time Wideband Sinusoidal (WS) and Wideband Linear Prediction (WLP) speech coders were implemented using the ADSP-21065L EZ-Kit LiteTM Evaluation Board. These speech coders are based on the parametric speech models which are extensions of existing sinusoidal and LP models for narrowband speech. The parameters extracted from the input speech are quantized using vector and scalar quantization methods.

A real-time implementation was achieved by programming all the subroutines of the speech coders in assembly language. The average complexities of the WS analysis and synthesis blocks are 1.803 MIPS and 2.95 MIPS.  The WS speech coder requires 0.785 kwords of program memory and 5.446 kwords of data memory. For the WLP speech coder, the analysis and synthesis blocks obtained average cycle counts of 28.179 MIPS and 11.249 MIPS. The WLP speech coder occupies 5.98 kwords of program memory and 9.355 kwords of data memory.

Two WS configurations and all of the WLP configurations achieved Mean Opinion Score (MOS) of greater than 3, indicating that the synthesized speech has noticeable but acceptable impairments. All the WS and WLP configurations achieve Diagnotic Rhyme Test (DRT) scores of greater than 80, thus the listener could discriminate between the rhyming pairs of consonant-vowel-consonant (C-V-C) words.

*****

Hope to see you there ;)

- dae

On Meeting Dr. Alex Waibel

Fed and myself attended the talk of Dr. Alex Waibel, a professor from CMU (Pittsburgh) and University of Karlsruhe (Germany) on Sept 10.

Fed and I couldnt stop gushing about Dr. Waibel’s demos! They are just WOW! I think the reason Fed and I are overwhelmed this much is because what he presented are something we’ve been trying to do in the UP DSP lab (and yes, we’re inching along, but hey, we’ll get there in time!) But to see them running right before our eyes and see that its very much possible - simply awesome!

The following are the demos that we witnessed:
1. The direction detector that shows a video wherein people are in a meeting and there are arrows pointing to where the person is directing his attention to or who he’s conversing with - so you can see arrows following the movements of a person’s head.
2. The face-tracking system that identifies the eyes of the person (so Dr. Waibel presented a video where everytime a door opens and someone goes inside, you can see two circles where the person’s eyes are)
3. Directional sound system consisting of ultrasonic speakers that convolve with the air. Basically, how it works is that if the speaker is directed to you then only you can hear the sound. If its not directed to you, then you wont be able to hear a thing.

But the demo that fed and i can relate the most is the language translator. This project is a part of the CHIL (Computers in the Human Interaction Loop) project that aims to aid human to human interaction by breaking the language divide. Dr. Waibel showed us the ‘Long Tail of Language’ - a graph depicting the number of speakers of a certain language. On top of that list is Mandarin, English, Spanish with hundreds of millions of speakers, and then there’s a plunge on the number of speakers of the other languages. And there are 6000 languages in the world! Anyway, this project, like i mentioned aids human to human interaction by breaking the language barriers. And how this thing works may sound simple, but being a speech processing person myself, let me tell you, its not as easy as it sound :)

There are three legs to this system: (1) Speech recognition - where the system identifies what the speaker has said and outputs it in text form; (2) Translator - translates the text from one language to another; and (3) Speech synthesis - the translated text is converted to sound output. What’s amazing is that Dr. Waibel had a demo of an english-to-filipino translator :) However, the synthesizer he used is Spanish so it sounded like a Spanish guy speaking Filipino words (close enough though!)

And so there comes an opportunity for us. Dr. Waibel is really interested to continue that project for the Filipino language and for the other languages in the Philippines - both on the recognition and the synthesis end. They already have the translator (one language to Filipino) but it still needs improvement since no one at their lab speaks Filipino. And that’s where we come in. I am proud to say that our lab is the pioneer in our country to do speech signal processing and we have the ability to help Dr. Waibel and the people at InterACT (International Center for Advanced Communication Technologies) to get this going (at least for the Filipino language). There already have been projects and theses on Filipino speech recognition and synthesis done at our lab.

So yes, im excited for all these opportunities to collaborate with great minds! :) It will be great for the lab to be expanding our horizon, so to speak, and to be working with people who are very good at this field, at least this way, we can leap from where are now to where we want to be :) Like i said, we’re inching along, but we’ll get there, with all the help we can possibly get! :)

Here’s our picture with Dr. Alex Waibel

Photoshoot Aug. 25, 2008

had a photoshoot this 25th of august and it was lots of fun :) my thanks goes to the photographers who still decided to go through the shoot even if i was the only ‘model’ who made it: thet, marc, buddy, tintin, vic, eric and milton; to the hairstylist who i have worked with in my first-ever photoshoot krissy; and to the makeup artist who works magic (hehe!) kaye :)

the multiply sites of the photographers/makeup artist/hairstylist are:
marc and thet: http://marcdrizrosales.multiply.com
buddy and tin: http://buddyilao.multiply.com/
http://tintoot.multiply.com
http://bugnotandkulot.tintoot.com
vic: http://pogita77.multiply.com/
eric: (to follow)
milton: http://miltonching.multiply.com/
krissy: http://krissymira.multiply.com
kaye: (to follow)

looking forward to having more photos to be added to my collection ;)

here’s my favorite pic (more in amadeapaula.multiply.com)

My DSP Family :)

Had our DSPiktyuran moment (4pm, July 9, 2008). So who are in this photo:

1st row (L-R): Dae (that’s me!), Bogs, Leslie, Ma’am Gev, Sir Franz, Paulo, Elaine, Liz, Fed, Mike, Lito, and Noel

2nd row (L-R): Ted, Keone, Kel, Joseph, Manu, and Oliver

Here’s another one of me with my very lovely Vicky :P I dont really work like this.. Just for the photo shoot ;)

And by the way, the big black box in the background is our own “whisper room” ;) Very interesting - you can scream and scream inside the room, but to the people outside the room, your voice seems like a whisper…

So yes, that’s our lab and the bright people who are part of it ;)

Dae

Out of memory (ADSP 21065L)

I have encountered the ADSP linker error [Error li1040] more times than I could remember while working on my thesis. This error message goes something like

[Error li1040] “.\EZLAB_21065L_debugger.ldf”:97 Out of memory in output section ’seg_pmco’ in processor ‘p0′
Total of 0×88e word(s) were not mapped.

For those of you who have already programmed a DSP, this is no surprise. The ADSP 21065L’s on-chip SRAM only has 544 Kbits that can be used to store both instructions and data. This on-chip memory is partitioned to 2 blocks: Block0 has 288 Kbits (6k x 48) and Block1 has 256 Kbits (8k x 32). But for the rest, the reaction would be something like “What can I do with 544 Kbits of memory?!”. (Hehe, a LOT actually!) But I remember a software developer once told me, “Memory, to me, is an infinite resource until the SysAd  gets mad at me”. Makes sense… but not to a DSP programmer.

At first, I was only having trouble with data memory - I had a handful of arrays in my code and I have codebooks (that are used in the vector quantization). There’s an easy solution to this and that is to store the data in the external memory. In my implementation, memory is organized such that I can store data in the following address: START(0×03000000) END(0×030ffeff). The trade-off, though, is it takes more cycles to access data in external memory (It only takes a single cycle if data is stored in the on-chip memory). So, if the number of processing cycles is a concern (as it is to real-time systems) a careful selection of which data could be stored in external memory should be done.

But what if the problem is in program memory? The error message shown above is one of the error messages I have encountered  The segment seg_pmco, defined in the LDF file, is where my instructions are stored. And based on my experience, running out of program memory is more difficult than being out of data memory. Im still experiencing it actually. :P This is the case where code optimization comes in. My entire code is in assembly, which in itself is already optimized (compared to C or C++).

Another way to solve the problem in program memory is to implement modularity. I do that but I missed some bits of the code that can be turned into subroutines. So I had  to go back to my code (all of it!) and checked for some more optimization opportunities and i was able to save a few more program memory spaces. Right now, all the most commonly used functions such as filtering, inner product computation, math functions (square root computation, division subroutine, acos computation, log computations, etc), scalar  and vector quantizations, etc are written as subroutines such as if they are needed anywhere in the program, it only takes a function call. However, it still didnt solve my problem…

By the way, with ‘entire code’, I meant encoder + decoder. So now, the way to solve the problem is to implement the encoder on one board, and the decoder on another :) I’m sure there will still be problems that will arise (such as bit syncing, etc) but I’m very excited to implement it ;)

Wish me luck! :D