怎样让TTextToSpeech控件也可读汉语句子??? 在微软下栽Speech SDK 5.1 (68 MB) 支持中文 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 unit frm_VoiceMain;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleServer, SpeechLib_TLB, ComCtrls;type TfrmVoices = class(TForm) SpVoice1: TSpVoice; Button1: TButton; cmbVoices: TComboBox; memText: TMemo; Button2: TButton; tbRate: TTrackBar; tbVolume: TTrackBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button3: TButton; Button4: TButton; Label4: TLabel; cmbAudioOutput: TComboBox; Button5: TButton; procedure Button1Click(Sender: TObject); procedure cmbVoicesChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure tbRateChange(Sender: TObject); procedure tbVolumeChange(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure cmbAudioOutputChange(Sender: TObject); procedure Button5Click(Sender: TObject); private procedure InitVoices; //获取系统安装的语音库 procedure InitAudioOutputs; //获取系统声音输出设备 public { Public declarations } end;var frmVoices: TfrmVoices;implementation{$R *.DFM}procedure TfrmVoices.Button1Click(Sender: TObject);begin SpVoice1.Speak(memText.text,1);end;procedure TfrmVoices.cmbVoicesChange(Sender: TObject);var a,b:WideString;begin SpVoice1.Voice:=SpVoice1.GetVoices(a,b).item(cmbVoices.ItemIndex)end;procedure TfrmVoices.InitVoices;var a,b:WideString; Voices:ISpeechObjectTokens; i:integer;begin Voices:=SpVoice1.GetVoices(a,b); for i:=0 to Voices.Count-1 do begin cmbVoices.Items.Add(Voices.item(i).GetDescription(i)) end; cmbVoices.ItemIndex:=0;end;procedure TfrmVoices.FormCreate(Sender: TObject);begin InitVoices; InitAudioOutputs; tbRate.Position:=SpVoice1.Rate; tbVolume.Position:=SpVoice1.Volume;end;procedure TfrmVoices.tbRateChange(Sender: TObject);begin SpVoice1.Rate :=tbRate.Position;end;procedure TfrmVoices.tbVolumeChange(Sender: TObject);begin SpVoice1.Volume := tbVolume.Position;end;procedure TfrmVoices.Button3Click(Sender: TObject);begin SpVoice1.Pauseend;procedure TfrmVoices.Button4Click(Sender: TObject);begin SpVoice1.Resumeend;procedure TfrmVoices.InitAudioOutputs;var a,b:WideString; AudioOutputs:ISpeechObjectTokens; i:integer;begin AudioOutputs:=SpVoice1.GetAudioOutputs(a,b); for i:=0 to AudioOutputs.Count-1 do begin cmbAudioOutput.Items.Add(AudioOutputs.item(i).GetDescription(i)) end; cmbAudioOutput.ItemIndex:=0;end;procedure TfrmVoices.cmbAudioOutputChange(Sender: TObject);var a,b:WideString;begin SpVoice1.AudioOutput:=SpVoice1.GetAudioOutputs(a,b).item(cmbAudioOutput.ItemIndex)end;procedure TfrmVoices.Button5Click(Sender: TObject);var WaveFileStream:SpFileStream; SpFileMode:SpeechStreamFileMode;begin SpFileMode := SpeechStreamFileMode.SSFMCreateForWrite; WaveFileStream.Open('c:\1.wav',SpFileMode,false); SpVoice1.AudioOutputStream:= WaveFileStream; SpVoice1.Speak(memtext.text,1); SpVoice1.WaitUntilDone(1000); WaveFileStream.Close;end;end. DBGridEh 回车或者TAB不换行 怎么办? Dbchart的问题 客户端的时间能取本机的吗? 如何判断一个字符串中是否存在单引号? 快受不了了:SQL的问题,散分!!!!!!!! 多表查询的记录删除问题 各位高手:请问dbExpress如何打包。 防止修改目录名称 调用socket后,退出程序后,奇怪的窗口异常错误。。。 请教个Delphi版本的问题 请问tts(text to speech)怎样安装和使用 speech怎样设置读中文?
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleServer, SpeechLib_TLB, ComCtrls;type
TfrmVoices = class(TForm)
SpVoice1: TSpVoice;
Button1: TButton;
cmbVoices: TComboBox;
memText: TMemo;
Button2: TButton;
tbRate: TTrackBar;
tbVolume: TTrackBar;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button3: TButton;
Button4: TButton;
Label4: TLabel;
cmbAudioOutput: TComboBox;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure cmbVoicesChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure tbRateChange(Sender: TObject);
procedure tbVolumeChange(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure cmbAudioOutputChange(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
procedure InitVoices; //获取系统安装的语音库
procedure InitAudioOutputs; //获取系统声音输出设备
public
{ Public declarations }
end;var
frmVoices: TfrmVoices;implementation{$R *.DFM}procedure TfrmVoices.Button1Click(Sender: TObject);
begin
SpVoice1.Speak(memText.text,1);
end;procedure TfrmVoices.cmbVoicesChange(Sender: TObject);
var
a,b:WideString;
begin
SpVoice1.Voice:=SpVoice1.GetVoices(a,b).item(cmbVoices.ItemIndex)
end;procedure TfrmVoices.InitVoices;
var
a,b:WideString;
Voices:ISpeechObjectTokens;
i:integer;
begin
Voices:=SpVoice1.GetVoices(a,b);
for i:=0 to Voices.Count-1 do begin
cmbVoices.Items.Add(Voices.item(i).GetDescription(i))
end;
cmbVoices.ItemIndex:=0;
end;procedure TfrmVoices.FormCreate(Sender: TObject);
begin
InitVoices;
InitAudioOutputs;
tbRate.Position:=SpVoice1.Rate;
tbVolume.Position:=SpVoice1.Volume;
end;procedure TfrmVoices.tbRateChange(Sender: TObject);
begin
SpVoice1.Rate :=tbRate.Position;
end;procedure TfrmVoices.tbVolumeChange(Sender: TObject);
begin
SpVoice1.Volume := tbVolume.Position;
end;procedure TfrmVoices.Button3Click(Sender: TObject);
begin
SpVoice1.Pause
end;procedure TfrmVoices.Button4Click(Sender: TObject);
begin
SpVoice1.Resume
end;procedure TfrmVoices.InitAudioOutputs;
var
a,b:WideString;
AudioOutputs:ISpeechObjectTokens;
i:integer;
begin
AudioOutputs:=SpVoice1.GetAudioOutputs(a,b);
for i:=0 to AudioOutputs.Count-1 do begin
cmbAudioOutput.Items.Add(AudioOutputs.item(i).GetDescription(i))
end;
cmbAudioOutput.ItemIndex:=0;
end;procedure TfrmVoices.cmbAudioOutputChange(Sender: TObject);
var
a,b:WideString;
begin
SpVoice1.AudioOutput:=SpVoice1.GetAudioOutputs(a,b).item(cmbAudioOutput.ItemIndex)
end;procedure TfrmVoices.Button5Click(Sender: TObject);
var
WaveFileStream:SpFileStream;
SpFileMode:SpeechStreamFileMode;
begin
SpFileMode := SpeechStreamFileMode.SSFMCreateForWrite;
WaveFileStream.Open('c:\1.wav',SpFileMode,false);
SpVoice1.AudioOutputStream:= WaveFileStream;
SpVoice1.Speak(memtext.text,1);
SpVoice1.WaitUntilDone(1000);
WaveFileStream.Close;
end;end.