微软的TTS怎样才可以发中文! 我装了Sdk5.1 及语音包(100分)

  • 主题发起人 主题发起人 devexpress
  • 开始时间 开始时间
to aidren 你装的是系统是怎样配置的。d5还是d6
 
哇,我 NND 也下了一个,可以用的啊。
work....
 
导入 SAPI.dll (不用手工寻找,直接已经在 import type library 列表中),
这个 DLL 在列表中的名字是 :Microsoft Speech Object Library [Version 5.1]。
点 inatall... Delphi 让你选择包的名字和存放位置,我选择 /bpl/Sapi_V51.dpk
然后 Delphi 自动建立 SpeechLib_TLB.pas 和编译这个包,默认将这个库中的 19 个
控件装到 ActiveX 页。19 个元件的注册情况如下:
procedure Register;
begin
RegisterComponents('ActiveX',[TSpObjectTokenCategory, TSpObjectToken, TSpMMAudioIn, TSpMMAudioOut,
TSpVoice, TSpSharedRecoContext, TSpInprocRecognizer, TSpSharedRecognizer, TSpLexicon,
TSpUnCompressedLexicon, TSpPhoneConverter, TSpTextSelectionInformation, TSpPhraseInfoBuilder, TSpAudioFormat,
TSpWaveFormatEx, TSpInProcRecoContext, TSpCustomStream, TSpFileStream, TSpMemoryStream]);
end;
建一个新项目,上面放一个TSpVoice 、Memo 和一个按钮,在 Memo 中写‘小雨哥’,在 Button 的 onClick 里写
procedure TForm1.Button1Click(Sender: TObject);
begin
SpVoice1.Speak(memo1.Lines.Text,0);
end;
就读出来了呀。
 
那见鬼了。我这有三台装d6+win98+sp2的系统装都是同样的问题, 
to 小雨哥,你配置是怎样的。
 
Windows 2000 + Delphi 5 + 你说的 sdk
 
难道是delphi6的问题, 现在没头绪了。他的帮助全是e文,

to 小雨哥, 你可以把SpeechLib_TLB.pas ,SpeechLib_TLB.dcu,和improt/目录的几个文件
传给我行吗?
谢谢
我的email:devexpress@163.com

 
有没有问题了?没有我就要删除自己这个试验代码了啊。
另外,这个 dll 在 C:/Program Files/Common Files/Microsoft Shared/Speech 下。
OK 了。
 
另外,把下面目录下的这个文件拷贝到 system 目录,就可以在“控制面板”上进行设置了。
C:/Program Files/Common Files/Microsoft Shared/Speech/sapi.cpl
 
谢谢小雨哥,文件现在导进来了。真是太高兴了。 

在active 面板上多了一堆控件,

我试了一下。出错
unit Unit1;

interface

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

type
TForm1 = class(TForm)
SpVoice1: TSpVoice;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure SpVoice1AudioLevel(Sender: TObject; StreamNumber: Integer;
StreamPosition: OleVariant; AudioLevel: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
SpVoice1.Speak(memo1.Lines.Text,3);
end;



procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

是不是还少了文件
//[Error] Unit1.pas(11): Undeclared identifier: 'TSpVoice'
 
这个错误百分百是 LIB 路径没有设置。还有
SpVoice1.Speak(memo1.Lines.Text,3);这句正确的写法是:
SpVoice1.Speak(memo1.Lines.Text,0);// <--- 默认读当前文字
读指定文件:
SpVoice1.Speak(FileName,4);
动态装入:
SpVoice1.Speak(memo1.Lines.Text,1);
等等...
 
TO:aidren
占用太多的资源问题,将 flags 标志设为 1 ,使它异步装载就可以了,比同步装载
减小资源 20% 左右。
 
问题解决! 小雨哥是个太好人
 
请问小雨哥,如何在朗读的时候加亮正在读取的文本框中的文字,如何将spvoice及相关控件打包发布,送您200分!!
我的问题ID:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1384349 谢谢。
 
笑语小鱼哥就是牛,非常感谢:)
 
你可以看看这里http://www.blong.com/Conferences/DCon2002/Speech/SAPI51/SAPI51.htm#Introduction
不光有讲解还有例子,很不错的呦!
 
后退
顶部