全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2540
推到 Plurk!
推到 Facebook!

語言朗讀機程式如何寫?

答題得分者是:領航天使
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-04 11:32:07 IP:61.216.xxx.xxx 未訂閱
語言朗讀機程式如何寫?不知道是否有完整範例。 1.Windows Media Player 2.RealPlay 哪一種寫語言朗讀機最佳呢?
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-04 11:39:11 IP:192.168.xxx.xxx 未訂閱
引言: 語言朗讀機程式如何寫?不知道是否有完整範例。 1.Windows Media Player 2.RealPlay 哪一種寫語言朗讀機最佳呢?
要讀 中文 或 讀英文? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-04 11:46:04 IP:61.216.xxx.xxx 未訂閱
讀任何語言皆可。 只要以聲音檔案做重複播放或斷點設定播放方式。 站長:語音引擎方式,是不用的。 不知道是否能夠完成?! ============================= 謝謝 領航天使 指教!Q~~ =============================
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-04 12:15:53 IP:192.168.xxx.xxx 未訂閱
引言: 讀任何語言皆可。 只要以聲音檔案做重複播放或斷點設定播放方式。 站長:語音引擎方式,是不用的。 不知道是否能夠完成?! ============================= 謝謝 領航天使 指教!Q~~ =============================
我以前有寫過電腦語音自動掛號系統(用Delphi), 是由使用者將所有國字的發音錄音存檔, 一個字約0.8秒, 錄好約1700多個不同發音的檔, 再建立一個對照表, 所有13000多個國字對映到這1700多個發音檔, 遇到國字就找出發音檔用TMediaPlayer撥放, 撥完再找下一個字.... 不過發音很像機器人說話! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-04 12:46:33 IP:61.216.xxx.xxx 未訂閱
軟體語音復讀機    隨著數字化的發展,英語學習者手中語音資料也開始由模擬轉向數字,Real文件(后綴為.ra、.rm、ram等)和Mp3文件由於壓縮效率比較高自然成為其中的主流。但是在實際學習中發現,播放這樣的文件有許多不方便的地方,能不能用電腦實現像語言復讀機的功能呢?答案是肯定的,下面我們就自己來做一個軟體語音復讀機。    我們知道Real Player軟體是支持 Real 文件和Mp3 文件的, Delphi 4是一個非常優秀的開發工具,它完全支持ActiveX,可以很方便地創建、注冊、安裝、發布和使用ActiveX控件。在Delphi中,控件是應用程序的主要構件,通過可視化部件所見即所得地建立應用程序是Delphi的優勢。      1.ActiveX控件的使用方法 導入Real Player 的ActiveX 控件,生成引用單元,封裝成易於訪問的VCL 控件。 ==>TrealAudio元件 2.視窗的屬性定義如下所示,注意RealAudio的ControlData屬性值和OnPositionChange事件 object EchoForm: TEchoForm Left = 234 Top = 171 Width = 442 Height = 204 BorderIcons = [biSystemMenu, biMinimize] Caption = '語音復讀機' Color = clBtnFace Font.Charset = GB2312_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'System' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 16 object spbOpenFile: TSpeedButton Left = 1 Top = 144 Width = 80 Height = 28 Caption = '選取文件' Flat = True OnClick = spbOpenFileClick end object spbPlay: TSpeedButton Left = 89 Top = 144 Width = 80 Height = 28 Caption = '播放' Enabled = False Flat = True OnClick = spbPlayClick end object spbPause: TSpeedButton Left = 177 Top = 144 Width = 80 Height = 28 Caption = '暫停' Enabled = False Flat = True OnClick = spbPauseClick end object spbClose: TSpeedButton Left = 352 Top = 144 Width = 80 Height = 28 Caption = '退出' Flat = True OnClick = spbCloseClick end object spbEcho: TSpeedButton Left = 264 Top = 144 Width = 80 Height = 28 Caption = '復讀' Enabled = False Flat = True OnClick = spbEchoClick end object RealAudio: TRealAudio Left = 0 Top = 0 Width = 434 Height = 97 Align = alTop TabOrder = 0 OnPositionChange = RealAudioPositionChange // OnPositionChange事件句柄 ControlData = { //RealAudio的ControlData屬性值 2143341208000000DB2C0000060A00004F61BC00000000000100000031000000 0000000000000000000100000000000000000000000000000000000000000000 00000000000000000000000000000000000700000023303030303030} end object chkStart: TCheckBox Left = 8 Top = 112 Width = 65 Height = 17 Caption = '開始點' TabOrder = 1 OnClick = chkStartClick end object chkStop: TCheckBox Left = 224 Top = 112 Width = 73 Height = 17 Caption = '結束點' TabOrder = 2 OnClick = chkStartClick end object edtStart: TEdit Left = 80 Top = 104 Width = 121 Height = 24 ReadOnly = True TabOrder = 3 Text = '0' end object edtStop: TEdit Left = 312 Top = 104 Width = 121 Height = 24 ReadOnly = True TabOrder = 4 Text = '0' end object OpenDialog: TOpenDialog Filter = 'Real 音頻文件|*.ra;*.rm|Mp3 音頻文件|*.mp3' Left = 440 Top = 8 end end 設置開始點“edtStart”和結束點“edtStop”的屬性為只讀,防止使用者自己輸入錯誤資料,關掉 【播放】、【暫停】、【復讀】三個按鈕,當選取文件成功后,再打開他們。 procedure TEchoForm.spbOpenFileClick(Sender: TObject); begin if OpenDialog.execute then begin //設置語音文件 RealAudio.SetSource(OpenDialog.filename); //沒有在復讀 EchoNow:=false; //語音文件設置成功,打開播放鍵 spbPlay.Enabled:=true; //語音文件設置成功,打開暫停鍵 spbPause.Enabled:=true; end; end; 3.1選取語音文件的實現: 編輯按鈕【選取文件】的處理事件 procedure TEchoForm.spbOpenFileClick(Sender: TObject); begin if OpenDialog.execute then begin //設置語音文件 RealAudio.SetSource(OpenDialog.filename); //沒有在復讀 EchoNow:=false; //語音文件設置成功,打開播放鍵 spbPlay.Enabled:=true; //語音文件設置成功,打開暫停鍵 spbPause.Enabled:=true; end; end; 3.2播放功能的實現: 播放功能的實現,編輯按鈕【播放】的處理事件,只要調用 “RealAudio”的“DoPlay”方法就可以了 procedure TEchoForm.spbPlayClick(Sender: TObject); begin RealAudio.DoPlay; end; 3.3暫停功能的實現: 暫停功能的實現,編輯按鈕【暫停】的處理事件,只要調用 “RealAudio”的“DoPlayPause”方法就可以了 procedure TEchoForm.spbPauseClick(Sender: TObject); begin RealAudio.DoPlayPause; end; 3.4復讀功能的實現 捕獲“RealAudio”的 “OnPositionChange”的事件,設定開始點和結束點的位置,如果正在復讀,則判斷是否到達結束點,如果到達則跳到開始點 procedure TEchoForm.RealAudioPositionChange(Sender: TObject; lPos, lLen: Integer); begin if not chkStart.checked then edtStart.text:=inttostr(lPos); if not chkStop.Checked then edtStop.text:=inttostr(lPos); if lPos>=strtoint(edtStop.text) then //超過了復讀結束點 begin if echoNow then //允許復讀了 begin spbEcho.click; end; end; end; 使用者選擇復讀開始和結束時間時判斷,結束點要求大於開始點,當兩個點都設置成功后,打開可以復讀按鈕,等候使用者選擇復讀功能 procedure TEchoForm.chkStartClick(Sender: TObject); begin //如果結束點小於開始點,則退出 if strtoint(edtStop.text)<=strtoint(edtStart.text) then exit; //如果開始點和結束點都有了,則允許復讀 if (chkStart.Checked and chkStop.Checked) then begin spbEcho.enabled:=true; //設置復讀標志 echoNow:=true; end else begin spbEcho.Enabled:=false; //設置復讀標志 echoNow:=false; end; end; 在前邊條件都準備好了以后,編輯按鈕【復讀】的處理事件,實現復讀只需要三行命令就可以完成,首先必須要暫停,然后設置復讀位置后開始播放 procedure TEchoForm.spbEchoClick(Sender: TObject); begin //先暫停播放 RealAudio.DoPlayPause; //設置播放位置 RealAudio.SetPosition(strtoint(edtStart.text)); //開始播放 RealAudio.DoPlay; end; ----------------------------------------------------------------- 不知道有沒有,更好的寫法?
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-04 12:53:47 IP:61.216.xxx.xxx 未訂閱
補充說明: 上面例子,都要以ActiveX 元件方式,並不實用。 使用時,常要先安裝相關軟體才能夠使用所設計好的軟體。
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-04 17:44:50 IP:192.168.xxx.xxx 未訂閱
引言: 補充說明: 上面例子,都要以ActiveX 元件方式,並不實用。 使用時,常要先安裝相關軟體才能夠使用所設計好的軟體。
如果單純使用TMediaPlayer元件是否也需裝其它軟體? (好像是不用吧?) ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-11-04 18:22:13 IP:61.216.xxx.xxx 未訂閱
32 Bit Delphi 深度歷險 MPEGPlay library (mpegdll.dll) 不知道這個元件可不可以實現??
系統時間:2024-05-09 2:15:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!