unit word1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  VTxtAuto_TLB, StdCtrls, ComCtrls, Mask, FileCtrl;type
  TForm1 = class(TForm)
    speedtext: TStaticText;
    speed: TTrackBar;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    gettext: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure stopbtnClick(Sender: TObject);
    procedure speedChange(Sender: TObject);
    procedure prebtnClick(Sender: TObject);
    procedure nextbtnClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  TTS:IVTxtAuto;
implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
  TTS:=CoVtxtAuto_.Create;
  TTS.Register('superwords','superwords');
  speed.Position:=TTS.Get_Speed;
  speedtext.caption:='速度:'+inttostr(speed.position);
  speed.SelEnd:=speed.Position;
  //filelistbox1.Mask:= '所有文件(*.*)|*.*| 文本文件(*.txt)|*.txt';
end;procedure TForm1.stopbtnClick(Sender: TObject);
begin
  TTS.StopSpeaking;
end;
procedure TForm1.speedChange(Sender: TObject);
begin
  TTS.Set_Speed(speed.position);
  speedtext.caption:='速度:'+inttostr(speed.position);
  speed.SelEnd:=speed.Position;
end;procedure TForm1.prebtnClick(Sender: TObject);
begin
  TTS.AudioRewind;
end;procedure TForm1.nextbtnClick(Sender: TObject);
begin
  TTS.AudioFastForward;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
  TTS:=nil;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  TTS.Speak(Edit1.text,vtxtst_READING);
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (length(trim(edit1.text))>0) and (key=chr(32))
  then  begin if  trim(edit1.text)=gettext.Caption
              then   begin
                     TTS.Speak(edit1.Text,vtxtst_COMMAND);
                     edit1.Clear;
                     end
              else   TTS.Speak('YOU ARE WRONG',vtxtst_STATEMENT);
        end;
end;
end.

解决方案 »

  1.   

    请问楼上,VTxtAuto_TLB我怎么没有?要如何安装?谢谢你
      

  2.   

    关注,TTS已经支持中文了么?
      

  3.   

    微软speech sdk的示例程序ttsapp中有说中文的演示,不过该例子是vc的。
    它通过setvoice方法可改变说中文还是其他,不过说中文没有口型变化,说英文还有口型变化。
    安装到delphi的控件中没有setvoice方法。
      

  4.   

    我从以前的贴子找到了VTztAuto_TLB的来历。--从Delphi 的 菜 单Project/Import Type Library... 中 选 击Add..., 浏 览 到Windows 目 录 下 的Speech 子 目 录 里, 打 开vtxtauto.tlb, 可 以 看 到 下 面Class names 中 会 出 现 我 们 需 要 的 接 口 的 包 装 类 的 名 字TVTxtAuto, 注 意 对 话 框 底 部 的Generate Component Wrapper 需 要 被 选 中, 点 击Create Unit 就 可 以 打 开 一 个 名 为VTxtAuto_TLB 的Unit。但是还是不能朗诵中文,以上程序段中何处选择了中文引擎?
      

  5.   

    TTS能朗读中文吗?
    金山词霸的英文朗读用的是TTS
    中文似乎不是哦,好像是别的什么引擎
      

  6.   

    查看了以前的贴子,用以下方法实现了朗诵中文:--首先确保你安装的了MS SPEECH SDK5.1,并正确的引用到了Delphi中。MS SPEECH SDK5.1支持XML解析,实际上让它讲中文只需要一句代码就可以了:--spvoice1.Speak('<LANG LANGID="804">你好</LANG>',SVSFlagsAsync or SVSFIsXML);--spvoice1是SpVoice组件。事实上,我已经把系统却省为简体中文,所以把上句改为
     spvoice1.Speak('<LANG LANGID="409">hello</LANG>你好',SVSFlagsAsync or SVSFIsXML);可以实现中英文朗诵‘hello,你好’