Thank you, Samuel.
You are right. The problem lies in my configuration. /var/log/speech-dispather/speech-dispatcher.conf tells me that the program loads modules in /usr/local/lib/speech-dispatcher-modules/ but I installed speech-dispatcher in /usr/lib.
spd-say works fine. That program is a static linked binary which may make it find the right path of speech-dispatcher modules.
I have installed speech-dispatcher in /usr/local/ before. After I clean up version in /usr/local speech-dispatcher the program works.
Cameron