请问 SAPI5.1 控件能不能 直接 将 "文本" 生成 "wav语音文件" ,就是不进行朗读的过程而是 直接 将 "文本" 生成 "wav语音文件" !!!!!!!!!!!!!!!!!
解决方案 »
- delphi的类方法有什么好处
- 使用自己编写的运行期bpl,必须选中“Build with runtime packages”检查框吗?
- 核桃给了我一个Gmail邀请函,敲诈200分分,郁闷
- 简单问题:如何选定一个listview里的指定项(让它变蓝)
- 如何判断一个TXT文件被打开?
- 怎样实现把应用程序能够出现在右下角的工具栏里
- 当按左边一个按钮的时候右边出现相应的界面
- 谁有DELPHI电子资料,给我一份
- 昨天面试时的一个题目!
- 关于Query的问题
- 怎么防止自己被别的软件关了??急啊
- com的本质是什么呀?是不是以dll的形式体现出来呀?还以什么形式体现呀?现在说com技术面临淘汰是指什么呀?为何要淘汰?
e-Mail:[email protected] TForm1.bsSkinButton2Click(Sender: TObject);
var
jieguo:integer;
rom:string;
s:string;//存放待分析的文本内容
d1:string;
z:string;//存放临时字符
l:integer;//s字符串的长度
i:integer;//
o:integer;
times:integer;//文本转为音频文件时估计的用时
begin
p:=100;
if richedit1.Text<>'' then
begin
////////////////////////////////////////////////////////////////////////
if czwbt.Checked then rom:='您确认要以【纯中文】模式' else
if cywbt.Checked then rom:='您确认要以【纯英文】模式' else
if zyhhbt.Checked then rom:='您确认要以【中英混合】模式';
if radiobutton1.Checked then rom:=rom+'【慢语速】以【'+yinpin+'】输出音频文件吗?' else
if radiobutton2.Checked then rom:=rom+'【中语速】以【'+yinpin+'】输出音频文件吗?' else
if radiobutton3.Checked then rom:=rom+'【快语速】以【'+yinpin+'】输出音频文件吗?';
jieguo:=messageDlg(rom,mtConfirmation,[mbyes,mbcancel],0);
case jieguo of
2: exit;
6://////////////////////////确认转换///////////////////////////////////////
/////纯中文模式开始
if czwbt.Checked then
begin
s:=richedit1.Text;
l:=length(s);
l:=l div 2;//全角字符的长度
times:=(l*6) div 1000;//单位为秒
showmessage('转换可能要花'+inttostr(times)+'秒(≈'+inttostr(times div 60)+'分)钟,转换时请耐心等待!');
//注:此处若不将之转换为全角,则TTS会读为"点"
s:=StringReplace(s,'.','。',[rfReplaceAll, rfIgnoreCase]);
savedialog1.Filter:='Wave files(*.wav)|*.wav';
savedialog1.FilterIndex:=1;
if savedialog1.Execute then
begin
spfilestream1.Format.Type_:=flatcombobox2.ItemIndex;
spfilestream1.Open(savedialog1.FileName+'.wav',SSFMCreateForWrite,False);
spvoice1.AllowAudioOutputFormatChangesOnNextSet:=false;
spvoice1.AudioOutputStream:=spfilestream1.DefaultInterface;
spvoice1.Speak('<LANG LANGID="804">'+s,1);
spvoice1.WaitUntilDone(-1);
spfilestream1.Close;
showmessage('文本已成功转换为声音文件,并存放在'+savedialog1.FileName); end;
end
else
/////纯中文模式结束
///////////////////////////////////////////////////////////////////////////
///////纯英文模式开始
if cywbt.Checked then
begin
savedialog1.Filter:='Wave files(*.wav)|*.wav';
savedialog1.FilterIndex:=1;
if savedialog1.Execute then
begin
spfilestream1.Format.Type_:=flatcombobox2.ItemIndex;
spfilestream1.Open(savedialog1.FileName+'.wav',SSFMCreateForWrite,False);
spvoice1.AllowAudioOutputFormatChangesOnNextSet:=false;
spvoice1.AudioOutputStream:=spfilestream1.DefaultInterface;
spvoice1.Speak('<LANG LANGID="409">'+richedit1.Text,1);
spvoice1.WaitUntilDone(-1);
spfilestream1.Close;
showmessage('文本已成功转换为声音文件,并存放在'+savedialog1.FileName);
end;
end
else
///////纯英文模式结束
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
end;
end;
end;
end
else
showmessage('待转换的文本内容不能为空!');
end;