开发环境 win7 Delphi7
主要目的:调用win7自带的SAPI 5.4(TTS)生成语音流,并通过DSPack组件分别在电脑左右的声道发音。由于反复使用频率较高,所以未生成语音文件而生成语音流,通过内存中读取的方式。
为解决于是在网上搜索到一些文章,并在
http://www.delphi2007.net/delphiblog/html/delphi_200711515440514966.html提示下修改了DSpack, 增加了
function TFilterGraph.RendStream(Stream: TStream): HRESULT; 的方法。
现在问题来了,在调用TTS 的TSpMemoryStream类生成OleVariant类型 如何转换为 TStream类型让DSpack组件读出来????
除此外是否还有更好办法,1.只要满足TTS生成语音,2. 发声时可选左右声道也就是拥有类似Balance的属性,3.生成语音文件不存于硬盘。
谢谢各位大神,大牛,大哥!有没看懂问题的,小弟随时回复!!!
SpMemoryStream1.Format.type_:=SAFT8kHz8BitMono;
SpMemoryStream1.SetData(Music);
sp.AudioOutputStream:=SpMemoryStream1.DefaultInterface;
sp.Speak(Memo1.Text,SVSFlagsAsync);
sp.WaitUntilDone(-1);
Music:=SpMemoryStream1.GetData;
这段是调用TTS的TSpMemoryStream生成的(Music:OleVariant;)不知对了没有?