GSoC Project status update 2: Speech Recognition in Open Moko
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
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
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