• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::

            轉(zhuǎn)自: http://blog.sina.com.cn/s/blog_4ab4a08d01009uch.html~type=v5_one&label=rela_prevarticle

              要:TTS技術(shù)已經(jīng)越來越廣泛地應(yīng)用到現(xiàn)代計(jì)算機(jī)的各個領(lǐng)域,本文介紹了利用微軟的Microsoft Speech SDK 5.1提供的TTStext-to-speech)技術(shù)開發(fā)具有語音朗讀功能的應(yīng)用程序。

            關(guān)鍵字:語音合成;TTS;發(fā)聲引擎

            中圖分類號:TN912.33TP311.52    文獻(xiàn)標(biāo)識碼:A

             

            Create speech-enableed Apllications with TTS Technology

             

            Abstract: The TTS technology is more and more popular in modern computer, this article introduces How to Create speech-enableed Apllications use the Microsoft Speech SDK 5.1 

            Key word: Speech Synthesis;TTSspeech Engine

             

            1.TTS技術(shù)概述

            上世紀(jì)90年代中期以來,隨著個人計(jì)算機(jī)的硬件和軟件功能越來越強(qiáng),和現(xiàn)代語音技術(shù)的發(fā)展,以前在科幻電影中才能看到的會說話的電腦已經(jīng)成為現(xiàn)實(shí)。而TTS技術(shù)正是電腦能夠說話的關(guān)鍵技術(shù)之一。

            TTStext-to-speech的縮寫,英文也稱Speech Synthesis即語音合成。語音合成就是一個將文本轉(zhuǎn)化為語音輸出的過程,這個過程的工作主要是將輸入的文本按字或詞分解為音素,并且對文本中的數(shù)字、貨幣單位、單詞變形以及標(biāo)點(diǎn)等要特殊處理的符號進(jìn)行分析,以及將音素生成數(shù)字音頻然后用揚(yáng)聲器播放出來或者存為聲音文件以后用多媒體軟件播放。

            當(dāng)應(yīng)用程序需要發(fā)聲的時候就調(diào)用語音合成引擎(SPEECH SYNTHESIS ENGINE)進(jìn)行語言合成,將文本處理后通過揚(yáng)聲器用近似于人的聲音“讀”出來,通常還可以通過改變對語音引擎的設(shè)置改變“說話” 的速度,聲音頻率(低沉或者尖銳),聲音大小,還能模擬口形、唇形和舌位的變化對聲音的影響。面前計(jì)算機(jī)通過語音合成發(fā)出的聲音效果聽起來就象是錄音磁帶發(fā)出的聲音。

            與一些用預(yù)先錄制的聲音文件實(shí)現(xiàn)發(fā)聲的應(yīng)用程序相比,TTS的發(fā)聲引擎只有幾兆大小,不需要大量的聲音文件支持,因此可以節(jié)省很大的儲存空間,并且可以朗讀預(yù)先未知的任何語句?,F(xiàn)在已經(jīng)有許多應(yīng)用軟件應(yīng)用TTS技術(shù)實(shí)現(xiàn)語音功能,例如一些播音軟件可以用來讀小說或作校對工作,還可以朗讀電子郵件,一些電子詞典可以讀出單詞,還可以用于查詢中心自動播放服務(wù)信息等。

            2.關(guān)于Microsoft Speech SDK

            實(shí)現(xiàn)TTS的核心技術(shù)本身是非常復(fù)雜的,不是一般開發(fā)人員所能完成的,但是有了Microsoft Speech SDK這樣的工具的幫助,只需要在應(yīng)用程序中加入一些不太復(fù)雜的命令和操作,我們就可以創(chuàng)建具有TTS功能的應(yīng)用程序了。

            國內(nèi)外有許多高科技公司和科研機(jī)構(gòu)致力于TTS技術(shù)的開發(fā)和研究,如微軟公司、IBM公司以及國內(nèi)的科大迅飛公司都有較成熟的語音產(chǎn)品,并且任何人都可以獲得微軟公司免費(fèi)提供的語音軟件開發(fā)工具:Microsoft Speech SDK。

            目前的Microsoft Speech SDK已經(jīng)有4.0,5.1等幾個版本,最近還推出了適合網(wǎng)絡(luò)語音程序開發(fā)的The Microsoft Speech Application SDK的測試版,這些SDK主要包括語音應(yīng)用程序編程接口SAPISAPI使我們象使用windows API一樣方便地在程序中使用語音功能)和微軟語音識別引擎和微軟語音合成引擎,還提供了進(jìn)行應(yīng)用設(shè)計(jì)的例子。Microsoft Speech SDK 5.1 提供了英文和中文兩種TTS引擎,即可以用它開發(fā)朗讀中文和英文的應(yīng)用程序,非常適合中國的開發(fā)者使用。

            利用這些SDK,開發(fā)人員可以很容易地把TTS技術(shù)集成到應(yīng)用軟件中,并可以自由發(fā)布。另外Microsoft Speech SDK還提供了詳細(xì)的文檔幫助開發(fā)者進(jìn)行程序開發(fā)。

            3.實(shí)現(xiàn)TTS的條件準(zhǔn)備

            利用Microsoft Speech SDK進(jìn)行TTS語音應(yīng)用程序開發(fā)前要作一些軟件和硬件的準(zhǔn)備:

            1)      http://www.microsoft.com/speech/下載Microsoft Speech SDK 5.1或其它版本SDK,并且安裝到自己的機(jī)器上。

            2)      Microsoft VC++ 6.0 ,service pack 3 或更新的版本。

            3)      聲卡和喇叭

            4)      要實(shí)現(xiàn)該SDK的全部功能,則去http://www.microsoft.com/msdownload/platformsdk下載新的Platform SDK

            另外要注意的是SAPI 5.1不支持windows 95。

            4.在應(yīng)用程序中實(shí)現(xiàn)TTS功能

            微軟SAPI 5.1實(shí)現(xiàn)text-to-speech的核心是對COM接口IspVoice的應(yīng)用,所以應(yīng)用TTS技術(shù)最好要了解一下COM編程技術(shù),但是即使從來沒有用過COM編程,只要按照SDK的示例,也可以順利的實(shí)現(xiàn)TTS的功能。

            SAPI API接口封裝得很好,我們不需要了解任何發(fā)聲引擎底層的工作細(xì)節(jié)。例如一旦在程序中創(chuàng)建了一個IspVoice對象,就可以通過調(diào)用ISpVoice::Speak實(shí)現(xiàn)文本朗讀,通過調(diào)用ISpVoice::SetRate實(shí)現(xiàn)對朗讀速度的控制,以及通過調(diào)用ISpVoice::SetVoice實(shí)現(xiàn)對朗讀聲音的不同人物或語言控制(男聲/女生,中文/英文)等。事實(shí)上掌握對這個接口的應(yīng)用就可以實(shí)現(xiàn)大多數(shù)TTS的應(yīng)用。

            在下面介紹的程序中,用VC++6.0實(shí)現(xiàn)了Text-to-Speech的應(yīng)用。

            1)創(chuàng)建一個工程

            建立一個工程,Projects選項(xiàng)卡中選擇MFC AppWizard (exe);下一步中選擇Dialog based類型。

            2 設(shè)置SAPI路徑

              應(yīng)用TTS必須用到頭文件sapi.hsapi.lib,為了能編譯通過必須設(shè)置SAPI路徑:

            a.       在選中tools菜單中的option子項(xiàng)。

            b.       選中Directories選項(xiàng)卡。

            c.       選中Show directries for列表框中選中include files項(xiàng),并在Directories中添加sapi頭文件路徑:例如:"C:\Program Files\Microsoft Speech SDK 5.1\Include".

            d.       選中Show directries for列表框中選中Library files項(xiàng),并在Directories中添加sapi LIB文件路徑:例

            3 設(shè)計(jì)程序界面

              添加如圖所示的編輯框和命令按鈕。

            2  程序界面

            4 添加代碼

              雙擊speak按鈕,添加朗讀代碼:

            void CExe1Dlg::Onspeak()

            {

               UpdateData();

             

                // 2) SAPI voice

            ISpVoice * pVoice = NULL;

               

                // 1)初始化COM

                if (FAILED(CoInitialize(NULL)))

                {

                    AfxMessageBox("Error to intiliaze COM");

                    return;

                }

                //  2)初始化SAPI

                HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL,

                    CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);

                if( SUCCEEDED( hr ) )

            {  

            // 3)朗讀編輯框中的文字

                hr = pVoice->Speak(m_mytext.AllocSysString(), 0, NULL);

                    //完成發(fā)聲后可以將聲音對象釋放

                    pVoice->Release();

                    pVoice = NULL;

                }

               

            //  1)與CoInitialize(NULL)成對使用,釋放COM

                CoUninitialize();

            }

            注:m_mytext是編輯框的變量名。

            以上的代碼中主要做了幾件TTS最基本的事情:

            1)      初始化COM ,因?yàn)?/span>SAPI是基于COM的應(yīng)用,使用之前必須首先初始化COM

            2)      創(chuàng)建voice對象,即一個COM對象。

            3)      實(shí)現(xiàn)朗讀,即調(diào)用speak方法。

            另外必須把頭文件sapi.h加到前面:

            #include <sapi.h>

            編譯通過后就可以運(yùn)行程序了,在編輯框中輸入一段文字,按speak按鈕,我們就能聽到電腦讀出的令人興奮的聲音了。

               MicrosoftTTS引擎提供了4種朗讀文字的聲音,其中三種英文聲音:Mary(女),mikesam(男)一種中文聲音:simplyfied Chinese。因?yàn)槟J(rèn)的TTS引擎是英文發(fā)聲,如果要想朗讀中文或選擇不同的人進(jìn)行朗讀,可以在朗讀前調(diào)用ISpVoice::SetVoice方法進(jìn)行聲音的設(shè)定,或者在朗讀前雙擊用控制面板中的語音圖標(biāo)(安裝Microsoft Speech SDK后自動添加的),選擇文字-語音轉(zhuǎn)換選項(xiàng)卡進(jìn)行默認(rèn)聲音的設(shè)置。

             

            如:"C:\Program Files\Microsoft Speech SDK 5.1\Lib\i386".

            5.結(jié)束語

            SPAI 5.1不僅適合用VC++進(jìn)行開發(fā),還可以用VB、c#等進(jìn)行開發(fā),具體方法可以參考SDK幫助文檔。結(jié)合windows程序設(shè)計(jì)的其它技術(shù),只要取得文本的內(nèi)容,就可以實(shí)現(xiàn)對對word、IE、電子郵件等各種文字的朗讀。

            本人利用windows API剪貼板操作函數(shù)和模擬鍵盤的方法在朗讀程序中實(shí)現(xiàn)了對任意文本內(nèi)容的獲取,包括IE、WORD、PDF等所有可以被鼠標(biāo)選中的文本。另還外利用中英文內(nèi)碼的不同對所取得的文本進(jìn)行中英文分析并按不同的語言分段,在朗讀前利用ISpVoice::SetVoice方法進(jìn)行中文或英文聲音的設(shè)定,從而實(shí)現(xiàn)了中英文混合文本的朗讀。合成這些方法和技術(shù)實(shí)現(xiàn)了一個電腦播音軟件。

            此外Microsoft Speech SDK 5.1的語音識別技術(shù)和語音識別引擎功能也很強(qiáng)大,可以用它開發(fā)具有語音識別功能的程序。

                  

            參考文獻(xiàn):

            [1] Microsoft Corporation. MSDN  Library  Microsoft Corporation,2001-10

            [2] Microsoft Corporation. Microsoft Speech SDK  SAPI 5.1  Microsoft Corporation2001

            [3]Jagadish.G .  Using Text  to Voice Interfaces [EB/OL]. http://www.codeproject.com/audio/SpeakText.asp, 2002-09

            [4]Agus Kurniawan. Simple Program for Text to Speech Using SAPI [EB/OL]. http://www.codeproject.com/audio/speech.asp ,2001-11

            posted on 2009-08-29 07:11 逛奔的蝸牛 閱讀(3222) 評論(0)  編輯 收藏 引用 所屬分類: Qt
            久久午夜电影网| 亚洲va久久久噜噜噜久久| 久久精品无码一区二区三区| 99久久精品国产一区二区三区 | 久久亚洲欧美日本精品| 久久青青草原国产精品免费| 伊人色综合久久天天人守人婷| 色偷偷88888欧美精品久久久| 久久久久久狠狠丁香| 亚洲精品无码久久久影院相关影片| 日本精品久久久中文字幕| 亚洲国产精品无码成人片久久| 91久久精品视频| 99精品国产在热久久无毒不卡| 一级做a爰片久久毛片免费陪| 青青草原综合久久| 狠狠干狠狠久久| 久久久久亚洲AV无码网站| 无码国内精品久久人妻麻豆按摩| 国产精品久久久久久久久鸭| 亚洲欧美日韩久久精品第一区| 久久久久国色AV免费观看| 久久99久久99小草精品免视看| 青青草原精品99久久精品66| 久久久国产亚洲精品| 久久亚洲国产精品五月天婷| 亚洲国产天堂久久综合网站| www性久久久com| 国产91色综合久久免费| 粉嫩小泬无遮挡久久久久久| 国产精品无码久久久久久| 久久精品毛片免费观看| 久久精品国产亚洲av麻豆色欲| 日韩精品久久久久久免费| 色欲综合久久躁天天躁蜜桃| 久久精品人人做人人爽电影 | 99久久国产综合精品女同图片| 亚洲欧美精品一区久久中文字幕 | 成人久久精品一区二区三区| 久久99国产精品久久99| 狠狠色综合网站久久久久久久|