|
From: Nicholas V. <nv...@bi...> - 2008-08-12 12:13:31
|
A few comments to Pieter's earlier mail... Do the for-loop expansion in HTS_PStream_calc_wuw_and_wum(). Then convert the pdf and inf files to C structs. (It's more Flite-style anyway.) Now you can add actually do finv() and surprisingly many other calculations beforehand (and store their results into C structs corresponding pdf&inf files)... Modify your program so, that you start can play data even during synthesis, if not already doing so. Traversing the trees used to be a really bad bottleneck in the past, but not so much anymore. (It used to be recursive etc.) Depending on the questions/patterns you use, you might be able to optimize it a bit further. (For 90%+ a mere strstr() would suffice...) In PDA convert doubles to floats. If your target device does not have a FPU, consided fixed-point arithmetics. Memory (de)allocations take time. In stead of allocating a matrix, you might allocate a single large chunk (the code would have to be modified accordingly). Also combining integrating Flite and HTS engine might help. (Flite's Segment and HTS engine's HTS_LabelString have a lot in common.) However, this would require large restructuring and rewrite of the code. br, Nicholas |