?? unit1.pas
字號:
else
begin
d:=d+'<LANG LANGID="804">'+z;
p:=0;
i:=i+2;
end
end ////
///////////////////////////////
else //if z<>' ' then
begin ///
if p=1 then //若上次也是英文
begin
d:=d+z;
p:=1;
i:=i+2;
end
else
begin
d:=d+'<LANG LANGID="409">'+z;
p:=1;
i:=i+2;
end
end;
//else if z=' ' then d:=d+' ';
gauge1.Progress:=(i*100) div l;//進(jìn)度條
if gauge1.Progress=100 then
begin
spvoice1.Speak(d,1);
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
p:=100;
now:=spvoice1.Rate;//得到當(dāng)前語速
richedit1.Text:='';
yinpin:=combobox1.Text;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
spvoice1.Pause;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
spvoice1.Resume;
end;
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
inputread.Checked:=false;
try
if opendialog1.Execute then
begin
richedit1.Lines.Clear;
richedit1.Lines.LoadFromFile(opendialog1.FileName);
end;
except ON E:EReadError do
showmessage('此文件打開失敗!');
end;
end;
procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
begin
word:=richedit1.SelText;
end;
procedure TForm1.RichEdit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
l:integer;//s字符串的長度
i:integer;//
z:string;
begin
if nowread.Checked then
///////////////////////////////
if czwbt.Checked then //純中文朗讀
begin
//注:此處若不將之轉(zhuǎn)換為全角,則TTS會讀為"點(diǎn)"
word:=StringReplace(word,'.','。',[rfReplaceAll, rfIgnoreCase]);
spvoice1.Speak('<LANG LANGID="804">'+word,1);
end
/////////////////////////////////////////////////////
else if cywbt.Checked then //純英文朗讀
begin
spvoice1.Speak('<LANG LANGID="409">'+word,1);
end
else if zyhhbt.Checked then //中英混合朗讀
begin
gauge1.Visible:=true;
word:=StringReplace(word,'a','a',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'b','b',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'c','c',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'d','d',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'e','e',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'f','f',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'g','g',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'h','h',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'i','i',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'j','j',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'k','k',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'l','l',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'m','m',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'n','n',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'o','o',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'p','p',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'q','q',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'r','r',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'s','s',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'t','t',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'u','u',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'v','v',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'w','w',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'x','x',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'y','y',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'z','z',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,' ',' ',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,',',',',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'.','。',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,';',';',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,':',':',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'''',''',[rfReplaceAll, rfIgnoreCase]);//注意單引號的引用
word:=StringReplace(word,'<','〈',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'>','〉',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'/','/',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'\','\',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'?','?',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'|','‖',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'[','[',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,']',']',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'{','{',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'}','}',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'(','(',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,')',')',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'-','-',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'_','﹎',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'=','=',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'+','+',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'!','!',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'@','@',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'#','#',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'$','$',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'%','%',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'^','ˇ',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'&','&',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'*','※',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'1','1',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'2','2',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'3','3',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'4','4',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'5','5',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'6','6',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'7','7',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'8','8',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'9','9',[rfReplaceAll, rfIgnoreCase]);
word:=StringReplace(word,'0','0',[rfReplaceAll, rfIgnoreCase]);
//注:若加入數(shù)字過濾后,將無法朗讀所有數(shù)字
//showmessage(s);//以上代碼沒問題
l:=length(word);
i:=1;
d:='';
while i<l do
begin
z:=Copy(word,i,2);
if (z<>'a') and (z<>'b') and (z<>'c') and (z<>'d') and (z<>'e')
and (z<>'f') and (z<>'g') and (z<>'h') and (z<>'i') and (z<>'j')
and (z<>'k') and (z<>'l') and (z<>'m') and (z<>'n') and (z<>'o')
and (z<>'p') and (z<>'q') and (z<>'r') and (z<>'s') and (z<>'t')
and (z<>'u') and (z<>'v') and (z<>'w') and (z<>'x') and (z<>'y')
and (z<>'z') or (z='1') or (z='2') or (z='3') or (z='4') or (z='5')
or (z='6') or (z='7') or (z='8') or (z='9') or (z='0')
{and (z<>'\') and (z<>'?') and (z<>'‖') and (z<>'[') and (z=']')
and (z<>'{') and (z<>'}') and (z<>'(') and (z<>')') and (z<>'-')
and (z<>'﹎') and (z<>'=') and (z<>'+') and (z<>'!') and (z<>'@')
and (z<>'#') and (z<>'$') and (z<>'%') and (z<>'ˇ') and (z<>'&')
and (z<>'※') and (z<>''')}then
begin ////
z:=StringReplace(z,'1','1',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'2','2',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'3','3',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'4','4',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'5','5',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'6','6',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'7','7',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'8','8',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'9','9',[rfReplaceAll, rfIgnoreCase]);
z:=StringReplace(z,'0','0',[rfReplaceAll, rfIgnoreCase]);
if p=0 then //若上次也是中文
begin
d:=d+z;
p:=0;
i:=i+2;
end
else
begin
d:=d+'<LANG LANGID="804">'+z;
p:=0;
i:=i+2;
end
end ////
///////////////////////////////
else //if z<>' ' then
begin ///
if p=1 then //若上次也是英文
begin
d:=d+z;
p:=1;
i:=i+2;
end
else
begin
d:=d+'<LANG LANGID="409">'+z;
p:=1;
i:=i+2;
end
end;
//else if z=' ' then d:=d+' ';
gauge1.Progress:=(i*100) div l;//進(jìn)度條
if gauge1.Progress=100 then
begin
spvoice1.Speak(d,1);
end;
end;
end;
end;
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
gauge1.Visible:=false;
spvoice1.Disconnect;
radiobutton2.Checked:=true;
p:=500;//這可是個很重要的參數(shù)喲
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
spvoice1.Rate:=now;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
spvoice1.Rate:=now-5;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
spvoice1.Rate:=now+5;
end;
procedure TForm1.RichEdit1Change(Sender: TObject);
var l,i:integer;m,r:string;
begin
i:=1;
r:='';
m:=richedit1.Text;
if inputread.Checked then
begin
spvoice1.Rate:=now+5;
l:=length(m);
r:=Copy(m,l-1,2);
spvoice1.Speak('<LANG LANGID="804">'+r,1);
end;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
gauge1.Visible:=false;
spvoice1.Disconnect;
p:=500;//這可是個很重要的參數(shù)喲
richedit1.Lines.Clear;
radiobutton2.Checked:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
nowtime.Caption:=timetostr(time);
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
var
ErrorDescr: string;
begin
ErrorDescr := 'Call 911';
MessageDlg(
' 關(guān)于軟件'+#13+
' 本軟件采用微軟公司先進(jìn)的TTS語音合成技術(shù),能流暢朗讀中英文混合文本,'+#13+
'有慢、中、快三種語速,用戶可根據(jù)待朗讀內(nèi)容選擇朗讀模式(1,純中文2,純英'+#13+
'文3,中英混合),支持鼠標(biāo)選讀(即時朗讀鼠標(biāo)選定的語句),錄入朗讀(即當(dāng)用'+#13+
'戶輸入文本時自動朗讀),音量可調(diào),【可將文本導(dǎo)出保存為WAV文件】。'+#13+
' 該軟件費(fèi)盡本人N個腦細(xì)胞(N>99999999999999),BUG捉了一籮筐,可惜滅害'+#13+
'靈用完了,還請各位幫忙捉蟲呀,有任何意見和建議請與俺聯(lián)系喲!:)'+#13+
'CopyRight(2002-2003)信息安全工作室http://isxuzhu.myrice.com QQ:122512447 軟件設(shè)計(jì):風(fēng)之竹 20030110'
,mtInformation,[mbOk],0);
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
var jieguo:integer;
begin
jieguo:=messageDlg('你真的要舍我而去嗎?',mtConfirmation,[mbyes,mbcancel],0);
case jieguo of
6:
begin
spvoice1.Disconnect;
close;
end;
2:exit;
end;
end;
procedure TForm1.SpeedButton8Click(Sender: TObject);
var
jieguo:integer;
rom:string;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -