Sapi声音输出问题

时间:2017-04-27 23:09:58

标签: visual-studio text-to-speech sapi

虽然使tts引擎与Microsoft SAPI 5.3兼容,但我遇到了一个奇怪的问题。我使用HTS_engine作为产生声音的底层引擎。在我的引擎收到sapi的综合请求并处理后,我检索了一个音频数据缓冲区。然后根据Microsoft提供的示例,我通过ISpTTSEngineSite :: write()将数据写入SAPI应用程序。然而,结果是如此糟糕,以至于它只是声音,不再是声音。当我使用音频缓冲区写入wav文件时,它完全没问题。那我在这里做错了什么?

fwrite(audio, sizeof(char), len, outfile); //completely fine
fclose(outfile);
hr = pOutputSite->Write(audio, len, &actual_len); //terrible sound
m_ullAudioOff += len;

我确实仔细阅读了guide和示例代码,但无法弄清问题是什么。

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题。 SAPI支持许多声音格式,但我的引擎仅提供44khz单声道16位声音。因此,当sapi尝试将我的数据转换为默认的11khz单声道16位时,声音会失真。我只需要将其设置为正确的格式即可解决。