我的代码如下:
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文件不能播放,有高手帮解决下没?困扰一周了

解决方案 »

  1.   

    沒用過,查查你的Speech SDK版本,是否兼容win2000
    5.1倒是兼容:http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&displaylang=en
      

  2.   

    我用的就是5.1版的啊。。我再去down个重装下试 试,估计不行
      

  3.   

    还是不行,生成的wav文件不能播放,有高手帮下没啊?
      

  4.   

    搞定procedure TForm1.Button1Click(Sender: TObject);
    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;
      

  5.   


    中文用:
          SpVoice1.Speak('<LANG LANGID="804">'+'语音测试语音测试',SVSFlagsAsync);
    英文用:
          spvoice1.Speak('<LANG LANGID="409">'+'语音测试语音测试',SVSFlagsAsync);
      

  6.   

    ffwin你好
    你说的WaveFileStream.Format.Type_:= SAFT32kHz8BitMono;这里是用的SAFT32kHz8BitMono
    但是我合成的语音格式要求是SAFTCCITT_ALaw_8kHzMono的,也就是我最开始写的WaveFileStream.Format.Type_:= 41;
    在win2000里换成这个格式的就出错了而且用你说的那种格式是可以生成wav,但是是男声的,和女声发音的比不清晰,能改发声设置么?谢谢
      

  7.   

    你参考一下看sapi51中的例子TextToSpeech.dpr,因为我系统没有安装别的语音,无法测试更改语音引擎设置能否自动生成女声
      

  8.   

    sapi51中的例子TextToSpeech.dpr,相当于点了控制面板中的语音选择
      

  9.   

    非得重新换个号发贴,不能超过3次,NND
      

  10.   

    procedure TForm1.Button1Click(Sender: TObject);
    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;
      

  11.   

    //SimpChinese Speech Package.msi包中带的 Mary,Mike,Sam本身是不支持中文女声的,想要中文女声