濟寧果殼科技專業軟件開發團隊,提供全方位的互聯網服務!
                                                座機:0537-2551991 手機:15563775221(微信)

                                                熱門標簽

                                                1. 首頁
                                                2. 果殼學院
                                                3. 技術顧問
                                                4. 語音合成 (Speech Synthesis),語音識別(Speech Recognition) | 果殼科技
                                                語音合成 (Speech Synthesis),語音識別(Speech Recognition) | 果殼科技

                                                語音合成 (Speech Synthesis),語音識別(Speech Recognition) | 果殼科技

                                                語音合成 ,Speech Synthesis,語音識別,Speech Recognition,JS,前端應用,Windows窗體應用,濟寧果殼科技。Windows 語音使用

                                                濟寧果殼科技

                                                2017-07-22 16:46:01

                                                0

                                                5817

                                                一、首先說一下語音識別和語音合成技術實現;Windows系統有自己的語音,基于C#的開發,也已經將語音封裝到System.Speech程序集中,有興趣的朋友可以自己試試;

                                                二、我們講述一下c#實現語音閱讀以及文本轉語音文件,是基于c#的一個類庫SpeechSynthesizer 實現的,使用該類必須要添加引用using System.Speech.Synthesis;直接是無法添加引用的,先對項目進行添加System.Speech引用;

                                                下面的代碼使用窗體應用程序簡單實現的,當然程序集里還封裝的好多的功能,大家可以自行探討;在web應用是不行的,應該可以封裝成ActiveX 控件,供瀏覽器調用吧,這個還沒實現;下面會說用JS實現web語音技術。

                                                using System;
                                                using System.Collections.Generic;
                                                using System.ComponentModel;
                                                using System.Data;
                                                using System.Drawing;
                                                using System.Linq;
                                                using System.Speech.Synthesis;
                                                using System.Text;
                                                using System.Threading.Tasks;
                                                using System.Windows.Forms;

                                                namespace Speech_WinForm
                                                {
                                                public partial class SpeakVoice : Form
                                                {
                                                public SpeakVoice()
                                                {
                                                InitializeComponent();
                                                }

                                                private void text_content_TextChanged(object sender, EventArgs e)
                                                {

                                                }

                                                private void btn_speak_Click(object sender, EventArgs e)
                                                {
                                                var content = this.text_content.Text;
                                                SpeechSynthesizer synth = new SpeechSynthesizer();
                                                synth.Speak(content);
                                                }

                                                private void SpeakVoice_Load(object sender, EventArgs e)
                                                {

                                                }
                                                }
                                                }

                                                上面的代碼也可以用控制臺應用程序去寫,在這里只給大家一個引子,感興趣的同志可以去百度一下吧,

                                                三、HTML5語音Web Speech

                                                HTML5中和Web Speech相關的API實際上有兩類,一類是“語音識別(Speech Recognition)”,另外一個就是“語音合成(Speech Synthesis)”,這兩個名詞聽上去很高大上,實際上指的分別是“語音轉文字”,和“文字變語音”。 而下面要介紹的就是這里的“語音合成-文字變語音”。為什么稱為“合成”呢?比方說你發音“你好,世界!” 實際上是把“你”、“好”、“世”、“界”這4個字的讀音給合并在一起,因此,稱為“語音合成”。 “語音識別”和“語音合成”看上去像是正反兩方面,實際上,至少從兼容性來看,兩者并無法直接對等。 “語音識別(Speech Recognition)”目前的就Chrome瀏覽器和Opera瀏覽器默認支持,并且需要webkit私有前綴:

                                                1、先說一下 語音識別(Speech Recognition)

                                                使用的基本套路如下: 創建SpeechRecognition的新實例。

                                                由于到目前為止,瀏覽器還沒有廣泛支持,所以需要webKit的前綴:

                                                var newRecognition = webkitSpeechRecognition(); 設置是持續聽還是聽到聲音之后就關閉接收。通過設置continuous屬性值實現。一般聊天溝通使用false屬性值,如果是寫文章寫公眾號之類的則可以設置為true,

                                                如下示意: newRecognition.continuous = true;

                                                控制語音識別的開啟和停止,可以使用start()和stop()方法:

                                                // 開啟 newRecognition.start();

                                                // 停止 newRecognition.stop(); 對識別到的結果進行處理,可以使用一些事件方法,比方說onresult: newRecognition.onresult = function(event) { console.log(event); } event是個對象,我家里電腦不知道什么原因,無法成功返回識別內容,顯示網絡錯誤,可能因為墻的緣故:

                                                2、語音合成Speech Synthesis


                                                先從最簡單的例子說起,如果想讓瀏覽器讀出“你好,世界!”的聲音,可以下面的JS代碼:


                                                var utterThis = new window.SpeechSynthesisUtterance('你好,世界!');

                                                window.speechSynthesis.speak(utterThis);


                                                沒錯,只需要這么一點代碼就足夠了,大家可以在自己瀏覽器的控制臺里面運行上面兩行代碼,看看有沒有讀出聲音。


                                                上面代碼出現了兩個長長的對象,SpeechSynthesisUtterance和speechSynthesis,就是語音合成Speech Synthesis API的核心。


                                                首先是SpeechSynthesisUtterance對象,主要用來構建語音合成實例,例如上面代碼中的實例對象utterThis。我們可以直接在構建的時候就把要讀的文字內容寫進去:


                                                var utterThis = new window.SpeechSynthesisUtterance('你好,世界!');


                                                又或者是使用實例對象的一些屬性,包括:


                                                text – 要合成的文字內容,字符串。

                                                lang – 使用的語言,字符串, 例如:"zh-cn"

                                                voiceURI – 指定希望使用的聲音和服務,字符串。

                                                volume – 聲音的音量,區間范圍是0到1,默認是1。

                                                rate – 語速,數值,默認值是1,范圍是0.1到10,表示語速的倍數,例如2表示正常語速的兩倍。

                                                pitch – 表示說話的音高,數值,范圍從0(最?。┑?(最大)。默認值為1。


                                                因此上面的代碼也可以寫作:


                                                var utterThis = new window.SpeechSynthesisUtterance();

                                                utterThis.text = '你好,世界!';


                                                不僅如此,該實例對象還暴露了一些方法:


                                                onstart – 語音合成開始時候的回調。

                                                onpause – 語音合成暫停時候的回調。

                                                onresume – 語音合成重新開始時候的回調。

                                                onend – 語音合成結束時候的回調。


                                                接下來是speechSynthesis對象,主要作用是觸發行為,例如讀,停,還原等:


                                                speak() – 只能接收SpeechSynthesisUtterance作為唯一的參數,作用是讀合成的話語。

                                                stop() – 立即終止合成過程。

                                                pause() – 暫停合成過程。

                                                resume() – 重新開始合成過程。

                                                getVoices – 此方法不接受任何參數,用來返回瀏覽器支持的語音包列表,是個數組,例如,在我的電腦下,Firefox瀏覽器返回的語言包是兩個:

                                                雖然數量很多,是有種給人中看不中用的感覺,為什么這么說呢!在我的chrome瀏覽器下,不知道為什么,不會讀任何聲音,但是同樣的demo見面,公司的電腦就可以,我后來仔細查了一下,有可能(20%可能性)是我家里的電腦win7版本是閹割版,沒有安裝或配置TTS引擎。


                                                手機Safari瀏覽器也不會讀。



                                                三、語音合成Speech Synthesis API有什么用


                                                對于盲人或弱視用戶,往往會借助一些輔助設備或者軟件訪問我們的網頁,其原理是通過觸摸或定位某些元素發出聲音,來讓用戶感知內容。


                                                有了語音合成Speech Synthesis API,對于這類用戶,以及開發人員自己,都會帶來一定的便利性。首先對于視覺有障礙的用戶,他們就不需要再安裝其他軟件或購買其他設備,就可以無障礙地訪問我們的產品。對于開發人員自己,我們的無障礙建設可以變得更加靈活,不一定要百分百契合ARIA無障礙規范(可參見我之前文章“WAI-ARIA無障礙網頁應用屬性完全展示”),因為我們可以直接讓瀏覽器合成我想要的語音內容,例如,VoiceOver在對一些標簽讀取的時候,總會附帶一句“標志性內容”,就算對于我這樣專業從業者,這個詞也是有點生澀難懂的,我們其實可以把這個語音合成交給自己,使用更通俗易懂的詞反饋給用戶,我想體驗上應該是更好的。



                                                定制首選 果殼科技 咨詢熱線:0537-2551991

                                                關閉咨詢框
                                                色欲网天天无码AV日韩_911国产在线专区_东京热一区二区免费高清av_青草伊人久久综在合线亚洲