use SpeechLib_TLB;
procedure TextToWav(Atext:string;AFieldName:string;)
var
ResultStr, aText, shengyinxuhao, awavfile: string;
SpFileStream1: TSpFileStream;
SpVoice1: TSpVoice;
MyMemoryStream: TMemoryStream;
Getstr, aurl: string;
Tmpbs: TBytes;
W: TTextWriter;
begin
// 声音序号 0为中文,1为英文
if shengyinxuhao = '' then
shengyinxuhao := '0';
awavfile := AFieldName;//+ '.wav';
try
// TThread.Synchronize(nil,
// procedure // 处理界面交互代码写这里
// begin
SpVoice1 := TSpVoice.Create(nil);
// SpVoice1.GetVoices('', '');
SpVoice1.Voice := SpVoice1.GetVoices('', '').item(shengyinxuhao.ToInteger);
// SpVoice1.Volume := 30; // 0到100
// SpVoice1.AudioOutput := SpVoice1.GetAudioOutputs('', '').item(shengyinxuhao.ToInteger);
// SpVoice1.Rate := 0; // -5到5之间
SpFileStream1 := TSpFileStream.Create(nil);
SpFileStream1.Format.type_ := SAFT8kHz8BitStereo; // SAFT8kHz8BitMono;
SpFileStream1.Open(awavfile, SSFMCreateForWrite, false);
SpVoice1.AudioOutputStream := SpFileStream1.DefaultInterface;
// end);
SpVoice1.Speak(aText, SVSFlagsAsync);
SpVoice1.WaitUntilDone(-1);
SpFileStream1.Close;
end;
finally
if SpVoice1 <> nil then
SpVoice1.Free;
if SpFileStream1 <> nil then
SpFileStream1.Free;
MyMemoryStream.DisposeOf;
end;
end;
SpeechLib_TLB单元代码如太长自己安装操作步骤Delphi10.2调用Windows 10 下的SAPI进行TTS开发-CSDN博客