如何动态的将文字转化为语音。(200分)

  • 主题发起人 主题发起人 fartrip
  • 开始时间 开始时间
F

fartrip

Unregistered / Unconfirmed
GUEST, unregistred user!
如我有一些文字如何将已有的文字转化为声音文件。
而且要动态的转化,不是先将相关声音录成语音文件
然后在顺序播放。
 
有一位大富翁作过一个“白浪语音”,用的是 DirectSound。
 
基本原理是把所有汉字的读音录下来,建成音库,然后根据汉字检索拼音然后从音库中播放相应的声音。
但是要想语音连续自然就需要很多其他技术了
 
如果是英文的,有很多现成的TTS控件
中文的嘛,好像只有建音库了,不过老实说所见过的基于此类方法的
程序播放效果都不是很令人满意
 
to:cheka
请问那里有现成的TTS控件
 


金山词霸里有 ,可以单独安装
 
本人用TTS做了个背单词的EXE。省去了取词的部分,哪位富翁愿意的话,
请将之完善。也请给我寄一份。源码如下:
unit word1;

interface

uses
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.



有问题可向我提出。mailto:zyuz@china.com
 

程序读的都不怎么好~~~~

 
to:zyuz


VTxtAuto_TLB哪里有?
 
国庆节过后就会发布《白浪中文TTS》
请留意 http://pino.yeah.net
 
VTxtAuto_TLB 要在TTS(Text to speech)安装完了之后在delphi中引用才有。
一般位于:c:/windws/speech/目录下。

另外:上次的源码是我练习时用的。省去了随机部分。主要的在
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);过程中。

谁有Agent的开发文档?????谁有Agent的开发文档?????
谁有Agent的开发文档?????谁有Agent的开发文档?????
 
to cheka:
能否提供TTS控件的下载网址
 
白浪中文TTS 已经发布了
http://pino.yeah.net
 
去http://mantousoft.yeah.net,
有这个例程,
看看吧。
TTS控件读英文的程序
 
給我來一份 jacksee@cmmail.com
 
fartrip:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 

Similar threads

回复
0
查看
863
不得闲
回复
0
查看
1K
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部