.net下TTS库的几个bug解决方案

问题
用C#调用SAPI时,在播放声音时没有问题,但是在输出到音频.wav文件时,就无法在特定event调用回调函数。
解决方案
无法通过event进行临时语音变更,只能提前扫描文本内容,针对特定模式提前转变读音格式。


问题
在生成音频文件时,有一定概率会生成140字节的文件,其中的音频内容为空。
解决方案
生成每个音频文件后,对文件容量进行检查,如果有问题则删除问题文件,重新生成。


问题
如果输出音频到文件时,SpeakProgress取得的时间是错误的。
经测试,设置下面的参数时比较精确:SpeechAudioFormatInfo(32000, AudioBitsPerSample.Eight, AudioChannel.Mono)
可能是内部代码有一个地方写死了32000,所以改变时,就会计算错误。
随采样率的提高,计算的出的时间也提高。当采样率提高一倍,时间偏差多出一倍。
解决方案
1.只使用32500的采样率生成文件。
2.通过采样率的正相关,计算出正确的时间。