GSoC Project status update 2: Speech Recognition in Open Moko

2008-06-16 Thread saurabh gupta
Hello everyone,

Here is the status update of GSoC speech recognition project for open moko.
I have implemented some subroutines in C for the implementation of Hidden
Markov Model for speech processing. As ARM 32-bit processors do not have
inbuilt fixed point arithmetic, So all floating point calculations are
emulated in software. As a result the processing time is very high and
performance degrades dramatically specially for multi threaded applications.
So, I have written fixed point codes in which all calculations are handled
through fixed point. I have used the 16:16 notation for fixed point and used
32 bit integer to represent a fixed point. Multiplication and division
procedures for fixed point are implemented through macros. As the project
progresses, the stress will be given to optimize the codes
more.

Currently the coding phase of this project is going on and some
codes(without full compilation) have been released here:
https://projects.openmoko.org/frs/?group_id=146
(I couldn't use the svn because my public key is still not authorized).

An initial Design Document for this project has also been released and can
be found here:
https://projects.openmoko.org/docman/index.php?group_id=146selected_doc_group_id=145language_id=1

The coding phase will continue for some more time and after enough amount of
code is ready, I will start working on open moko tools and start building
test applications to get comfortable with it.

Any suggestions and comments will be highly appreciated.

The progress status is continuously updated here also:
http://saurabh1403.wordpress.com/

-- 
Saurabh Gupta
Electronics and Communication Engg.
NSIT,New Delhi
I blog here: http://saurabh1403.wordpress.com/ ,
http://saurabh1403-blog.blogspot.com
___
Openmoko community mailing list
community@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/community


Re: GSoC Project status update 2: Speech Recognition in Open Moko

2008-06-16 Thread Erland Lewin
Hello Saurabh,

2008/6/16 saurabh gupta [EMAIL PROTECTED]:

 So, I have written fixed point codes in which all calculations are handled
 through fixed point. I have used the 16:16 notation for fixed point and used
 32 bit integer to represent a fixed point.


FWIW, when I wrote an embedded speech recognition engine, I used 16 bits for
most of the data in the models etc. If you could manage to store values in
16 bits rather than 32, then I your memory requirements could be halved, and
probably performance increase significantly, since the cpu to memory
bandwidth would be lower, and I think that might be a performance
bottleneck. However, it required careful tracking of what range of values
were actually required in various stages of the algorithm.

Multiplication and division procedures for fixed point are implemented
 through macros. As the project progresses, the stress will be given to
 optimize the codes
 more.


I hope you won't have to do much if any division because division is quite
slow. If there are variables you need to divide by, try storing 1/x instead
of x, and then doing multiplication instead of division if you can manage
that.

Good luck,

Erland
___
Openmoko community mailing list
community@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/community


Re: GSoC Project status update 2: Speech Recognition in Open Moko

2008-06-16 Thread saurabh gupta
hi Erland,

On Tue, Jun 17, 2008 at 2:04 AM, Erland Lewin [EMAIL PROTECTED] wrote:

 Hello Saurabh,

 2008/6/16 saurabh gupta [EMAIL PROTECTED]:

 So, I have written fixed point codes in which all calculations are handled
 through fixed point. I have used the 16:16 notation for fixed point and used
 32 bit integer to represent a fixed point.


 FWIW, when I wrote an embedded speech recognition engine, I used 16 bits
 for most of the data in the models etc. If you could manage to store values
 in 16 bits rather than 32, then I your memory requirements could be halved,
 and probably performance increase significantly, since the cpu to memory
 bandwidth would be lower, and I think that might be a performance
 bottleneck. However, it required careful tracking of what range of values
 were actually required in various stages of the algorithm.


This was the point where I thought this way. Please correct me if I am
wrong. Since the word length of ARM processor of FR is 32bit, I chose 32 bit
size for the fixed point notation. In using 32 bit fixed point notation, my
range of both integer and fraction part also increases.




 Multiplication and division procedures for fixed point are implemented
 through macros. As the project progresses, the stress will be given to
 optimize the codes
 more.


 I hope you won't have to do much if any division because division is quite
 slow. If there are variables you need to divide by, try storing 1/x instead
 of x, and then doing multiplication instead of division if you can manage
 that.


I did do that whenever I had to divide by the constant numbers. But at some
points, the situation happens to perform the division by run time variables
and so, I had to implement the fixed point division too.



 Good luck,

 Erland



 ___
 Openmoko community mailing list
 community@lists.openmoko.org
 http://lists.openmoko.org/mailman/listinfo/community




-- 
Saurabh Gupta
Electronics and Communication Engg.
NSIT,New Delhi
___
Openmoko community mailing list
community@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/community