您的位置: 旅游網 > 明星 >> 歐美

    編程實現英文文章語音輸出牛

    發布時間:2021-10-28 05:24:43

    引言

    現在有些軟件尤其是翻譯類軟件多提供有語音輸出的功能,比較有名的有《金山詞霸2000》、《不知不覺背單詞》等,他們所提供的英文朗讀功能是通過直接使用了Microsoft的TTS(Text-to-Speech)全程化語音技術來實現的。我們也可以在自己的程序中通過對MS Speech API 的調用來增加語音輸出功能,尤其是對于翻譯類軟件,如果沒有語音功能可以說這個軟件是不完備的。

    為實現TTS技術,一個必要的前提條件是系統中要有MS TTS引擎,可以通過查看Windows目錄下是否有speech的目錄來判斷是否安裝過該引擎。如果沒有,可以從《金山詞霸2000》光盤上的ciba子目錄下的e來安裝MS TTS引擎和spchapi(MS Speech API)或是直接從互連上下載:可以從下載語音接口程序e; 可以從下載男聲語音引擎程序e;可以從下載女聲語音引擎程序e。

    在整個設計過程中,主要是圍繞著b這個類型庫展開的,由于在VC下實現類型庫比較煩瑣,我們選擇使用TLB類型庫比較方便的Delphi來同b進行交互,并將幾個主要的功能如“朗讀”、“暫停”、“恢復”、“停止”等用幾個相應的功能函數來實現,最終通過DLL(動態鏈接庫)將其封裝在內,對外則僅提供幾個簡單接口,可以很方便的為Delphi或其他語言調用。在此我們通過采用VC++6.0來調用這個由Delphi開發的擁有TTS技術的動態鏈接庫來實現英文文本的語音輸出。

    Delphi動態鏈接庫的實現

    首先用Delphi創建一動態連接庫工程:選擇“File”、“New…”,在“New Items”對話框中選擇“DLL”,新建一動態連接庫工程Project1。繼續選擇“File”、“New…”,在“New Items”中選擇“Unit”,新建一單元TTSDLL。接下來把類型庫添加到工程,選擇“Project”、“Import Type Library…”,點擊“Add”按鈕,選擇C:\\windows\\speech\\目錄下的b類型庫,便將其添加到工程中來了。最后,TTSDll單元如下:

    unit TTSDLL;

    interface

    uses VtxtAuto_TLB;

    procedure Create;export; {待導出的過程和函數}

    procedure Read(text:PChar);export;

    procedure Pause;export;

    procedure Resume;export;

    procedure Stop;export;

    function IsSpeaking:Boolean;export;

    procedure Destory;export;

    var

    TTS: IVTxtauto;

    implementation

    procedure Create;

    begin

    TTS:=eate; {創建對象}

    gister(\'Project1\',\'Project1\'); {注冊 }

    end;

    procedure Read(text:PChar);

    begin

    eak(text,vtxtst_READING);

    {朗讀函數。第一參數是待朗讀的文本。第二參數用于控制朗讀的語氣和優先級,主要有以下幾種,可以根據需要靈活選擇,如需多種選擇將其進行或運算即可:

    vtxtst_STATEMENT = 1;平時說話時語氣,默認。

    vtxtst_QUESTION = 2; 提問的語氣。

    vtxtst_COMMAND = 4; 命令的語氣。

    vtxtst_WARNING = 8; 警告的語氣。

    vtxtst_READING = 16; 閱讀文檔時的語氣。

    vtxtst_NUMBERS = 32; 閱讀數字時的語氣。

    vtxtst_SPREADSHEET = 64; 閱讀電子表格中元素時的語氣。

    vtxtsp_VERYHIGH = 128; 立即讀出,可以打斷當前正讀的內容。

    vtxtsp_HIGH = 256; 盡快讀出,加入播放隊列開始。

    vtxtsp_NORMAL = 512; 默認,加入播放隊列末尾。}

    end;

    procedure Pause;

    begin

    dioPause; {暫停朗讀}

    end;

    procedure Stop;

    begin

    opSpeaking;{終止朗讀}

    end;

    procedure Resume;

    水谷豐 資料圖及川光博 資料圖 新浪娛樂訊 北京時間7月19日消息 begin

    dioResume;{恢復朗讀}

    end;

    function IsSpeaking:Boolean;

    var

    Check:Boolean;

    begin

    if Speaking then {判斷當前狀態}

    begin

    Check:=TRUE;{當前正在朗讀}

    end

    else

    begin

    Check:=FALSE;{當前沒有朗讀}

    end;

    Result:=Check;{返回狀態值}

    end;

    procedure Destory;

    begin

    TTS:=nil;{釋放對象}

    end;

    end.

    在r的begin前面添加如下待導出過程函數列表:

    exports

    Create index 1,

    Read index 2,

    Pause index 3,

    Resume index 4,

    Stop index 5,

    IsSpeaking index 6,

    Destory index 7;

    編譯通過后即可得到封裝有TTS語音接口的動態鏈接庫: l。

    唐山哪婦科醫院好
    輕度中暑了怎么辦
    內江白癜風醫院哪家好
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 免费不卡在线观看av| 国产精品jizz在线观看直播| 久久人人爽人人爽人人av东京热| 漂亮华裔美眉跪着吃大洋全集| 国产成人亚洲综合| 97碰公开在线观看免费视频| 无码人妻精品一区二区三区9厂| 亚洲国产精品福利片在线观看| 精品香蕉在线观看免费| 国产成人精品999在线| 99精品全国免费观看视频| 无码人妻一区二区三区在线| 亚洲人成色777777在线观看| 粗喘撞吟np文古代| 国产做国产爱免费视频| 制服丝袜怡红院| 天天摸夜夜摸成人免费视频| 久久99精品久久| 最近新免费韩国视频资源| 亚洲美女高清一区二区三区| 美女被免费看视频网站| 国产成人啪精品| 521色香蕉网站在线观看| 好吊妞视频haodiaoniucom| 久久久噜噜噜久久网| 欧美sss视频| 亚洲欧美日韩高清中文在线| 精品久久久无码中文字幕| 国产亚洲av综合人人澡精品| 亚洲精品福利你懂| 国内xxxx乱子另类| www.av视频在线| 成视频年人黄网站免费视频| 久久精品国产亚洲av水果派| 欧美在线综合视频| 亚洲色成人网站WWW永久| 精品无码综合一区二区三区| 国产乱子伦露脸在线| 国产在线jyzzjyzz免费麻豆| 国产精品自产拍高潮在线观看| a级成人毛片免费视频高清|