我的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
WaveFileStream:TSpFileStream;
begin
WaveFileStream:=TSpFileStream.Create(self);
WaveFileStream.Format.Type_:= 41;
WaveFileStream.Open('test.wav',SSFMCreateForWrite,false);
SpVoice1.AudioOutputStream:=WaveFileStream.DefaultInterface;
SpVoice1.Speak('语音测试语音测试',SVSFlagsAsync);
SpVoice1.WaitUntilDone(1000);
WaveFileStream.Close;
WaveFileStream:=nil;
SpVoice1.AudioOutputStream:=nil;
end;
同样的一段代码,在32位win7下调试通过,在我移植到2000系统时,每次都报错,保存的wav文件不能播放,有高手帮解决下没?困扰一周了
procedure TForm1.Button1Click(Sender: TObject);
var
WaveFileStream:TSpFileStream;
begin
WaveFileStream:=TSpFileStream.Create(self);
WaveFileStream.Format.Type_:= 41;
WaveFileStream.Open('test.wav',SSFMCreateForWrite,false);
SpVoice1.AudioOutputStream:=WaveFileStream.DefaultInterface;
SpVoice1.Speak('语音测试语音测试',SVSFlagsAsync);
SpVoice1.WaitUntilDone(1000);
WaveFileStream.Close;
WaveFileStream:=nil;
SpVoice1.AudioOutputStream:=nil;
end;
同样的一段代码,在32位win7下调试通过,在我移植到2000系统时,每次都报错,保存的wav文件不能播放,有高手帮解决下没?困扰一周了
5.1倒是兼容:http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&displaylang=en
var
WaveFileStream:TSpFileStream;
begin
WaveFileStream:=TSpFileStream.Create(self);
WaveFileStream.Format.Type_:= SAFT32kHz8BitMono; //////////
WaveFileStream.Open('test.wav',SSFMCreateForWrite,false);
SpVoice1.AudioOutputStream:=WaveFileStream.DefaultInterface;
SpVoice1.Speak('<LANG LANGID="804">'+'语音测试语音测试',SVSFlagsAsync);
SpVoice1.WaitUntilDone(1000);
WaveFileStream.Close;
WaveFileStream:=nil;
SpVoice1.AudioOutputStream:=nil;
end;
中文用:
SpVoice1.Speak('<LANG LANGID="804">'+'语音测试语音测试',SVSFlagsAsync);
英文用:
spvoice1.Speak('<LANG LANGID="409">'+'语音测试语音测试',SVSFlagsAsync);
你说的WaveFileStream.Format.Type_:= SAFT32kHz8BitMono;这里是用的SAFT32kHz8BitMono
但是我合成的语音格式要求是SAFTCCITT_ALaw_8kHzMono的,也就是我最开始写的WaveFileStream.Format.Type_:= 41;
在win2000里换成这个格式的就出错了而且用你说的那种格式是可以生成wav,但是是男声的,和女声发音的比不清晰,能改发声设置么?谢谢
var
WaveFileStream:TSpFileStream;
begin
WaveFileStream:=TSpFileStream.Create(self);
WaveFileStream.Format.Type_:= SAFT32kHz8BitMono;
WaveFileStream.Open('test.wav',SSFMCreateForWrite,false);
SpVoice1.AudioOutputStream:=WaveFileStream.DefaultInterface;
//这个Item中的下拉索引和控制面板中的语音中的下拉是对应的顺序,这个数字与安装的顺序有关,
//SimpChinese Speech Package.msi包中带的 Mary,Mike,Sam本身是不支持女声的,想要中文女声,请
//下载NeoSpeech附带的,或者找 jTTS的语音库,我感觉最好的还是jTTS
//这个设置部分相当于 调用
//\Program Files\Common Files\Microsoft Shared\Speech\sapi.cpl
//这个设置在 sapi51中的例子TextToSpeech.dpr中有//选择是男声还是女声,就设置Item中的这个索引值
SpVoice1.Voice := spvoice1.GetVoices('','').Item(4);// SpVoice1.Rate:= 速率
// SpVoice1.Volume:= 音量
SpVoice1.Speak('<LANG LANGID="804">'+'语音测试语音测试',SVSFlagsAsync);
SpVoice1.WaitUntilDone(1000);
WaveFileStream.Close;
WaveFileStream:=nil;
SpVoice1.AudioOutputStream:=nil;end;