2008-10-16 28 views
5

tôi đã làm nó bằng cách tạo ra đối tượng OLE với Delphi năm 2000/NT/XP như sau:năng Text to speech trong Vista

Voice := CreateOLEObject('SAPI.SpVoice'); 
Voice.speak(...) 

Nhưng điều này không làm việc trong Vista, làm thế nào tôi có thể làm cho chương trình của tôi chỉ đơn giản là nói một số văn bản trong Vista?

+0

cảm ơn François. Nó hoạt động với thành phần trong bài báo bạn đề xuất (http://www.blong.com/Conferences/DCon2002/Speech/SAPI51/SAPI51.htm) –

Trả lời

4

Tôi vừa thử (D2009 trên Vista Home Premium) với mã sau và hoạt động!

unit Unit1; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls, ComObj; 

type 
    TForm1 = class(TForm) 
    Button1: TButton; 
    procedure Button1Click(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Voice: Variant; 
begin 
    Voice := CreateOLEObject('SAPI.SpVoice'); 
    Voice.speak('Hello World'); 
end; 

end. 

FYI, có một nice paper on using speech in Delphi programming bởi Brian Long ...


(Rất) Cuối Cập nhật:

Đối với lý do tại sao nó có thể không hoạt động trong Vista và đưa ra một EZeroDivide ngoại trừ IDE, hãy xem câu hỏi SO khác này: Delphi SAPI Text-To-Speech

+0

Cảm ơn bài báo. Nhưng, chạy mã bạn đã cho thấy, trong Vista, tôi gặp lỗi "Phân chia dấu chấm động bằng 0". Bạn đã thử nghiệm nó trong Vista? (Tôi đã xây dựng nó với BDS2006 trong Windows XP và chạy tập tin thực thi trong Vista) –

+0

Tôi đã xây dựng và thử nghiệm trong Vista (trên cùng một máy) –

+0

nhờ François. Nó hoạt động với thành phần trong bài báo bạn đề xuất (http://www.blong.com/Conferences/DCon2002/Speech/SAPI51/SAPI51.htm) –