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

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

    發布時間: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。

    唐山哪婦科醫院好
    輕度中暑了怎么辦
    內江白癜風醫院哪家好
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 伊人久久久大香线蕉综合直播 | 美女扒开内裤无遮挡网站| 国产综合免费视频| 中文字幕一区二区三区久久网站| 欧美亚洲国产精品久久| 免费在线观看毛片| 荐片app官网下载ios怎么下载| 国产精品亚洲欧美一区麻豆| runaway韩国动漫全集在线| 日朝欧美亚洲精品| 亚洲av网址在线观看| 激情图片小说网| 四只虎免费永久观看| 久久亚洲国产精品五月天婷| 正在播放julia女教师| 另类欧美视频二区| 黄网站色成年片大免费高清| 国产资源在线看| 久久免费动漫品精老司机| 欧美激情第1页| 免费国产在线观看老王影院| 菠萝蜜视频在线播放| 国产污视频在线观看| 999无色码中文字幕| 小受被多男摁住—灌浓精| 久久亚洲国产成人精品无码区 | 日韩a一级欧美一级在线播放| 亚洲日韩中文字幕一区| 男人桶爽女人30分钟视频动态图| 国产chinese中国hdxxxx| 黄色软件视频大全免费下载| 国模精品一区二区三区| 久久天天躁狠狠躁夜夜中文字幕 | 亚洲日韩亚洲另类激情文学| 福利体验区试看5次专区| 国产A级三级三级三级| 黄网站免费在线观看| 国产精品丝袜黑色高跟鞋| 9277手机在线视频观看免费| 女的和男的一起怼怼| 中文字幕欧美在线观看|